From 2ce806a0503dba419907b71e95ddbc951c29d525 Mon Sep 17 00:00:00 2001 From: Arthur <16458204+ArthurKun21@users.noreply.github.com> Date: Sun, 7 Dec 2025 21:55:35 +0800 Subject: [PATCH 1/8] docs: update markdown files for auto-level scripts with enhanced tags and descriptions --- docs/scripts/auto-ce-exp-bomb.md | 12 ++++++++++++ docs/scripts/auto-level-append.md | 11 +++++++++++ docs/scripts/auto-level-ce.md | 11 +++++++++++ docs/scripts/auto-level-servant.md | 11 +++++++++++ docs/scripts/auto-level-skills.md | 10 ++++++++++ 5 files changed, 55 insertions(+) diff --git a/docs/scripts/auto-ce-exp-bomb.md b/docs/scripts/auto-ce-exp-bomb.md index 5e0a45f..0502e7b 100644 --- a/docs/scripts/auto-ce-exp-bomb.md +++ b/docs/scripts/auto-ce-exp-bomb.md @@ -1,3 +1,15 @@ +--- +title: Auto CE EXP Bomb +description: Create CE Bombs automatically in Fate/Grand Order using FGA Preview. Efficiently level Craft Essences by concentrating experience from fodder CEs. +tags: + - scripts + - CE + - craft essence + - CE EXP bomb + - automation + - enhancement +--- + # Auto CE EXP Bomb Automatically creates CE Bombs by continuously selecting and leveling Craft Essences. diff --git a/docs/scripts/auto-level-append.md b/docs/scripts/auto-level-append.md index 39f8ba6..c13bc91 100644 --- a/docs/scripts/auto-level-append.md +++ b/docs/scripts/auto-level-append.md @@ -1,3 +1,14 @@ +--- +title: Auto Level Append +description: Automatically unlock and upgrade servant append skills in Fate/Grand Order using FGA Preview. Manage servant coins, materials, and QP for append skill leveling. +tags: + - scripts + - append skills + - servant coins + - automation + - enhancement +--- + # Auto Level Append Automatically unlocks and upgrades servant append skills. diff --git a/docs/scripts/auto-level-ce.md b/docs/scripts/auto-level-ce.md index 7ced438..f08bdc0 100644 --- a/docs/scripts/auto-level-ce.md +++ b/docs/scripts/auto-level-ce.md @@ -1,3 +1,14 @@ +--- +title: Auto Level CE +description: Automatically level up Craft Essences in Fate/Grand Order using FGA Preview. Feed fodder CEs to enhance your target CE efficiently. +tags: + - scripts + - CE + - craft essence + - automation + - enhancement +--- + # Auto Level CE Automatically enhances a selected Craft Essence (CE) to increase its level. diff --git a/docs/scripts/auto-level-servant.md b/docs/scripts/auto-level-servant.md index 38843aa..aadaa57 100644 --- a/docs/scripts/auto-level-servant.md +++ b/docs/scripts/auto-level-servant.md @@ -1,3 +1,14 @@ +--- +title: Auto Level Servant +description: Automatically level up servants in Fate/Grand Order using FGA Preview. Feed embers, handle ascensions, and grailing automatically with detailed configuration options. +tags: + - scripts + - servant + - leveling + - automation + - enhancement +--- + # Auto Level Servant Automatically enhances a servant's level using embers. diff --git a/docs/scripts/auto-level-skills.md b/docs/scripts/auto-level-skills.md index 0e25810..0237bc5 100644 --- a/docs/scripts/auto-level-skills.md +++ b/docs/scripts/auto-level-skills.md @@ -1,3 +1,13 @@ +--- +title: Auto Level Skills +description: Automatically upgrade servant skills in Fate/Grand Order using FGA Preview. Configure target skill levels and let the script handle the enhancement process. +tags: + - scripts + - skills + - automation + - enhancement +--- + # Auto Level Skills Automatically upgrades servant skills to your desired level. From 076855f1de6cda96153538b8f60241c596cc3f25 Mon Sep 17 00:00:00 2001 From: Arthur <16458204+ArthurKun21@users.noreply.github.com> Date: Sun, 7 Dec 2025 21:55:51 +0800 Subject: [PATCH 2/8] docs: remove title from changelog metadata --- docs/changelog/.meta.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/docs/changelog/.meta.yml b/docs/changelog/.meta.yml index 84bc055..dca8de5 100644 --- a/docs/changelog/.meta.yml +++ b/docs/changelog/.meta.yml @@ -1,4 +1,3 @@ -title: Changelog icon: material/history description: FGA Preview changelog. Stay updated with the latest features, improvements, and bug fixes in each release of FGA Preview. search: From 3731e291b0ca016534bc2f98c7707aa574dddd74 Mon Sep 17 00:00:00 2001 From: Arthur <16458204+ArthurKun21@users.noreply.github.com> Date: Sun, 7 Dec 2025 21:56:50 +0800 Subject: [PATCH 3/8] docs: update metadata for other scripts section with new title and description --- docs/other-scripts/.meta.yml | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/docs/other-scripts/.meta.yml b/docs/other-scripts/.meta.yml index 19b2a8c..9128700 100644 --- a/docs/other-scripts/.meta.yml +++ b/docs/other-scripts/.meta.yml @@ -1,7 +1,5 @@ -title: Enhancement Scripts -icon: material/arrow-up-bold -description: FGA Preview primary scripts. Learn about the main automated scripts available in FGA Preview, including their features, configurations, and usage instructions. +title: Other Scripts +icon: material/script-text +description: Additional FGA Preview scripts including lottery automation, friend point gacha, gift box collection, and support image extraction. search: - boost: 3 -hide: - - navigation \ No newline at end of file + boost: 1.5 \ No newline at end of file From 45617e78adfd5d3ef20b8e946e8e5d95fba80dce Mon Sep 17 00:00:00 2001 From: Arthur <16458204+ArthurKun21@users.noreply.github.com> Date: Sun, 7 Dec 2025 22:01:09 +0800 Subject: [PATCH 4/8] docs: add comprehensive documentation for battle setup, including config, launcher, materials, and skill maker docs: remove outdated and incomplete documentation for card priority, config, launcher, materials, and skill maker --- docs/.nav.yml | 12 +- docs/assets/battle/farming-config.png | Bin 8498 -> 6827 bytes docs/assets/battle/name-and-notes.png | Bin 7763 -> 4141 bytes .../assets/battle/preferred-support-setup.png | Bin 0 -> 39724 bytes docs/assets/battle/skill-command.png | Bin 10060 -> 3386 bytes docs/{battle => battle-setup}/.meta.yml | 0 docs/battle-setup/card-priority.md | 263 ++++++++++++++ docs/battle-setup/config.md | 202 +++++++++++ docs/battle-setup/launcher.md | 312 +++++++++++++++++ docs/battle-setup/materials.md | 116 +++++++ docs/battle-setup/skill-maker.md | 322 ++++++++++++++++++ docs/{battle => battle-setup}/support.md | 0 docs/battle/card-priority.md | 3 - docs/battle/config.md | 126 ------- docs/battle/launcher.md | 3 - docs/battle/materials.md | 3 - docs/battle/skill-maker.md | 3 - 17 files changed, 1221 insertions(+), 144 deletions(-) create mode 100644 docs/assets/battle/preferred-support-setup.png rename docs/{battle => battle-setup}/.meta.yml (100%) create mode 100644 docs/battle-setup/card-priority.md create mode 100644 docs/battle-setup/config.md create mode 100644 docs/battle-setup/launcher.md create mode 100644 docs/battle-setup/materials.md create mode 100644 docs/battle-setup/skill-maker.md rename docs/{battle => battle-setup}/support.md (100%) delete mode 100644 docs/battle/card-priority.md delete mode 100644 docs/battle/config.md delete mode 100644 docs/battle/launcher.md delete mode 100644 docs/battle/materials.md delete mode 100644 docs/battle/skill-maker.md diff --git a/docs/.nav.yml b/docs/.nav.yml index ce184fe..8e40462 100644 --- a/docs/.nav.yml +++ b/docs/.nav.yml @@ -11,13 +11,13 @@ nav: - app/library.md - Auto Battle: - Configuration: - - battle/config.md - - battle/card-priority.md - - battle/materials.md - - battle/skill-maker.md - - battle/support.md + - battle-setup/config.md + - battle-setup/card-priority.md + - battle-setup/materials.md + - battle-setup/skill-maker.md + - battle-setup/support.md - How to get started: - - battle/launcher.md + - battle-setup/launcher.md - scripts/auto-level-servant.md - scripts/auto-level-ce.md - scripts/auto-ce-exp-bomb.md diff --git a/docs/assets/battle/farming-config.png b/docs/assets/battle/farming-config.png index b2814c03e9c52a98e296f54aaf61aff902d4b11e..e79fbebf1013ea67224e04e8142e2fe1f34dd5e9 100644 GIT binary patch literal 6827 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 L(C~8D!@&OlTRvDP literal 8498 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 MIaS$mY16>}1Eahfvj6}9 diff --git a/docs/assets/battle/name-and-notes.png b/docs/assets/battle/name-and-notes.png index b68bfa513ea570d1ca831e31b96197ce9417206c..4ff7df93262c34699d1a44d257c1c4486fef71d2 100644 GIT binary patch literal 4141 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 literal 7763 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 literal 10060 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 Quick by card priority) + Servant 1: Buster, Arts (Buster > Arts) + Servant 2: Buster, Quick (Buster > Quick) + +Step 3: Final order + [Servant 3 Arts] → [Servant 3 Quick] → [Servant 1 Buster] → ... +``` + +### Reordering Servants + +1. Tap **Edit** on the Servant Priority section +2. Drag servants up or down using the handle icon +3. Servants at the top have their cards selected first + +--- + +## Brave Chains + +Brave Chains occur when you select three cards from the same servant, giving bonus damage. + +### Options + +| Option | Behavior | +|--------|----------| +| **None** | No special handling for brave chains | +| **With NP** | Try to form brave chains with NP cards | +| **With NP Mighty** | Try to form mighty chains (3 different card types) with NP | +| **Avoid** | Actively avoid brave chains by spreading cards across servants | + +### When to Use Each + +- **None**: Default, let card priority decide naturally +- **With NP**: When your main damage dealer is using their NP and you want to maximize their damage +- **With NP Mighty**: When you want varied card types for the mighty chain bonus +- **Avoid**: When you want to spread damage or generate stars/NP for multiple servants + +--- + +## Rearrange Cards + +When enabled, cards are rearranged to optimize damage within the selected cards. + +### How Rearrange Cards Works + +In FGO, the 3rd card in a chain gets bonus damage. When rearrange is enabled: + +1. The app selects the top 3 cards by priority +2. It moves the 2nd highest priority card to the 3rd position +3. This gives the bonus damage to a better card + +**Example**: + +- Without rearrange: Card A → Card B → Card C (in priority order) +- With rearrange: Card A → Card C → Card B (Card B gets 3rd position bonus) + +--- + +## Per-Wave Strategy Example + +Here's an example of how you might configure different waves: + +### Wave 1 (Farming weak enemies) + +- **Card Priority**: Quick-focused for NP generation +- **Brave Chain**: None +- **Rearrange**: Off + +### Wave 2 (Medium enemies) + +- **Card Priority**: Arts-focused to charge NP +- **Brave Chain**: Avoid (spread damage) +- **Rearrange**: On + +### Wave 3 (Boss wave) + +- **Card Priority**: Buster-focused for maximum damage +- **Brave Chain**: With NP (maximize main DPS output) +- **Rearrange**: On + +--- + +## Tips for Effective Configuration + +1. **Match priorities to your team**: If your main damage dealer uses Buster cards, prioritize Buster +2. **Consider class advantage**: The "Weak" prefix cards deal more damage against enemies weak to your servants +3. **Use servant priority for focused damage**: Set your main DPS servant as highest priority +4. **Enable critical stars for inconsistent teams**: If your critical star generation varies, enable this to capitalize on lucky draws +5. **Set up multiple waves**: Different priorities for different phases of a quest can significantly improve clear times + +--- + +## Troubleshooting + +### Cards aren't being selected in my expected order + +- Check if "Use Servant Priority" is affecting the selection +- Verify the card priority list order +- Remember that critical stars can affect selection when enabled + +### Brave chains aren't forming + +- Ensure "Brave Chain" is set to "With NP" or "With NP Mighty" +- The servant needs to have 3 cards available on screen +- NPs must be ready for NP-based brave chains + +### The app is picking resist cards + +- Move resist cards lower in the priority list +- Or remove them entirely if you never want them selected + +--- + +## Related Documentation + +- [Auto Battle](../in-battle/auto-battle.md) - Overall battle automation +- [Skill Maker](skill-maker.md) - Configure skill execution during battle diff --git a/docs/battle-setup/config.md b/docs/battle-setup/config.md new file mode 100644 index 0000000..2eb8b11 --- /dev/null +++ b/docs/battle-setup/config.md @@ -0,0 +1,202 @@ +--- +title: Battle Config +description: Complete guide to setting up FGA Preview battle configurations. Learn how to configure battle names, skill commands, party setup, materials farming, and support selection. +tags: + - battle + - configuration + - farming + - setup +--- + +# Battle Config + +Battle configs store all the settings for automated farming runs. Each config defines how FGA runs battles, selects supports, and picks command cards. + +## Overview + +A battle config contains: + +- **Identity settings** - Name, notes, and favorite status +- **Skill commands** - The sequence of skills to use each turn +- **Default run settings** - How many runs, materials, and resources to use +- **Farming options** - Materials to track, server restrictions, and party selection +- **Command card priorities** - How to pick attack cards each turn +- **Support selection** - Which friend support to choose +- **Battle behavior** - Exit conditions, raid delays, and other options + +## Key Features + +### Identity Settings + +Give your config a recognizable name and add notes for reference. + +| Name and Notes | Edit Dialog | +| ------------------------------------------------------ | -------------------------------------------------------------------- | +| ![Name and notes](../assets/battle/name-and-notes.png) | ![Name and notes dialog](../assets/battle/name-and-notes-dialog.png) | + +- **Name** - A unique identifier for the battle config (required) +- **Notes** - Multi-line text for additional information (text only, no images) +- **Favorite** - Mark important configs for easy access + +Tap the name or notes field to open the edit dialog. + +### Skill Commands + +Skill commands define which skills to activate each turn and wave. + +| Skill Command | Quick Edit Dialog | +| ---------------------------------------------------- | ------------------------------------------------------------------ | +| ![skill command](../assets/battle/skill-command.png) | ![skill command dialog](../assets/battle/skill-command-dialog.png) | + +Two ways to edit skill commands: + +1. **Skill Maker** - Tap the command to open the full [Skill Maker](skill-maker.md) editor +2. **Quick Edit** - Tap the terminal icon for a text-based popup dialog + +### Default Run Configuration + +![Default Run Configuration](../assets/battle/default-run-config.png) + +Set the starting values for each farming session: + +| Setting | Description | Range | +| ------------- | ---------------------------------------------- | ----- | +| **Runs** | Number of battle loops to complete | 1-300 | +| **Materials** | Stop after collecting this many materials | 1-300 | +| **CEs** | Stop after collecting this many Craft Essences | 1-300 | +| **Teapots** | Number of golden apples or teapots to use | 1-300 | + +These values reset to defaults when the previous run completes its target. + +!!! note "Current Limitation" + The current values only reset after reaching their limits. Use the reset button in the Battle Launcher to manually restore default values. + +### Farming Configuration + +![Farming Configuration](../assets/battle/farming-config.png) + +Configure what and where you want to farm: + +- **Materials** - Select which materials to track. Tap to open the [Materials](materials.md) editor. +- **Server** - Restrict this config to a specific game server, or leave as "Default" for all servers. +- **Party** - Choose which party slot to use for battles. + +| Setting | Preview | +| -------------- | --------------------------------------------------------- | +| Party Selection | ![Party Configuration](../assets/battle/party-config.png) | + +!!! info "Party Slots by Server" + JP and CN servers have 15 party slots. Other servers have 10 slots. If you select party 15 but play on a 10-slot server, FGA automatically uses slot 10. + +### Command Card Priority + +![Command Card](../assets/battle/command-card.png) + +Control how FGA picks command cards each turn: + +| Option | Effect | +| --------------------------------- | --------------------------------------------------- | +| **Skip servant face-card checks** | Faster card selection but may pick weaker cards | +| **Use Servant Priority** | Prioritize specific servants' cards over card types | +| **Use Crit Stars Priority** | Prefer cards with 80-100% critical chance | + +Tap the priority summary to open the [Command Card Priority](card-priority.md) editor. + +### Support Selection + +Choose how FGA picks a friend support servant. + +| General Setup | Preferred Setup | +| -------------------------------------------------------------------- | ------------------------------------------------------------------------- | +| ![General Support Setup](../assets/battle/general-support-setup.png) | ![Preferred Support Setup](../assets/battle/preferred-support-setup.png) | + +#### Selection Modes + +| Mode | Behavior | +| ------------- | --------------------------------------------------------- | +| **First** | Selects the first available support immediately | +| **Manual** | Pauses the script for manual selection, then resume | +| **Preferred** | Searches for specific servants or CEs before falling back | + +#### Preferred Mode Options + +When using Preferred mode: + +- **Fallback** - What to do if the preferred support is not found (First or Manual) +- **Servant/CE Selection** - Configure in the [Support Setup](support.md) page +- **Also Check All** - Search the "All" class tab in addition to the selected class +- **Auto Friend Request** - Send friend requests to non-friends after battle + +### Script Exit Conditions + +Control when FGA stops the battle script: + +| Setting | Effect | +| ------------------------ | --------------------------------------------------------- | +| **Out of Commands Exit** | Exit battle when no more skill commands remain | +| **Off-script Exit** | Exit when reaching a turn or wave not covered by commands | + +Enabling "Off-script Exit" also triggers an exit when commands run out. + +### Raid Settings + +Special options for raid battles like Tunguska or event raids: + +| Setting | Effect | +| ------------------ | -------------------------------------- | +| **Raid Delay** | Enable a delay before the first action | +| **Delay Duration** | Wait time in seconds (1-10) | +| **Skip Intro** | Automatically skip story introductions | + +!!! tip "Why Use Raid Delay?" + Some raid battles display kill counters that interfere with FGA's timing. Adding a delay allows the overlay to disappear before FGA starts acting. + + [![Tunguska Raid Example](https://i.ytimg.com/vi/Kpg2DsgQRBg/mqdefault.jpg)](https://youtu.be/Kpg2DsgQRBg?t=123) + +### Additional Options + +| Setting | Effect | +| ---------------------- | ------------------------------------------------------------ | +| **Auto-Choose Target** | Automatically select enemies tagged as "servant" or "danger" | +| **Shuffle Cards** | Re-deal command cards based on specified conditions | +| **Shuffle Wave** | Which wave to trigger card shuffling (1-3) | + +### Config Management + +Use the top bar buttons to manage your config: + +- **Export** - Save the config as a JSON file to share or backup +- **Copy** - Create a duplicate of the current config +- **Delete** - Remove the config permanently + +## Tips for Best Results + +1. **Start simple** - Create basic configs first, then add complexity as needed +2. **Use descriptive names** - Include the quest name and farming target (e.g., "Doors - QP Farming") +3. **Test your skill commands** - Run once manually to verify timing before long farming sessions +4. **Set realistic limits** - Match run counts to your available AP and apples +5. **Use Preferred support wisely** - Set a reasonable fallback for when friends are unavailable + +## Troubleshooting + +### Config shows on wrong server + +Set the Server option to restrict configs to specific servers, or use "Default" for all servers. + +### Skill commands not executing correctly + +Open the Skill Maker and verify the command sequence matches your intended rotation. Check that wave timings align with enemy counts. + +### Support selection fails + +- Verify servant and CE images in the [Support Setup](support.md) +- Ensure the correct class is selected +- Enable "Also Check All" to search additional tabs +- Set a fallback option for when preferred supports are unavailable + +### Battle exits unexpectedly + +Check exit condition settings: + +- Disable "Out of Commands Exit" if you want FGA to continue with card selection +- Disable "Off-script Exit" if battles may have variable turn counts diff --git a/docs/battle-setup/launcher.md b/docs/battle-setup/launcher.md new file mode 100644 index 0000000..061e790 --- /dev/null +++ b/docs/battle-setup/launcher.md @@ -0,0 +1,312 @@ +--- +title: Battle Launcher +description: Launch and manage FGA Preview battle configurations. Select configs, start automated farming, and monitor battle progress. +tags: + - battle + - launcher + - farming + - automation +--- + +# Battle Launcher + +The Battle Launcher is the main control panel for configuring and starting battle automation. + +## Overview + +The Battle Launcher appears when you open the FGA overlay and have battle configs available. It provides quick access to run options, configuration information, and settings without leaving the game. + +## How to Access + +1. Create at least one **Battle Config** in the FGA app +2. Open FGO and navigate to a quest screen +3. Tap the FGA overlay button to open the launcher +4. The Battle Launcher displays automatically + +--- + +## Layout + +The Battle Launcher is divided into two main sections: + +```text +┌─────────────────────────────────────────────────────────────┐ +│ Battle Launcher │ +├───────────────────────┬─────────────────────────────────────┤ +│ │ │ +│ Battle Config │ Details Panel │ +│ List │ │ +│ │ ┌─────┬─────┬─────────┐ │ +│ • Config 1 │ │ Run │Info │Settings │ │ +│ • Config 2 ★ │ └─────┴─────┴─────────┘ │ +│ • Config 3 │ │ +│ ... │ (Content changes based on tab) │ +│ │ │ +└───────────────────────┴─────────────────────────────────────┘ +``` + +--- + +## Battle Config List + +The left panel shows all your battle configurations. + +### Selecting a Config + +- Tap on any config name to select it +- The selected config is highlighted +- A heart icon (★) indicates favorite configs + +### Sorting Configs + +Use the sort button at the top of the list to organize configs by: + +- **Name** (alphabetical) +- **Favorites** (favorites first) +- **Recent** (recently used first) + +--- + +## Details Panel + +The right panel has three tabs accessible via the bottom icons: + +| Icon | Tab | Purpose | +|------|-----|---------| +| 🏃 | **Run** | Configure AP refill and run limits | +| ℹ️ | **Info** | View config details at a glance | +| ⚙️ | **Settings** | Quick access to common settings | + +--- + +## Run Options Tab + +Configure how many times and how the script should run. + +### AP Refill + +Control how FGA handles running out of AP (stamina). + +#### Refill Count + +Set how many apples of the selected type to use: + +- Use **-100**, **-10**, **-1**, **+1**, **+10**, **+100** buttons +- Or tap the number directly to edit + +#### Refill Resources + +Select which apple type to use when AP runs out: + +| Resource | Description | +|----------|-------------| +| **Copper** | Bronze Apple (10 AP) | +| **Bronze** | Blue Apple (40 AP, time-limited) | +| **Silver** | Silver Apple (50% max AP) | +| **Gold** | Gold Apple (100% max AP) | +| **SQ** | Saint Quartz (100% max AP) | + +**Note**: Only one resource type can be selected at a time. Tap to toggle selection. + +#### Wait for AP Regeneration + +When enabled, the script will wait for natural AP regeneration instead of using apples when you run out. + +#### Stamina Over Recharge + +When enabled and using Copper, Bronze, or Silver apples, allows AP to exceed your maximum. + +**Note**: This option is not available for Gold apples or Saint Quartz. + +### Run Limits + +Set conditions for when the script should stop. + +#### Limit by Runs + +Stop after completing a specific number of quest runs. + +- Check the box to enable +- Set the target number of runs + +#### Limit by Materials + +Stop after collecting a specific number of materials. + +- Check the box to enable +- Set the target material count +- Works with materials configured in your battle config + +#### Limit by Craft Essences + +Stop after collecting a specific number of CE drops. + +- Check the box to enable +- Set the target CE count + +#### Teapots + +Use teapots to instantly complete battles. + +- Check the box to enable teapot usage +- Set the maximum number of teapots to use + +### Limit Controls + +| Button | Action | +|--------|--------| +| **Default** | Reset all limits to config defaults | +| **Reset All** | Clear all limits and set counts to 1 | + +--- + +## Information Tab + +View a summary of the selected battle config without opening the full editor. + +### Notes + +Displays any notes you've added to the config. + +### Skill Command + +Shows the configured skill sequence as visual icons. + +### Materials + +Lists target materials configured for this config. + +### Party + +Shows which party slot is configured: + +- **Any**: FGA won't change party +- **1-10**: Specific party slot to select + +### Command Card Priority + +Displays card priority settings for each wave: + +- Card type order (Buster, Arts, Quick) +- Servant priority (if enabled) +- Brave chain settings +- Rearrange cards option + +### Support Settings + +Shows support selection configuration: + +- Support class tab +- Selection mode (Preferred/First/Manual) +- Preferred servants and CEs (if using Preferred mode) +- Friend requirements + +--- + +## Settings Tab + +Quick access to common settings organized by scope. + +### Per Battle Config + +Settings specific to the selected config: + +| Setting | Description | +|---------|-------------| +| **Auto Accept Friend Request** | Automatically accept friend requests during farming | + +### Per Server + +Settings that apply to the current game server: + +| Setting | Description | +|---------|-------------| +| **Return to Menu** | Return to main menu after completing runs | +| **Exit on Preset Quest** | Stop if a preset/daily quest is detected | +| **Manual Battle Config** | Allow manually switching configs during runs | + +### Per App + +Settings that apply globally: + +| Setting | Description | +|---------|-------------| +| **Exit on Manual Selection** | Stop script if you manually select a support | +| **Debug Mode** | Enable detailed logging for troubleshooting | + +--- + +## Starting a Battle Run + +1. Select your desired battle config from the list +2. Configure run options (refills, limits) +3. Ensure you're on a quest selection screen in FGO +4. Tap the **Play** button on the FGA overlay + +--- + +## Run Progress + +During execution, FGA tracks: + +- **Completed runs**: Number of quests finished +- **Materials collected**: If material limit is set +- **CEs collected**: If CE limit is set +- **Apples used**: Count per type + +The script stops when any configured limit is reached. + +--- + +## Tips for Effective Farming + +### Efficient Apple Usage + +1. **Set exact apple counts**: Prevent accidentally using more apples than intended +2. **Use appropriate apple types**: Bronze/Silver for short sessions, Gold for extended farming +3. **Enable Wait AP Regen**: For casual overnight farming without apple usage + +### Configuration Run Limits + +1. **Combine limits**: Use both run limits and material limits for safety +2. **Set material limits**: Stop exactly when you have enough materials +3. **Use CE limits**: For event farming where CE drops matter + +### Before Starting + +1. **Check your config**: Review the Info tab to verify settings +2. **Verify support settings**: Ensure your preferred supports are correctly configured +3. **Confirm party slot**: Make sure the right team is selected + +--- + +## Troubleshooting + +### Config not appearing in list + +- Ensure the config is saved in the FGA app +- Check if the config is hidden by the current sort filter + +### Apples not being used + +- Verify a refill resource is selected (highlighted) +- Check that the refill count is greater than 0 + +### Script stopping too early + +- Review all limit settings +- Check if a limit was accidentally enabled + +### Script not stopping + +- Ensure at least one limit is configured +- Material/CE limits require proper detection setup + +--- + +## Related Documentation + +- [Auto Battle](../in-battle/auto-battle.md) - How the battle automation works +- [Command Card](../battle-setup/card-priority.md) - Card priority configuration +- [Preferred Support](../battle-setup/support.md) - Support selection setup +- [Skill Maker](../battle-setup/skill-maker.md) - Skill command configuration \ No newline at end of file diff --git a/docs/battle-setup/materials.md b/docs/battle-setup/materials.md new file mode 100644 index 0000000..21b4f0e --- /dev/null +++ b/docs/battle-setup/materials.md @@ -0,0 +1,116 @@ +--- +title: Materials Selection +description: Configure material farming preferences in FGA Preview. Select target materials, organize by rarity, and set up efficient farming sessions. +tags: + - battle + - materials + - farming + - configuration +--- + +# Materials Selection + +The Materials screen lets you choose which materials FGA should track during farming sessions. Selected materials determine what FGA counts on drop screens and can trigger automatic stops when you've collected enough. + +## Overview + +Materials in Fate/Grand Order come in different rarities and categories. FGA organizes them into tabs for easy browsing: + +- **Copper** - Common materials like Proofs, Bones, and Fangs, plus class-specific blue gems +- **Silver** - Mid-tier materials like Seeds, Feathers, and Pages, plus class pieces and red gems +- **Gold** - Rare materials like Hearts, Scales, and Lores, plus class monuments and gold gems + +## Key Features + +### Material Selection + +Select materials by tapping them in the list. Selected materials appear highlighted with a checkmark. + +| Unselected State | Selected State | +| ------------------------ | ------------------------------------------------- | +| Standard list appearance | Highlighted with primary color and checkmark icon | + +Tap a selected material again to deselect it. + +### Search Materials + +Find materials quickly using the search bar at the top of the screen. + +1. Tap the search field or the floating search button +2. Type the material name (partial matches work) +3. Results filter in real-time across all rarity tabs +4. The tab badges show how many materials match in each category + +Search is case-insensitive, so "bone" finds "Bone" and "Horseshoe" finds matches containing those letters. + +### Rarity Tabs + +Switch between material rarities using the tab bar: + +| Tab | Materials Included | +| ---------- | --------------------------------------------------------------------------------------------------------------------------------- | +| **Copper** | Proofs, Bones, Fangs, Dust, Chains, Stingers, Fluids, Stakes, Gunpowder, and more. Also includes blue skill gems for all classes. | +| **Silver** | Seeds, Ghost Lanterns, Crystals, Jewels, Feathers, Gears, Pages, and more. Also includes class pieces and red skill gems. | +| **Gold** | Claws, Hearts, Dragon Scales, Spirit Roots, and other rare materials. Also includes class monuments and gold skill gems. | + +Each tab shows a count of how many materials you've selected in that category. + +### Toolbar Actions + +The floating toolbar at the bottom provides quick actions: + +| Button | Action | +| ---------- | --------------------------------------------------------------- | +| **Reset** | Restore selections to what they were when you opened the screen | +| **Undo** | Reverse your last selection change | +| **Clear** | Remove all selected materials | +| **Search** | Toggle the search keyboard | + +The Reset button only appears when your current selections differ from the initial state. + +## Tips for Best Results + +### Select Only What You Need + +Choose only materials that actually drop in your target quest. Selecting too many materials slows down detection and may lead to false positives. + +### Use Search for Specific Materials + +When farming for a specific material, use search to jump directly to it instead of scrolling through tabs. + +### Check Tab Counts Before Farming + +The numbers on each tab show your selected materials per rarity. Verify these match your farming plan before starting a run. + +### Reset When Switching Quests + +If you change farming locations, consider using Clear to remove all selections, then pick fresh materials for the new quest. + +## Troubleshooting + +### Materials Not Being Detected + +If FGA isn't counting your target materials: + +1. Verify the material is selected (has a checkmark) +2. Confirm the material actually drops in your quest +3. Check that you haven't hit the material limit in your battle config + +### Search Shows No Results + +If search returns empty: + +1. Check your spelling +2. Try shorter search terms +3. Clear the search and browse manually + +### Selections Not Saving + +Material selections save automatically to your battle config. If selections aren't persisting: + +1. Make sure you exit the screen normally (back button) +2. Don't force-close the app before changes sync + +### Wrong Materials Selected After Undo + +The undo system tracks each individual change. Multiple rapid taps may create multiple undo states. Use Reset to return to the original state if undo behaves unexpectedly. diff --git a/docs/battle-setup/skill-maker.md b/docs/battle-setup/skill-maker.md new file mode 100644 index 0000000..78e4aab --- /dev/null +++ b/docs/battle-setup/skill-maker.md @@ -0,0 +1,322 @@ +--- +title: Support Selection +description: Configure support servant selection in FGA Preview. Set up preferred servants, CEs, NP levels, append skills, and friend preferences for automated farming. +tags: + - battle + - support + - servants + - configuration +--- + +# Support + +Configure how FGA selects support servants from your friends list during battle. + +## Overview + +The Preferred Support screen lets you specify exactly which support servants, Craft Essences, and friends you want FGA to select. The app will scroll through your support list looking for matches based on your criteria. + +## How to Access + +1. Open a **Battle Config** from the main app +2. Tap on **Support Selection** +3. Select **Preferred** mode +4. Tap **Preferred Support** to configure preferences + +--- + +## Support Class Selection + +Choose which servant class tab to search in. + +| Class | Description | +|-------|-------------| +| **None** | Don't filter by class (search current tab) | +| **All** | Search the "All" tab | +| **Saber** | Search only Saber supports | +| **Archer** | Search only Archer supports | +| **Lancer** | Search only Lancer supports | +| **Rider** | Search only Rider supports | +| **Caster** | Search only Caster supports | +| **Assassin** | Search only Assassin supports | +| **Berserker** | Search only Berserker supports | +| **Extra** | Search Extra class (Ruler, Avenger, etc.) | +| **Mix** | Search the Mix/Event tab | + +### Also Check All + +When enabled and a specific class is selected, FGA will also check the "All" tab if no match is found in the class tab. + +**Note**: This option is not available when "None", "All", or "Mix" is selected. + +--- + +## Preferred Servants + +Select which support servants you want FGA to look for. + +### Adding Servants + +1. Tap **Add** in the Preferred Servants section +2. Select one or more servant images from your collection +3. Tap **Save** to confirm + +**Important**: You must first create servant images using the **Support Image Maker** feature. Without images, FGA cannot identify servants. + +### Servant Filters + +Once you've selected servants, you can apply additional filters: + +#### Max Ascended + +When enabled, only selects servants showing the golden ascension star (final ascension artwork). + +#### Max Skills + +Specify which skills must be at level 10: + +| Display | Meaning | +|---------|---------| +| **10** | Skill must be maxed | +| **X** | Skill level doesn't matter | + +Example: `10 / X / 10` means skills 1 and 3 must be maxed, skill 2 can be any level. + +#### Check Append Skills + +When enabled, checks append skill levels in addition to regular skills. + +**Append Skills Display** (when enabled): + +- On JP server: Shows 5 append skill slots +- On other servers: Shows 3 append skill slots + +#### Noble Phantasm Level + +When enabled, only selects servants with at least the specified NP level (1-5). + +**Note**: NP1 is always available, so setting minimum to 1 will match any servant. + +--- + +## Grand Servant Support (JP Server Only) + +Grand Servants are a special feature on the Japanese server where players can equip up to 3 Craft Essences on a single support servant. + +### Grand Servant Options + +| Option | Behavior | +|--------|----------| +| **Any** | Accept any servant (Grand or normal) | +| **Level 100** | Only accept Grand Servants at exactly level 100 | +| **Above Level 100** | Only accept Grand Servants above level 100 (grailed) | + +**Warning**: Grand Servant detection requires the servant to be visible in the Grand Servant format on your support list. + +--- + +## Preferred Craft Essences + +Select which Craft Essences the support servant should have equipped. + +### For Normal Supports + +- **CE Selection**: Choose one or more CEs to look for +- **Max Limit Break (MLB)**: When enabled, only selects if the CE has the MLB star + +### For Grand Servants (JP Server Only) + +Grand Servants have 3 CE slots: + +#### Slot 1 (Main CE) + +- Select preferred CEs +- Enable MLB if you want only limit broken versions + +#### Slot 2 (Bond CE) + +| Option | Behavior | +|--------|----------| +| **Skip** | Don't check slot 2 | +| **Any** | Accept any Bond CE (regular or charge type) | +| **Bond** | Only accept regular Bond CEs | +| **Charge** | Only accept NP Charge Bond CEs | + +#### Slot 3 (Third CE) + +- Select preferred CEs +- Enable MLB separately for slot 3 + +### Adding CE Images + +1. Tap **Add** in the CE section +2. Select one or more CE images from your collection +3. Tap **Save** to confirm + +**Tip**: CE images should be created using the **Support Image Maker** feature for best results. + +--- + +## Friend Selection + +Control whether FGA only selects from your friends list. + +### Friends Only + +When enabled, FGA will only select support servants from players on your friends list (not randoms or follow-only players). + +### Preferred Friends + +When "Friends Only" is enabled, you can specify particular friends: + +1. Tap **Add** in the Friends section +2. Select friend name images from your collection +3. Tap **Save** to confirm + +**How it works**: If preferred friends are set, FGA will prioritize those friends. If none are found, it will select any friend that matches your servant/CE criteria. + +--- + +## Support Image Maker + +Before using Preferred Support, you need to create images for servants, CEs, and friends. + +### Creating Support Images + +1. Navigate to the **Support Selection** screen in FGO +2. Start FGA's **Support Image Maker** script +3. Tap on each servant/CE/friend you want to save +4. Images are automatically saved to your device + +### Image Storage Location + +Images are stored in your FGA support images folder: + +- Servants: `support/servant/` +- Craft Essences: `support/ce/` +- Friends: `support/friend/` + +--- + +## How Support Selection Works + +```text +┌─────────────────────────────────────────┐ +│ Start Support Selection │ +└─────────────────────┬───────────────────┘ + │ + ▼ + ┌────────────────────────┐ + │ Navigate to Class Tab │ + │ (if configured) │ + └────────────┬───────────┘ + │ + ▼ + ┌────────────────────────┐ + │ Scan Visible List │◄──────┐ + └────────────┬───────────┘ │ + │ │ + ▼ │ + ┌────────────────────────┐ │ + │ Check Each Support │ │ + │ • Servant match? │ │ + │ • CE match? │ │ + │ • Friend match? │ │ + │ • Skills maxed? │ │ + │ • NP level OK? │ │ + └────────────┬───────────┘ │ + │ │ + ┌──────────┴──────────┐ │ + │ Match │ No │ + │ Found? │ Match │ + ▼ ▼ │ + ┌──────────┐ ┌────────────┐ │ + │ Select │ │ Scroll │───┘ + │ Support │ │ Down │ + └──────────┘ └─────┬──────┘ + │ + ┌─────────┴─────────┐ + │ Bottom │ + │ of List? │ + ▼ ▼ + ┌────────────┐ ┌────────────┐ + │ Check "All"│ │ Refresh │ + │ Tab │ │ List │ + └────────────┘ └────────────┘ +``` + +--- + +## Matching Priority + +When multiple supports match your criteria, FGA selects the **first match** found while scrolling through the list. + +### Match Requirements + +For a support to be selected, ALL of these must be true: + +1. **Servant matches** (if servants are specified) +2. **CE matches** (if CEs are specified, or no blank CE if none specified) +3. **Friend matches** (if Friends Only is enabled) +4. **Ascension matches** (if Max Ascended is enabled) +5. **Skills match** (if Max Skills are specified) +6. **Append skills match** (if Check Append is enabled) +7. **NP level matches** (if Check NP Level is enabled) +8. **Grand Servant matches** (if Grand filtering is enabled, JP only) + +--- + +## Tips for Effective Configuration + +### For Faster Matching + +1. **Use specific class tabs**: Selecting a class reduces the search space +2. **Enable "Also Check All"**: Provides a fallback if the class tab doesn't have matches +3. **Don't over-specify**: Each additional requirement reduces available matches + +### For Reliable Matching + +1. **Create clear images**: Use Support Image Maker for accurate servant/CE detection +2. **Update images after ascension**: Re-capture servants after they change artwork +3. **Add multiple servants**: Having fallback options prevents failed selections + +### For Events + +1. **Look for event CEs**: Many farming supports equip event bonus CEs +2. **Use the Mix tab**: Event supports often appear in the Mix/Event class tab +3. **Temporarily disable MLB**: Early in events, MLB CEs may be rare + +--- + +## Troubleshooting + +### Support not being selected + +- **Check images**: Ensure servant/CE images are captured correctly +- **Verify class tab**: Make sure you're searching the right class +- **Relax requirements**: Try disabling Max Ascended, Max Skills, or NP Level checks +- **Check MLB setting**: Disable MLB requirement if supports might not have it + +### Script keeps refreshing the list + +- No matching support was found +- Try adding more servant/CE options +- Check if your requirements are too strict + +### Wrong support selected + +- Your images may match multiple servants +- Re-capture more specific images +- Add additional filter requirements + +### Grand Servant features not showing + +- Grand Servant is JP server only +- Ensure your Battle Config is set to JP server + +--- + +## Related Documentation + +- [Auto Battle](../in-battle/auto-battle.md) - Overall battle automation +- [Support Image Maker](../other-scripts/support-image-maker.md) - Create support images diff --git a/docs/battle/support.md b/docs/battle-setup/support.md similarity index 100% rename from docs/battle/support.md rename to docs/battle-setup/support.md diff --git a/docs/battle/card-priority.md b/docs/battle/card-priority.md deleted file mode 100644 index 3f6d04d..0000000 --- a/docs/battle/card-priority.md +++ /dev/null @@ -1,3 +0,0 @@ -# Command Card Priority - -Currently work-in-progress. diff --git a/docs/battle/config.md b/docs/battle/config.md deleted file mode 100644 index a557daa..0000000 --- a/docs/battle/config.md +++ /dev/null @@ -1,126 +0,0 @@ -# Battle Config - -This is how to setup the battle config. - -## Identity - -- **Name** - The name of the battle config -- **Notes** - A multi-line text field for additional information. It cannot contain images only text would be rendered. - -Clicking either the name or notes would popup a dialog to edit it. - -| Name and notes | Name and notes dialog | -| --- | --- | -| ![Name and notes](../assets/battle/name-and-notes.png) | ![Name and notes dialog](../assets/battle/name-and-notes-dialog.png) | - -## Command - -Clicking the command would redirect you to the [Skill Maker Screen](skill-maker.md) while clicking the `terminal` icon would show a popup dialog for quick edit - -| Skill command | Skill command dialog | -| --- | --- | -| ![skill command](../assets/battle/skill-command.png) | ![skill command dialog](../assets/battle/skill-command-dialog.png) | - -## Default Run Configuration - -![Default Run Configuration](../assets/battle/default-run-config.png) - -When a run ended, the default run configuration values will be used for the initial values of the next run. - -### Limitation - -Due to current architectural limitations, we can't update the current configuration. Run/materials/CE/teapots need to reach their limits before the default values are applied. - -As a workaround, we added a button in the Battle Launcher to reset the configuration to its default values. - -The current migration to Datastore would hopefully resolve this issue. - -## Farming Configuration - -![Farming Configuration](../assets/battle/farming-config.png) - -- Clicking the materials would redirect you to [Materials](materials.md) where you can configure the farming materials that you want to track of. - -- Clicking the Server will restrict the Config to whatever Server you are currently on when you launched the game. - - **Default** means this config will show up to any server. - -- Clicking the party would then move the configuration to the selected party. - -> **Note:** -> -> In CN and JP both now have 15 party slots compared to other servers' 10 party slots -> -> If you ever selected Default Server and choose 15th party slot but played on a server with only 10 slots, the script will restrict it to the highest possible number which is 10th slot. - -| Server Configuration | Party Configuration | -| --- | --- | -| ![Server Configuration](../assets/battle/server-config.png) | ![Party Configuration](../assets/battle/party-config.png) | - -## Command Card - -![Command Card](../assets/battle/command-card.png) - -This is the section where you'll configure the command card priority for the battle. - -| Command Card Option | Command Card Option Description | -| --- | --- | -| Skip servant face-card checks | If enabled, the app will not check if the servant face card matches allowing for faster picking of cards in exchange of possibly weaker cards. | -| Use Servant Priority | If enabled, the app will prioritize the servant's cards before the command card type | -| Use Crit Stars Priority | If enabled, the app will prioritize cards with high chance to do critical damage. The default percentage is 80 ~ 100% | - -Below the Command Card options is the summary of the current command card priority. - -The summary is clickable and will redirect you to the [Command Card Priority](card-priority.md) page. - -For more information about command cards, go to [Command Card Priority](card-priority.md) - -## Support - -This is where we will setup the support to be chosen. - -| General Support Setup | Preferred Support Setup | -| --- | --- | -| ![General Support Setup](../assets/battle/general-support-setup.png) | ![Preferred Support Setup](../assets/battle/preferrred-support-setup.png) | - -### General Support Setup - -This is where you setup the class and what kind of support mode the app would perform. - -| Selection Mode | Description | -| --- | --- | -| First | The app will always select the first available support option. | -| Manual | The app would stop the script and the user need to manually select a support option. After that, the user need to start the script again. | -| Preferred | The app will select the preferred support option based on the setup below. If no preferred support is available after certain amount of actions, it will use fallback option | - -### Preferred Support Setup - -This is where you precisely define the preferred support setup for the battle. - -In order to learn about the preferred support visit [support](support.md) page - -**Auto send Friend Request** - If enabled, the app will automatically send a friend request to the selected support option after the battle and if the borrowed servant is not already on the friend list. - -## Battle Settings - -| Settings | Description | -| --- | --- | -| Out of Commands Exit | When you run out of commands, the app will automatically exit the battle. | -| Off-script Exit | When a turn/wave that is not on the list of commands, the app will automatically exit the battle. If you disabled `Out of Commands Exit` but enabled this option, the app will also exit the battle as it encounters an off-script turn/wave. | -| Raid | When enabled, it will delay the initial action of the script according to the `raid delay` | -| Raid Delay | Amount of time (in seconds) to delay the initial action of the script. | -| Auto-Choose Target | If enabled, the app will automatically choose the target with first `servant` or `danger` tag. | -| Shuffle Cards | It will shuffle cards depending on the commands cards. | - -Dev notes: - -- Raid Delay - - The best example of this is the Tunguska Raid wherein it would display the counter of raid kills left. This messes up the timing of the script if you opt-in to not one shot for maximum rewards. - - [![Tunguska Raid Example](https://i.ytimg.com/vi/Kpg2DsgQRBg/mqdefault.jpg)](https://youtu.be/Kpg2DsgQRBg?t=123) - - On the Youtube timestamp link will show you the exact moment in the video where this is relevant. - -- Auto-Choose Target - I honestly never used this -- Shuffle Cards - I also never shuffle my cards either. diff --git a/docs/battle/launcher.md b/docs/battle/launcher.md deleted file mode 100644 index cf46e00..0000000 --- a/docs/battle/launcher.md +++ /dev/null @@ -1,3 +0,0 @@ -# Battle Launcher - -Currently work-in-progress. diff --git a/docs/battle/materials.md b/docs/battle/materials.md deleted file mode 100644 index 71ed0e9..0000000 --- a/docs/battle/materials.md +++ /dev/null @@ -1,3 +0,0 @@ -# Materials - -This is how materials work diff --git a/docs/battle/skill-maker.md b/docs/battle/skill-maker.md deleted file mode 100644 index bcc013c..0000000 --- a/docs/battle/skill-maker.md +++ /dev/null @@ -1,3 +0,0 @@ -# Skill Maker - -This is how skill maker works From 1c94ed82590847af83d122e1f9d7be3b105f13cb Mon Sep 17 00:00:00 2001 From: Arthur <16458204+ArthurKun21@users.noreply.github.com> Date: Sun, 7 Dec 2025 22:01:27 +0800 Subject: [PATCH 5/8] docs: ensure consistent formatting in launcher documentation --- docs/battle-setup/launcher.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/battle-setup/launcher.md b/docs/battle-setup/launcher.md index 061e790..638b175 100644 --- a/docs/battle-setup/launcher.md +++ b/docs/battle-setup/launcher.md @@ -309,4 +309,4 @@ The script stops when any configured limit is reached. - [Auto Battle](../in-battle/auto-battle.md) - How the battle automation works - [Command Card](../battle-setup/card-priority.md) - Card priority configuration - [Preferred Support](../battle-setup/support.md) - Support selection setup -- [Skill Maker](../battle-setup/skill-maker.md) - Skill command configuration \ No newline at end of file +- [Skill Maker](../battle-setup/skill-maker.md) - Skill command configuration From 5cc7ad0d1efd5f715530c85467f648c4b25c5b2f Mon Sep 17 00:00:00 2001 From: Arthur <16458204+ArthurKun21@users.noreply.github.com> Date: Sun, 7 Dec 2025 22:03:30 +0800 Subject: [PATCH 6/8] docs: update index metadata with additional tags and hide navigation --- docs/index.md | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/docs/index.md b/docs/index.md index 9542416..07efbb4 100644 --- a/docs/index.md +++ b/docs/index.md @@ -1,6 +1,15 @@ --- +title: Home +description: FGA Preview is an enhanced fork of Fate/Grand Automata for Android. Auto-level skills, servants, CEs, append skills, NP detection, and automated farming scripts for Fate/Grand Order. +tags: + - home + - FGA + - Fate Grand Automata + - FGO search: exclude: true +hide: + - navigation --- # FGA Preview From 365e738ec9308f23898ef815d510cc0398adb80e Mon Sep 17 00:00:00 2001 From: Arthur <16458204+ArthurKun21@users.noreply.github.com> Date: Sun, 7 Dec 2025 22:04:37 +0800 Subject: [PATCH 7/8] docs: add documentation for preferred servant, friend, and CE selection features, support list refresh, and selection modes --- docs/.nav.yml | 31 ++ docs/in-battle/.meta.yml | 5 + docs/in-battle/auto-battle.md | 331 ++++++++++++++++++ docs/in-battle/card-selection/.meta.yml | 5 + docs/in-battle/card-selection/brave-chains.md | 257 ++++++++++++++ .../card-selection/face-card-priority.md | 236 +++++++++++++ .../in-battle/card-selection/shuffle-cards.md | 238 +++++++++++++ docs/in-battle/resources/.meta.yml | 5 + docs/in-battle/resources/energy-refill.md | 240 +++++++++++++ docs/in-battle/resources/teapots.md | 243 +++++++++++++ docs/in-battle/script-control/.meta.yml | 5 + .../auto-battle-exit-reasons.md | 206 +++++++++++ .../script-control/party-selection.md | 234 +++++++++++++ .../script-control/screen-detection.md | 248 +++++++++++++ docs/in-battle/script-control/withdraw.md | 243 +++++++++++++ docs/in-battle/skill-system/.meta.yml | 5 + docs/in-battle/skill-system/auto-target.md | 140 ++++++++ .../in-battle/skill-system/skill-execution.md | 324 +++++++++++++++++ docs/in-battle/tracking/.meta.yml | 5 + docs/in-battle/tracking/ce-drops.md | 262 ++++++++++++++ docs/in-battle/tracking/materials-tracking.md | 261 ++++++++++++++ docs/in-battle/tracking/servant-tracking.md | 278 +++++++++++++++ docs/in-battle/tracking/stage-tracking.md | 267 ++++++++++++++ docs/support-screen/.meta.yml | 5 + docs/support-screen/class-picker.md | 254 ++++++++++++++ docs/support-screen/grand-servant.md | 278 +++++++++++++++ docs/support-screen/preferred-ce.md | 259 ++++++++++++++ docs/support-screen/preferred-friend.md | 205 +++++++++++ docs/support-screen/preferred-servant.md | 253 +++++++++++++ docs/support-screen/refresh.md | 306 ++++++++++++++++ docs/support-screen/selection-modes.md | 207 +++++++++++ 31 files changed, 5836 insertions(+) create mode 100644 docs/in-battle/.meta.yml create mode 100644 docs/in-battle/auto-battle.md create mode 100644 docs/in-battle/card-selection/.meta.yml create mode 100644 docs/in-battle/card-selection/brave-chains.md create mode 100644 docs/in-battle/card-selection/face-card-priority.md create mode 100644 docs/in-battle/card-selection/shuffle-cards.md create mode 100644 docs/in-battle/resources/.meta.yml create mode 100644 docs/in-battle/resources/energy-refill.md create mode 100644 docs/in-battle/resources/teapots.md create mode 100644 docs/in-battle/script-control/.meta.yml create mode 100644 docs/in-battle/script-control/auto-battle-exit-reasons.md create mode 100644 docs/in-battle/script-control/party-selection.md create mode 100644 docs/in-battle/script-control/screen-detection.md create mode 100644 docs/in-battle/script-control/withdraw.md create mode 100644 docs/in-battle/skill-system/.meta.yml create mode 100644 docs/in-battle/skill-system/auto-target.md create mode 100644 docs/in-battle/skill-system/skill-execution.md create mode 100644 docs/in-battle/tracking/.meta.yml create mode 100644 docs/in-battle/tracking/ce-drops.md create mode 100644 docs/in-battle/tracking/materials-tracking.md create mode 100644 docs/in-battle/tracking/servant-tracking.md create mode 100644 docs/in-battle/tracking/stage-tracking.md create mode 100644 docs/support-screen/.meta.yml create mode 100644 docs/support-screen/class-picker.md create mode 100644 docs/support-screen/grand-servant.md create mode 100644 docs/support-screen/preferred-ce.md create mode 100644 docs/support-screen/preferred-friend.md create mode 100644 docs/support-screen/preferred-servant.md create mode 100644 docs/support-screen/refresh.md create mode 100644 docs/support-screen/selection-modes.md diff --git a/docs/.nav.yml b/docs/.nav.yml index 8e40462..3a1eb47 100644 --- a/docs/.nav.yml +++ b/docs/.nav.yml @@ -18,6 +18,37 @@ nav: - battle-setup/support.md - How to get started: - battle-setup/launcher.md + - In-battle: + - in-battle/auto-battle.md + - Card Selection: + - in-battle/card-selection/face-card-priority.md + - in-battle/card-selection/brave-chains.md + - in-battle/card-selection/shuffle-cards.md + - Skill System: + - in-battle/skill-system/skill-execution.md + - in-battle/skill-system/auto-target.md + - Tracking: + - in-battle/tracking/stage-tracking.md + - in-battle/tracking/servant-tracking.md + - in-battle/tracking/materials-tracking.md + - in-battle/tracking/ce-drops.md + - Resources: + - in-battle/resources/energy-refill.md + - in-battle/resources/teapots.md + - Script Control: + - in-battle/script-control/party-selection.md + - in-battle/script-control/withdraw.md + - in-battle/script-control/auto-battle-exit-reasons.md + - in-battle/script-control/screen-detection.md + - Support screen: + - support-screen/class-picker.md + - support-screen/refresh.md + - support-screen/selection-modes.md + - Preferred Support: + - support-screen/preferred-servant.md + - support-screen/preferred-ce.md + - support-screen/preferred-friend.md + - support-screen/grand-servant.md - scripts/auto-level-servant.md - scripts/auto-level-ce.md - scripts/auto-ce-exp-bomb.md diff --git a/docs/in-battle/.meta.yml b/docs/in-battle/.meta.yml new file mode 100644 index 0000000..8f4088b --- /dev/null +++ b/docs/in-battle/.meta.yml @@ -0,0 +1,5 @@ +title: In-Battle Features +icon: material/gamepad-variant +description: FGA Preview in-battle guide. Understand how automatic battles work, including card selection, skill execution, targeting, and resource management. +search: + boost: 2 \ No newline at end of file diff --git a/docs/in-battle/auto-battle.md b/docs/in-battle/auto-battle.md new file mode 100644 index 0000000..15dc545 --- /dev/null +++ b/docs/in-battle/auto-battle.md @@ -0,0 +1,331 @@ +--- +title: Auto Battle +description: Automate farming quests in FGA Preview. Handle support selection, battle execution, skill commands, card selection, and result screens for efficient FGO farming. +tags: + - scripts + - battle + - automation + - farming +--- + +# Auto Battle + +Automatically farms quests by handling support selection, battle execution, and result screens. + +## Overview + +The Auto Battle script is the primary automation script for farming quests in Fate/Grand Order. It handles the complete quest loop: selecting supports, executing battles using configured skills and card selections, processing rewards, and repeating quests until a stop condition is met. + +## How to Start + +1. Navigate to a **Quest Selection** screen in the game (showing the quest you want to farm) +2. **Configure a Battle Config** with your skill commands and card priorities +3. The script will automatically detect the battle screen when: + - The Menu icon is visible (quest selection screen) + - You're already in a support selection screen + - You're in the middle of a battle +4. Start the script + +> **Important**: You must configure a Battle Config with skill commands before starting. The script will exit if skill commands cannot be parsed. + +## Workflow + +```text +┌─────────────────────────────────────────┐ +│ Start Auto Battle │ +└─────────────────────┬───────────────────┘ + │ + ▼ + ┌─────────────────────────┐ + │ Main Battle Loop │◄───────────────────────┐ + └─────────────┬───────────┘ │ + │ │ + ▼ │ + ┌─────────────────────────┐ │ + │ Detect Current Screen │ │ + └─────────────┬───────────┘ │ + │ │ + ┌─────────────────┼─────────────────┐ │ + │ │ │ │ + ▼ ▼ ▼ │ +┌────────┐ ┌───────────┐ ┌───────────┐ │ +│ Menu │ │ Support │ │ Battle │ │ +│ Screen │ │ Screen │ │ Screen │ │ +└───┬────┘ └─────┬─────┘ └─────┬─────┘ │ + │ │ │ │ + ▼ ▼ ▼ │ +Select Quest Select Support Execute Battle │ + │ │ │ │ + └────────────────┴────────┬────────┘ │ + │ │ + ▼ │ + ┌─────────────────────┐ │ + │ Result Screens │ │ + │ (Bond, Drops, EXP) │ │ + └─────────┬───────────┘ │ + │ │ + ▼ │ + ┌─────────────────────┐ │ + │ Continue/Repeat? │ │ + └─────────┬───────────┘ │ + │ │ + ┌────────────┴────────────┐ │ + │ Yes │ No │ + └─────────────────────────┴───────────────┘ + │ + ▼ + Exit Script +``` + +## Key Features + +### Support Selection + +- Automatic support servant selection based on configured preferences +- Multiple selection modes: Manual, First, Friend, or Preferred +- Refresh support list when preferred support not found +- See [Selection Modes](../support-screen/selection-modes.md) for details + +### Battle Execution + +- Executes configured skill commands per wave +- Handles card selection based on priority settings +- Supports Noble Phantasm chains and brave chains +- Manages servant swapping and order changes +- See [Skill Execution](skill-system/skill-execution.md) for details + +### AP Refill (Apples) + +- Automatic AP refill using configured apples +- Supports all apple types (gold, silver, bronze, copper, saint quartz) +- Configurable refill limits +- Wait for AP regeneration option +- See [Energy Refill](resources/energy-refill.md) for details + +### Card Selection + +- Command card reading and selection +- Face card priority sorting +- Critical star percentage consideration +- See [Face Card Priority](card-selection/face-card-priority.md) for details + +### Brave Chain Optimization + +- Multiple brave chain modes: None, Avoid, Force, Mighty +- Card rearrangement for damage optimization +- NP + matching face card combinations +- See [Brave Chains](card-selection/brave-chains.md) for details + +### Material Tracking + +- Tracks dropped materials during farming +- Can stop when target material count is reached +- Screenshots drops for reference +- See [Materials Tracking](tracking/materials-tracking.md) for details + +### CE Drop Tracking + +- Detects Craft Essence drops +- Can stop when CE drops +- Tracks total CE drop count +- See [CE Drops](tracking/ce-drops.md) for details + +### Auto Target Selection + +- Detects danger indicators (!) on enemies +- Detects servant enemies (crown icon) +- Prioritizes dangerous/servant enemies +- See [Auto Target](skill-system/auto-target.md) for details + +### Run Limiting + +- Configurable run limit +- Auto-decrements remaining runs +- Stops when limit reached + +### Teapot Management + +- Uses teapots for bonus drops (events) +- Manages teapot usage at appropriate times +- See [Teapots](resources/teapots.md) for details + +## Settings + +| Setting | Description | +|---------|-------------| +| Skill Command | Commands for skill usage per wave | +| Card Priority | Priority order for card selection | +| Party Selection | Which party slot to use | +| Support Selection | How to select support servant | +| Limit Runs | Enable run limit | +| Run Count | Maximum number of runs | +| Refill with Apples | Enable AP refill | +| Apple Type | Which apple types to use | +| Stop on CE Get | Stop when CE drops | +| Stop on First Clear | Stop on first clear rewards | +| Stop on Bond Level Up | Stop when bond target reached | +| Bond Level Target | Target bond level to stop at | +| Boost Item Selection | Which boost item to use (events) | + +## Exit Reasons + +The script will stop and notify you when any of these conditions occur: + +### Normal Completion + +| Exit Reason | Description | +|-------------|-------------| +| **Limit Runs** | Configured run limit has been reached | +| **Limit CEs** | CE drop limit has been reached | +| **Limit Materials** | Material drop limit has been reached | +| **CE Get** | A Craft Essence dropped (if stop on CE enabled) | +| **First Clear Rewards** | First clear rewards obtained (if stop enabled) | +| **Bond Level Reached** | Target bond level achieved | +| **Stop After This Run** | User requested stop after current run | + +### Resource Depletion + +| Exit Reason | Description | +|-------------|-------------| +| **AP Ran Out** | No more AP and refill not possible/allowed | +| **Inventory Full** | Servant/CE inventory is full | +| **Out of Command Spells** | No command spells available when needed | + +### Configuration Issues + +| Exit Reason | Description | +|-------------|-------------| +| **Support Selection Manual** | Manual support selection required | +| **Support Selection Preferred Not Set** | Preferred support not configured | +| **Skill Command Parse Error** | Invalid skill command syntax | +| **Card Priority Parse Error** | Invalid card priority configuration | +| **Withdraw Disabled** | Tried to withdraw but option disabled | +| **Preset Quest** | Preset quest detected | + +### Special Conditions + +| Exit Reason | Description | +|-------------|-------------| +| **Duplicate CE** | Duplicate CE detected in party (JP) | +| **Daily Reset** | Game daily reset occurred | +| **Exit on Out of Commands** | Ran out of configured commands | +| **Exit on Off Script** | Script was turned off | + +### User Actions + +| Exit Reason | Description | +|-------------|-------------| +| **Abort** | Script manually stopped by user | +| **Paused** | Script is paused | +| **Unexpected** | An unexpected error occurred | + +See [Exit Reasons](script-control/auto-battle-exit-reasons.md) for detailed explanations of each exit condition. + +## Exit State Summary + +After the script completes, you receive detailed statistics: + +```text +┌─────────────────────────────────────────┐ +│ Battle Exit State Summary │ +├─────────────────────────────────────────┤ +│ Times Ran: X │ +│ Run Limit: Y (if enabled) │ +│ Times Refilled: Z │ +│ Refill Limit: W │ +│ CE Drop Count: N │ +│ Materials: {material: count, ...} │ +│ Teapots Used: T │ +│ Withdraw Count: V │ +│ Total Time: HH:MM:SS │ +│ Average Time Per Run: MM:SS │ +│ Min Turns Per Run: A │ +│ Max Turns Per Run: B │ +│ Average Turns Per Run: C.D │ +└─────────────────────────────────────────┘ +``` + +## Workflow with Battle Execution + +```text +┌─────────────────────────────────────────┐ +│ Battle Wave Start │ +└─────────────────────┬───────────────────┘ + │ + ▼ +┌─────────────────────────────────────────┐ +│ Execute Configured Skill Commands │ +│ (Master skills, Servant skills) │ +└─────────────────────┬───────────────────┘ + │ + ▼ +┌─────────────────────────────────────────┐ +│ Select Cards Based on Priority │ +│ (NP, Brave chains, card types) │ +└─────────────────────┬───────────────────┘ + │ + ▼ +┌─────────────────────────────────────────┐ +│ Wait for Wave to End │ +└─────────────────────┬───────────────────┘ + │ + ▼ + Next Wave or Results +``` + +## Tips for Best Results + +1. **Configure skill commands carefully** - Test your commands before long farming sessions +2. **Set appropriate card priorities** - Optimize for your farming strategy +3. **Use run limits** - Prevent accidental over-farming +4. **Enable screenshots** - Keep records of drops and bond levels +5. **Configure refill limits** - Control apple usage +6. **Check support settings** - Ensure preferred support is properly configured +7. **Monitor inventory space** - Leave room for drops + +## Server Support + +All FGO servers are supported with specific features: + +- **JP/EN**: Full inventory full detection +- **KR**: Inventory full detection +- **JP**: Duplicate CE detection, Ordeal Call support +- **BetterFGO**: NP skip support + +## Technical Notes + +- Main loop checks ~20+ different screen states +- 0.5 second delay between screen checks +- Automatic connection retry on network issues +- Tracks run statistics including turns and time +- Auto-decrements configured limits after completion + +## Related Documentation + +### In-Battle Features + +- [Skill Execution](skill-system/skill-execution.md) - How skills are cast during battle +- [Face Card Priority](card-selection/face-card-priority.md) - Card selection priorities +- [Brave Chains](card-selection/brave-chains.md) - Brave chain optimization +- [Auto Target](skill-system/auto-target.md) - Automatic enemy targeting +- [Shuffle Cards](card-selection/shuffle-cards.md) - Card shuffling options +- [Servant Tracking](tracking/servant-tracking.md) - Tracking servants on field +- [Stage Tracking](tracking/stage-tracking.md) - Wave/stage detection +- [Party Selection](script-control/party-selection.md) - Party slot selection +- [Energy Refill](resources/energy-refill.md) - AP refill management +- [Materials Tracking](tracking/materials-tracking.md) - Drop tracking +- [CE Drops](tracking/ce-drops.md) - CE drop detection +- [Teapots](resources/teapots.md) - Teapot usage +- [Withdraw](script-control/withdraw.md) - Battle withdrawal +- [Screen Detection](script-control/screen-detection.md) - Screen state detection +- [Exit Reasons](script-control/auto-battle-exit-reasons.md) - Exit conditions + +### Support Screen Features + +- [Selection Modes](../support-screen/selection-modes.md) - Support selection modes +- [Preferred Servant](../support-screen/preferred-servant.md) - Servant preference settings +- [Preferred CE](../support-screen/preferred-ce.md) - CE preference settings +- [Preferred Friend](../support-screen/preferred-friend.md) - Friend preference settings +- [Class Picker](../support-screen/class-picker.md) - Class filtering +- [Grand Servant](../support-screen/grand-servant.md) - Grand servant support +- [Refresh](../support-screen/refresh.md) - Support list refresh diff --git a/docs/in-battle/card-selection/.meta.yml b/docs/in-battle/card-selection/.meta.yml new file mode 100644 index 0000000..79d4b46 --- /dev/null +++ b/docs/in-battle/card-selection/.meta.yml @@ -0,0 +1,5 @@ +title: Card Selection +icon: material/cards-playing-outline +description: FGA card selection guide. Learn about face card priority, brave chain optimization, and card shuffle features. +search: + boost: 2 diff --git a/docs/in-battle/card-selection/brave-chains.md b/docs/in-battle/card-selection/brave-chains.md new file mode 100644 index 0000000..e303f82 --- /dev/null +++ b/docs/in-battle/card-selection/brave-chains.md @@ -0,0 +1,257 @@ +--- +title: Brave Chain Optimization +description: Maximize damage with brave chains in FGA. Configure card selection to form or avoid brave chains based on your farming strategy. +tags: + - battle + - cards + - brave-chain + - damage +--- + +# Brave Chain Optimization + +Form or avoid brave chains to maximize your battle effectiveness. + +## Overview + +A Brave Chain occurs when you select three command cards from the same servant, granting an extra attack at the end of the chain. FGA can optimize card selection to form brave chains when you want maximum damage, or avoid them when you need to spread attacks across multiple servants. + +## Key Features + +- **Force Brave Chains**: Prioritize same-servant cards for extra attacks +- **Avoid Brave Chains**: Spread cards across servants for balanced damage +- **NP Brave Chains**: Combine Noble Phantasm with face cards +- **Mighty Chains**: Optimize for mixed card type bonuses +- **Card Rearrangement**: Position cards for maximum damage + +## Brave Chain Modes + +| Mode | Behavior | Best For | +| ----------- | ---------------------------- | ---------------------- | +| **None** | No chain optimization | Default card priority | +| **Avoid** | Spread cards across servants | Multiple enemy targets | +| **With NP** | Form chains with NP cards | Single target damage | +| **Mighty** | Mixed card types + NP | Balanced damage boost | + +## How Brave Chains Work + +### Standard Brave Chain + +```text +┌─────────┬─────────┬─────────┬─────────┐ +│ Card 1 │ Card 2 │ Card 3 │ Extra │ +│ (Saber) │ (Saber) │ (Saber) │ Attack! │ +└─────────┴─────────┴─────────┴─────────┘ + +All 3 cards from same servant = Extra Attack +``` + +### NP Brave Chain + +```text +┌─────────┬─────────┬─────────┬─────────┐ +│ NP │ Buster │ Quick │ Extra │ +│ (Saber) │ (Saber) │ (Saber) │ Attack! │ +└─────────┴─────────┴─────────┴─────────┘ + +NP + 2 face cards from same servant = NP Brave Chain +``` + +## Brave Chain Mode Details + +### None Mode + +No special handling for brave chains. Cards are selected purely based on card priority. + +- Uses default priority order +- May accidentally form or avoid chains +- Fastest processing (no chain analysis) + +### Avoid Mode + +Actively prevents brave chains by selecting cards from different servants. + +```text +Selection Process: +1. Group cards by servant +2. Take one card from each servant +3. Repeat until 3 cards selected +4. Only use same-servant if no alternatives +``` + +**Best for:** + +- Multi-target waves +- Distributing damage evenly +- Generating stars/NP for multiple servants + +### With NP Mode + +Prioritizes forming brave chains when using Noble Phantasms. + +```text +Selection Process: +1. Identify NP servant(s) +2. Find matching face cards from NP servant +3. Place NP and matching cards together +4. Fill remaining slots with priority cards +``` + +**Best for:** + +- Single target boss damage +- Maximizing main DPS output +- Challenge quest final waves + +### Mighty Chain Mode + +Attempts to form chains with different card types for the Mighty Chain bonus. + +```text +Mighty Chain Bonus: +Buster + Arts + Quick = +20% damage to all cards + +Selection Process: +1. If using NP, check if different card types available +2. Select one of each type (B, A, Q) when possible +3. Prioritize cards from NP servant +4. Get bonus damage on entire chain +``` + +**Best for:** + +- Servants with varied card decks +- Situations where chain bonus outweighs card priority +- NP turns with all three card types available + +## Card Rearrangement + +When enabled, FGA rearranges selected cards to optimize damage output. + +### The Third Card Bonus + +In FGO, the third card in a chain receives bonus damage. Rearrangement puts your second-best card in the third position: + +```text +Without Rearrangement: +Position: [1st] [2nd] [3rd] +Cards: Best → 2nd Best → 3rd Best +Bonus: First Normal +Bonus + Card + +With Rearrangement: +Position: [1st] [2nd] [3rd] +Cards: Best → 3rd Best → 2nd Best +Bonus: First Normal +Bonus + Card + +Result: 2nd best card gets the position bonus +``` + +### When Rearrangement Applies + +| Condition | Rearrangement | +| ---------------------- | ---------------- | +| 1 NP, 1 card before NP | Yes | +| 2+ NPs selected | No | +| No NPs | Based on setting | +| 0 cards before NP | Based on setting | + +## Per-Wave Configuration + +Configure different brave chain settings for each wave: + +### Typical Setup + +| Wave | Brave Chain | Rearrange | Reason | +| ---- | ----------- | --------- | ---------------------- | +| 1 | Avoid | Off | Clear multiple enemies | +| 2 | None | On | Transition wave | +| 3 | With NP | On | Focus boss damage | + +## NP Usage Integration + +Brave chains work with your NP configuration: + +### Multiple NPs + +When using multiple NPs in one turn: + +- Chains consider all NP servants +- Matching face cards grouped after NPs +- Rearrangement may be disabled + +### Cards Before NP + +The "Cards Before NP" setting affects brave chains: + +```text +Example: 1 card before NP, brave chain enabled + +Turn Order: +1. Face card (from NP servant) +2. NP +3. Face card (from NP servant) +4. Extra attack! +``` + +## Tips for Best Results + +1. **Match brave chain to content**: Avoid for farming, With NP for bosses +2. **Enable rearrangement with brave chains**: Maximize the third card bonus +3. **Use servant priority with brave chains**: Ensure your DPS has cards selected +4. **Check card availability**: Brave chains need 3 cards from one servant +5. **Consider NP card type**: NP counts toward card chain bonuses too + +## Chain Type Synergies + +Combining brave chains with card chains: + +| Cards Selected | Bonuses | +| ------------------- | --------------------------- | +| 3 Buster + Brave | Buster chain + Extra attack | +| NP + 2 Arts + Brave | Arts chain + Extra attack | +| B + A + Q + Brave | Mighty chain + Extra attack | + +## Troubleshooting + +### Brave chains not forming + +- Ensure brave chain mode is not set to "None" or "Avoid" +- Check if the servant has 3 cards on screen +- Verify servant tracking correctly identifies cards +- NP must be ready for NP brave chains + +### Wrong servant getting brave chain + +- Adjust Servant Priority to favor your main DPS +- Check NP usage settings +- Verify the servant you want has enough cards available + +### Extra attack not triggering + +- All 3 cards must be from the same servant +- NP counts as a card from that servant +- Support servant cards work for brave chains too + +### Rearrangement not working + +- Check if rearrangement is enabled for current wave +- Multiple NPs disable rearrangement +- Verify brave chain mode supports rearrangement + +## Legacy Behavior + +The "Avoid" mode uses a legacy algorithm that: + +1. Sorts cards into servant groups +2. Takes one card per servant in rotation +3. Fills remaining slots from largest groups + +This ensures maximum spread across available servants. + +## Related Documentation + +- [Face Card Priority](face-card-priority.md) - Base card selection +- [Command Card Priority Setup](../../battle-setup/card-priority.md) - Configure settings +- [Auto Battle](../auto-battle.md) - Overall battle automation diff --git a/docs/in-battle/card-selection/face-card-priority.md b/docs/in-battle/card-selection/face-card-priority.md new file mode 100644 index 0000000..ef301da --- /dev/null +++ b/docs/in-battle/card-selection/face-card-priority.md @@ -0,0 +1,236 @@ +--- +title: Face Card Priority System +description: Configure how FGA selects command cards during battle. Set card type priorities, servant order, and critical star preferences. +tags: + - battle + - cards + - priority + - automation +--- + +# Face Card Priority System + +Control how FGA selects the best command cards during battle. + +## Overview + +The Face Card Priority system determines which command cards FGA clicks during the attack phase. You can configure priorities based on card type (Buster, Arts, Quick), servant order, class affinity, and critical star chance to optimize your farming or boss-killing strategy. + +## Key Features + +- **Card Type Priority**: Prioritize Buster, Arts, or Quick cards +- **Affinity Sorting**: Prefer cards with class advantage (weak affinity) +- **Servant Priority**: Group cards by servant before sorting +- **Critical Star Detection**: Prioritize cards with high critical chance +- **Per-Wave Configuration**: Different priorities for each quest wave + +## How Card Selection Works + +```text +┌─────────────────────────────────────────┐ +│ Read 5 Command Cards │ +└─────────────────────┬───────────────────┘ + │ + ▼ +┌─────────────────────────────────────────┐ +│ Parse Card Properties │ +│ • Card type (B/A/Q) │ +│ • Affinity (W/Normal/R) │ +│ • Critical percentage │ +│ • Servant owner │ +└─────────────────────┬───────────────────┘ + │ + ▼ +┌─────────────────────────────────────────┐ +│ Apply Servant Priority (if enabled) │ +│ Group cards by servant order │ +└─────────────────────┬───────────────────┘ + │ + ▼ +┌─────────────────────────────────────────┐ +│ Apply Card Priority │ +│ Sort by type + affinity + critical │ +└─────────────────────┬───────────────────┘ + │ + ▼ +┌─────────────────────────────────────────┐ +│ Select Top 3 Cards │ +└─────────────────────────────────────────┘ +``` + +## Card Type Priority + +### Card Types + +| Type | Icon | Best For | +| ---------- | ----- | ------------------------- | +| **Buster** | Red | Damage output | +| **Arts** | Blue | NP gauge charging | +| **Quick** | Green | Critical stars generation | + +### Affinity Modifiers + +| Prefix | Meaning | Damage | +| -------------- | ------------------ | ------------- | +| **W** (Weak) | Class advantage | +50% to +100% | +| _(none)_ | Neutral | Normal | +| **R** (Resist) | Class disadvantage | -50% | + +### Critical Modifier + +| Suffix | Meaning | +| -------- | ------------------------- | +| **C** | High critical star chance | +| _(none)_ | Low or no critical chance | + +### Priority Code Examples + +| Code | Full Meaning | +| ------- | ------------------------- | +| **WBC** | Weak Buster with Critical | +| **WB** | Weak Buster | +| **BC** | Buster with Critical | +| **B** | Normal Buster | +| **RA** | Resist Arts | + +## Default Priority Order + +The standard priority from highest to lowest: + +```text +WBC → WAC → WQC → WB → WA → WQ → BC → AC → QC → B → A → Q → RB → RA → RQ +``` + +This order: + +1. Maximizes damage with class advantage cards +2. Capitalizes on critical opportunities +3. Falls back to neutral cards +4. Avoids resist cards unless necessary + +## Servant Priority + +When enabled, cards are grouped by servant before applying card priority. + +### Team Slot Positions + +| Slot | Position | +| ---- | ------------------------ | +| 1 | First servant (leftmost) | +| 2 | Second servant | +| 3 | Third servant | +| 4 | First backup | +| 5 | Second backup | +| 6 | Third backup | + +### Selection Process with Servant Priority + +```text +Example Setup: +- Servant Priority: [3, 1, 2] +- Card Priority: [B, A, Q] + +Available Cards: +- Servant 1: Arts, Buster +- Servant 2: Quick, Quick +- Servant 3: Buster, Arts + +Selection Order: +1. Servant 3's Buster (highest priority servant + card) +2. Servant 3's Arts +3. Servant 1's Buster +4. Servant 1's Arts +5. Servant 2's Quick +6. Servant 2's Quick +``` + +## Critical Star Priority + +When enabled, FGA reads the critical star percentage on each card and factors it into sorting. + +### Detection Method + +- Scans the star icon area on each card +- Detects percentage numerically (7% threshold for "critical") +- Cards with high critical chance are promoted within their priority group + +### When to Enable + +| Situation | Recommendation | +| -------------------------- | ---------------- | +| Consistent star generation | Enable | +| Variable star counts | Enable | +| No star generators | Disable (faster) | +| Challenge quests | Enable | + +## Per-Wave Configuration + +Different waves may need different strategies: + +### Wave 1 (Farming) + +- Focus: NP generation +- Priority: Arts cards +- Goal: Charge NP for later waves + +### Wave 2 (Transition) + +- Focus: Clear enemies efficiently +- Priority: Balanced or Quick +- Goal: Generate stars for wave 3 + +### Wave 3 (Boss) + +- Focus: Maximum damage +- Priority: Buster cards + servant priority +- Goal: Defeat boss with critical hits + +## Tips for Best Results + +1. **Match your team composition**: If running Buster servants, prioritize Buster cards +2. **Use servant priority for single-target damage**: Focus all cards on your main damage dealer +3. **Enable critical stars for RNG-heavy teams**: Critical hits can dramatically increase damage +4. **Adjust per wave**: Different waves often need different card selections +5. **Consider card chains**: Three of the same type gives bonus effects + +## Card Chain Bonuses + +Selecting three cards of the same type grants bonuses: + +| Chain Type | Bonus | +| ------------ | ------------------------------ | +| Buster Chain | +20% attack for all cards | +| Arts Chain | +20% NP gauge for all servants | +| Quick Chain | +10 critical stars | + +## Troubleshooting + +### Cards not being selected in expected order + +- Check if Servant Priority is overriding Card Priority +- Verify critical star detection isn't promoting unexpected cards +- Confirm the current wave is using the correct priority configuration + +### Servant's cards not being picked + +- Add the servant higher in Servant Priority list +- Check if the servant is stunned (stunned cards are deprioritized) +- Verify the servant tracker correctly identified the servant + +### Wrong card types being selected + +- Review your Card Priority order in settings +- Check if affinity detection is working correctly +- Ensure your priority list includes all card types you want + +### Critical cards not being prioritized + +- Enable "Read Critical Star Priority" in settings +- Check if the critical threshold is being met (7%+) +- Verify the card visually shows critical stars + +## Related Documentation + +- [Auto Battle](../auto-battle.md) - Overall battle automation +- [Command Card Priority Setup](../../battle-setup/card-priority.md) - Configure priorities +- [Brave Chains](brave-chains.md) - Card chain optimization diff --git a/docs/in-battle/card-selection/shuffle-cards.md b/docs/in-battle/card-selection/shuffle-cards.md new file mode 100644 index 0000000..f2351bb --- /dev/null +++ b/docs/in-battle/card-selection/shuffle-cards.md @@ -0,0 +1,238 @@ +--- +title: Card Shuffle Feature +description: Automatically shuffle command cards when optimal cards aren't available. Configure conditions for reshuffling in FGA. +tags: + - battle + - cards + - shuffle + - optimization +--- + +# Card Shuffle Feature + +Reshuffle command cards to get better draws when current cards are suboptimal. + +## Overview + +FGA can use the card shuffle feature (available through Mystic Codes or game mechanics) to get a new set of command cards when the current draw doesn't meet your criteria. This helps ensure you have effective cards available when dealing with difficult enemies. + +## Key Features + +- **Condition-Based Shuffle**: Only shuffle when criteria aren't met +- **Multiple Modes**: Different conditions for different strategies +- **NP Integration**: Consider NP servant cards when deciding +- **Automatic Detection**: Scans current cards to evaluate quality + +## Shuffle Modes + +| Mode | Shuffles When | +| ------------------ | ---------------------------------- | +| **None** | Never shuffle | +| **No Effective** | No class advantage cards available | +| **No NP Matching** | No cards matching NP servant | + +## How Shuffle Checker Works + +```text +┌─────────────────────────────────────────┐ +│ Command Cards Read │ +└─────────────────────┬───────────────────┘ + │ + ▼ +┌─────────────────────────────────────────┐ +│ Check Shuffle Condition │ +│ Based on configured mode │ +└─────────────────────┬───────────────────┘ + │ + ┌────────────┴────────────┐ + │ Should Shuffle? │ No + ▼ ▼ +┌─────────────────┐ ┌─────────────────┐ +│ Use Shuffle │ │ Select Best │ +│ Get New Cards │ │ Available Cards│ +└────────┬────────┘ └─────────────────┘ + │ + ▼ +┌─────────────────────────────────────────┐ +│ Read New Cards │ +│ Continue with selection │ +└─────────────────────────────────────────┘ +``` + +## Mode Details + +### None Mode + +No automatic shuffling occurs: + +- Use whatever cards are drawn +- Manual shuffle still possible +- Fastest processing + +### No Effective Mode + +Shuffles when no class advantage cards are present: + +```text +Your Servants: [Saber] [Saber] [Caster] +Enemy: [Lancer] + +Current Cards: +[Caster Buster] [Caster Arts] [Saber Quick] ... + +None of these are "effective" against Lancer +(Sabers should have advantage) + +Check: Are any cards marked as "Weak" affinity? +If none → Shuffle to try for better cards +``` + +**When to use**: + +- Mixed class teams against single-type enemies +- Want to maximize class advantage damage + +### No NP Matching Mode + +Shuffles when using NP but no matching face cards exist: + +```text +Using NP: Servant A (Slot 1) + +Current Cards: +[Servant B] [Servant B] [Servant C] [Servant C] [Servant B] + +No cards from Servant A available! + +Shuffle to try for Servant A's cards +(for brave chain potential) +``` + +**When to use**: + +- NP turns where brave chains matter +- Single target NP servants +- Maximizing main DPS damage + +## Card Affinity Detection + +For "No Effective" mode, FGA checks card affinity: + +| Affinity | Display | Meaning | +| -------- | --------- | ------------------ | +| Weak | W prefix | Class advantage | +| Normal | No prefix | Neutral | +| Resist | R prefix | Class disadvantage | + +A card is "effective" if it has the Weak affinity. + +## NP Usage Integration + +For "No NP Matching" mode, FGA considers: + +1. Which servant(s) are using NP this turn +2. What field slot each NP servant occupies +3. Whether any face cards belong to those servants + +If NPs are queued but no matching face cards exist, shuffle is triggered. + +## Shuffle Limitations + +### Mystic Code Requirement + +Shuffle typically requires a Mystic Code skill: + +- Not all Mystic Codes have shuffle +- Skill may have cooldown +- Check your equipped Mystic Code + +### One Shuffle Per Turn + +FGO limits reshuffling: + +- Can only shuffle once per turn +- After shuffle, must use new cards +- No infinite rerolling + +### RNG Factor + +Shuffling doesn't guarantee better cards: + +- May get same or worse cards +- Class advantage cards not guaranteed +- Servant card distribution is random + +## Tips for Best Results + +1. **Match mode to strategy**: Use the mode that fits your farming approach +2. **Consider NP timing**: No NP Matching is most useful on NP turns +3. **Check Mystic Code**: Ensure you have shuffle available +4. **Don't over-rely on shuffle**: Bad RNG can persist after shuffle +5. **Test with your team**: See how often shuffle triggers + +## Configuration Examples + +### Boss Farming Setup + +- Mode: No NP Matching +- Goal: Maximize NP servant brave chains +- When: Wave 3 boss turns + +### Mixed Enemy Farming + +- Mode: No Effective +- Goal: Always hit class weakness +- When: Variable enemy classes + +### Speed Farming + +- Mode: None +- Goal: Fastest clear time +- When: Don't need optimal cards + +## Troubleshooting + +### Shuffle not triggering when expected + +- Verify mode is correctly set +- Check if condition is actually met +- Cards may have the required affinity/servant + +### Shuffling too often + +- Mode conditions are being met frequently +- Consider if shuffle is actually helping +- May want to switch to None mode + +### No improvement after shuffle + +- Shuffle is random, same cards possible +- Card distribution depends on deck +- Consider team composition changes + +### Shuffle skill on cooldown + +- Can only shuffle when skill available +- FGA checks for shuffle availability +- May need to wait for cooldown + +## Shuffle vs Card Priority + +| Feature | Shuffle | Card Priority | +| ---------- | ---------------- | ---------------------- | +| Purpose | Get new cards | Pick best from current | +| When | Before selection | During selection | +| Random | Yes | No | +| Guaranteed | No | Works with any cards | + +Both features work together: + +1. Shuffle checks if current cards are acceptable +2. If not acceptable and shuffle available, reshuffle +3. Card priority then selects best from (possibly new) cards + +## Related Documentation + +- [Face Card Priority](face-card-priority.md) - Card selection logic +- [Brave Chains](brave-chains.md) - Chain formation with shuffled cards +- [Skill Maker](../../battle-setup/skill-maker.md) - Configure shuffle timing diff --git a/docs/in-battle/resources/.meta.yml b/docs/in-battle/resources/.meta.yml new file mode 100644 index 0000000..7b2bc56 --- /dev/null +++ b/docs/in-battle/resources/.meta.yml @@ -0,0 +1,5 @@ +title: Resource Management +icon: material/fruit-cherries +description: FGA resource management guide. Learn about AP refill with apples and teapot management. +search: + boost: 3 diff --git a/docs/in-battle/resources/energy-refill.md b/docs/in-battle/resources/energy-refill.md new file mode 100644 index 0000000..a41aea3 --- /dev/null +++ b/docs/in-battle/resources/energy-refill.md @@ -0,0 +1,240 @@ +--- +title: Energy Refill and AP Management +description: Configure automatic AP refill with apples in FGA. Manage stamina resources, set refill limits, and optimize apple usage for farming. +tags: + - battle + - stamina + - apples + - refill +--- + +# Energy Refill and AP Management + +Automatically manage your AP (Action Points) during farming sessions. + +## Overview + +FGA can automatically refill your AP when it runs out by using various apple types or Saint Quartz. Configure which resources to use, set limits on consumption, and optionally wait for natural AP regeneration instead of using items. + +## Key Features + +- **Multiple Apple Types**: Support for all apple colors and Saint Quartz +- **Refill Limits**: Control maximum resources used +- **Auto-Decrement**: Automatically reduce remaining limit after use +- **AP Regeneration Wait**: Option to wait instead of using apples +- **Stamina Over-Recharge**: Use multiple apples at once when available + +## Refill Resources + +| Resource | AP Restored | Max Per Refill | +| ---------------- | ----------- | -------------- | +| **Gold Apple** | Full AP | 1 | +| **Silver Apple** | 50% AP | 2 | +| **Bronze/Blue Apple** | 40 AP | 3 or 4 Depends on Master Level | +| **Copper Apple** | 10 AP | Depends on Master Level | +| **Saint Quartz** | Full AP | 1 | + +### Resource Priority + +When multiple resources are configured, FGA uses the first available resource in your configured order. + +## How Energy Refill Works + +```text +┌─────────────────────────────────────────┐ +│ Stamina Screen Detected │ +└─────────────────────┬───────────────────┘ + │ + ▼ +┌─────────────────────────────────────────┐ +│ Check Refill Settings │ +│ • Refill enabled? │ +│ • Resources configured? │ +│ • Limit reached? │ +└─────────────────────┬───────────────────┘ + │ + ┌────────────┴────────────┐ + │ Can Refill? │ Cannot + ▼ ▼ +┌─────────────────┐ ┌─────────────────┐ +│ Select Apple │ │ Wait for Regen │ +│ Click Refill │ │ or Exit Script │ +└────────┬────────┘ └─────────────────┘ + │ + ▼ +┌─────────────────────────────────────────┐ +│ Confirm Refill Amount │ +│ (for multi-use apples) │ +└─────────────────────┬───────────────────┘ + │ + ▼ +┌─────────────────────────────────────────┐ +│ Update Refill Counter │ +└─────────────────────────────────────────┘ +``` + +## Configuration Options + +### Selecting Refill Resources + +Select which apple types FGA can use: + +1. Open your server configuration +2. Navigate to refill settings +3. Select resources in priority order +4. Gold apples are typically first choice + +### Refill Limit + +Set the maximum number of refills per session: + +| Setting | Behavior | +| -------- | --------------------------------- | +| 0 | Refill disabled | +| 1-99 | Maximum refills allowed | +| No limit | Unlimited refills (use carefully) | + +### Wait for AP Regeneration + +When enabled, FGA waits for natural AP regen instead of using apples: + +- Checks every 60 seconds +- Useful for overnight farming +- Conserves apple resources +- Only activates when refill not possible/allowed + +## Apple Efficiency + +### Gold Apples + +- Best for high-AP quests (40 AP) +- Full refill regardless of max AP +- Most valuable resource + +### Silver Apples + +- Can use up to 2 per refill if AP allows +- Balanced efficiency + +### Bronze or Blue Apples + +- Gives flat 40 AP +- Common from event/main story rewards + +### Copper Apples + +- Gives flat 10 AP +- Good for exact AP needs + +## Stamina Over-Recharge + +Some apple types can be used multiple times in one refill action: + +```text +Example: 200 max AP, currently 0 AP + +Silver Apple (50%): +- First use: +100 AP +- Second use: +100 AP (if enabled) +- Result: 200/200 AP, 2 refills counted + +Bronze Apple (30%): +- First use: +60 AP +- Second use: +60 AP +- Third use: +60 AP +- Result: 180/200 AP, 3 refills counted +``` + +FGA reads the stamina values to determine how many apples to use. + +## Auto-Decrement Limits + +After the script ends, FGA automatically reduces your refill limit: + +```text +Before Run: +- Refill Limit: 10 + +During Run: +- Refills Used: 3 + +After Run: +- Refill Limit: 7 (auto-decremented) +``` + +When the limit reaches 0: + +- Refill is disabled +- Limit resets to default value +- You must manually re-enable + +## Last Run Behavior + +On the final run of a limited session: + +| Setting | Behavior | +| -------------- | ----------------------------- | +| Normal | Uses apples if available | +| Wait for Regen | Waits instead of using apples | + +This helps conserve resources when you're about to stop farming. + +## Tips for Best Results + +1. **Match apples to quest AP cost**: Use bronze for low-cost quests +2. **Set conservative limits**: Start with lower limits until comfortable +3. **Check resource priority**: Order matters when multiple are enabled +4. **Use wait for regen overnight**: Save apples during long sessions +5. **Monitor refill counter**: Track usage in exit summary + +## Refill Counter in Exit Summary + +After script completion, view refill statistics: + +```text +┌─────────────────────────────────────────┐ +│ Battle Exit Summary │ +├─────────────────────────────────────────┤ +│ Times Refilled: 5 │ +│ Refill Limit: 10 │ +│ ... │ +└─────────────────────────────────────────┘ +``` + +## Troubleshooting + +### Refill not happening when AP runs out + +- Verify refill is enabled in settings +- Check if refill limit is reached +- Ensure resources are selected +- Confirm you have apples in inventory + +### Wrong apple type being used + +- Check resource priority order +- Higher priority resources are used first +- Reorder in settings if needed + +### Script exits instead of refilling + +- Refill limit may be reached +- No configured resources available +- Wait for regen might be enabled + +### Refill counter seems wrong + +- Multi-use apples count as multiple refills +- Silver = up to 2, Bronze = up to 3 +- Check stamina over-recharge behavior + +### Auto-decrement not working + +- Only happens after successful script completion +- Manual stops may not trigger decrement +- Check your settings after run + +## Related Documentation + +- [Auto Battle](../auto-battle.md) - Overall battle automation +- [Run Limits](../../app/advanced.md) - Configure run limitations diff --git a/docs/in-battle/resources/teapots.md b/docs/in-battle/resources/teapots.md new file mode 100644 index 0000000..8dbb7f8 --- /dev/null +++ b/docs/in-battle/resources/teapots.md @@ -0,0 +1,243 @@ +--- +title: Teapot Management +description: Automatically manage teapots for bonus drops during FGO events. Configure teapot limits and usage timing in FGA. +tags: + - battle + - teapots + - events + - bonuses +--- + +# Teapot Management + +Automatically activate and manage teapots for bond leveling. + +## Overview + +Teapots (officially "Stargazer's Teapot") provide double the Bond gained when completing a quest for the entire Party (including sub-members). FGA can automatically manage teapot activation before battles and track usage to ensure you don't exceed your limits. + +## Key Features + +- **Automatic Activation**: Turn on teapots before battles start +- **Usage Limits**: Set maximum teapots per farming session +- **State Management**: Track on/off state across runs +- **Ordeal Call Support**: Special handling for Ordeal Call quests +- **JP Server Format**: Supports new popup window interface + +## How Teapots Work + +```text +┌─────────────────────────────────────────┐ +│ Party Selection Screen │ +└─────────────────────┬───────────────────┘ + │ + ▼ +┌─────────────────────────────────────────┐ +│ Check Teapot Settings │ +│ • Teapots enabled? │ +│ • Limit remaining? │ +│ • Current state on/off? │ +└─────────────────────┬───────────────────┘ + │ + ┌────────────┴────────────┐ + │ Should Use Teapot? │ No + ▼ ▼ +┌─────────────────┐ ┌─────────────────┐ +│ Toggle Teapot │ │ Ensure Teapot │ +│ State to ON │ │ State is OFF │ +└────────┬────────┘ └─────────────────┘ + │ + ▼ +┌─────────────────────────────────────────┐ +│ Track Teapot Usage │ +└─────────────────────────────────────────┘ +``` + +## Teapot States + +| State | Icon | Effect | +| ------- | ------------- | ---------------------- | +| **Off** | Gray/disabled | No bonus drops | +| **On** | Lit/glowing | Bonus drop rate active | + +## Configuration + +### Enable Teapots + +1. Open your Battle Config +2. Find the Teapot/Dreamfire settings +3. Enable teapot usage +4. Set your limit + +### Teapot Limit + +| Setting | Behavior | +| ------- | ----------------------------- | +| 0 | Teapots disabled | +| 1+ | Maximum teapots to use | +| Per run | One teapot consumed per quest | + +## Teapot Management Points + +FGA manages teapots at two key points: + +### 1. Party Selection Screen + +Before entering battle: + +- Checks current teapot state +- Activates if limit allows +- Deactivates if limit reached +- Handles last-run scenarios + +### 2. Quest Repeat Screen + +After completing a quest: + +- Verifies teapot state +- Updates for next run +- Manages state transitions + +## JP Server New Format + +The Japanese server introduced a popup window for teapot management: + +```text +┌─────────────────────────────────────────┐ +│ Teapot Popup Window │ +├─────────────────────────────────────────┤ +│ │ +│ [Teapot Icon] │ +│ │ +│ Remaining: X │ +│ │ +│ [ OFF ] [ ON ] │ +│ │ +└─────────────────────────────────────────┘ +``` + +FGA detects and handles both the old toggle format and new popup window. + +## Ordeal Call Quests + +Ordeal Call quests have special teapot handling: + +- No repeat quest screen after completion +- Teapot counted at different timing +- Special logic to ensure accurate tracking +- Cannot be turned off when ran out of storm pods. + +```text +Ordeal Call Flow: +Quest Complete → (No Repeat Screen) → Next Quest + +FGA tracks teapot at quest completion instead +``` + +## Usage Tracking + +### During Session + +FGA tracks teapots in real-time: + +```text +┌─────────────────────────────────────────┐ +│ Teapot Status │ +├─────────────────────────────────────────┤ +│ Teapots Used: 3 │ +│ Teapot Limit: 10 │ +│ Remaining: 7 │ +└─────────────────────────────────────────┘ +``` + +### Exit Summary + +After script completion: + +```text +┌─────────────────────────────────────────┐ +│ Battle Exit Summary │ +├─────────────────────────────────────────┤ +│ Teapots Used: 5 │ +│ ... │ +└─────────────────────────────────────────┘ +``` + +## Last Run Handling + +When on the final run of a limited session: + +| Scenario | Teapot Action | +| ----------------- | --------------------- | +| More runs planned | Keep on for next run | +| Last run | Turn off after battle | +| Limit reached | Turn off immediately | + +This ensures teapots aren't wasted on the repeat screen when you won't continue. + +## Tips for Best Results + +1. **Match teapots to runs**: Set teapot limit equal to or less than run limit +2. **Check event inventory**: Verify you have teapots before starting +3. **Monitor usage**: Watch the exit summary for accurate counts +4. **Test before farming**: Run one quest to verify teapot activation +5. **Consider Ordeal Call**: Special handling may affect timing + +## Testing Teapot Configuration + +Verify your setup with these test cases: + +| Test | Expected Result | +| --------------------------- | -------------------------- | +| 1 run, 1 teapot | Turns off after battle | +| 2 runs, 1 teapot | Turns off after 1st battle | +| 1 run, 2 teapots | Uses 1, leaves 1 for next | +| 1 run, 0 teapots (state on) | Turns off before battle | +| 3 OC runs, 3 teapots | All 3 counted correctly | + +## Troubleshooting + +### Teapot not activating + +- Check if teapot limit is greater than 0 +- Verify teapots are available in inventory +- Ensure the feature is enabled in settings +- Check if you're on the party selection screen + +### Wrong teapot count + +- Ordeal Call quests count differently +- Multiple quests may share state +- Check exit summary for accurate count + +### Teapot stays on after limit reached + +- May occur during screen transitions +- FGA corrects on next management point +- Verify state on party selection screen + +### JP popup not being handled + +- Update to latest FGA version +- New popup format requires updated detection +- Check if popup is fully visible on screen + +### Teapot state stuck + +- Close and reopen quest screen +- Manually toggle teapot state +- Restart FGA script + +## Server Differences + +| Server | Format | Notes | +| ------ | --------- | -------------------------- | +| JP | New popup | Supports latest interface | +| NA/EN | Toggle | Classic on/off button | +| Others | Varies | Check server documentation | + +## Related Documentation + +- [Auto Battle](../auto-battle.md) - Overall battle automation +- [Run Limits](../../app/advanced.md) - Configure run limitations +- [Materials Tracking](../tracking/materials-tracking.md) - Track event drops diff --git a/docs/in-battle/script-control/.meta.yml b/docs/in-battle/script-control/.meta.yml new file mode 100644 index 0000000..17e8e1a --- /dev/null +++ b/docs/in-battle/script-control/.meta.yml @@ -0,0 +1,5 @@ +title: Script Control +icon: material/cog-play-outline +description: FGA script control guide. Learn about party selection, withdrawal handling, exit reasons, and screen detection. +search: + boost: 2 diff --git a/docs/in-battle/script-control/auto-battle-exit-reasons.md b/docs/in-battle/script-control/auto-battle-exit-reasons.md new file mode 100644 index 0000000..27b8f3c --- /dev/null +++ b/docs/in-battle/script-control/auto-battle-exit-reasons.md @@ -0,0 +1,206 @@ +--- +title: Exit Reasons and Session Statistics +description: Understand why FGA's Battle Script stops and how to interpret the exit state summary with run statistics. +tags: + - battle + - exit + - statistics + - troubleshooting +--- + +# Exit Reasons and Session Statistics + +Understand why your farming session ended and review detailed statistics. + +## Overview + +When the Battle Script stops, FGA displays a notification with the exit reason and detailed session statistics. Understanding these helps you optimize your farming sessions and troubleshoot issues. + +## Exit Reason Categories + +### Normal Completion + +These exit reasons indicate your farming goals were achieved. + +| Exit Reason | What Happened | +| ----------------------- | ---------------------------------------------------- | +| **Limit Runs** | You completed the configured number of runs | +| **Limit CEs** | You collected enough CE drops to reach your limit | +| **Limit Materials** | You gathered enough materials to reach your target | +| **CE Get** | A Craft Essence dropped (stop on CE was enabled) | +| **First Clear Rewards** | You received first-time completion rewards | +| **Bond Level Reached** | A servant reached your target bond level | +| **Stop After This Run** | You requested to stop after the current run finished | + +### Resource Depletion + +These occur when the script cannot continue due to resource limitations. + +| Exit Reason | What Happened | Solution | +| ------------------------- | ---------------------------------------- | ----------------------------------------------- | +| **AP Ran Out** | No AP remaining and no refill available | Enable apple refill or wait for AP regeneration | +| **Inventory Full** | Servant or CE inventory is full | Sell or combine items to free space | +| **Out of Command Spells** | Needed command spells but none available | Wait for command spell regeneration | + +### Configuration Issues + +These indicate problems with your Battle Config settings. + +| Exit Reason | What Happened | Solution | +| --------------------------------------- | ------------------------------------------------------- | ---------------------------------------------------------- | +| **Support Selection Manual** | Manual support mode requires user interaction | Set support mode to First, Preferred, or Friend | +| **Support Selection Preferred Not Set** | Preferred support enabled but no preferences configured | Add servant/CE images in Preferred Support settings | +| **Skill Command Parse Error** | Your skill command syntax is invalid | Review skill command format in your config | +| **Card Priority Parse Error** | Card priority configuration is invalid | Reset card priority to defaults and reconfigure | +| **Withdraw Disabled** | Battle required withdrawal but the option is disabled | Enable withdrawal in settings, or fix your battle strategy | +| **Preset Quest** | Quest has a preset party, preventing party selection | Use quests without preset parties, or accept the preset | + +### Special Conditions + +These exit reasons occur due to game-specific situations. + +| Exit Reason | What Happened | Server | +| --------------------------- | ------------------------------------------------ | --------------- | +| **Duplicate CE** | Your party has duplicate Craft Essences equipped | JP only | +| **Daily Reset** | The game's daily reset occurred during farming | All servers | +| **Exit on Out of Commands** | No skill commands remain for the current wave | When configured | +| **Exit on Off Script** | Script was externally disabled | All servers | + +### User Actions + +These occur when you or the system interrupts the script. + +| Exit Reason | What Happened | +| -------------- | ----------------------------------------------------- | +| **Abort** | You manually stopped the script | +| **Paused** | The script is paused (not fully stopped) | +| **Unexpected** | An unexpected error occurred (check logs for details) | + +## Exit State Summary + +After every session, FGA provides detailed statistics about your farming run. + +### Statistics Display + +```text +┌─────────────────────────────────────────┐ +│ Battle Exit Summary │ +├─────────────────────────────────────────┤ +│ Times Ran: 25 │ +│ Run Limit: 30 │ +│ Times Refilled: 3 │ +│ Refill Limit: 10 │ +│ CE Drop Count: 2 │ +│ Materials: Hearts x5, Bones x47 │ +│ Teapots Used: 25 │ +│ Withdraw Count: 0 │ +│ Total Time: 02:15:30 │ +│ Average Time Per Run: 05:25 │ +│ Min Turns Per Run: 3 │ +│ Max Turns Per Run: 5 │ +│ Average Turns Per Run: 3.4 │ +└─────────────────────────────────────────┘ +``` + +### Understanding Each Statistic + +| Statistic | Meaning | +| ------------------------- | ---------------------------------------- | +| **Times Ran** | Total quests completed this session | +| **Run Limit** | Your configured maximum (if enabled) | +| **Times Refilled** | Number of apple refills used | +| **Refill Limit** | Maximum refills allowed | +| **CE Drop Count** | Craft Essences that dropped | +| **Materials** | Count of each tracked material collected | +| **Teapots Used** | Dreamfire/teapots consumed | +| **Withdraw Count** | Times you retreated from battle | +| **Total Time** | Full session duration | +| **Average Time Per Run** | Mean time to complete one quest | +| **Min Turns Per Run** | Fewest turns in any quest | +| **Max Turns Per Run** | Most turns in any quest | +| **Average Turns Per Run** | Mean turns across all quests | + +## Tips for Best Results + +### Avoiding Unwanted Exits + +- **Set appropriate apple limits** to avoid depleting your resources accidentally +- **Enable fallback support options** so the script can continue if preferred support isn't found +- **Leave inventory space** before starting long farming sessions +- **Test skill commands** on a few runs before committing to long sessions + +### Optimizing Statistics + +- **Lower turn counts** indicate more efficient farming setups +- **Consistent turn counts** (min equals max) show reliable wave clearing +- **Lower average time** suggests faster animations or fewer refreshes needed + +### Using Auto-Decrement + +FGA can automatically reduce your configured limits after each session: + +- **Run limits** decrease by runs completed +- **Apple limits** decrease by apples used +- **Material limits** decrease by materials collected +- **CE limits** decrease by CEs dropped + +This helps you farm toward a total goal across multiple sessions. + +## Troubleshooting Common Exit Reasons + +### AP Ran Out + +**Problem**: Script stopped because AP depleted and no refill was available. + +**Solutions**: + +1. Enable apple refill in your server configuration +2. Select which apple types to allow +3. Set a refill limit higher than zero +4. Consider enabling "Wait for AP Regen" for the last run + +### Inventory Full + +**Problem**: Your servant or CE inventory is completely full. + +**Solutions**: + +1. Sell unnecessary CEs +2. Use lower-rarity servants for EXP +3. Combine duplicate CEs +4. Expand inventory capacity (if available) + +### Support Selection Issues + +**Problem**: Script cannot find the configured support servant. + +**Solutions**: + +1. Verify support images were created with Support Image Maker +2. Check that your friend actually has the servant/CE equipped +3. Enable "Also Check All" to search multiple tabs +4. Configure fallback options for when preferred isn't found +5. Consider using "First" mode for faster but less specific selection + +### Skill Command Parse Error + +**Problem**: Your skill command syntax contains errors. + +**Solutions**: + +1. Review the skill command format requirements +2. Check for typos or invalid characters +3. Ensure wave numbers match your quest +4. Verify target letters (A, B, C) are valid + +### Unexpected Errors + +**Problem**: Something went wrong that FGA didn't anticipate. + +**Solutions**: + +1. Check the app logs for error details +2. Ensure FGA has all required permissions +3. Verify screen resolution and game settings +4. Try restarting both FGA and FGO +5. Report persistent issues with logs attached diff --git a/docs/in-battle/script-control/party-selection.md b/docs/in-battle/script-control/party-selection.md new file mode 100644 index 0000000..80e0233 --- /dev/null +++ b/docs/in-battle/script-control/party-selection.md @@ -0,0 +1,234 @@ +--- +title: Party Selection and Team Setup +description: Configure automatic party selection in FGA. Set up your preferred team slot for farming automation. +tags: + - battle + - party + - team + - configuration +--- + +# Party Selection and Team Setup + +Automatically select your configured party before starting quests. + +## Overview + +FGA can automatically select the correct party slot before entering battle, ensuring your farming team is always active. Configure which party slot to use, and FGA handles the selection even if a different party is currently active. + +## Key Features + +- **Automatic Selection**: Picks your configured party slot +- **Current Party Detection**: Identifies which party is active +- **Smart Switching**: Handles game quirks with party changes +- **Preset Quest Detection**: Identifies quests with locked parties +- **Persistent Selection**: Same party used for subsequent runs + +## How Party Selection Works + +```text +┌─────────────────────────────────────────┐ +│ Party Selection Screen │ +└─────────────────────┬───────────────────┘ + │ + ▼ +┌─────────────────────────────────────────┐ +│ Detect Currently Selected Party │ +│ Look for selection indicator │ +└─────────────────────┬───────────────────┘ + │ + ┌────────────┴────────────┐ + │ Correct Party? │ Yes + ▼ ▼ +┌─────────────────┐ ┌─────────────────┐ +│ Click Target │ │ Proceed with │ +│ Party Slot │ │ Current Party │ +└────────┬────────┘ └─────────────────┘ + │ + ▼ +┌─────────────────────────────────────────┐ +│ Wait for Selection Animation │ +└─────────────────────────────────────────┘ +``` + +## Party Slots + +FGA supports all party slots available on your server: + +- **JP and CN servers**: 15 party slots +- **Other servers**: 10 party slots + +| Slot | Position | Use Case | +| ---- | ---------- | ---------------------- | +| 1 | First | Default farming team | +| 2 | Second | Alternative farm setup | +| 3 | Third | Event team | +| 4-10 | Additional | Specialized teams | + +### Slot Selection + +Party slots appear as dots above the party display: + +```text + [•] [○] [○] [○] [○] [○] [○] [○] [○] [○] + 1 2 3 4 5 6 7 8 9 10 + + [•] = Currently selected + [○] = Available to select +``` + +## Configuration + +### Setting Your Party + +1. Open your Battle Config +2. Find the Party Selection setting +3. Choose your desired slot (1-10) +4. Save the configuration + +### No Party Selection + +Set to "Not Set" if you want to: + +- Use whatever party is currently active +- Manually select party before starting +- Let the game decide (for some quests) + +## Selection Logic + +### Same Party Handling + +FGO has a quirk where the "Start Quest" button becomes unresponsive if you select the same party that's already active: + +```text +Current Party: 3 +Target Party: 3 + +FGA's Solution: +1. Click different party (e.g., Party 4) +2. Wait for animation +3. Click target Party 3 +4. Now Start Quest button works +``` + +### Detection Failure Handling + +If FGA can't detect the current party: + +1. Clicks a temporary different party +2. Waits for selection +3. Clicks the target party +4. Ensures reliable selection + +## Preset Quest Detection + +Some quests lock you into a specific party (story quests, tutorials): + +### Detection + +FGA checks for the party selection indicator: + +- If no party selection available → Preset quest detected +- Based on settings, may exit or continue + +### Exit on Preset Quest + +When enabled: + +```text +Exit Reason: PresetQuest + +FGA detected a preset quest where party +selection is not available. The script +has stopped to prevent issues. +``` + +## Persistent Selection + +After selecting a party once: + +- Game remembers your selection +- FGA skips re-selection on subsequent runs +- Improves automation speed + +### Reset Conditions + +Selection tracking resets when: + +- Script is restarted +- Different quest is selected +- App is closed and reopened + +## Tips for Best Results + +1. **Set up dedicated farm parties**: Create parties specifically for automation +2. **Use consistent slot numbers**: Same slot across different configs +3. **Name your parties**: Makes manual verification easier +4. **Check party before long sessions**: Verify correct team is configured +5. **Test with one run first**: Confirm party selection works + +## Party Setup Recommendations + +### Farming Party Layout + +| Position | Servant Type | Purpose | +| -------- | -------------- | --------------- | +| 1 | Support slot | Friend's farmer | +| 2 | AoE damage | Wave clear | +| 3 | Buffer/Support | Enhance damage | +| 4 | Backup DPS | Emergency | +| 5-6 | Bond farming | Passive bond | + +### Event Party Layout + +| Position | Servant Type | Purpose | +| -------- | -------------- | ---------------- | +| 1-3 | Event bonus | Maximize drops | +| 4-6 | Bonus servants | Additional drops | + +## Troubleshooting + +### Party not being selected + +- Verify party slot is configured correctly +- Check if party selection screen is visible +- Ensure the slot number exists (1-10) + +### Wrong party selected + +- Check your Battle Config settings +- Verify you're using the correct config +- Party slot numbers start at 1, not 0 + +### Start Quest button not working + +- FGA handles this with temporary party switch +- May need to wait longer between selections +- Try manual party switch if persists + +### Preset Quest stopping script + +- Disable "Exit on Preset Quest" if intended +- Some story quests require preset parties +- Check if quest should allow party selection + +### Selection animation takes too long + +- FGA waits ~1.2 seconds for animation +- Slower devices may need longer +- Generally not a problem for most devices + +## Party Selection vs Support Selection + +| Feature | Party Selection | Support Selection | +| ----------- | ------------------- | --------------------- | +| Purpose | Choose your team | Choose friend servant | +| Timing | Before quest starts | After party selection | +| Options | 10 preset slots | Friend list search | +| Persistence | Remembered | Searched each time | + +## Related Documentation + +- [Auto Battle](../auto-battle.md) - Overall battle automation +- [Support Selection](../../battle-setup/support.md) - Configure support servant +- [Battle Configuration](../../battle-setup/config.md) - Full config setup diff --git a/docs/in-battle/script-control/screen-detection.md b/docs/in-battle/script-control/screen-detection.md new file mode 100644 index 0000000..0f5d45a --- /dev/null +++ b/docs/in-battle/script-control/screen-detection.md @@ -0,0 +1,248 @@ +--- +title: Automatic Screen Detection +description: How FGA automatically recognizes and handles different game screens during battle automation. +tags: + - battle + - screens + - detection + - automation +--- + +# Automatic Screen Detection + +FGA continuously monitors the game to recognize screens and take appropriate actions. + +## Overview + +The Battle Script uses pattern recognition to identify which screen FGO is currently showing. Every 0.5 seconds, FGA checks the screen against known patterns and handles each situation automatically, allowing seamless automation through complex quest sequences. + +## How Screen Detection Works + +```text +┌─────────────────────────────────────────┐ +│ Continuous Loop │ +│ (every 0.5 seconds) │ +└─────────────────────┬───────────────────┘ + │ + ▼ +┌─────────────────────────────────────────┐ +│ Capture Current Screen │ +└─────────────────────┬───────────────────┘ + │ + ▼ +┌─────────────────────────────────────────┐ +│ Check Against Known Patterns │ +│ • Menu icons │ +│ • Button locations │ +│ • Screen-specific indicators │ +└─────────────────────┬───────────────────┘ + │ + ▼ +┌─────────────────────────────────────────┐ +│ Execute Appropriate Action │ +└─────────────────────┬───────────────────┘ + │ + ▼ + Repeat Loop +``` + +## Detected Screens + +### Quest Flow Screens + +These screens appear during normal quest progression. + +| Screen | How FGA Recognizes It | Action Taken | +| ---------------------------- | -------------------------- | ------------------------------- | +| **Menu/Quest Selection** | Menu icon visible | Click quest, handle AP refill | +| **Support Selection** | Support screen indicator | Select configured support | +| **Party Selection** | Party dots visible | Select configured party | +| **Boost Item Selection** | Boost item buttons visible | Select configured boost or skip | +| **Quest Start Confirmation** | Cancel button visible | Click start | + +### Battle Screens + +These screens appear during combat. + +| Screen | How FGA Recognizes It | Action Taken | +| ------------------- | -------------------------- | --------------------------------- | +| **Battle Idle** | Attack button ready | Execute skills, then select cards | +| **Skill Animation** | Skill effects playing | Wait for completion | +| **Card Selection** | Command cards visible | Pick cards based on priority | +| **NP Animation** | NP starting (BetterFGO) | Tap to skip | +| **Between Waves** | Black screen during battle | Wait for next wave | + +### Result Screens + +These screens appear after completing a quest. + +| Screen | How FGA Recognizes It | Action Taken | +| --------------------------- | ---------------------- | -------------------------------------- | +| **Bond Point Distribution** | Bond icon visible | Screenshot (if enabled), click through | +| **Bond Level Up** | Bond level indicator | Screenshot, check target level | +| **Master EXP** | Master exp visible | Click through | +| **Material Drops** | Material rewards icon | Track materials, screenshot | +| **Quest Rewards** | Quest reward indicator | Handle first clear rewards | +| **Master Level Up** | Level up animation | Click through | +| **CE Reward Details** | CE details screen | Screenshot CE, close | + +### Special Screens + +These screens require specific handling. + +| Screen | How FGA Recognizes It | Action Taken | +| ----------------------- | ------------------------ | ---------------------------------- | +| **Friend Request** | Friend request indicator | Accept or reject based on settings | +| **Story Dialog** | Skip button visible | Skip (if story skip enabled) | +| **Popup/Info Windows** | Close button visible | Close automatically | +| **Quest Repeat** | Repeat button visible | Continue to next run | +| **Connection Issues** | Retry button visible | Retry automatically | +| **Withdrawal Dialog** | Withdraw button visible | Handle based on settings | +| **Rank Up Animation** | Rank up indicator | Click through | +| **Command Code Reward** | Command code screen | Click through | +| **Daily Login** | Login screen | Handle login | + +## Detection Priority + +FGA checks screens in a specific order to ensure correct handling. + +```text +Priority Order (highest to lowest): + +1. Connection retry needed +2. Battle idle (execute turn) +3. Menu screen +4. NP animation starting (BetterFGO) +5. Bond level screen +6. Result screens +7. Material drops screen +8. Quest reward screen +9. Support selection +10. Quest repeat screen +11. Withdrawal needed +12. Story skip needed +13. Popup screens +14. Friend request screen +15. Command code rewards +16. Bond 10 CE rewards +17. CE reward details +18. Death animation +19. Rank up animation +20. Interlude end screen +21. Tips screen +``` + +## Handling Unexpected Situations + +### Connection Issues + +When network problems occur, FGA detects retry prompts and handles them automatically: + +```text +┌─────────────────────────────────────────┐ +│ Connection Error Detected │ +└─────────────────────┬───────────────────┘ + │ + ▼ +┌─────────────────────────────────────────┐ +│ Click Retry Button │ +└─────────────────────┬───────────────────┘ + │ + ▼ +┌─────────────────────────────────────────┐ +│ Wait for Reconnection │ +└─────────────────────┬───────────────────┘ + │ + ▼ + Resume Normal Operation +``` + +### Story Dialogs + +When story skip is enabled, FGA handles story elements: + +1. Detects skip button on screen +2. Clicks skip button +3. Confirms skip in dialog +4. Continues to battle + +### Popup Windows + +Various popups (tips, warnings, info) are closed automatically by detecting and clicking the close button. + +## Tips for Best Results + +### Ensure Clean Detection + +- **Avoid overlay apps** that might interfere with screen recognition +- **Keep game at standard resolution** for consistent pattern matching +- **Don't manually interact** while automation is running +- **Allow animations to complete** before expecting detection + +### When Detection Fails + +If FGA seems stuck on a screen: + +1. Check if the screen is unusual or new (game updates can add screens) +2. Verify no other apps are overlaying FGO +3. Try restarting both FGA and FGO +4. Check that FGA has screen capture permissions + +### Screen Timing + +Some screens require specific timing: + +- **Bond screens**: May need extra time to fully render before screenshot +- **Drop screens**: Material detection happens before clicking through +- **Support selection**: Scrolling and refreshing has built-in delays + +## Troubleshooting + +### Script Seems Stuck + +**Problem**: The script isn't progressing despite the game showing an actionable screen. + +**Possible Causes**: + +- Screen isn't matching known patterns (check for game updates) +- Overlay app interfering with detection +- Permission issues with screen capture + +**Solutions**: + +1. Restart FGA and FGO +2. Check for app updates +3. Verify screen capture permissions +4. Check if any floating apps are active + +### Clicking Wrong Location + +**Problem**: FGA clicks somewhere but not where expected. + +**Possible Causes**: + +- Screen resolution mismatch +- Game window offset +- Navigation bar overlapping + +**Solutions**: + +1. Verify FGO is running in compatible resolution +2. Check navigation bar settings +3. Ensure no system elements overlap the game area + +### Missing Screenshots + +**Problem**: Bond or drop screenshots aren't being captured. + +**Possible Causes**: + +- Screen detected but screenshot timing off +- Storage permissions missing +- Screenshot setting disabled + +**Solutions**: + +1. Enable screenshot options in settings +2. Verify storage permissions +3. Check screenshot folder for existing captures diff --git a/docs/in-battle/script-control/withdraw.md b/docs/in-battle/script-control/withdraw.md new file mode 100644 index 0000000..830a595 --- /dev/null +++ b/docs/in-battle/script-control/withdraw.md @@ -0,0 +1,243 @@ +--- +title: Battle Withdrawal and Retreat +description: Handle battle withdrawal in FGA. Configure automatic retreat options when battles go wrong. +tags: + - battle + - withdraw + - retreat + - safety +--- + +# Battle Withdrawal and Retreat + +Safely retreat from battles when things go wrong. + +## Overview + +When your team is defeated or you need to abandon a battle, FGA can automatically handle the withdrawal process. Configure whether to allow automatic withdrawals or stop the script when retreat is needed. + +## Key Features + +- **Automatic Withdrawal**: Handle retreat dialogs without intervention +- **Withdrawal Tracking**: Count how many times you've retreated +- **Configurable Behavior**: Choose to allow or disallow withdrawals +- **Clean Exit**: Properly close all withdrawal dialogs + +## How Withdrawal Works + +```text +┌─────────────────────────────────────────┐ +│ Team Defeated │ +│ or Manual Retreat │ +└─────────────────────┬───────────────────┘ + │ + ▼ +┌─────────────────────────────────────────┐ +│ Withdrawal Dialog Appears │ +│ "Do you want to withdraw?" │ +└─────────────────────┬───────────────────┘ + │ + ┌────────────┴────────────┐ + │ Withdraw Enabled? │ Disabled + ▼ ▼ +┌─────────────────┐ ┌─────────────────┐ +│ Click Accept │ │ Stop Script │ +│ Handle Dialogs │ │ with Error │ +└────────┬────────┘ └─────────────────┘ + │ + ▼ +┌─────────────────────────────────────────┐ +│ Click Close on Results │ +└─────────────────────┬───────────────────┘ + │ + ▼ +┌─────────────────────────────────────────┐ +│ Increment Withdraw Counter │ +│ Continue to Next Run │ +└─────────────────────────────────────────┘ +``` + +## Withdrawal Dialog Flow + +FGA handles the complete withdrawal sequence: + +### Step 1: Detection + +```text +┌─────────────────────────────────────────┐ +│ │ +│ Your party has been defeated │ +│ │ +│ [ Use Command Spell ] [ Withdraw ] │ +│ │ +└─────────────────────────────────────────┘ +``` + +FGA detects the "Withdraw" button on screen. + +### Step 2: Confirmation + +```text +┌─────────────────────────────────────────┐ +│ │ +│ Abandon this battle? │ +│ │ +│ [ Cancel ] [ Accept ] │ +│ │ +└─────────────────────────────────────────┘ +``` + +FGA clicks "Accept" to confirm withdrawal. + +### Step 3: Close Results + +```text +┌─────────────────────────────────────────┐ +│ │ +│ Battle Abandoned │ +│ │ +│ [ Close ] │ +│ │ +└─────────────────────────────────────────┘ +``` + +FGA clicks "Close" to finish the withdrawal. + +## Configuration + +### Enable/Disable Withdrawal + +| Setting | Behavior | +| -------- | ---------------------------------- | +| Enabled | Automatically handle withdrawals | +| Disabled | Stop script when withdrawal needed | + +### When to Disable Withdrawal + +Consider disabling if: + +- You want to manually intervene when losing +- You prefer to use Command Spells manually +- You're testing a new team composition +- You want to investigate why battles fail + +## Withdrawal Tracking + +### Counter + +FGA tracks withdrawals during the session: + +```text +┌─────────────────────────────────────────┐ +│ Battle Statistics │ +├─────────────────────────────────────────┤ +│ Withdraw Count: 2 │ +└─────────────────────────────────────────┘ +``` + +### Exit Summary + +After script completion: + +```text +┌─────────────────────────────────────────┐ +│ Battle Exit Summary │ +├─────────────────────────────────────────┤ +│ Times Ran: 50 │ +│ Withdraw Count: 3 │ +│ ... │ +└─────────────────────────────────────────┘ +``` + +## Why Withdrawals Happen + +Common reasons for needing to withdraw: + +| Cause | Solution | +| ------------------- | --------------------------- | +| Under-leveled team | Level up servants | +| Wrong class matchup | Adjust party composition | +| Boss mechanics | Learn fight patterns | +| Bad RNG | May need multiple attempts | +| Missing skills | Use skill commands properly | + +## Tips for Best Results + +1. **Review withdrawals**: High counts indicate team problems +2. **Check your setup**: Verify skill commands are correct +3. **Consider difficulty**: Some quests may be too hard to farm +4. **Use appropriate teams**: Match class advantages +5. **Monitor patterns**: Same quest failing repeatedly needs adjustment + +## Exit Reason: Withdraw Disabled + +When withdrawal is disabled and a retreat is needed: + +```text +Exit Reason: WithdrawDisabled + +FGA detected a withdrawal dialog but automatic +withdrawal is disabled in settings. The script +has stopped to allow manual intervention. +``` + +This gives you the chance to: + +- Use Command Spells to revive +- Use Saint Quartz to continue +- Manually withdraw + +## Alternative: Command Spells + +Instead of withdrawing, you can use Command Spells: + +| Spell Use | Effect | +| --------- | ----------------------------- | +| Revive | Full party HP restore | +| NP Charge | 100% NP gauge for one servant | +| Heal | Partial HP recovery | + +FGA can be configured to use Command Spells in skill commands, but automatic revival on defeat is not supported. + +## Troubleshooting + +### Script stops unexpectedly on defeat + +- Withdrawal may be disabled in settings +- Check your battle configuration +- Enable withdrawal if you want automatic handling + +### Withdrawal counter increasing rapidly + +- Your team is failing frequently +- Review party composition +- Check skill command timing +- Consider easier quests + +### Withdrawal dialog not detected + +- Ensure screen is not obscured +- Check for device-specific issues +- Verify FGA version is current + +### Script continues after failed battle without counting withdrawal + +- The battle may have ended differently +- Check if Command Spells were used +- Verify withdrawal dialog appeared + +## Command Spell Alternative + +If you prefer to use Command Spells instead of withdrawing: + +1. Disable automatic withdrawal +2. Script stops on defeat +3. Manually use Command Spell +4. Script continues from battle + +This approach conserves quest progress but requires manual intervention. + +## Related Documentation + +- [Auto Battle](../auto-battle.md) - Overall battle automation +- [Skill Maker](../../battle-setup/skill-maker.md) - Command Spell usage diff --git a/docs/in-battle/skill-system/.meta.yml b/docs/in-battle/skill-system/.meta.yml new file mode 100644 index 0000000..49af088 --- /dev/null +++ b/docs/in-battle/skill-system/.meta.yml @@ -0,0 +1,5 @@ +title: Skill System +icon: material/fire +description: FGA skill execution guide. Learn about casting servant skills, master skills, and auto-target enemy selection. +search: + boost: 2 diff --git a/docs/in-battle/skill-system/auto-target.md b/docs/in-battle/skill-system/auto-target.md new file mode 100644 index 0000000..7d75798 --- /dev/null +++ b/docs/in-battle/skill-system/auto-target.md @@ -0,0 +1,140 @@ +--- +title: Auto Target Enemy Selection +description: Automatically target dangerous enemies and servants during FGO battles. FGA detects priority targets and focuses your attacks. +tags: + - battle + - targeting + - automation +--- + +# Auto Target Enemy Selection + +Automatically prioritize dangerous enemies and servant bosses during battle. + +## Overview + +Auto Target helps you focus on the most threatening enemies first. When enabled, FGA scans the enemy formation at the start of each turn and automatically selects high-priority targets like bosses or dangerous enemies marked with special indicators. + +## Key Features + +- **Danger Detection**: Identifies enemies marked with the danger indicator (!) +- **Servant Detection**: Recognizes enemy servants by their crown icon +- **Formation Support**: Works with both 3-enemy and 6-enemy battle formations +- **Smart Targeting**: Prioritizes the rightmost dangerous enemy (typically the boss) + +## How Auto Target Works + +```text +┌─────────────────────────────────────────┐ +│ Turn Starts │ +└─────────────────────┬───────────────────┘ + │ + ▼ +┌─────────────────────────────────────────┐ +│ Scan All Enemy Positions │ +│ (Left to Right) │ +└─────────────────────┬───────────────────┘ + │ + ▼ +┌─────────────────────────────────────────┐ +│ Check for Priority Indicators │ +│ • Danger icon (!) │ +│ • Servant crown │ +└─────────────────────┬───────────────────┘ + │ + ▼ +┌─────────────────────────────────────────┐ +│ Select Rightmost Priority Target │ +└─────────────────────┬───────────────────┘ + │ + ▼ +┌─────────────────────────────────────────┐ +│ Click to Focus Target │ +└─────────────────────────────────────────┘ +``` + +## Enemy Formation Types + +### Standard 3-Enemy Formation + +The most common formation with enemies in three positions: + +| Position | Priority | +| -------- | -------- | +| Left | Lower | +| Center | Medium | +| Right | Higher | + +### Extended 6-Enemy Formation + +Some quests feature six enemies across two rows: + +| Row | Positions | +| ----- | ---------------------------------- | +| Front | 3 enemies (clickable) | +| Back | 3 enemies (cannot target directly) | + +FGA uses different detection images for 6-enemy formations to ensure accurate targeting. + +## Priority Target Indicators + +### Danger Indicator (!) + +Enemies with the exclamation mark are about to use a powerful attack or have a special ability. Targeting them first can prevent team wipes. + +### Servant Crown + +Enemy servants (appearing in story quests or challenge content) are marked with a crown icon. These typically have: + +- Higher HP pools +- Powerful Noble Phantasms +- Special skills and abilities + +## Tips for Best Results + +1. **Enable for boss fights**: Auto Target is most useful for quests with priority targets +2. **Combine with skill commands**: Use targeting commands in your skill setup to ensure focus on the right enemy +3. **Check quest formations**: Know whether you're facing a 3-enemy or 6-enemy formation for better planning +4. **Manual override available**: You can still manually select targets even with Auto Target enabled + +## How Targeting Order Works + +In FGO boss stages, enemies are typically arranged with the strongest on the right: + +```text +┌─────────┬─────────┬─────────┐ +│ Enemy 1 │ Enemy 2 │ Enemy 3 │ +│ (Weak) │ (Medium)│ (Boss) │ +└─────────┴─────────┴─────────┘ +``` + +Auto Target scans from left to right but selects the **rightmost** priority target found. This means: + +- If Enemy 3 is a servant → Target Enemy 3 +- If only Enemy 1 has danger indicator → Target Enemy 1 +- If both Enemy 2 and 3 are servants → Target Enemy 3 + +## Troubleshooting + +### Auto Target isn't selecting the boss + +- Verify the enemy has a visible priority indicator (! or crown) +- Check if you're in a non-standard formation that might not be detected +- Ensure the battle screen is fully loaded before the turn starts + +### Wrong enemy being targeted + +- The target selection always picks the rightmost priority enemy +- If multiple enemies have indicators, the one furthest right is selected +- Manual target commands in your skill setup can override auto targeting + +### Targeting not working in 6-enemy quests + +- FGA uses different detection images for 6-enemy formations +- Ensure your app version supports the extended formation detection +- Some event quests may have unique layouts not yet supported + +## Related Documentation + +- [Auto Battle](../auto-battle.md) - Overall battle automation +- [Skill Maker](../../battle-setup/skill-maker.md) - Configure manual target commands diff --git a/docs/in-battle/skill-system/skill-execution.md b/docs/in-battle/skill-system/skill-execution.md new file mode 100644 index 0000000..7b954f9 --- /dev/null +++ b/docs/in-battle/skill-system/skill-execution.md @@ -0,0 +1,324 @@ +--- +title: Skill Execution During Battle +description: How FGA casts servant skills, master skills, and command spells during combat. Understand skill targeting and order changes. +tags: + - battle + - skills + - commands + - automation +--- + +# Skill Execution During Battle + +Automatic casting of servant skills, master skills, and command spells. + +## Overview + +FGA executes your configured skill commands during battle, handling all the UI interactions needed to activate skills, select targets, and wait for animations. This includes servant skills, master skills from your Mystic Code, and even Command Spells for emergency situations. + +## Key Features + +- **Servant Skills**: Cast skills from your three field servants +- **Master Skills**: Use Mystic Code abilities +- **Command Spells**: Emergency revival and buffs +- **Target Selection**: Automatically select skill targets +- **Order Change**: Swap servants mid-battle +- **Animation Handling**: Wait for skill effects to complete + +## Skill Types + +### Servant Skills + +Each servant has three skills (S1, S2, S3): + +| Skill Position | Command | +| ----------------- | ------- | +| Servant A Skill 1 | a1 | +| Servant A Skill 2 | a2 | +| Servant A Skill 3 | a3 | +| Servant B Skill 1 | b1 | +| Servant C Skill 3 | c3 | + +### Master Skills + +Your Mystic Code provides three skills: + +| Skill Position | Command | +| -------------- | ------------ | +| Master Skill 1 | j1 / master1 | +| Master Skill 2 | j2 / master2 | +| Master Skill 3 | j3 / master3 | + +### Command Spells + +For emergencies (limited uses): + +| Spell | Effect | +| ----- | ------------------- | +| CS1 | Varies by selection | +| CS2 | Varies by selection | +| CS3 | Varies by selection | + +## Skill Execution Flow + +```text +┌─────────────────────────────────────────┐ +│ Skill Command Received │ +└─────────────────────┬───────────────────┘ + │ + ▼ +┌─────────────────────────────────────────┐ +│ Click Skill Button │ +│ (Servant portrait or Master button) │ +└─────────────────────┬───────────────────┘ + │ + ▼ +┌─────────────────────────────────────────┐ +│ Check for Target Selection │ +│ Does skill need a target? │ +└─────────────────────┬───────────────────┘ + │ + ┌────────────┴────────────┐ + │ Needs Target? │ No + ▼ ▼ +┌─────────────────┐ ┌─────────────────┐ +│ Select Target │ │ Skill Activates│ +│ (A, B, or C) │ │ Immediately │ +└────────┬────────┘ └────────┬────────┘ + │ │ + └──────────┬───────────┘ + │ + ▼ +┌─────────────────────────────────────────┐ +│ Wait for Animation │ +│ Battle screen to reappear │ +└─────────────────────────────────────────┘ +``` + +## Target Selection + +### Ally Targets + +For skills that target allies: + +| Target | Position | Command Modifier | +| ------ | -------------- | ---------------- | +| A | Left servant | (a) | +| B | Center servant | (b) | +| C | Right servant | (c) | + +Example: `a1(b)` = Servant A's Skill 1 targeting Servant B + +### Enemy Targets + +For skills that target enemies: + +| Target | Position | +| ------ | ------------ | +| 1 | Left enemy | +| 2 | Center enemy | +| 3 | Right enemy | + +### Multi-Target Skills + +Some skills allow multiple targets: + +```text +Example: Skill with 2 targets +Command: a2(a)(b) + +First target: Servant A +Second target: Servant B +``` + +## Order Change (Servant Swap) + +Swap a field servant with a backup: + +### Command Format + +```text +x[starting][sub] + +starting: Field position (1-3) +sub: Backup position (1-3) + +Example: x23 = Swap field position 2 with backup position 3 +``` + +### Swap Process + +```text +┌─────────────────────────────────────────┐ +│ Click Master Skill (Order Change) │ +└─────────────────────┬───────────────────┘ + │ + ▼ +┌─────────────────────────────────────────┐ +│ Select Field Servant │ +│ (Position to swap out) │ +└─────────────────────┬───────────────────┘ + │ + ▼ +┌─────────────────────────────────────────┐ +│ Select Backup Servant │ +│ (Position to swap in) │ +└─────────────────────┬───────────────────┘ + │ + ▼ +┌─────────────────────────────────────────┐ +│ Confirm Swap │ +│ Update servant tracking │ +└─────────────────────────────────────────┘ +``` + +## Skill Confirmation Dialog + +Some skills show a confirmation dialog: + +```text +┌─────────────────────────────────────────┐ +│ Use this skill? │ +│ │ +│ [ Cancel ] [ OK ] │ +└─────────────────────────────────────────┘ +``` + +FGA handles these automatically: + +- Detects confirmation dialog +- Clicks OK to confirm +- Continues with next action + +## Animation Waiting + +After skill activation: + +1. FGA waits for battle screen to disappear +2. Skill animation plays +3. FGA waits for battle screen to return +4. Continues with next command + +### Timeout Handling + +- Default wait: 5 seconds +- If screen doesn't return, may retry +- Prevents soft-locks from slow animations + +## Using Command Spells + +### Opening the Menu + +```text +┌─────────────────────────────────────────┐ +│ Click Command Spell icon │ +└─────────────────────┬───────────────────┘ + │ + ▼ +┌─────────────────────────────────────────┐ +│ Wait for menu to open │ +│ Verify Cancel button visible │ +└─────────────────────┬───────────────────┘ + │ + ▼ +┌─────────────────────────────────────────┐ +│ Select specific spell │ +│ Handle targets if needed │ +└─────────────────────────────────────────┘ +``` + +### Available Spells + +| Spell | Typical Use | +| --------- | ----------------------------- | +| NP Charge | 100% NP for one servant | +| Heal | Restore HP | +| Revive | Resurrect party (if defeated) | + +## Special Skill Handling + +### Transform Skills (Mélusine) + +When a servant transforms: + +1. FGA detects transformation +2. Updates servant tracking +3. Recaptures new skill icons +4. Continues normally + +### Skills with Multiple Effects + +Some skills have multiple phases: + +1. First effect activates +2. May need second target selection +3. FGA handles each phase + +## Tips for Best Results + +1. **Test skill commands**: Verify timing before long sessions +2. **Account for animations**: Some skills have long animations +3. **Check skill availability**: Ensure skills aren't on cooldown +4. **Order matters**: Skills execute in command order +5. **Verify targets**: Confirm target syntax is correct + +## Common Skill Command Patterns + +### Standard Buff Setup + +```text +Wave 1: a1, b1, c1 +(All servants use Skill 1) +``` + +### Boss Wave Setup + +```text +Wave 3: master1(a), a1, a2, a3, b2(a) +(Master buffs A, A uses all skills, B targets A) +``` + +### Order Change Pattern + +```text +Wave 1: a1, a2, x13, ... +(A uses skills, then swaps with backup 3) +``` + +## Troubleshooting + +### Skill not being cast + +- Check if skill is on cooldown +- Verify command syntax is correct +- Ensure servant has enough NP/resources + +### Wrong target selected + +- Check target syntax (a, b, c) +- Verify servant positions haven't changed +- Order change may have moved servants + +### Animation timeout + +- Slow device may need longer wait +- Some skills have extended animations +- Check network connection + +### Skill confirmation not handled + +- FGA detects and handles automatically +- May fail on unusual dialog layouts +- Check if game version is supported + +### Order change fails + +- Verify backup position exists +- Check if servant isn't defeated +- Ensure Master Skill includes Order Change + +## Related Documentation + +- [Skill Maker](../../battle-setup/skill-maker.md) - Create skill commands +- [Auto Battle](../auto-battle.md) - Overall battle automation +- [Servant Tracking](../tracking/servant-tracking.md) - Position tracking diff --git a/docs/in-battle/tracking/.meta.yml b/docs/in-battle/tracking/.meta.yml new file mode 100644 index 0000000..c752ce8 --- /dev/null +++ b/docs/in-battle/tracking/.meta.yml @@ -0,0 +1,5 @@ +title: Battle Tracking +icon: material/counter +description: FGA battle tracking guide. Learn about stage, servant, and material tracking during automated battles. +search: + boost: 2 diff --git a/docs/in-battle/tracking/ce-drops.md b/docs/in-battle/tracking/ce-drops.md new file mode 100644 index 0000000..ebbc003 --- /dev/null +++ b/docs/in-battle/tracking/ce-drops.md @@ -0,0 +1,262 @@ +--- +title: CE Drop Detection and Tracking +description: Track Craft Essence drops during FGA farming. Get notifications when CEs drop and set limits to stop farming. +tags: + - battle + - drops + - CE + - farming +--- + +# CE Drop Detection and Tracking + +Detect and track Craft Essence drops during farming sessions. + +## Overview + +FGA can detect when Craft Essences drop from quests, notify you immediately, and optionally stop farming when a target number of CEs have dropped. This is especially useful when farming for event CEs or specific drop CEs. + +## Key Features + +- **Drop Detection**: Identifies CE drops on result screens +- **Star Verification**: Confirms actual CE drops using star icons +- **Immediate Notifications**: Alert when CE drops occur +- **Limit Enforcement**: Stop after collecting target CEs +- **Auto-Decrement**: Reduce remaining limit automatically + +## How CE Detection Works + +```text +┌─────────────────────────────────────────┐ +│ Quest Result Screen │ +└─────────────────────┬───────────────────┘ + │ + ▼ +┌─────────────────────────────────────────┐ +│ Scan for CE Drop Icons │ +│ Search entire visible area │ +└─────────────────────┬───────────────────┘ + │ + ▼ +┌─────────────────────────────────────────┐ +│ For Each Potential CE: │ +│ • Check for CE icon │ +│ • Verify star pattern nearby │ +│ • Confirm actual CE drop │ +└─────────────────────┬───────────────────┘ + │ + ▼ +┌─────────────────────────────────────────┐ +│ If CE Confirmed: │ +│ • Increment counter │ +│ • Send notification │ +│ • Check against limit │ +└─────────────────────────────────────────┘ +``` + +## Detection Method + +### Two-Stage Verification + +FGA uses a two-stage process to avoid false positives: + +#### Stage 1: CE Icon Detection + +Scans for the Craft Essence drop icon pattern on the result screen. + +#### Stage 2: Star Verification + +Checks for the star rating indicator near the CE icon: + +```text +┌─────────────────┐ +│ [CE Icon] │ +│ ★★★★★ │ ← Stars confirm it's a CE +└─────────────────┘ +``` + +This prevents mistaking other items for CE drops. + +## Configuration + +### Enable CE Tracking + +1. Open your Battle Config +2. Find CE Drop settings +3. Enable "Track CE Drops" +4. Optionally set a limit + +### CE Limit Settings + +| Setting | Behavior | +| ----------- | ------------------------ | +| Disabled | Track but don't stop | +| Enabled + 1 | Stop after first CE drop | +| Enabled + N | Stop after N CEs drop | + +## Stop Conditions + +### Stop on Any CE + +When "Stop on CE" is enabled: + +- Any CE drop triggers script stop +- Current run completes first +- Exit summary shows CE count + +### Stop at Limit + +When limit is configured: + +```text +Before Run: +- CE Limit: 5 + +After Each Drop: +- Count compared to limit +- Continue if count < limit +- Stop if count >= limit +``` + +## Notifications + +When a CE drops, FGA sends a notification: + +```text +┌─────────────────────────────────────────┐ +│ FGA: CE Dropped! │ +│ A Craft Essence has dropped. │ +└─────────────────────────────────────────┘ +``` + +This alerts you even if not watching the screen. + +## Auto-Decrement + +After script completion: + +```text +Before Run: +- CE Limit: 10 + +During Run: +- CEs Dropped: 3 + +After Run: +- CE Limit: 7 (auto-decremented) +``` + +When limit reaches 0: + +- CE limiting is disabled +- Limit resets to default value +- Tracking continues without stopping + +## Exit Summary + +View CE statistics after completion: + +```text +┌─────────────────────────────────────────┐ +│ Battle Exit Summary │ +├─────────────────────────────────────────┤ +│ CE Drop Count: 3 │ +│ ... │ +└─────────────────────────────────────────┘ +``` + +## Exit Reasons + +### Limit CEs + +```text +Exit Reason: LimitCEs (Count: 5) + +FGA has stopped because the configured +CE drop limit has been reached. +``` + +### CE Get (Stop on CE) + +```text +Exit Reason: CEGet + +FGA has stopped because a Craft Essence +dropped and "Stop on CE" is enabled. +``` + +## Tips for Best Results + +1. **Know drop rates**: CE drops are rare, set reasonable limits +2. **Use for event CEs**: Most useful for limited event drops +3. **Enable notifications**: Get alerted even when away +4. **Combine with screenshots**: Keep visual records of drops +5. **Check drop screen timing**: Ensure screen loads fully + +## Common CE Farming Scenarios + +### Event CE Farming + +- Set limit based on desired copies +- Enable notifications for immediate alerts +- Consider MLB requirements (5 copies) + +### Story CE Farming + +- Rare drops from story quests +- Low limits recommended (1-3) +- May take many runs + +### Random Drop CEs + +- Very low drop rates +- Use unlimited tracking +- Review exit summaries periodically + +## Troubleshooting + +### CE drops not detected + +- Verify drop screen is fully loaded +- Check if CE icon is visible on screen +- Ensure FGA version supports current CE images +- Screen resolution may affect detection + +### False positives (wrong count) + +- Star verification should prevent this +- Check if other items look similar +- Report persistent issues + +### Notifications not appearing + +- Check device notification settings +- Verify FGA notification permissions +- Ensure notifications are enabled in app + +### Script not stopping at limit + +- Confirm limit is greater than 0 +- Check if limiting is enabled +- Verify correct Battle Config is active + +### Auto-decrement not working + +- Only triggers on successful completion +- Manual stops may not decrement +- Check settings after run + +## CE Drops vs Material Drops + +| Feature | CE Drops | Materials | +| ------------ | ------------ | --------------- | +| Detection | Icon + stars | Material images | +| Rarity | Very rare | Variable | +| Notification | Immediate | Exit summary | +| Limit type | Count of CEs | Total materials | + +## Related Documentation + +- [Auto Battle](../auto-battle.md) - Overall battle automation +- [Materials Tracking](materials-tracking.md) - Track material drops +- [Run Limits](../../app/advanced.md) - Configure limits diff --git a/docs/in-battle/tracking/materials-tracking.md b/docs/in-battle/tracking/materials-tracking.md new file mode 100644 index 0000000..68c5259 --- /dev/null +++ b/docs/in-battle/tracking/materials-tracking.md @@ -0,0 +1,261 @@ +--- +title: Materials and Drop Tracking +description: Track material drops during FGA farming sessions. Configure target materials, set limits, and monitor farming progress. +tags: + - battle + - materials + - drops + - farming +--- + +# Materials and Drop Tracking + +Monitor and track material drops during your farming sessions. + +## Overview + +FGA can track specific materials that drop during quests, keeping count of how many you've collected. Set target amounts to automatically stop farming when you've gathered enough, or simply monitor your progress without limits. + +## Key Features + +- **Material Detection**: Identifies configured materials in drop screens +- **Count Accumulation**: Tracks totals across multiple runs +- **Limit Enforcement**: Stop when target amount is reached +- **Auto-Decrement**: Reduce remaining limit after session ends +- **Multi-Material Support**: Track multiple materials simultaneously + +## How Material Tracking Works + +```text +┌─────────────────────────────────────────┐ +│ Quest Result Screen │ +└─────────────────────┬───────────────────┘ + │ + ▼ +┌─────────────────────────────────────────┐ +│ Scan for Configured Materials │ +│ Search entire drop area │ +└─────────────────────┬───────────────────┘ + │ + ▼ +┌─────────────────────────────────────────┐ +│ Match Against Material Images │ +│ Count occurrences of each │ +└─────────────────────┬───────────────────┘ + │ + ▼ +┌─────────────────────────────────────────┐ +│ Update Running Totals │ +└─────────────────────┬───────────────────┘ + │ + ▼ +┌─────────────────────────────────────────┐ +│ Check Against Limits │ +│ Stop if target reached │ +└─────────────────────────────────────────┘ +``` + +## Configuration + +### Selecting Materials + +1. Open your Battle Config +2. Navigate to Materials section +3. Select materials from the list +4. Choose materials that drop in your target quest + +### Material Categories + +| Category | Examples | +| ---------------- | ------------------------------ | +| Gems | Saber gems, Caster gems, etc. | +| Pieces/Monuments | Saber pieces, Lancer monuments | +| Bronze Materials | Bones, Dust, Fangs | +| Silver Materials | Seeds, Feathers, Stakes | +| Gold Materials | Hearts, Scales, Lores | +| Event Materials | Event-specific drops | + +### Setting Limits + +| Setting | Behavior | +| ---------------- | ----------------------- | +| Disabled | Track without stopping | +| Enabled + Amount | Stop when total reached | + +## Material Detection + +### How Detection Works + +1. FGA loads images for your selected materials +2. On the drop screen, it scans the entire visible area +3. Pattern matching identifies each material instance +4. Counts are accumulated per material type + +### Detection Accuracy + +| Factor | Impact | +| ----------------- | ------------------------------------ | +| Image quality | Higher quality = better detection | +| Screen resolution | Affects pattern matching | +| Material stacking | Multiple drops detected individually | + +## Tracking Multiple Materials + +Track several materials at once: + +```text +Configured Materials: +- Dragon Fangs +- Void Dust +- Hero's Proof + +After 5 Runs: +┌─────────────────────────────────────────┐ +│ Materials Farmed │ +├─────────────────────────────────────────┤ +│ Dragon Fangs: 12 │ +│ Void Dust: 8 │ +│ Hero's Proof: 15 │ +└─────────────────────────────────────────┘ +``` + +## Limit Behavior + +### Stop on Limit + +When limit is enabled and reached: + +1. Current run completes normally +2. Run is counted in statistics +3. Script stops with "Limit Materials" reason +4. Exit summary shows final counts + +### Auto-Decrement + +After script completion: + +```text +Before Run: +- Material Limit: 50 + +During Run: +- Materials Collected: 15 + +After Run: +- Material Limit: 35 (auto-decremented) +``` + +When limit reaches 0: + +- Material limiting is disabled +- Limit resets to default value +- Tracking continues without stopping + +## Exit Summary + +After script completion, view material statistics: + +```text +┌─────────────────────────────────────────┐ +│ Battle Exit Summary │ +├─────────────────────────────────────────┤ +│ Materials: │ +│ Dragon Fangs: 23 │ +│ Void Dust: 18 │ +│ Hero's Proof: 31 │ +│ ... │ +└─────────────────────────────────────────┘ +``` + +## Tips for Best Results + +1. **Select only relevant materials**: More materials = more processing time +2. **Know your quest drops**: Only track materials that actually drop +3. **Set realistic limits**: Based on drop rates and available AP +4. **Check drops manually first**: Verify material detection works +5. **Use with screenshots**: Enable drop screenshots for records + +## Material Drop Rates + +Plan your limits based on typical drop rates: + +| Drop Type | Typical Rate | +| ---------------- | ---------------------- | +| Bronze materials | Common (2-3 per run) | +| Silver materials | Uncommon (0-2 per run) | +| Gold materials | Rare (0-1 per run) | +| Gems | Variable by quest | + +## Best Farming Locations + +Configure materials for optimal farming: + +### Free Quests + +- Consistent drops +- Known material pools +- Can use material tracking effectively + +### Event Quests + +- Event materials often trackable +- Bonus drops with CEs/teapots +- May have mixed drop pools + +### Daily Quests + +- Gem and monument farming +- Predictable material types +- Good for limit-based farming + +## Troubleshooting + +### Materials not being detected + +- Verify material is selected in config +- Check if material actually drops in quest +- Ensure drop screen is fully visible +- Update FGA for latest material images + +### Count seems inaccurate + +- Multiple of same material may stack +- Visual stacking affects detection +- Compare with actual inventory after run + +### Script not stopping at limit + +- Check if limit is properly enabled +- Verify limit amount is greater than 0 +- Sum of all materials must reach limit + +### Wrong materials being counted + +- Material images may be similar +- Check which materials are configured +- Remove similar-looking materials + +### Auto-decrement not working + +- Only triggers on successful completion +- Manual stops may not decrement +- Check limit settings after run + +## CE Drop Tracking + +Craft Essence drops are tracked separately: + +| Feature | Materials | CE Drops | +| ------------ | ----------------- | --------------- | +| Detection | Material images | CE icon + stars | +| Counting | Per material type | Total CEs | +| Limits | Combined total | Separate limit | +| Notification | Exit summary | Immediate alert | + +See [CE Drop Tracking](ce-drops.md) for dedicated CE tracking. + +## Related Documentation + +- [Auto Battle](../auto-battle.md) - Overall battle automation +- [CE Drop Tracking](ce-drops.md) - Track Craft Essence drops +- [Run Limits](../../app/advanced.md) - Configure limits diff --git a/docs/in-battle/tracking/servant-tracking.md b/docs/in-battle/tracking/servant-tracking.md new file mode 100644 index 0000000..30f9a5b --- /dev/null +++ b/docs/in-battle/tracking/servant-tracking.md @@ -0,0 +1,278 @@ +--- +title: Servant Tracking During Battle +description: How FGA tracks servants on the battlefield. Understand servant detection, face card matching, and order change handling. +tags: + - battle + - servants + - tracking + - cards +--- + +# Servant Tracking During Battle + +Understand how FGA identifies and tracks servants throughout battle. + +## Overview + +FGA maintains a mapping of which servants are on the field and in which positions. This enables accurate face card attribution, support servant identification, and proper handling of servant swaps and deaths. + +## Key Features + +- **Position Tracking**: Know which servant is in each field slot +- **Face Card Matching**: Attribute command cards to correct servants +- **Support Detection**: Identify the friend's support servant +- **Order Change Handling**: Track servant swaps accurately +- **Death/Replacement**: Update tracking when servants die + +## How Servant Tracking Works + +```text +┌─────────────────────────────────────────┐ +│ Battle Start │ +└─────────────────────┬───────────────────┘ + │ + ▼ +┌─────────────────────────────────────────┐ +│ Initialize Field Positions │ +│ Slots 1-3 = Team positions 1-3 │ +└─────────────────────┬───────────────────┘ + │ + ▼ +┌─────────────────────────────────────────┐ +│ Capture Servant Identification │ +│ • Skill icons │ +│ • Face card images │ +└─────────────────────┬───────────────────┘ + │ + ▼ +┌─────────────────────────────────────────┐ +│ Each Turn: Verify Positions │ +│ Check if servants match expectations │ +└─────────────────────────────────────────┘ +``` + +## Field Slots and Team Slots + +### Field Slots + +Active positions during battle: + +| Slot | Position | Description | +| ---- | -------- | --------------------- | +| A | Left | First field position | +| B | Center | Second field position | +| C | Right | Third field position | + +### Team Slots + +All servants in your party: + +| Slot | Position | Field Status | +| ---- | -------- | ------------------- | +| 1 | First | Starts on field (A) | +| 2 | Second | Starts on field (B) | +| 3 | Third | Starts on field (C) | +| 4 | Fourth | Backup | +| 5 | Fifth | Backup | +| 6 | Sixth | Backup | + +## Servant Identification + +### Skill Icon Detection + +FGA captures skill icons to identify servants: + +```text +┌─────────────────────────────────────────┐ +│ Field Slot A │ +│ ┌───┬───┬───┐ │ +│ │S1 │S2 │S3 │ ← Skill icons captured │ +│ └───┴───┴───┘ │ +└─────────────────────────────────────────┘ +``` + +### Face Card Detection + +Matches command cards to servants: + +```text +Command Cards: +[Card 1] [Card 2] [Card 3] [Card 4] [Card 5] + +FGA compares card faces to captured images +to determine which servant owns each card. +``` + +## Support Servant Handling + +### Support Detection + +FGA identifies the support servant by the support icon: + +- Checks each field slot for support indicator +- Marks that slot as the support position +- Can treat support like own servant if configured + +### Support Face Cards + +By default, support cards may be handled differently: + +| Setting | Behavior | +| ------------ | --------------------------- | +| Treat as own | Include in servant priority | +| Separate | May be deprioritized | + +## Order Change Tracking + +When servants are swapped using Order Change skill: + +```text +Before Swap: +Field: [A: Servant 1] [B: Servant 2] [C: Servant 3] +Backup: [Servant 4] [Servant 5] [Servant 6] + +Order Change: Swap B with position 1 backup + +After Swap: +Field: [A: Servant 1] [B: Servant 4] [C: Servant 3] +Backup: [Servant 2] [Servant 5] [Servant 6] +``` + +FGA updates its internal mapping to reflect the swap. + +## Servant Death and Replacement + +When a servant dies: + +```text +┌─────────────────────────────────────────┐ +│ Servant Death Detected │ +└─────────────────────┬───────────────────┘ + │ + ▼ +┌─────────────────────────────────────────┐ +│ Wait for Replacement │ +│ (from backup) │ +└─────────────────────┬───────────────────┘ + │ + ▼ +┌─────────────────────────────────────────┐ +│ Re-identify Servant in Slot │ +│ Update tracking map │ +└─────────────────────────────────────────┘ +``` + +## Special Cases + +### Mélusine Ascension Change + +Mélusine can change her appearance mid-battle: + +- Her skill icons and face cards change +- FGA detects this and recaptures images +- Tracking continues accurately + +### Transform Skills + +Servants with transformation skills: + +- Jekyll/Hyde transformations +- Ascension-changing skills +- FGA may need to recapture face cards + +## Face Card Grouping + +FGA groups cards by servant for features like: + +- **Servant Priority**: Pick cards from preferred servants first +- **Brave Chains**: Form chains with same-servant cards +- **Avoid Chains**: Spread cards across servants + +### Grouping Process + +```text +Available Cards: +[Buster-A] [Arts-B] [Quick-A] [Buster-C] [Arts-A] + +Grouped by Servant: +Servant A: [Buster] [Quick] [Arts] +Servant B: [Arts] +Servant C: [Buster] +``` + +## Skip Face Card Checking + +When enabled, FGA skips detailed face card attribution: + +| Setting | Behavior | +| -------- | ----------------------------- | +| Enabled | Cards not matched to servants | +| Disabled | Full servant attribution | + +Use when: + +- Servant priority is not needed +- Performance is more important +- Simple card priority is sufficient + +## Tips for Best Results + +1. **Wait for battle to load**: Ensure servants are visible before turn starts +2. **Stable team composition**: Frequent deaths affect tracking accuracy +3. **Clear skill icons**: Ensure skills are visible for capture +4. **Test with your team**: Verify tracking works for your setup +5. **Check servant priority results**: Confirm correct cards are selected + +## Troubleshooting + +### Cards attributed to wrong servant + +- Face card images may be similar +- Try enabling more detailed checking +- Verify servant tracking initialized correctly + +### Order Change not tracked + +- Ensure the swap completed fully +- FGA updates after skill animation +- Check if skill command syntax is correct + +### Support not detected + +- Support icon must be visible +- Check if using correct server settings +- Verify support is in expected position + +### Tracking fails after death + +- Backup servant may look different than expected +- FGA recaptures images automatically +- Allow time for replacement animation + +### Mélusine tracking issues + +- Ascension change detection may vary +- Ensure FGA version supports this feature +- Check timing of transformation + +## Performance Considerations + +Servant tracking involves: + +- Image capture operations +- Pattern matching for faces +- Memory for stored images + +### Optimization Settings + +| Setting | Impact | +| ----------------------- | ---------------------------- | +| Skip face card checking | Faster, less accurate | +| Parallel card checking | Trade-off speed vs resources | +| Treat support as own | Simplifies tracking | + +## Related Documentation + +- [Face Card Priority](../card-selection/face-card-priority.md) - Card selection by servant +- [Brave Chains](../card-selection/brave-chains.md) - Chain formation +- [Skill Maker](../../battle-setup/skill-maker.md) - Order change commands diff --git a/docs/in-battle/tracking/stage-tracking.md b/docs/in-battle/tracking/stage-tracking.md new file mode 100644 index 0000000..4de40c7 --- /dev/null +++ b/docs/in-battle/tracking/stage-tracking.md @@ -0,0 +1,267 @@ +--- +title: Stage and Wave Tracking +description: How FGA detects wave changes during battle. Understand stage counting and wave-specific command execution. +tags: + - battle + - waves + - stages + - detection +--- + +# Stage and Wave Tracking + +Detect wave changes to execute the correct skills for each battle stage. + +## Overview + +FGA tracks which wave (stage) you're on during battle to execute the appropriate skill commands. Different waves often require different strategies, and accurate wave detection ensures your configured skills activate at the right time. + +## Key Features + +- **Wave Detection**: Identifies current battle wave +- **Change Detection**: Knows when you've moved to next wave +- **Command Triggering**: Activates wave-specific skills +- **Snapshot Comparison**: Uses image matching for accuracy +- **Threshold Processing**: Filters background for reliable detection + +## How Stage Tracking Works + +```text +┌─────────────────────────────────────────┐ +│ Battle Begins (Wave 1) │ +└─────────────────────┬───────────────────┘ + │ + ▼ +┌─────────────────────────────────────────┐ +│ Capture Stage Counter Snapshot │ +│ Save current wave indicator │ +└─────────────────────┬───────────────────┘ + │ + ▼ +┌─────────────────────────────────────────┐ +│ Execute Wave 1 Skills │ +└─────────────────────┬───────────────────┘ + │ + ▼ +┌─────────────────────────────────────────┐ +│ Each Turn: Compare Against Snapshot │ +│ Did the stage counter change? │ +└─────────────────────┬───────────────────┘ + │ + ┌────────────┴────────────┐ + │ Changed? │ No + ▼ ▼ +┌─────────────────┐ ┌─────────────────┐ +│ Update Wave │ │ Continue on │ +│ Take New Snap │ │ Current Wave │ +│ Run New Skills │ │ │ +└─────────────────┘ └─────────────────┘ +``` + +## Stage Counter Location + +The stage indicator appears in the game UI: + +```text +┌─────────────────────────────────────────┐ +│ Battle │ +│ Stage 2/3 ← Here │ +│ │ +│ [Enemy] [Enemy] [Enemy] │ +│ │ +└─────────────────────────────────────────┘ +``` + +FGA monitors this region for changes. + +## Detection Method + +### Snapshot Approach + +1. **Capture**: Take screenshot of stage counter area +2. **Store**: Save as reference for current wave +3. **Compare**: Each turn, compare current screen to snapshot +4. **Detect**: If different, wave has changed + +### Image Thresholding + +FGA applies thresholding to improve detection: + +```text +Original Image: +┌─────────────────┐ +│ Stage 1/3 │ (with background) +└─────────────────┘ + +After Threshold: +┌─────────────────┐ +│ Stage 1/3 │ (white text, black background) +└─────────────────┘ +``` + +This removes background variations that could cause false detections. + +## Wave Numbers + +### Standard Quests + +Most quests have 3 waves: + +| Wave | Typical Content | +| ---- | ------------------- | +| 1 | Weak enemies | +| 2 | Medium enemies | +| 3 | Boss/strong enemies | + +### Variable Wave Counts + +Some quests may have: + +- 1 wave (boss rush) +- 2 waves (shorter quests) +- 4+ waves (challenge/special) + +FGA handles any wave count automatically. + +## Skill Command Timing + +### Wave-Specific Commands + +Configure different skills for each wave: + +```text +Wave 1: a1, b2, c3, np +Wave 2: a1, np +Wave 3: master1, a1, a2, a3, np +``` + +FGA executes the appropriate commands when each wave begins. + +### Turn Tracking Within Waves + +FGA also tracks turns within each wave: + +```text +Wave 2, Turn 1: Use buffs +Wave 2, Turn 2: Use NP +Wave 2, Turn 3: (if needed) additional skills +``` + +## Detection Accuracy + +### Similarity Threshold + +FGA uses a similarity score to detect changes: + +| Scenario | Action | +| --------------- | -------------------- | +| High similarity | Same wave, continue | +| Low similarity | Wave changed, update | + +### Threshold Value + +A threshold of ~0.67 is used to: + +- Filter background noise +- Isolate the stage counter text +- Improve matching accuracy + +## New vs Legacy Detection + +### New Stage Counter Detection + +- Uses image thresholding +- More accurate across servers +- Handles background variations + +### Legacy Detection + +- Direct image comparison +- May be affected by backgrounds +- Fallback for compatibility + +Configure in advanced settings. + +## Tips for Best Results + +1. **Configure all waves**: Set skills for each expected wave +2. **Test detection first**: Run one battle to verify wave changes detected +3. **Check server differences**: Stage counter fonts may vary +4. **Use appropriate timing**: Skills should account for wave transitions +5. **Monitor turn counts**: Ensure turns are tracked correctly + +## Wave Change Events + +When a wave change is detected: + +1. State updated to new wave number +2. Turn counter resets to 0 +3. New stage snapshot captured +4. Wave-specific skills queued +5. Servant tracking refreshed + +## Troubleshooting + +### Wave changes not detected + +- Check if stage counter is visible +- Verify screen region is correct +- Try enabling new stage counter detection +- Check similarity threshold settings + +### Skills executing on wrong wave + +- Verify skill command wave configuration +- Check if detection timing is correct +- Ensure wave numbers match expectations + +### False wave change detection + +- Background may be interfering +- Enable thresholding for cleaner detection +- Check if animations are affecting screen + +### Stage counter not visible + +- Some quests hide the counter +- Check if using a modified UI +- Verify game version compatibility + +### Turn count seems wrong + +- Turns reset on wave change +- Multi-turn waves count correctly +- Check command configuration + +## Server Differences + +Stage counter fonts may differ by server: + +| Server | Font Style | Notes | +| ------ | ----------------- | ---------------------- | +| JP | Japanese numerals | May use different font | +| NA/EN | English numerals | Standard detection | +| Others | Variable | Check compatibility | + +## Advanced Settings + +### New Stage Counter + +When enabled: + +- Uses threshold filtering +- Better background removal +- Recommended for most users + +### Legacy Mode + +When disabled: + +- Direct comparison method +- May work better on some devices +- Fallback option + +## Related Documentation + +- [Auto Battle](../auto-battle.md) - Overall battle automation +- [Skill Maker](../../battle-setup/skill-maker.md) - Configure wave skills diff --git a/docs/support-screen/.meta.yml b/docs/support-screen/.meta.yml new file mode 100644 index 0000000..d3cac22 --- /dev/null +++ b/docs/support-screen/.meta.yml @@ -0,0 +1,5 @@ +title: Support Screen +icon: material/account-supervisor +description: FGA Preview support screen guide. Learn how to configure and use the support selection features in FGA Preview for best experience. +search: + boost: 1.5 \ No newline at end of file diff --git a/docs/support-screen/class-picker.md b/docs/support-screen/class-picker.md new file mode 100644 index 0000000..b9eaace --- /dev/null +++ b/docs/support-screen/class-picker.md @@ -0,0 +1,254 @@ +--- +title: Support Class Selection +description: Configure FGA Preview to search specific class tabs on the support screen for faster and more targeted servant selection. +tags: + - support + - class + - selection + - configuration +--- + +# Support Class Selection + +Configure which servant class tab FGA searches when looking for support servants. Selecting a specific class reduces search time and targets your desired servant type. + +## Overview + +The support screen in FGO displays servants organized by class tabs. FGA can automatically navigate to a specific class tab before searching, making support selection faster and more targeted. + +## Key Features + +- **Class tab navigation**: Automatically select a specific class tab +- **Also Check All option**: Fallback to the All tab if no match is found +- **Mix/Event tab support**: Target event-specific servant lineups +- **Speed optimization**: Reduce search time by narrowing scope + +--- + +## Available Class Options + +| Class | Description | +| ------------- | --------------------------------------------------------------- | +| **None** | Don't navigate, search current tab | +| **All** | Navigate to the "All" tab | +| **Saber** | Navigate to Saber class tab | +| **Archer** | Navigate to Archer class tab | +| **Lancer** | Navigate to Lancer class tab | +| **Rider** | Navigate to Rider class tab | +| **Caster** | Navigate to Caster class tab | +| **Assassin** | Navigate to Assassin class tab | +| **Berserker** | Navigate to Berserker class tab | +| **Extra** | Navigate to Extra class tab (Ruler, Avenger, Moon Cancer, etc.) | +| **Mix** | Navigate to the Mix/Event tab | + +### Selecting a Class + +1. Open your Battle Config +2. Navigate to **Support Selection** → **Preferred Support** +3. Select your desired class from the **Support Class** dropdown + +--- + +## Also Check All Option + +When enabled, FGA will also search the "All" tab if no match is found in the selected class tab. + +### How Also Check All Works + +```text +┌─────────────────────────────┐ +│ Search Selected Class Tab │ +└─────────────┬───────────────┘ + │ + ▼ + ┌───────┴───────┐ + │ Match Found? │ + ▼ ▼ + ┌──────┐ ┌──────┐ + │ Yes │ │ No │ + └──┬───┘ └──┬───┘ + │ │ + ▼ ▼ +┌──────────┐ ┌──────────────┐ +│ Select │ │ Also Check │ +│ Support │ │ All enabled? │ +└──────────┘ └──────┬───────┘ + │ + ┌───────┴───────┐ + ▼ ▼ + ┌──────┐ ┌──────────┐ + │ Yes │ │ No │ + └──┬───┘ └────┬─────┘ + │ │ + ▼ ▼ + ┌───────────────┐ ┌────────────┐ + │ Switch to All │ │ Refresh │ + │ Tab & Search │ │ List │ + └───────────────┘ └────────────┘ +``` + +### When Also Check All is Available + +The "Also Check All" option is only available for certain class selections: + +| Class | Also Check All | +| ----------------------- | -------------- | +| **None** | Not available | +| **All** | Not available | +| **Mix** | Not available | +| **Saber through Extra** | Available | + +The option doesn't appear for None, All, or Mix because: + +- **None**: No class tab is selected +- **All**: Already searching all classes +- **Mix**: Event tab is separate from class structure + +--- + +## Class Selection Strategies + +### Single Class Targeting + +Best when you know exactly which class servant you need: + +```text +Support Class: Caster +Also Check All: Disabled +``` + +Use cases: + +- Farming with a specific Caster DPS +- Events requiring specific class servants +- Consistent farming setups + +### Class with All Fallback + +Provides flexibility while still prioritizing a specific class: + +```text +Support Class: Berserker +Also Check All: Enabled +``` + +Use cases: + +- Prefer Berserker supports but accept alternatives +- When friend list may have your servant in different slots +- Balancing speed with availability + +### No Class Filter + +Searches whatever tab is currently displayed: + +```text +Support Class: None +Also Check All: Not applicable +``` + +Use cases: + +- Very specific servant that could be in any class +- When you'll manually navigate before starting +- Simple setups without class preference + +### All Classes Search + +Comprehensive search across all servants: + +```text +Support Class: All +Also Check All: Not applicable +``` + +Use cases: + +- Looking for rare event CEs across all classes +- Support setup is more important than class +- Maximum flexibility needed + +### Event/Mix Tab + +Targets the special event support tab: + +```text +Support Class: Mix +Also Check All: Not applicable +``` + +Use cases: + +- Event farming requiring event supports +- Special campaign supports +- Event CE hunting + +--- + +## Tips for Best Results + +### Speed Optimization + +- Selecting a specific class is faster than searching "All" +- Use "Also Check All" only when needed +- Narrow your search to reduce scroll and refresh cycles + +### Event Farming + +- Check the Mix tab for event-specific support setups +- Event supports may appear in the Mix tab first +- Update class selection as events change + +### Consistent Setups + +- If you always use the same class, set it in your config +- Create multiple configs for different class needs +- Use descriptive config names (e.g., "Caster Farming") + +### Friend Coordination + +- Ask friends to put servants in expected class slots +- Coordinate event CE placement with class slots +- Check which classes your friends typically populate + +--- + +## Troubleshooting + +### Wrong class tab selected + +- Verify your Support Class setting in the config +- Check that the game is on the support selection screen +- The script navigates to your selected class after the screen loads + +### Also Check All not working + +- Only available for specific class selections +- Not available for None, All, or Mix +- Verify the option is actually enabled + +### Mix tab not appearing + +- Mix/Event tab may not exist during non-event periods +- Some servers may have different tab configurations +- Check the current FGO event schedule + +### Class selection taking too long + +- Class tab navigation adds a small delay +- This is normal and ensures reliable tab selection +- The delay is minimal (about 0.5 seconds) + +### Support in wrong tab + +- Friends may place servants in unexpected tabs +- Use "Also Check All" for more flexible matching +- Consider using "All" class if placement is inconsistent + +--- + +## Related Documentation + +- [Selection Modes](selection-modes.md) - Overview of selection modes +- [Support Refresh](refresh.md) - Refresh and scroll behavior +- [Preferred Servant Selection](preferred-servant.md) - Configure servant matching diff --git a/docs/support-screen/grand-servant.md b/docs/support-screen/grand-servant.md new file mode 100644 index 0000000..366240a --- /dev/null +++ b/docs/support-screen/grand-servant.md @@ -0,0 +1,278 @@ +--- +title: Grand Servant Selection +description: Configure FGA Preview for JP server Grand Servant support selection with multi-slot CEs, Bond CE requirements, and special level filtering. +tags: + - support + - grand servant + - jp server + - configuration +--- + +# Grand Servant Selection + +Configure FGA to identify and select Grand Servants on the Japanese (JP) server, including their unique multi-slot CE system, Bond CE requirements, and level-based filtering. + +## Overview + +Grand Servants are a JP server exclusive feature where players can showcase a single servant with enhanced support capabilities. These servants can equip up to 3 Craft Essences and display a special Grand Servant indicator. + +**Important**: Grand Servant features are only available on JP server. Other server versions do not support these options. + +## Key Features + +- **Grand Servant detection**: Identify Grand Servants by their special logo +- **Level-based filtering**: Target specific Grand Servant levels +- **Triple CE slot support**: Configure preferences for all 3 CE slots +- **Bond CE requirements**: Specify Bond CE type preferences +- **Automatic mode switching**: FGA adjusts matching for Grand vs normal supports + +--- + +## Grand Servant Detection + +FGA identifies Grand Servants by detecting the Grand Servant logo/icon on the support card. + +### Grand Servant Indicator + +The Grand CE icon appears on support cards when a servant is set up as a Grand Servant. FGA scans for this indicator to determine whether to use Grand Servant matching logic. + +### Automatic Detection + +Grand Servant mode activates automatically when ANY of these conditions is true: + +| Condition | Description | +| ------------------------------ | ---------------------------------------- | +| **Slot 3 CEs configured** | You have CEs set for the third slot | +| **Grand Servant level filter** | Grand Servant filter is not set to "Any" | +| **Bond CE preference** | Bond CE is not set to "Skip" | + +When Grand Servant mode is active, FGA uses adjusted screen regions optimized for the Grand Servant display format. + +--- + +## Grand Servant Level Filter + +Filter Grand Servants by their level. + +### Filter Options + +| Option | Behavior | +| ------------------- | ---------------------------------------------------- | +| **Any** | Accept any servant (Grand or normal) | +| **Level 100** | Only accept Grand Servants at exactly level 100 | +| **Above Level 100** | Only accept Grand Servants above level 100 (grailed) | + +### How Level Detection Works + +FGA searches for specific Grand Servant level indicators: + +- **Level 100**: Detects either the standard Grand Servant logo OR the "Above 100" indicator +- **Above Level 100**: Only detects the grailed Grand Servant indicator + +This ensures you can target servants that have been grailed beyond the normal level cap. + +--- + +## Grand Servant CE Configuration + +Grand Servants can equip up to 3 Craft Essences. Each slot has different configuration options. + +### Slot 1: Main CE + +The primary CE slot, functioning similar to normal support CE selection: + +| Setting | Description | +| ------------- | ----------------------------- | +| **CE Images** | Select preferred CEs to match | +| **MLB** | Only accept limit broken CEs | + +Configure through the standard CE selection in Preferred Support settings. + +### Slot 2: Bond CE + +The second slot is designed specifically for Bond CEs. + +| Option | Behavior | +| ---------- | ------------------------------ | +| **Skip** | Don't check the Bond CE slot | +| **Any** | Accept any Bond CE type | +| **Bond** | Only accept regular Bond CEs | +| **Charge** | Only accept NP Charge Bond CEs | + +**Bond CE Types Explained:** + +| Type | Description | Use Case | +| ---------------- | ---------------------- | ------------------- | +| **Regular Bond** | Standard Bond 10 CE | General stat boosts | +| **Charge Bond** | Bond CE with NP charge | Loop/farming builds | + +**Note**: FGA detects Bond CEs by their characteristic icon, not the full CE image. The similarity threshold for Bond CE detection is set to 60%. + +### Slot 3: Third CE + +The third CE slot for additional support: + +| Setting | Description | +| -------------- | ------------------------------------------- | +| **CE Images** | Select preferred CEs (separate from Slot 1) | +| **MLB Slot 3** | Only accept limit broken CEs in slot 3 | + +Slot 3 has its own MLB toggle independent of Slot 1. + +--- + +## How Grand Servant Matching Works + +### Detection Flow + +```text +┌─────────────────────────────┐ +│ Check for Grand CE Logo │ +│ in support card region │ +└─────────────┬───────────────┘ + │ + ▼ + ┌───────┴───────┐ + │ Grand Logo │ + │ Found? │ + ▼ ▼ + ┌──────┐ ┌──────┐ + │ Yes │ │ No │ + └──┬───┘ └──┬───┘ + │ │ + ▼ ▼ +┌──────────┐ ┌──────────────┐ +│ Use Grand│ │ Check if mode│ +│ Matching │ │ forces Grand │ +└──────────┘ └──────────────┘ +``` + +### Grand Matching Checks + +When Grand Servant mode is active: + +1. **Level Check**: Verify Grand Servant level meets requirements +2. **Slot 1 CE**: Match main CE and check MLB if enabled +3. **Slot 2 Bond CE**: Verify Bond CE type (unless Skip) +4. **Slot 3 CE**: Match third CE and check MLB if enabled +5. **Standard Checks**: Servant skills, ascension, NP level still apply + +### Blank CE Detection + +For Grand Servants, FGA checks for blank CEs differently: + +- Slot 2 uses a specific blank Bond CE image for detection +- Detection region is adjusted for Grand Servant layout + +**Note**: The blank Bond CE image is currently optimized for JP server only. + +--- + +## Configuration Examples + +### Maximum Grailed Grand Servant + +```text +Grand Servant: Above Level 100 +Servant: [Your preferred servant images] +Max Ascended: Enabled +Skills: 10/10/10 +Slot 1 CE: [Event CE], MLB: Enabled +Slot 2 Bond CE: Any +Slot 3 CE: [Support CE], MLB: Disabled +``` + +### Any Grand with Charge Bond + +```text +Grand Servant: Level 100 +Servant: [Your preferred servant images] +Slot 1 CE: [Event CE], MLB: Disabled +Slot 2 Bond CE: Charge +Slot 3 CE: Empty +``` + +### Non-Grand Compatible Setup + +```text +Grand Servant: Any +Servant: [Your preferred servant images] +Skills: X/10/X +CE: [Event CE], MLB: Enabled +``` + +--- + +## Tips for Best Results + +### Grand Servant Availability + +- Not all friends will have Grand Servants set up +- Grand Servant configuration takes extra effort for players +- Consider having fallback non-Grand requirements + +### Bond CE Considerations + +- Regular Bond CEs provide various stat bonuses +- Charge Bond CEs are rarer but valuable for farming +- "Any" Bond CE option increases match chances + +### Level Filter Usage + +- "Above Level 100" is very restrictive +- "Level 100" includes more potential matches +- "Any" provides maximum flexibility + +### Multi-CE Matching + +- Each slot must match for the support to be selected +- Empty CE lists for slots are skipped +- MLB requirements apply per-slot + +--- + +## Troubleshooting + +### Grand Servant options not appearing + +- Grand Servant features are JP server only +- Check your Battle Config server setting +- Ensure you're using a JP server profile + +### Grand Servant not being detected + +- The Grand CE logo must be visible on the support card +- Friend may not have set up a Grand Servant +- Try using "Any" to allow normal supports as fallback + +### Bond CE not matching + +- Bond CE detection uses icon matching (60% similarity) +- Try "Any" instead of specific Bond CE type +- The Bond CE icon must be visible in the expected region + +### Slot 3 CE not checking + +- Ensure you have CEs configured for Slot 3 +- Slot 3 is only checked for Grand Servants +- Verify the CE images are properly captured + +### Level detection failing + +- Grailed servants above 100 use a different indicator +- "Level 100" accepts both 100 and grailed indicators +- "Above Level 100" is more strict + +### Wrong slots being matched + +- Grand Servant CE slots have specific positions +- If matching seems off, verify you're targeting the right slot +- Recapture CE images using Support Image Maker + +--- + +## Related Documentation + +- [Preferred Servant Selection](preferred-servant.md) - Standard servant configuration +- [Preferred CE Selection](preferred-ce.md) - CE matching details +- [Support Selection Modes](selection-modes.md) - Overall selection configuration diff --git a/docs/support-screen/preferred-ce.md b/docs/support-screen/preferred-ce.md new file mode 100644 index 0000000..bf0762b --- /dev/null +++ b/docs/support-screen/preferred-ce.md @@ -0,0 +1,259 @@ +--- +title: Preferred CE Selection +description: Configure FGA Preview to find and select support servants with specific Craft Essences. Includes MLB requirements and Grand Servant multi-slot CE support. +tags: + - support + - craft essence + - ce + - selection + - configuration +--- + +# Preferred CE Selection + +Configure FGA to search for support servants equipped with specific Craft Essences (CEs), with options for Max Limit Break (MLB) requirements and Grand Servant multi-slot CE support. + +## Overview + +Preferred CE Selection allows you to specify which Craft Essences a support servant should have equipped. FGA scans the CE portion of each support entry, comparing against your configured CE images. + +## Key Features + +- **Image-based CE matching**: Select CEs by their image +- **MLB verification**: Only accept limit broken CEs showing the golden star +- **Blank CE detection**: Automatically reject supports with no CE equipped +- **Grand Servant support**: Configure up to 3 CE slots for JP server Grand Servants +- **Multiple CE options**: Add several CEs as acceptable choices + +--- + +## Normal Support CE Selection + +For standard supports (non-Grand Servants), each support has one CE slot. + +### Adding CE Images + +1. Use the **Support Image Maker** script to capture CE images +2. Open your Battle Config and navigate to **Preferred Support** +3. Tap **Add** in the CE section +4. Select one or more CE images +5. Tap **Save** to confirm + +### Max Limit Break (MLB) + +When enabled, FGA only selects supports where the CE displays the golden limit break star. + +| Setting | Behavior | +| ------------ | ------------------------------------ | +| **Disabled** | Accept any CE matching the image | +| **Enabled** | Only accept CEs showing the MLB star | + +The MLB star appears on the CE when it has been fully limit broken (5 copies merged). + +### Blank CE Handling + +When you have CE preferences configured: + +| CE List | Blank CE Behavior | +| ----------- | ------------------------------------- | +| **Empty** | Supports with blank CEs are rejected | +| **Has CEs** | Must match one of your configured CEs | + +If you don't configure any CEs, FGA still checks that the support has some CE equipped (not blank). + +--- + +## Grand Servant CE Selection (JP Server Only) + +Grand Servants on the Japanese server can equip up to 3 Craft Essences. FGA supports checking all three slots. + +### CE Slot 1 (Main CE) + +The primary CE slot, functioning similar to normal support CE selection: + +- Configure preferred CEs through the main CE selection +- Enable MLB requirement if needed +- Matches the first CE displayed on the Grand Servant + +### CE Slot 2 (Bond CE) + +The second slot is specifically designed for Bond CEs. Configure the Bond CE requirement: + +| Option | Behavior | +| ---------- | ------------------------------------------- | +| **Skip** | Don't check the second CE slot | +| **Any** | Accept any Bond CE (regular or charge type) | +| **Bond** | Only accept regular Bond CEs | +| **Charge** | Only accept NP Charge Bond CEs | + +**Bond CE Types:** + +| Type | Description | +| ------------------- | ------------------------------ | +| **Regular Bond CE** | Standard Bond 10 Craft Essence | +| **Charge Bond CE** | Bond CE with NP charge effect | + +When checking for Bond CEs: + +- FGA first verifies the slot is not blank +- Then checks for the specific Bond CE type icon + +### CE Slot 3 (Third CE) + +The third CE slot for Grand Servants: + +- Configure separately from Slot 1 CEs +- Has its own MLB toggle independent of Slot 1 +- Uses the same image matching as Slot 1 + +--- + +## How CE Matching Works + +### Normal Support Matching + +```text +┌─────────────────────────────┐ +│ Load CE Images │ +└─────────────┬───────────────┘ + │ + ▼ +┌─────────────────────────────┐ +│ For Each Support Entry: │ +│ ┌─────────────────────────┐ │ +│ │ No CEs configured? │ │ +│ │ → Check not blank │ │ +│ └───────────┬─────────────┘ │ +│ │ │ +│ ▼ │ +│ ┌─────────────────────────┐ │ +│ │ Search for CE image │ │ +│ │ in support region │ │ +│ └───────────┬─────────────┘ │ +│ │ │ +│ ▼ │ +│ ┌─────────────────────────┐ │ +│ │ Check MLB star │ │ +│ │ (if enabled) │ │ +│ └─────────────────────────┘ │ +└─────────────────────────────┘ +``` + +### Grand Servant Matching + +```text +┌─────────────────────────────┐ +│ Check Slot 1 (Main CE) │ +│ • Match configured CEs │ +│ • Check MLB if enabled │ +└─────────────┬───────────────┘ + │ + ▼ +┌─────────────────────────────┐ +│ Check Slot 2 (Bond CE) │ +│ • Skip, Any, Bond, or Charge│ +│ • Verify not blank │ +└─────────────┬───────────────┘ + │ + ▼ +┌─────────────────────────────┐ +│ Check Slot 3 (Third CE) │ +│ • Match configured CEs │ +│ • Check MLB if enabled │ +└─────────────────────────────┘ +``` + +### MLB Detection + +The limit break star is detected using image matching: + +- For normal CEs: Checks the standard MLB star position +- For Grand Servant triple-slot CEs: Checks adjusted positions for each slot +- Similarity threshold is configurable in support preferences + +--- + +## Configuring Multiple CEs + +You can add multiple CEs as acceptable options: + +| Configuration | Behavior | +| ---------------- | --------------------------------- | +| **Single CE** | Only matches that specific CE | +| **Multiple CEs** | Matches ANY of the configured CEs | + +This is useful for: + +- Event CEs with different artwork versions +- Accepting multiple bonus CEs during events +- Having fallback options for rarer CEs + +--- + +## Tips for Best Results + +### Event Farming + +- Add all event bonus CEs to increase match chances +- Consider disabling MLB early in events when few exist +- Update CE images when event CEs are released + +### MLB Requirements + +- MLB CEs may be rare among friends early in events +- Start with MLB disabled, enable after event progresses +- Some friends may have MLB but show different artwork + +### Image Capture Quality + +- Capture CEs using Support Image Maker +- Avoid capturing during animations +- Include enough of the CE image to be distinctive + +### Grand Servant CEs + +- Slot 2 uses icon matching, not full CE matching +- Bond CEs are identified by their characteristic icon +- Slot 3 requires separate CE images from Slot 1 + +--- + +## Troubleshooting + +### CE not being matched + +- **Verify image quality**: Recapture using Support Image Maker +- **Check MLB setting**: Disable if CE might not be limit broken +- **Multiple versions**: Some CEs have different artwork versions + +### MLB not detected + +- Ensure the MLB star is visible on the support screen +- Check similarity threshold in support preferences +- The star must be in the expected position + +### Grand Servant CE slots not checking + +- Grand Servant mode is JP server only +- Verify your Battle Config is set to JP server +- Check that Grand Servant mode is properly enabled + +### Blank CE keeps getting selected + +- This shouldn't happen if you have CEs configured +- Verify your CE list is not empty +- Check that the support is actually showing a CE + +### Bond CE type not matching + +- The Bond CE icon detection uses 60% similarity +- Some Bond CE variations may not match perfectly +- Try using "Any" instead of specific type + +--- + +## Related Documentation + +- [Grand Servant Selection](grand-servant.md) - Complete Grand Servant configuration +- [Preferred Servant Selection](preferred-servant.md) - Configure servant matching +- [Support Image Maker](../other-scripts/support-image-maker.md) - Create CE images diff --git a/docs/support-screen/preferred-friend.md b/docs/support-screen/preferred-friend.md new file mode 100644 index 0000000..822c449 --- /dev/null +++ b/docs/support-screen/preferred-friend.md @@ -0,0 +1,205 @@ +--- +title: Preferred Friend Selection +description: Configure FGA Preview to select support servants only from your friends list or specific preferred friends for better farming rewards. +tags: + - support + - friends + - selection + - configuration +--- + +# Preferred Friend Selection + +Configure FGA to filter support selection by friend status, or target specific friends by name for optimal farming rewards. + +## Overview + +Preferred Friend Selection allows you to restrict support selection to your friends list or prioritize specific friends. This is valuable because selecting friend supports provides bonus Friend Points compared to random players. + +## Key Features + +- **Friends Only mode**: Only select supports from your friends list +- **Preferred Friends**: Target specific friends by name +- **Guest and Follow support**: Automatically recognizes different friend statuses +- **Grand Servant compatible**: Works with JP server Grand Servant format + +--- + +## Friends Only Mode + +When enabled, FGA only selects support servants from players on your friends list. + +### Friend Status Types + +FGA recognizes three types of friend relationships: + +| Status | Icon | Description | +| ---------- | ----------- | ---------------------------- | +| **Friend** | Friend icon | Mutual friends | +| **Guest** | Guest icon | Random players (not friends) | +| **Follow** | Follow icon | Players you follow (one-way) | + +With Friends Only enabled: + +- **Friends** are accepted +- **Guests** are rejected +- **Follow** players are accepted (treated as friends) + +### Why Use Friends Only + +| Benefit | Description | +| ---------------------- | ------------------------------------------------- | +| **Friend Points** | Using friend supports gives bonus FP | +| **Reliable setups** | Friends often maintain consistent support lineups | +| **Event coordination** | Friends may set up event CEs you need | + +--- + +## Preferred Friends + +Beyond just filtering to friends, you can target specific friends by name. + +### Adding Friend Names + +1. Use the **Support Image Maker** to capture friend name images +2. Navigate to your Battle Config **Preferred Support** settings +3. Tap **Add** in the Friends section +4. Select one or more friend name images +5. Tap **Save** to confirm + +### How Friend Name Matching Works + +```text +┌─────────────────────────────┐ +│ For Each Support Entry: │ +│ ┌─────────────────────────┐ │ +│ │ Is Friends Only enabled?│ │ +│ │ → Check friend status │ │ +│ └───────────┬─────────────┘ │ +│ │ │ +│ ▼ │ +│ ┌─────────────────────────┐ │ +│ │ Preferred friends set? │ │ +│ │ → Search for name image │ │ +│ └───────────┬─────────────┘ │ +│ │ │ +│ ▼ │ +│ ┌─────────────────────────┐ │ +│ │ Match found in region │ │ +│ │ → Accept this support │ │ +│ └─────────────────────────┘ │ +└─────────────────────────────┘ +``` + +### Matching Priority + +When both Friends Only and Preferred Friends are configured: + +1. Support must be a friend (Friends Only check) +2. Support must match one of your preferred friend names +3. Support must still match servant/CE criteria + +If no preferred friends are specified but Friends Only is enabled, any friend matching servant/CE criteria will be selected. + +--- + +## Grand Servant Friend Matching + +For JP server Grand Servants, friend name matching uses a different screen region optimized for the Grand Servant display format. + +The friend name search area adjusts automatically: + +| Support Type | Search Region | +| ----------------- | ---------------------------------------- | +| **Normal** | Standard friend region below servant | +| **Grand Servant** | Adjusted region for Grand Servant layout | + +This ensures friend name matching works correctly regardless of support format. + +--- + +## Configuration Options + +### Friends Only Toggle + +| Setting | Behavior | +| ------------ | ---------------------------------------- | +| **Disabled** | Accept any support (friends and guests) | +| **Enabled** | Only accept friends and followed players | + +### Preferred Friends List + +| Configuration | Behavior | +| ------------- | ------------------------------------------- | +| **Empty** | Accept any friend (if Friends Only enabled) | +| **Has names** | Must match one of the specified friends | + +--- + +## Tips for Best Results + +### Capturing Friend Names + +- Use Support Image Maker for consistent captures +- Include the full friend name in the capture +- Avoid capturing when text is animating + +### Friend Name Accuracy + +- Friend names should be captured clearly +- Special characters in names may affect matching +- Update captures if friends change their names + +### Balancing Speed and Preference + +- Adding many preferred friends increases match chances +- Very specific friend targeting may slow down selection +- Consider using just Friends Only for faster matching + +### Managing Friend Lists + +- Coordinate with friends for event CE setups +- Remove inactive friends who may have outdated supports +- Add new friends with useful support configurations + +--- + +## Troubleshooting + +### No friends being found + +- **Check friend list**: Ensure you have friends with the required class/servant +- **Verify friend status**: Some "friends" may actually be follows +- **Refresh the list**: Friends may not be immediately visible + +### Preferred friend not selected + +- **Verify name capture**: Friend names must match exactly +- **Check other criteria**: Servant and CE must also match +- **Consider name changes**: Friend may have changed their name + +### Guest keeps getting selected + +- Friends Only may not be enabled +- Check your support preferences +- Verify the support icon shows friend status, not guest + +### Follow players not being accepted + +- Follow players should be accepted like friends +- If issues occur, check for the Follow icon +- The system treats Follow as equivalent to Friend + +### Grand Servant friend matching fails + +- Ensure you're on JP server +- Friend name region differs for Grand Servants +- Recapture friend name if needed + +--- + +## Related Documentation + +- [Support Selection Modes](selection-modes.md) - Choose the right selection mode +- [Preferred Servant Selection](preferred-servant.md) - Configure servant matching +- [Support Image Maker](../other-scripts/support-image-maker.md) - Create friend name images diff --git a/docs/support-screen/preferred-servant.md b/docs/support-screen/preferred-servant.md new file mode 100644 index 0000000..7c3674c --- /dev/null +++ b/docs/support-screen/preferred-servant.md @@ -0,0 +1,253 @@ +--- +title: Preferred Servant Selection +description: Configure FGA Preview to automatically find and select specific support servants with skill levels, ascension status, and Noble Phantasm requirements. +tags: + - support + - servant + - selection + - skills + - configuration +--- + +# Preferred Servant Selection + +Configure FGA to search for specific support servants based on image matching and additional filters like skill levels, ascension status, and Noble Phantasm level. + +## Overview + +Preferred Servant Selection allows you to specify exactly which servants FGA should look for on the support screen. The app scans each support entry, comparing it against your configured servant images and optional requirements. + +## Key Features + +- **Image-based matching**: Select servants by their portrait image +- **Ascension filtering**: Only match servants showing max ascension artwork +- **Skill requirements**: Require specific skills to be at level 10 +- **Append skill checking**: Verify append skill levels (JP supports 5, others support 3) +- **NP level requirements**: Set minimum Noble Phantasm level +- **Multiple servants**: Add several servants as acceptable options + +--- + +## Setting Up Servant Selection + +### Adding Servant Images + +Before FGA can find servants, you need to capture their images: + +1. Use the **Support Image Maker** script to capture servant portraits +2. Images are saved to your support images folder +3. Open your Battle Config and navigate to **Preferred Support** +4. Tap **Add** in the Servants section +5. Select one or more servant images +6. Tap **Save** to confirm + +### Image Requirements + +- Capture the servant's face/portrait area +- Update images after changing servant ascension artwork +- Use high-quality screenshots for better matching + +--- + +## Servant Filters + +### Max Ascended + +When enabled, FGA only selects servants displaying the golden ascension star. + +| Setting | Behavior | +| ------------ | ---------------------------------------------------- | +| **Disabled** | Accept any ascension level | +| **Enabled** | Only accept servants with max ascension star visible | + +This filter checks for the star indicator near the servant portrait, confirming they have reached final ascension artwork. + +### Max Skills + +Specify which skills must be at level 10: + +| Display | Meaning | +| ------- | --------------------------- | +| **10** | This skill must be level 10 | +| **X** | Skill level doesn't matter | + +Example configurations: + +| Configuration | Meaning | +| -------------- | ------------------------------------ | +| `10 / 10 / 10` | All three skills must be maxed | +| `10 / X / X` | Only first skill must be maxed | +| `X / 10 / X` | Only second skill must be maxed | +| `10 / X / 10` | First and third skills must be maxed | + +### Check Append Skills + +When enabled, FGA also verifies append skill levels after checking regular skills. + +**Append Skill Slots:** + +| Server | Available Slots | +| --------- | --------------- | +| **JP** | 5 append skills | +| **Other** | 3 append skills | + +The append skill check: + +1. Toggles the skill display to show append skills +2. Checks each specified slot for level 10 +3. Returns to regular skill display + +Configure which append skills must be maxed similar to regular skills. + +### Noble Phantasm Level + +Set a minimum NP level requirement: + +| NP Level | Meaning | +| -------- | ---------------------- | +| **1** | Any NP level (default) | +| **2** | NP2 or higher | +| **3** | NP3 or higher | +| **4** | NP4 or higher | +| **5** | NP5 only | + +FGA reads the NP level from the support card using text recognition. + +--- + +## How Servant Matching Works + +### Matching Process + +```text +┌─────────────────────────────┐ +│ Load Servant Images │ +└─────────────┬───────────────┘ + │ + ▼ +┌─────────────────────────────┐ +│ For Each Support Entry: │ +│ ┌─────────────────────────┐ │ +│ │ Search for servant face │ │ +│ └───────────┬─────────────┘ │ +│ │ │ +│ ▼ │ +│ ┌─────────────────────────┐ │ +│ │ Check ascension star │ │ +│ │ (if enabled) │ │ +│ └───────────┬─────────────┘ │ +│ │ │ +│ ▼ │ +│ ┌─────────────────────────┐ │ +│ │ Check skill levels │ │ +│ │ (if enabled) │ │ +│ └───────────┬─────────────┘ │ +│ │ │ +│ ▼ │ +│ ┌─────────────────────────┐ │ +│ │ Check NP level │ │ +│ │ (if enabled) │ │ +│ └─────────────────────────┘ │ +└─────────────────────────────┘ +``` + +### Image Processing + +FGA performs special processing when matching servant images: + +- **Friend Lock Cropping**: Automatically removes the left portion of the image where a friend lock icon might appear +- This prevents locked friend icons from interfering with matching + +### Filter Order + +Filters are applied in sequence. If any filter fails, the support is rejected: + +1. Servant image match +2. Grand Servant check (if configured) +3. Max ascension check +4. Regular skill check +5. NP level check +6. Append skill check (performed separately after initial match) + +--- + +## Multiple Servant Configuration + +You can add multiple servants as acceptable options: + +| Configuration | Behavior | +| --------------------- | -------------------------------------- | +| **Single servant** | Only matches that specific servant | +| **Multiple servants** | Matches ANY of the configured servants | + +When multiple servants are configured, FGA selects the first match found while scrolling through the support list. + +--- + +## Tips for Best Results + +### Image Quality Matters + +- Use Support Image Maker for consistent captures +- Recapture after ascension changes artwork +- Avoid capturing during animations or transitions + +### Balance Strictness and Speed + +- More filters = fewer matches = longer search time +- Start with fewer requirements and add more if needed +- Consider having backup servants with looser requirements + +### Skill Verification Accuracy + +- Skill level 10 detection uses image matching +- Similarity threshold is set to 68% by default +- If detection seems inaccurate, ensure good screen brightness + +### NP Level Detection + +- Uses text recognition (OCR) to read NP level +- Works best with clear, stable display +- May occasionally misread due to image quality + +--- + +## Troubleshooting + +### Servant not being found + +- **Verify image quality**: Recapture using Support Image Maker +- **Check ascension**: If Max Ascended is enabled, ensure servant shows the star +- **Relax requirements**: Temporarily disable skill/NP checks + +### Wrong servant selected + +- Your image may match similar servants +- Capture a more distinctive portion of the portrait +- Add additional filter requirements to narrow matches + +### Skills not detected correctly + +- Ensure screen brightness is adequate +- Check that skill icons are fully visible +- Verify the skill display is showing regular skills (not append) + +### Append skill check fails + +- Confirm your server supports the number of append skills configured +- JP server: 5 slots, Other servers: 3 slots +- Check that the servant has append skills unlocked + +### NP level always reads as 1 + +- Text recognition may fail with low image quality +- Try increasing screen brightness +- Ensure the NP level text is fully visible on the support card + +--- + +## Related Documentation + +- [Grand Servant Selection](grand-servant.md) - JP server Grand Servant features +- [Preferred CE Selection](preferred-ce.md) - Configure CE requirements +- [Support Image Maker](../other-scripts/support-image-maker.md) - Create support images diff --git a/docs/support-screen/refresh.md b/docs/support-screen/refresh.md new file mode 100644 index 0000000..fa44319 --- /dev/null +++ b/docs/support-screen/refresh.md @@ -0,0 +1,306 @@ +--- +title: Support List Refresh +description: Understand how FGA Preview scrolls and refreshes the support list when searching for preferred servants, including timeout handling and retry behavior. +tags: + - support + - refresh + - scroll + - configuration +--- + +# Support List Refresh + +Understand how FGA scrolls through and refreshes the support list when searching for preferred servants, including scroll limits, refresh timing, and automatic retry behavior. + +## Overview + +When FGA cannot find a matching support on the visible portion of the support list, it employs a systematic approach of scrolling down and refreshing the list. This guide explains the mechanics behind these behaviors. + +## Key Features + +- **Automatic scrolling**: Scrolls through the support list looking for matches +- **Smart refresh timing**: Waits for refresh button availability +- **Configurable limits**: Set maximum swipes and refresh attempts +- **Connection retry handling**: Automatic recovery from network issues +- **Early refresh detection**: Optimizes when no scrollbar is present + +--- + +## Support Selection Loop + +The support selection follows a structured loop: + +```text +┌─────────────────────────────────┐ +│ Wait for Support Screen to Load │ +└───────────────┬─────────────────┘ + │ + ▼ +┌─────────────────────────────────┐ +│ Check for No Supports Message │◄──────────────┐ +└───────────────┬─────────────────┘ │ + │ │ + ┌───────┴───────┐ │ + │ Supports │ │ + │ Present? │ │ + ▼ ▼ │ + ┌────────┐ ┌──────────┐ │ + │ Yes │ │ Refresh │─────────────────────┘ + └───┬────┘ └──────────┘ + │ + ▼ +┌─────────────────────────────────┐ +│ Run Selection Provider │ +└───────────────┬─────────────────┘ + │ + ┌───────┴───────────────┬────────────────┐ + ▼ ▼ ▼ + ┌────────┐ ┌─────────────┐ ┌───────────┐ + │ Done │ │ Scroll Down │ │ Refresh │ + └────────┘ └──────┬──────┘ └─────┬─────┘ + │ │ + ▼ │ + ┌──────────────────┐ │ + │ Max Swipes │ │ + │ Reached? │ │ + └────────┬─────────┘ │ + │ │ + ┌───────┴───────┐ │ + ▼ ▼ │ + ┌────────┐ ┌──────────┐ │ + │ No │ │ Yes │──────┘ + └───┬────┘ └──────────┘ + │ + └─────────────────────────────┘ +``` + +--- + +## Scrolling Behavior + +### Scroll Mechanism + +FGA scrolls down the support list by performing a swipe gesture: + +- Swipe starts from a position in the lower portion of the list +- Swipe ends at a position in the upper portion +- This smoothly scrolls the list down to reveal more supports + +### Swipes Per Update + +Configure the maximum number of scroll attempts before refreshing: + +| Setting | Description | +| ----------- | ----------------------------------- | +| **Default** | Typically 3-5 swipes | +| **Low** | Quick refresh cycles | +| **High** | Exhaustive scrolling before refresh | + +After reaching the maximum swipes, FGA refreshes the list and starts from the top. + +### Scrollbar Detection + +FGA monitors the scrollbar position to optimize behavior: + +| Scrollbar State | Behavior | +| ---------------- | ----------------------------------- | +| **At Top** | Continue scrolling down | +| **Moved** | Continue scrolling if not at bottom | +| **At Bottom** | Trigger refresh (list exhausted) | +| **No Scrollbar** | Early refresh (short list) | + +### Early Refresh + +When the support list is short (no scrollbar), FGA performs an "early refresh" instead of attempting to scroll. This saves time when the current list cannot possibly contain more matches. + +--- + +## Refresh Mechanism + +### Refresh Process + +1. **Check Availability**: Verify refresh button is available +2. **Wait if Needed**: Wait for refresh cooldown if button unavailable +3. **Click Refresh**: Tap the refresh button +4. **Confirm Dialog**: Click "Yes" on confirmation dialog +5. **Wait for Load**: Wait until new list is fully loaded +6. **Navigate to Class**: Return to configured class tab + +### Refresh Button Availability + +The game enforces a cooldown between refreshes. FGA handles this automatically: + +- Checks if refresh button is currently available +- If unavailable, waits up to 10 seconds +- Proceeds with refresh once button becomes available + +### Max Updates + +Configure the maximum number of refresh attempts: + +| Setting | Description | +| ----------- | ------------------------------ | +| **Default** | Typically 3-10 refreshes | +| **Low** | Quick timeout, faster fallback | +| **High** | More attempts to find match | + +After reaching the maximum refreshes without finding a match, FGA uses the fallback behavior. + +--- + +## Connection Handling + +FGA automatically handles connection issues during support selection: + +### Retry Behavior + +When a connection error is detected: + +1. FGA identifies the error state +2. Waits for retry dialog if applicable +3. Attempts automatic reconnection +4. Continues support selection after recovery + +### Dialog Handling + +FGA monitors for dialog states: + +- **Connection Error**: Triggers retry mechanism +- **Support Dialog Open**: Waits for dialog to close +- **Update Dialog**: Handles through connection retry + +--- + +## Also Check All Integration + +When "Also Check All" is enabled: + +```text +┌─────────────────────────────┐ +│ Search Class Tab Exhausted │ +│ (scrolled + refreshed) │ +└─────────────┬───────────────┘ + │ + ▼ + ┌───────────────┐ + │ Also Check │ + │ All Enabled? │ + └───────┬───────┘ + │ + ┌───────┴───────┐ + ▼ ▼ + ┌──────┐ ┌──────┐ + │ Yes │ │ No │ + └──┬───┘ └──┬───┘ + │ │ + ▼ ▼ +┌───────────┐ ┌──────────┐ +│ Switch to │ │ Fallback │ +│ All Tab │ │ Behavior │ +└─────┬─────┘ └──────────┘ + │ + ▼ +┌───────────────────┐ +│ Reset Swipe Count │ +│ Search All Tab │ +└───────────────────┘ +``` + +The "Also Check All" search: + +- Resets the swipe counter +- Switches to the All class tab +- Performs a full search of that tab +- Only happens once before fallback + +--- + +## Fallback Behavior + +When no match is found after all attempts: + +1. **Scroll to Top**: Returns list to the beginning +2. **Use Fallback Mode**: Based on support selection configuration +3. **Continue Script**: May select first available or exit + +Fallback is triggered when: + +- Maximum refreshes exceeded +- Both class tab and All tab (if enabled) exhausted +- No matching supports found anywhere + +--- + +## Configuration Tips + +### For Rare Supports + +Increase refresh limits when looking for uncommon supports: + +- Higher max swipes to check more supports per refresh +- Higher max updates for more refresh attempts +- Enable "Also Check All" for broader search + +### For Speed + +Minimize time spent on support selection: + +- Lower max swipes (refresh earlier) +- Lower max updates (accept fallback sooner) +- Use specific class tabs to reduce list size + +### For Reliability + +Balance thoroughness with time: + +- Moderate swipes (3-5 per refresh) +- Moderate updates (5-10 refreshes) +- Enable "Also Check All" as safety net + +--- + +## Troubleshooting + +### Refresh taking too long + +- Refresh button may be on cooldown +- FGA waits up to 10 seconds for availability +- This is normal after recent refreshes + +### List not loading after refresh + +- Connection issues may be occurring +- FGA handles retries automatically +- Check your network connection + +### Scrolling past matches + +- Scroll speed may be too fast +- Swipe timing includes delay for stability +- Matches are checked between each swipe + +### Refresh loop without progress + +- No matching supports exist in friend list +- Requirements may be too strict +- Check configuration and relax constraints + +### Class tab not switching after refresh + +- Class selection happens after list loads +- Small delay is normal (0.5 seconds) +- Verify class setting in configuration + +### "Also Check All" not triggering + +- Only activates after class tab is exhausted +- Must scroll and refresh class tab first +- Check that option is enabled for your class + +--- + +## Related Documentation + +- [Selection Modes](selection-modes.md) - Overview of selection behavior +- [Class Selection](class-picker.md) - Class tab configuration +- [Preferred Servant Selection](preferred-servant.md) - Servant matching criteria diff --git a/docs/support-screen/selection-modes.md b/docs/support-screen/selection-modes.md new file mode 100644 index 0000000..8377a9b --- /dev/null +++ b/docs/support-screen/selection-modes.md @@ -0,0 +1,207 @@ +--- +title: Support Selection Modes +description: Learn about the three support selection modes in FGA Preview - First, Manual, and Preferred. Choose the right mode for your farming needs. +tags: + - support + - selection + - configuration +--- + +# Support Selection Modes + +FGA Preview offers three different modes for selecting support servants during battle automation. Each mode serves different use cases depending on your farming needs. + +## Overview + +When FGA reaches the support selection screen, it needs to decide which support servant to pick. The selection mode determines how this decision is made - from fully automatic to fully manual control. + +| Mode | Description | Best For | +| ------------- | ------------------------------------------------- | ----------------------------------------- | +| **First** | Automatically selects the first available support | Speed farming, no specific support needed | +| **Manual** | Pauses automation for you to select manually | Precise control, testing setups | +| **Preferred** | Searches for specific servants, CEs, or friends | Optimized farming with specific supports | + +## First Mode + +First mode selects the first visible support servant without any filtering. + +### How First Mode Works + +1. FGA waits for the support list to load +2. Clicks on the first support entry +3. Continues with battle if selection succeeds +4. Refreshes the list if the selection fails (friend has no servant set) + +### When to Use First Mode + +- Farming quests where any support works +- Event bonus supports where you want maximum speed +- Testing automation setups quickly +- When you don't care about specific support skills or CEs + +### Limitations + +- No control over which servant is selected +- Cannot filter by friend status +- Cannot check for specific skills or Noble Phantasm levels + +--- + +## Manual Mode + +Manual mode pauses the automation script when it reaches the support selection screen. + +### How Manual Mode Works + +1. FGA detects the support selection screen +2. Script pauses immediately +3. You manually select your desired support +4. Script resumes after you make your selection + +### When to Use Manual Mode + +- When you need a very specific support for challenging content +- Testing different support configurations +- Quests where automation decisions need human oversight +- Situations where preferred mode cannot match your needs + +### Important Behavior + +Manual mode stops the script entirely at the support screen. You must: + +- Select a support yourself +- The script will not continue automatically +- You may need to restart the script after selection + +--- + +## Preferred Mode + +Preferred mode searches for specific support servants, Craft Essences, and friends based on your configured criteria. + +### How Preferred Mode Works + +1. FGA loads your preferred servant, CE, and friend settings +2. Scans each visible support entry +3. Checks if each entry matches ALL your criteria +4. Selects the first matching support +5. Scrolls down if no match is found +6. Refreshes the list after exhausting scroll options + +### Configuring Preferred Mode + +Preferred mode requires setup through the Battle Config: + +1. Open your **Battle Config** +2. Navigate to **Support Selection** +3. Select **Preferred** mode +4. Tap **Preferred Support** to configure + +See the detailed guides for each component: + +- [Preferred Servant Selection](preferred-servant.md) - Configure servant matching +- [Preferred CE Selection](preferred-ce.md) - Configure Craft Essence matching +- [Preferred Friend Selection](preferred-friend.md) - Configure friend filtering +- [Grand Servant Mode](grand-servant.md) - JP server exclusive features + +### Matching Logic + +For a support to be selected, it must satisfy ALL enabled criteria: + +| Criteria | Condition | +| -------------- | --------------------------------------------------- | +| Servant | Matches any configured servant image | +| Ascension | Shows max ascension star (if enabled) | +| Skills | Required skills are at level 10 (if enabled) | +| Append Skills | Required append skills are at level 10 (if enabled) | +| Noble Phantasm | NP level meets minimum (if enabled) | +| Craft Essence | Matches any configured CE image | +| MLB Status | CE shows limit break star (if enabled) | +| Friend Status | Is a friend (if Friends Only enabled) | +| Friend Name | Matches preferred friend (if configured) | + +### Search Behavior + +```text +┌───────────────────────┐ +│ Check Class Tab │ +└───────────┬───────────┘ + │ + ▼ +┌───────────────────────┐ +│ Scan Visible Supports │◄───────┐ +└───────────┬───────────┘ │ + │ │ + ┌───┴───┐ │ + │ Match │ │ + │ Found?│ │ + ▼ ▼ │ + ┌────────┐ ┌────────┐ │ + │ Select │ │ Scroll │────────┘ + │ Done │ │ Down │ + └────────┘ └────┬───┘ + │ + ┌─────┴─────┐ + │ Bottom of │ + │ List? │ + ▼ ▼ + ┌────────┐ ┌────────┐ + │ Check │ │Refresh │ + │ All │ │ List │ + └────────┘ └────────┘ +``` + +### Fallback Behavior + +When no match is found after scrolling: + +1. **Also Check All** (if enabled): Switches to the "All" class tab +2. **Refresh**: Updates the support list +3. **Repeat**: Continues searching until max refresh limit + +--- + +## Choosing the Right Mode + +| Scenario | Recommended Mode | +| ------------------------------------------ | ------------------------ | +| Daily farming with any servant | First | +| Event farming needing specific CEs | Preferred | +| Challenging quest needing specific support | Manual or Preferred | +| Speed testing battle configs | First | +| Farming with friend points in mind | Preferred (Friends Only) | + +## Tips for Best Results + +- **Start with Preferred**: Configure your ideal support first +- **Have fallbacks ready**: Add multiple acceptable servants/CEs +- **Use class filters**: Reduce search time by selecting specific class tabs +- **Enable Also Check All**: Provides backup if class tab has no matches +- **Adjust refresh limits**: Increase if your requirements are strict + +## Troubleshooting + +### Script keeps refreshing without selecting + +- Your criteria may be too strict +- Try disabling some optional checks (MLB, Max Skills, NP Level) +- Ensure your support images are correctly captured + +### First mode selects empty support + +- Some friends may not have set a support +- This is rare but can happen +- Script will automatically retry + +### Manual mode won't continue + +- This is expected behavior +- Manual mode requires you to complete the selection +- Restart the script if needed + +--- + +## Related Documentation + +- [Support Class Selection](class-picker.md) - Configure class tab filtering +- [Support List Refresh](refresh.md) - Understand refresh mechanics From 98c65837f1d047af9040439d8d0d7ac7a00ddbca Mon Sep 17 00:00:00 2001 From: Arthur <16458204+ArthurKun21@users.noreply.github.com> Date: Sun, 7 Dec 2025 22:06:06 +0800 Subject: [PATCH 8/8] docs: update documentation for various scripts with improved metadata and descriptions --- docs/other-scripts/friend-point-gacha.md | 11 +++ docs/other-scripts/gift-box.md | 11 +++ docs/other-scripts/lottery.md | 11 +++ docs/other-scripts/play-button-detection.md | 91 ++++++++++++++++++++- docs/other-scripts/support-image-maker.md | 12 ++- 5 files changed, 132 insertions(+), 4 deletions(-) diff --git a/docs/other-scripts/friend-point-gacha.md b/docs/other-scripts/friend-point-gacha.md index 0b6a28c..fb3e39e 100644 --- a/docs/other-scripts/friend-point-gacha.md +++ b/docs/other-scripts/friend-point-gacha.md @@ -1,3 +1,14 @@ +--- +title: Friend Point Gacha +description: Automatically perform Friend Point summons in Fate/Grand Order using FGA Preview. Continuous FP gacha with inventory management and CE enhancement redirect. +tags: + - scripts + - gacha + - friend points + - automation + - summons +--- + # Friend Point Gacha Automatically performs Friend Point (FP) summons in the Friend Point gacha screen. diff --git a/docs/other-scripts/gift-box.md b/docs/other-scripts/gift-box.md index 0d385eb..df9bad8 100644 --- a/docs/other-scripts/gift-box.md +++ b/docs/other-scripts/gift-box.md @@ -1,3 +1,14 @@ +--- +title: Auto Gift Box +description: Automatically collect embers and items from the FGO present box using FGA Preview. Intelligent filtering with OCR for gold and silver embers. +tags: + - scripts + - gift box + - present box + - embers + - automation +--- + # Auto Gift Box (Present Box) Automatically collects embers from the gift box (present box) with intelligent filtering. diff --git a/docs/other-scripts/lottery.md b/docs/other-scripts/lottery.md index 76e21ab..c69d86c 100644 --- a/docs/other-scripts/lottery.md +++ b/docs/other-scripts/lottery.md @@ -1,3 +1,14 @@ +--- +title: Auto Lottery +description: Automatically spin event lottery boxes in Fate/Grand Order using FGA Preview. Handle present box overflow and collect rewards efficiently during FGO events. +tags: + - scripts + - lottery + - events + - automation + - farming +--- + # Auto Lottery Automatically spins lottery boxes during event lotteries to collect rewards efficiently. diff --git a/docs/other-scripts/play-button-detection.md b/docs/other-scripts/play-button-detection.md index c8dd660..8a6d186 100644 --- a/docs/other-scripts/play-button-detection.md +++ b/docs/other-scripts/play-button-detection.md @@ -1,11 +1,96 @@ +--- +title: Play Button Detection +description: FGA Preview play button detection and placement tracking. Ensure optimal play button position for reliable image matching during automation. +tags: + - scripts + - play button + - detection + - troubleshooting + - fgo automation + - setup +--- + # Play Button Detection -This script tracks where the play button currently is. +## Overview + +FGA Preview uses a floating play button to start and control automation scripts. The position of this play button on your screen matters because it can accidentally cover important areas of the game that FGA needs to see for accurate image matching. + +The **Play Button Detection** feature automatically checks if your play button is in a safe location when you start any script. If the button is in a problematic position, FGA will warn you before proceeding. + +## Why Play Button Position Matters + +FGA works by taking screenshots of your game and matching specific images to determine what's happening on screen. If the play button covers any of these important regions, the script may: + +- Fail to detect buttons or menus correctly +- Miss important game elements during automation +- Behave unexpectedly or stop working + +**The recommended position is the bottom-left corner of the screen**, where it won't interfere with most game interfaces. ![Play Button Placement](../assets/other-scripts/play-button-placement.png) -Once the user clicks the play button and it is not in the optimal position (`bottom-left`), a warning is displayed automatically. +## Key Features + +### Automatic Position Check -The user can choose to ignore the warning, but doing so may cause unexpected behavior, such as the play button covering parts of the screen required for image matching. +FGA automatically verifies the play button position every time you start a script. The check happens before the script begins running, so you can correct any issues immediately. + +### Warning System + +When the play button is not in the optimal position, FGA displays a warning dialog: ![Play Button Error](../assets/other-scripts/play-button-error.png) + +From this dialog, you can: + +- **Move the play button** to the bottom-left corner and try again +- **Ignore the warning** if you understand the risks + +### Ignore Future Warnings + +If you prefer to keep the play button in a non-standard location, you can enable the **"Ignore further warning about play button's location"** option. This setting tells FGA to skip the position check for all future script runs. + +You can also enable this setting permanently in **Settings > Advanced > Ignore warning about play button's location**. + +## How to Move the Play Button + +1. **Hold** the FGA play button (the floating circle on your screen) +2. **Drag** it to the bottom-left corner of your screen +3. **Release** to place it in the new position +4. Start your script again + +## Tips for Best Results + +1. **Place the button in the bottom-left corner** for maximum compatibility with all FGA features +2. **Keep the button near the screen edge** so it doesn't overlap with game menus +3. **Test after moving** to ensure FGA can still detect game elements correctly +4. **Avoid the center and right side** of the screen, as these areas contain important game information + +## Troubleshooting + +### FGA keeps warning me about the play button position + +**Solution**: Move the play button to the bottom-left corner of your screen. This is the safest position that works with all features. + +### I moved the button but FGA still shows the warning + +**Possible causes**: + +- The button may not be far enough into the bottom-left region +- Try moving it closer to the corner + +**Check points**: + +- The button should be in the **left half** of the screen (horizontally) +- The button should be in the **lower 3/8** of the screen (vertically) + +### Scripts work fine even though the button isn't in the bottom-left + +Some scripts may work regardless of button position, but others (especially those that interact with areas your button covers) may fail. For consistent results, keeping the button in the recommended position is best practice. + +### I enabled "Ignore warning" but now want to see warnings again + +1. Go to **Settings > Advanced** +2. Find **"Ignore warning about play button's location"** +3. Toggle it **off** to re-enable position warnings diff --git a/docs/other-scripts/support-image-maker.md b/docs/other-scripts/support-image-maker.md index 6a80ecb..9383312 100644 --- a/docs/other-scripts/support-image-maker.md +++ b/docs/other-scripts/support-image-maker.md @@ -1,3 +1,14 @@ +--- +title: Support Image Maker +description: Extract support servant and CE images in FGA Preview. Capture images from the support selection screen for automated support preferences. +tags: + - scripts + - support + - images + - servants + - CE +--- + # Support Image Maker Automatically extracts support servant, CE, and friend images from the support selection screen for use in support preferences. @@ -151,4 +162,3 @@ After creating support images, use them in: - **Battle Script** → Support Selection settings - Configure preferred servants, CEs, and friends for automated farming -