feat: add researched fixed companion buildsUnverified
5d81b8a parent: 47d1acb modified
README.md +39 -1 | @@ -26,7 +26,14 @@ your browser. | ||
| 26 | 26 | tier-4 classes add their weapon types and compatible regular Arts. |
| 27 | 27 | - **Companion-specific kits** — all 22 Definitive Edition companions, including |
| 28 | 28 | Mia, use their own weapons, Arts, Skills, ranks and slot limits rather than a |
| 29 | - generic Cross-class profile. | |
| 29 | + generic Cross-class profile. Each runs one fixed, researched build | |
| 30 | + (`src/data/companionBuilds.ts`): at most two TP-consuming Arts — Cross keeps | |
| 31 | + its own three-Art budget — deterministic personal-rank substitutes, and | |
| 32 | + character-specific, sourced weapon/armor advice. A companion's loadout never | |
| 33 | + changes with Cross's class, weapons, teammates, team variant or combat mode. | |
| 34 | +- **Equipped-only companion scoring** — team scoring reads each companion's | |
| 35 | + equipped Arts and Skills, and Skell aptitude counts equipped pilot Skills | |
| 36 | + only; Skell mode never silently rewrites a companion's ground kit. | |
| 30 | 37 | - **Deterministic AUTO composition** — manual picks remain in their exact slots. |
| 31 | 38 | AUTO slots enumerate level-eligible, non-duplicate companions and optimize |
| 32 | 39 | tank/support/damage specialist coverage before a tie-break informed by the |
| @@ -56,6 +63,37 @@ The tactical preference order lives in `src/data/builds.ts`. Factual unlock | ||
| 56 | 63 | tables live separately in `src/data/progression.ts` and |
| 57 | 64 | `src/data/companions.ts`; preference data cannot grant availability. |
| 58 | 65 | |
| 66 | +Companion builds are **fixed and curated, not contextual**. One canonical | |
| 67 | +Arts/Skills loadout per non-Cross character is kept in | |
| 68 | +`src/data/companionBuilds.ts`; unavailable abilities fall back to explicit, | |
| 69 | +ordered personal-rank substitutes, never a dynamic strategy re-ranking. Every | |
| 70 | +companion kit carries at most two TP-consuming Arts, strictly, including | |
| 71 | +substitutes — Cross's existing three-Art TP policy is unchanged. Unfilled | |
| 72 | +slots are legitimate: Irina deliberately equips three of her four Skill | |
| 73 | +slots because her remaining personal Skills depend on Sleep or Control that | |
| 74 | +the curated support bar never provides, and an inert fourth Skill is worse | |
| 75 | +than an empty slot. Character-specific | |
| 76 | +weapon and armor advice names verified manufacturer offerings, weight-category | |
| 77 | +trade-offs and availability gates; it is matchup guidance, not a universal | |
| 78 | +best-in-slot claim. | |
| 79 | + | |
| 80 | +These curated builds are sourced recommendations, not a universal-optimum or | |
| 81 | +community-consensus claim. Research preferred Definitive Edition evidence and | |
| 82 | +validated original sources (Xeno Series Wiki game data, Game8, Nintendo Life, | |
| 83 | +Reddit and GameFAQs discussions) against each character's actual weapon pair, | |
| 84 | +unlock ranks and TP data, counting only independent recurrence — lists that | |
| 85 | +share one authorship count as one cluster, not consensus. Verified guide | |
| 86 | +errors were rejected rather than absorbed: weapon-incompatible | |
| 87 | +recommendations, missing TP markers and invalid Art names were dropped in | |
| 88 | +favor of game data. Where evidence stays sparse — most non-flagship | |
| 89 | +companions have no independently recurring full build — the final bar is an | |
| 90 | +explicitly editorial choice. Per-character evidence, decisions and gaps are | |
| 91 | +recorded in four research matrices: | |
| 92 | +[core](research/companion-builds-core.md), | |
| 93 | +[veterans](research/companion-builds-veterans.md), | |
| 94 | +[specialists](research/companion-builds-specialists.md), | |
| 95 | +[remaining](research/companion-builds-remaining.md). | |
| 96 | + | |
| 59 | 97 | ## Run locally |
| 60 | 98 | |
| 61 | 99 | Requirements: Node.js 20.9 or newer. |
| @@ -26,7 +26,14 @@ your browser. | |||
| 26 | tier-4 classes add their weapon types and compatible regular Arts. | 26 | tier-4 classes add their weapon types and compatible regular Arts. |
| 27 | - **Companion-specific kits** — all 22 Definitive Edition companions, including | 27 | - **Companion-specific kits** — all 22 Definitive Edition companions, including |
| 28 | Mia, use their own weapons, Arts, Skills, ranks and slot limits rather than a | 28 | Mia, use their own weapons, Arts, Skills, ranks and slot limits rather than a |
| 29 | - generic Cross-class profile. | 29 | + generic Cross-class profile. Each runs one fixed, researched build |
| 30 | + (`src/data/companionBuilds.ts`): at most two TP-consuming Arts — Cross keeps | ||
| 31 | + its own three-Art budget — deterministic personal-rank substitutes, and | ||
| 32 | + character-specific, sourced weapon/armor advice. A companion's loadout never | ||
| 33 | + changes with Cross's class, weapons, teammates, team variant or combat mode. | ||
| 34 | +- **Equipped-only companion scoring** — team scoring reads each companion's | ||
| 35 | + equipped Arts and Skills, and Skell aptitude counts equipped pilot Skills | ||
| 36 | + only; Skell mode never silently rewrites a companion's ground kit. | ||
| 30 | - **Deterministic AUTO composition** — manual picks remain in their exact slots. | 37 | - **Deterministic AUTO composition** — manual picks remain in their exact slots. |
| 31 | AUTO slots enumerate level-eligible, non-duplicate companions and optimize | 38 | AUTO slots enumerate level-eligible, non-duplicate companions and optimize |
| 32 | tank/support/damage specialist coverage before a tie-break informed by the | 39 | tank/support/damage specialist coverage before a tie-break informed by the |
| @@ -56,6 +63,37 @@ The tactical preference order lives in `src/data/builds.ts`. Factual unlock | |||
| 56 | tables live separately in `src/data/progression.ts` and | 63 | tables live separately in `src/data/progression.ts` and |
| 57 | `src/data/companions.ts`; preference data cannot grant availability. | 64 | `src/data/companions.ts`; preference data cannot grant availability. |
| 58 | 65 | ||
| 66 | +Companion builds are **fixed and curated, not contextual**. One canonical | ||
| 67 | +Arts/Skills loadout per non-Cross character is kept in | ||
| 68 | +`src/data/companionBuilds.ts`; unavailable abilities fall back to explicit, | ||
| 69 | +ordered personal-rank substitutes, never a dynamic strategy re-ranking. Every | ||
| 70 | +companion kit carries at most two TP-consuming Arts, strictly, including | ||
| 71 | +substitutes — Cross's existing three-Art TP policy is unchanged. Unfilled | ||
| 72 | +slots are legitimate: Irina deliberately equips three of her four Skill | ||
| 73 | +slots because her remaining personal Skills depend on Sleep or Control that | ||
| 74 | +the curated support bar never provides, and an inert fourth Skill is worse | ||
| 75 | +than an empty slot. Character-specific | ||
| 76 | +weapon and armor advice names verified manufacturer offerings, weight-category | ||
| 77 | +trade-offs and availability gates; it is matchup guidance, not a universal | ||
| 78 | +best-in-slot claim. | ||
| 79 | + | ||
| 80 | +These curated builds are sourced recommendations, not a universal-optimum or | ||
| 81 | +community-consensus claim. Research preferred Definitive Edition evidence and | ||
| 82 | +validated original sources (Xeno Series Wiki game data, Game8, Nintendo Life, | ||
| 83 | +Reddit and GameFAQs discussions) against each character's actual weapon pair, | ||
| 84 | +unlock ranks and TP data, counting only independent recurrence — lists that | ||
| 85 | +share one authorship count as one cluster, not consensus. Verified guide | ||
| 86 | +errors were rejected rather than absorbed: weapon-incompatible | ||
| 87 | +recommendations, missing TP markers and invalid Art names were dropped in | ||
| 88 | +favor of game data. Where evidence stays sparse — most non-flagship | ||
| 89 | +companions have no independently recurring full build — the final bar is an | ||
| 90 | +explicitly editorial choice. Per-character evidence, decisions and gaps are | ||
| 91 | +recorded in four research matrices: | ||
| 92 | +[core](research/companion-builds-core.md), | ||
| 93 | +[veterans](research/companion-builds-veterans.md), | ||
| 94 | +[specialists](research/companion-builds-specialists.md), | ||
| 95 | +[remaining](research/companion-builds-remaining.md). | ||
| 96 | + | ||
| 59 | ## Run locally | 97 | ## Run locally |
| 60 | 98 | ||
| 61 | Requirements: Node.js 20.9 or newer. | 99 | Requirements: Node.js 20.9 or newer. |
modified
app/globals.css +4 -0 | @@ -73,6 +73,10 @@ select:focus { border-color:var(--cyan);box-shadow:0 0 0 2px rgba(150,239,240,.0 | ||
| 73 | 73 | .skell-gear-list{list-style:none;margin:0;padding:0;display:grid;gap:6px}.skell-gear-list li{display:grid;gap:2px;border-left:2px solid rgba(150,239,240,.18);padding:4px 0 4px 10px}.skell-gear-list b{font-size:13px;color:#dbeae7;font-weight:500}.skell-gear-list small{font-size:11px;color:#5d8487;letter-spacing:.08em;text-transform:uppercase}.skell-gear-acquisition{font-size:11px;color:#537477;letter-spacing:.02em;line-height:1.35;text-transform:none} |
| 74 | 74 | .lvl-badge { display:inline-block;border:1px solid rgba(150,239,240,.35);color:var(--cyan);font-size:10px;font-style:normal;letter-spacing:.05em;padding:2px 5px;text-decoration:none;line-height:1.35 } |
| 75 | 75 | .lvl-badge:hover,.lvl-badge:focus-visible{border-color:var(--cyan);background:rgba(150,239,240,.08)} |
| 76 | +.equip-facts{display:grid;gap:0;margin:0}.equip-facts>div{border-top:1px solid rgba(150,239,240,.09);padding:9px 0}.equip-facts dt{font-size:11px;letter-spacing:.12em;color:#5f8183;text-transform:uppercase}.equip-facts dd{margin:4px 0 0;color:#9eb5b4;font-size:12px;line-height:1.5} | |
| 77 | +.curated-rationale{margin:0;color:#8fa9a7;font-size:12px;line-height:1.55} | |
| 78 | +.substitute-list{margin:0;padding-left:18px;color:#789698;font-size:12px;line-height:1.55;display:grid;gap:4px} | |
| 79 | +.source-list{list-style:none;margin:0;padding:0;display:grid;gap:6px}.source-list li{display:flex;align-items:baseline;gap:8px}.source-list a{color:var(--cyan);font-size:12px;text-decoration:none;border-bottom:1px solid rgba(150,239,240,.3)}.source-list a:hover,.source-list a:focus-visible{border-bottom-color:var(--cyan)}.source-list small{color:#4e7477;font-size:10px;letter-spacing:.08em} | |
| 76 | 80 | .method-note{display:grid;grid-template-columns:40px 1fr;gap:15px;margin-top:18px;border:1px solid var(--line);padding:20px;background:rgba(7,26,31,.7)}.method-note>span{width:34px;height:34px;display:grid;place-items:center;border:1px solid var(--orange);color:var(--orange)}.method-note h3{font-size:16px;margin:2px 0 7px}.method-note p{font-size:14px;line-height:1.65;color:#789698;margin:0;max-width:1200px} |
| 77 | 81 | .contextual-controls .combat-mode-field{grid-column:1/-1;display:grid;grid-template-columns:auto minmax(150px,1fr);gap:12px}.contextual-controls .combat-mode-field select{padding-top:8px;padding-bottom:8px}.contextual-controls .special-unlock-field{grid-column:1/-1}.recommendation-tabs{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-bottom:12px}.recommendation-tabs button{display:grid;gap:5px;text-align:left;padding:14px 16px;border:1px solid var(--line);background:rgba(8,29,34,.58);color:#718f91;cursor:pointer}.recommendation-tabs button span{font-size:11px;letter-spacing:.15em;text-transform:uppercase}.recommendation-tabs button b{font-size:14px;color:#a8bfbd;font-weight:500}.recommendation-tabs button small{font-size:11px;color:#55787c}.recommendation-tabs button:hover{border-color:rgba(150,239,240,.45)}.recommendation-tabs button.active{border-color:var(--cyan);background:linear-gradient(120deg,rgba(150,239,240,.11),rgba(110,243,197,.04));box-shadow:inset 3px 0 var(--cyan)}.recommendation-tabs button.active span,.recommendation-tabs button.active small{color:var(--cyan)}.recommendation-tabs button.active b{color:#e5f3ef}.recommendation-context{display:grid;grid-template-columns:1.4fr auto 1fr;gap:18px;align-items:start;border:1px solid var(--line);border-top:0;background:rgba(4,18,22,.58);padding:15px 18px;margin:-12px 0 12px}.recommendation-context small,.infeasible-panel small{display:block;font-size:11px;letter-spacing:.15em;text-transform:uppercase;color:#63888a;margin-bottom:7px}.recommendation-context ul,.infeasible-panel ul{margin:0;padding-left:18px;color:#91aaa8;font-size:13px;line-height:1.5}.score-grid{display:flex;gap:7px;margin:0}.score-grid div{min-width:52px;padding:7px;border:1px solid rgba(150,239,240,.12);text-align:center}.score-grid dt{font-size:9px;color:#55787c;letter-spacing:.1em}.score-grid dd{margin:3px 0 0;color:var(--mint);font-size:13px}.recommendation-evidence{display:flex;flex-wrap:wrap;gap:6px}.recommendation-evidence small{width:100%}.recommendation-evidence a,.skell-evidence a{font-size:11px;color:#80a9aa;text-decoration:none;border:1px solid rgba(150,239,240,.15);padding:4px 6px}.recommendation-evidence a:hover,.skell-evidence a:hover{color:var(--cyan);border-color:var(--cyan)}.infeasible-panel{display:grid;grid-template-columns:1fr 1fr;gap:20px;border:1px solid rgba(255,113,79,.3);background:rgba(255,113,79,.05);padding:22px}.arts-block li.special-art{border-color:rgba(255,113,79,.3);background:rgba(255,113,79,.045)}.special-art-badge{display:inline-block;margin-left:7px;padding:2px 4px;border:1px solid rgba(255,113,79,.35);color:#ff9479;font-size:8px;font-style:normal;letter-spacing:.08em;text-transform:uppercase}.art-detail .art-fallback{display:grid;gap:2px;margin:7px 0 0;padding:6px 8px;border-left:2px solid var(--mint);background:rgba(110,243,197,.04)}.art-detail .art-fallback strong{font-size:10px;color:#98c8b8}.art-detail .art-fallback span{font-size:10px;color:#5f8180}.skell-evidence{display:flex;flex-wrap:wrap;gap:5px;margin-top:12px} |
| 78 | 82 | .recommendation-context{grid-template-columns:1.4fr auto} |
| @@ -73,6 +73,10 @@ select:focus { border-color:var(--cyan);box-shadow:0 0 0 2px rgba(150,239,240,.0 | |||
| 73 | .skell-gear-list{list-style:none;margin:0;padding:0;display:grid;gap:6px}.skell-gear-list li{display:grid;gap:2px;border-left:2px solid rgba(150,239,240,.18);padding:4px 0 4px 10px}.skell-gear-list b{font-size:13px;color:#dbeae7;font-weight:500}.skell-gear-list small{font-size:11px;color:#5d8487;letter-spacing:.08em;text-transform:uppercase}.skell-gear-acquisition{font-size:11px;color:#537477;letter-spacing:.02em;line-height:1.35;text-transform:none} | 73 | .skell-gear-list{list-style:none;margin:0;padding:0;display:grid;gap:6px}.skell-gear-list li{display:grid;gap:2px;border-left:2px solid rgba(150,239,240,.18);padding:4px 0 4px 10px}.skell-gear-list b{font-size:13px;color:#dbeae7;font-weight:500}.skell-gear-list small{font-size:11px;color:#5d8487;letter-spacing:.08em;text-transform:uppercase}.skell-gear-acquisition{font-size:11px;color:#537477;letter-spacing:.02em;line-height:1.35;text-transform:none} |
| 74 | .lvl-badge { display:inline-block;border:1px solid rgba(150,239,240,.35);color:var(--cyan);font-size:10px;font-style:normal;letter-spacing:.05em;padding:2px 5px;text-decoration:none;line-height:1.35 } | 74 | .lvl-badge { display:inline-block;border:1px solid rgba(150,239,240,.35);color:var(--cyan);font-size:10px;font-style:normal;letter-spacing:.05em;padding:2px 5px;text-decoration:none;line-height:1.35 } |
| 75 | .lvl-badge:hover,.lvl-badge:focus-visible{border-color:var(--cyan);background:rgba(150,239,240,.08)} | 75 | .lvl-badge:hover,.lvl-badge:focus-visible{border-color:var(--cyan);background:rgba(150,239,240,.08)} |
| 76 | +.equip-facts{display:grid;gap:0;margin:0}.equip-facts>div{border-top:1px solid rgba(150,239,240,.09);padding:9px 0}.equip-facts dt{font-size:11px;letter-spacing:.12em;color:#5f8183;text-transform:uppercase}.equip-facts dd{margin:4px 0 0;color:#9eb5b4;font-size:12px;line-height:1.5} | ||
| 77 | +.curated-rationale{margin:0;color:#8fa9a7;font-size:12px;line-height:1.55} | ||
| 78 | +.substitute-list{margin:0;padding-left:18px;color:#789698;font-size:12px;line-height:1.55;display:grid;gap:4px} | ||
| 79 | +.source-list{list-style:none;margin:0;padding:0;display:grid;gap:6px}.source-list li{display:flex;align-items:baseline;gap:8px}.source-list a{color:var(--cyan);font-size:12px;text-decoration:none;border-bottom:1px solid rgba(150,239,240,.3)}.source-list a:hover,.source-list a:focus-visible{border-bottom-color:var(--cyan)}.source-list small{color:#4e7477;font-size:10px;letter-spacing:.08em} | ||
| 76 | .method-note{display:grid;grid-template-columns:40px 1fr;gap:15px;margin-top:18px;border:1px solid var(--line);padding:20px;background:rgba(7,26,31,.7)}.method-note>span{width:34px;height:34px;display:grid;place-items:center;border:1px solid var(--orange);color:var(--orange)}.method-note h3{font-size:16px;margin:2px 0 7px}.method-note p{font-size:14px;line-height:1.65;color:#789698;margin:0;max-width:1200px} | 80 | .method-note{display:grid;grid-template-columns:40px 1fr;gap:15px;margin-top:18px;border:1px solid var(--line);padding:20px;background:rgba(7,26,31,.7)}.method-note>span{width:34px;height:34px;display:grid;place-items:center;border:1px solid var(--orange);color:var(--orange)}.method-note h3{font-size:16px;margin:2px 0 7px}.method-note p{font-size:14px;line-height:1.65;color:#789698;margin:0;max-width:1200px} |
| 77 | .contextual-controls .combat-mode-field{grid-column:1/-1;display:grid;grid-template-columns:auto minmax(150px,1fr);gap:12px}.contextual-controls .combat-mode-field select{padding-top:8px;padding-bottom:8px}.contextual-controls .special-unlock-field{grid-column:1/-1}.recommendation-tabs{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-bottom:12px}.recommendation-tabs button{display:grid;gap:5px;text-align:left;padding:14px 16px;border:1px solid var(--line);background:rgba(8,29,34,.58);color:#718f91;cursor:pointer}.recommendation-tabs button span{font-size:11px;letter-spacing:.15em;text-transform:uppercase}.recommendation-tabs button b{font-size:14px;color:#a8bfbd;font-weight:500}.recommendation-tabs button small{font-size:11px;color:#55787c}.recommendation-tabs button:hover{border-color:rgba(150,239,240,.45)}.recommendation-tabs button.active{border-color:var(--cyan);background:linear-gradient(120deg,rgba(150,239,240,.11),rgba(110,243,197,.04));box-shadow:inset 3px 0 var(--cyan)}.recommendation-tabs button.active span,.recommendation-tabs button.active small{color:var(--cyan)}.recommendation-tabs button.active b{color:#e5f3ef}.recommendation-context{display:grid;grid-template-columns:1.4fr auto 1fr;gap:18px;align-items:start;border:1px solid var(--line);border-top:0;background:rgba(4,18,22,.58);padding:15px 18px;margin:-12px 0 12px}.recommendation-context small,.infeasible-panel small{display:block;font-size:11px;letter-spacing:.15em;text-transform:uppercase;color:#63888a;margin-bottom:7px}.recommendation-context ul,.infeasible-panel ul{margin:0;padding-left:18px;color:#91aaa8;font-size:13px;line-height:1.5}.score-grid{display:flex;gap:7px;margin:0}.score-grid div{min-width:52px;padding:7px;border:1px solid rgba(150,239,240,.12);text-align:center}.score-grid dt{font-size:9px;color:#55787c;letter-spacing:.1em}.score-grid dd{margin:3px 0 0;color:var(--mint);font-size:13px}.recommendation-evidence{display:flex;flex-wrap:wrap;gap:6px}.recommendation-evidence small{width:100%}.recommendation-evidence a,.skell-evidence a{font-size:11px;color:#80a9aa;text-decoration:none;border:1px solid rgba(150,239,240,.15);padding:4px 6px}.recommendation-evidence a:hover,.skell-evidence a:hover{color:var(--cyan);border-color:var(--cyan)}.infeasible-panel{display:grid;grid-template-columns:1fr 1fr;gap:20px;border:1px solid rgba(255,113,79,.3);background:rgba(255,113,79,.05);padding:22px}.arts-block li.special-art{border-color:rgba(255,113,79,.3);background:rgba(255,113,79,.045)}.special-art-badge{display:inline-block;margin-left:7px;padding:2px 4px;border:1px solid rgba(255,113,79,.35);color:#ff9479;font-size:8px;font-style:normal;letter-spacing:.08em;text-transform:uppercase}.art-detail .art-fallback{display:grid;gap:2px;margin:7px 0 0;padding:6px 8px;border-left:2px solid var(--mint);background:rgba(110,243,197,.04)}.art-detail .art-fallback strong{font-size:10px;color:#98c8b8}.art-detail .art-fallback span{font-size:10px;color:#5f8180}.skell-evidence{display:flex;flex-wrap:wrap;gap:5px;margin-top:12px} | 81 | .contextual-controls .combat-mode-field{grid-column:1/-1;display:grid;grid-template-columns:auto minmax(150px,1fr);gap:12px}.contextual-controls .combat-mode-field select{padding-top:8px;padding-bottom:8px}.contextual-controls .special-unlock-field{grid-column:1/-1}.recommendation-tabs{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-bottom:12px}.recommendation-tabs button{display:grid;gap:5px;text-align:left;padding:14px 16px;border:1px solid var(--line);background:rgba(8,29,34,.58);color:#718f91;cursor:pointer}.recommendation-tabs button span{font-size:11px;letter-spacing:.15em;text-transform:uppercase}.recommendation-tabs button b{font-size:14px;color:#a8bfbd;font-weight:500}.recommendation-tabs button small{font-size:11px;color:#55787c}.recommendation-tabs button:hover{border-color:rgba(150,239,240,.45)}.recommendation-tabs button.active{border-color:var(--cyan);background:linear-gradient(120deg,rgba(150,239,240,.11),rgba(110,243,197,.04));box-shadow:inset 3px 0 var(--cyan)}.recommendation-tabs button.active span,.recommendation-tabs button.active small{color:var(--cyan)}.recommendation-tabs button.active b{color:#e5f3ef}.recommendation-context{display:grid;grid-template-columns:1.4fr auto 1fr;gap:18px;align-items:start;border:1px solid var(--line);border-top:0;background:rgba(4,18,22,.58);padding:15px 18px;margin:-12px 0 12px}.recommendation-context small,.infeasible-panel small{display:block;font-size:11px;letter-spacing:.15em;text-transform:uppercase;color:#63888a;margin-bottom:7px}.recommendation-context ul,.infeasible-panel ul{margin:0;padding-left:18px;color:#91aaa8;font-size:13px;line-height:1.5}.score-grid{display:flex;gap:7px;margin:0}.score-grid div{min-width:52px;padding:7px;border:1px solid rgba(150,239,240,.12);text-align:center}.score-grid dt{font-size:9px;color:#55787c;letter-spacing:.1em}.score-grid dd{margin:3px 0 0;color:var(--mint);font-size:13px}.recommendation-evidence{display:flex;flex-wrap:wrap;gap:6px}.recommendation-evidence small{width:100%}.recommendation-evidence a,.skell-evidence a{font-size:11px;color:#80a9aa;text-decoration:none;border:1px solid rgba(150,239,240,.15);padding:4px 6px}.recommendation-evidence a:hover,.skell-evidence a:hover{color:var(--cyan);border-color:var(--cyan)}.infeasible-panel{display:grid;grid-template-columns:1fr 1fr;gap:20px;border:1px solid rgba(255,113,79,.3);background:rgba(255,113,79,.05);padding:22px}.arts-block li.special-art{border-color:rgba(255,113,79,.3);background:rgba(255,113,79,.045)}.special-art-badge{display:inline-block;margin-left:7px;padding:2px 4px;border:1px solid rgba(255,113,79,.35);color:#ff9479;font-size:8px;font-style:normal;letter-spacing:.08em;text-transform:uppercase}.art-detail .art-fallback{display:grid;gap:2px;margin:7px 0 0;padding:6px 8px;border-left:2px solid var(--mint);background:rgba(110,243,197,.04)}.art-detail .art-fallback strong{font-size:10px;color:#98c8b8}.art-detail .art-fallback span{font-size:10px;color:#5f8180}.skell-evidence{display:flex;flex-wrap:wrap;gap:5px;margin-top:12px} |
| 78 | .recommendation-context{grid-template-columns:1.4fr auto} | 82 | .recommendation-context{grid-template-columns:1.4fr auto} |
added
research/companion-builds-core.md +283 -0 | new file mode 100644 | ||
| @@ -0,0 +1,283 @@ | ||
| 1 | +# Companion build research: Elma, Lin, Irina, Gwin, Doug, Lao | |
| 2 | + | |
| 3 | +Research slice for Rickub #1. Covers these six companions only. Cross is out of scope and unchanged. Remaining roster coverage belongs to the other research slices. | |
| 4 | + | |
| 5 | +## Evidence and rules | |
| 6 | + | |
| 7 | +Preferred edition is Xenoblade Chronicles X: Definitive Edition (DE). Xeno Series Wiki character and equipment pages describe shared XCX mechanics; I cross-checked character weapon pairs, default Arts, and skill-slot counts against their gameplay pages. Game8 pages explicitly identify themselves as DE guides. Nintendo Life also has a DE-era all-character build article. Reddit's party-build guide was returned in search results, but direct fetch was blocked by Reddit; use its reported advice as low-weight evidence, not as a verified transcript. | |
| 8 | + | |
| 9 | +XSW's [Battle Art (XCX)](https://www.xenoserieswiki.org/wiki/Battle_Art_(XCX)) page says Arts are weapon-bound, including buffs and auras; each character can equip up to eight; AI companions use Arts automatically. Its TP section says TP Arts consume 1,000 TP, including all auras and some support Arts. `research/art-effects.json` is the project's Xeno Series Wiki semantic-data extraction (2026-08-04). The Art fact tables below record each candidate's specific weapon, TP flag, and direct XSW page. The rank column is the rank in the current `src/data/companions.ts` personal kit, not a Cross class-rank recommendation from a guide. | |
| 10 | + | |
| 11 | +XSW's [Skill (XCX)](https://www.xenoserieswiki.org/wiki/Skill_(XCX)) page confirms each non-Cross character has a fixed skill-slot count. Only Stellar Entry and Synchrony are active while in a Skell; the other Skills are ground-only. The builds below are persistent ground kits. Skell equipment/packages remain separate; no runtime Skell Skill swap is recommended. | |
| 12 | + | |
| 13 | +### Source independence and disagreements | |
| 14 | + | |
| 15 | +- Game8's dedicated Elma, Lin, Irina, and Lao pages are character-specific DE build sources. Nintendo Life provides another DE all-character list, but several lists are very similar. I count matching lists as one recommendation cluster, not independent consensus, unless the advice also recurs in a separately authored community discussion. | |
| 16 | +- Reddit's 2025 DE party-build guide independently favors AI-aware support for Irina, tank/topple Lin, positional DPS Elma, and a ranged Shock build for Lao. It also warns that AI positioning and TP use are imperfect. Direct Reddit fetch failed, so these are search-indexed claims, not fully inspected text. | |
| 17 | +- Game8's [dedicated Doug DE build](https://game8.co/games/Xenoblade-Chronicles-X/archives/507626) supplies legal Photon Saber/Raygun candidates, unlike its swapped all-character Doug row. Its Galactic Cataclysm rank 8 claim conflicts with Doug's personal rank 15; the final build keeps the compatible core, then makes editorial AI-support and TP choices. No independent exact eight-Art consensus exists for Doug or Gwin. Gwin's all-character Game8 list uses weapons he cannot equip. | |
| 18 | +- Game8's Lin table does not mark Drum Roll as TP-consuming. XSW's [Drum Roll (XCX)](https://www.xenoserieswiki.org/wiki/Drum_Roll_(XCX)) data explicitly marks it `(TP)`. The XSW game-data caption wins; Lin's TP count includes Drum Roll. | |
| 19 | +- Guides often show class-rank unlocks for player builds. Those ranks are not used as NPC progression facts. Companion unlock ranks come from the current companion roster and the XSW character gameplay record. | |
| 20 | + | |
| 21 | +## Quick matrix | |
| 22 | + | |
| 23 | +| Companion | XSW personal class and weapons | Skill slots | Evidence-backed role | Final TP Arts | | |
| 24 | +|---|---|---:|---|---:| | |
| 25 | +| Elma | Full Metal Jaguar; Dual Swords + Dual Guns | 4 | Positional DPS with party Decoy | Ghost Factory, Executioner | | |
| 26 | +| Lin | Shield Trooper; Shield + Gatling Gun | 3 | Tank, Topple, melee follow-up | Wild Down, Drum Roll | | |
| 27 | +| Irina | Psycorruptor+; Knife + Assault Rifle | 4 | Healing, TP, barrier and buff support | Last Stand, Energy Source | | |
| 28 | +| Gwin | Samurai Gunner; Longsword + Assault Rifle | 3 | Thermal-leaning ranged/melee hybrid | Defensive Stance, Burst Grenade | | |
| 29 | +| Doug | Blast Fencer+; Photon Saber + Raygun | 4 | Beam-leaning hybrid support | Geolibrium, Astral Heal | | |
| 30 | +| Lao | Partisan Eagle; Javelin + Sniper Rifle | 3 | Ranged Electric/Shock DPS; story-limited | Trident Buster, Ghost Sniper | | |
| 31 | + | |
| 32 | +All six have eight canonical Arts, within their legal weapon pairs. Each canonical kit has exactly two TP Arts. Substitute arrays put non-TP choices before TP alternatives. A TP substitute may replace an unavailable canonical Art only when resulting loadout remains at two or fewer TP Arts. Never append a third TP Art to fill an empty slot. Every chosen Skill is in that companion's personal unlock list and the final Skill count stays within its slot cap; Irina intentionally uses three of four. | |
| 33 | + | |
| 34 | +## Elma | |
| 35 | + | |
| 36 | +**Candidate evidence.** Game8's [Elma Best Build](https://game8.co/games/Xenoblade-Chronicles-X/archives/506520) and the Nintendo Life all-character build recommend a positional melee/dual-weapon DPS kit with Primer, Electric Surge, Shadowstrike, Hundred Shells, Sliding Slinger, Side Slash, Ghost Factory, and Thirsty Edge. The three TP Arts are Hundred Shells, Ghost Factory, and Thirsty Edge, so that exact set fails the two-TP contract. Both sources warn that AI Elma may miss positional bonuses. Reddit independently reports the same AI weakness and proposes a different critical/positional skill package. Evidence supports the DPS role, not one settled AI loadout. | |
| 37 | + | |
| 38 | +**Final Arts, in order:** `Primer`, `Sliding Slinger`, `Shadowstrike`, `Side Slash`, `Violent Streak`, `Electric Surge`, `Ghost Factory`, `Executioner`. | |
| 39 | + | |
| 40 | +Primer and Sliding Slinger sustain TP; Violent Streak supplies another non-spending TP route through criticals. Shadowstrike and Side Slash retain positional damage, Electric Surge adds low-HP Ether damage, Ghost Factory gives nearby allies Decoy, and Executioner is the sole additional TP damage Art. Ghost Factory plus Executioner use two TP Arts. This trades the guides' TP-heavy Hundred Shells/Thirsty Edge choices for a non-TP critical Art and ranged finisher. AI positioning remains a limitation, not a claim that the AI executes player combos reliably. | |
| 41 | + | |
| 42 | +**Ordered Art substitutes:** `Upper Hand`, `Blood Sacrifice`, `Stream Edge`, `Thirsty Edge`, `Hundred Shells`. Upper Hand and Blood Sacrifice do not spend TP; Blood Sacrifice costs HP, so keep it behind Upper Hand for AI safety. The final three are TP options. They are replacements only, and must be skipped if two other TP Arts remain equipped. | |
| 43 | + | |
| 44 | +**Final Skills, in order:** `Agile Gunslinger`, `Steady Hand`, `Background Noise`, `Master Edge` (4/4). Reddit's AI-oriented list supports Agile Gunslinger and Steady Hand; Game8 supports Background Noise and Master Edge. This is an editorial blend, not a recurring four-skill consensus. `Mortal Enemy`, `Hellhound`, `Crisis Catalyst`, `Phantom Counter` are ordered alternatives from Elma's legal skill list. The skill substitutions do not expand the four-slot cap. | |
| 45 | + | |
| 46 | +**Weapon recommendation:** Sakuraba Industries Dual Guns Series + Blades Series (Dual Swords), both in the AM Level 1 offering. This is an actual legal two-weapon portfolio. Sakuraba's page describes its weapons as stable, with weaker resistance coverage beyond physical; do not assume the maker grants an Elma-specific bonus. Grenada Galactic Group is a legal alternative with Gemels Dual Guns + Ralzes Dual Swords at AM Level 1, from its beam-focused product line. Choose weapon attribute and Battle Traits for enemy matchup; Art damage using the weapon attribute follows the equipped weapon. | |
| 47 | + | |
| 48 | +**Armor recommendation:** Candid & Credible Light Wear: Screen, Breaker, Ward, Trudgers. C&C ground armor trends high-defense; Light Wear trades lower defense for higher attribute resistance, especially Gravity. This is a matchup-sensitive editorial choice for a high-dodge DPS, not a community standard. C&C unlocks after Chapter 5; Light Wear needs AM Level 2 and 7,000 R&D points. Until then, use available Medium Wear (Sakuraba or Grenada at AM Level 1), or C&C Medium after its story gate. Use item traits/resistances over brand name when the enemy profile is known. | |
| 49 | + | |
| 50 | +### Elma Art facts | |
| 51 | + | |
| 52 | +Ranks are current personal-kit ranks. `TP=yes` means the Art consumes TP. URLs open the source Art record. | |
| 53 | + | |
| 54 | +| Art | Rank | Weapon | TP | Use | Source | | |
| 55 | +|---|---:|---|---|---|---| | |
| 56 | +| Primer | 7 | Dual Guns | no | canonical | [XSW](https://www.xenoserieswiki.org/wiki/Primer) | | |
| 57 | +| Sliding Slinger | 1 | Dual Guns | no | canonical | [XSW](https://www.xenoserieswiki.org/wiki/Sliding_Slinger_(XCX)) | | |
| 58 | +| Shadowstrike | 1 | Dual Swords | no | canonical | [XSW](https://www.xenoserieswiki.org/wiki/Shadowstrike) | | |
| 59 | +| Side Slash | 5 | Dual Swords | no | canonical | [XSW](https://www.xenoserieswiki.org/wiki/Side_Slash) | | |
| 60 | +| Violent Streak | 9 | Dual Guns | no | canonical | [XSW](https://www.xenoserieswiki.org/wiki/Violent_Streak_(XCX)) | | |
| 61 | +| Electric Surge | 12 | Dual Swords | no | canonical | [XSW](https://www.xenoserieswiki.org/wiki/Electric_Surge) | | |
| 62 | +| Ghost Factory | 13 | Dual Guns | yes | canonical | [XSW](https://www.xenoserieswiki.org/wiki/Ghost_Factory) | | |
| 63 | +| Executioner | 14 | Dual Guns | yes | canonical | [XSW](https://www.xenoserieswiki.org/wiki/Executioner_(XCX)) | | |
| 64 | +| Upper Hand | 3 | Dual Swords | no | substitute | [XSW](https://www.xenoserieswiki.org/wiki/Upper_Hand) | | |
| 65 | +| Blood Sacrifice | 11 | Dual Swords | no | substitute; HP cost | [XSW](https://www.xenoserieswiki.org/wiki/Blood_Sacrifice) | | |
| 66 | +| Stream Edge | 2 | Dual Swords | yes | TP replacement only | [XSW](https://www.xenoserieswiki.org/wiki/Stream_Edge_(XCX)) | | |
| 67 | +| Thirsty Edge | 8 | Dual Swords | yes | TP replacement only | [XSW](https://www.xenoserieswiki.org/wiki/Thirsty_Edge) | | |
| 68 | +| Hundred Shells | 15 | Dual Swords | yes | guide candidate; not canonical | [XSW](https://www.xenoserieswiki.org/wiki/Hundred_Shells_(XCX)) | | |
| 69 | + | |
| 70 | +## Lin | |
| 71 | + | |
| 72 | +**Candidate evidence.** Game8's [Lin Best Build](https://game8.co/games/Xenoblade-Chronicles-X/archives/506544) and the Reddit AI discussion agree on a tank/Topple role, but the Art lists differ. Game8 recommends Wild Down, Wild Smash, Drum Roll, Thermal Payload, Supershield, Reality Rift, Trash Talk, and Cool Off. The Reddit AI proposal prefers Shield Wall and Fire Carnival; it also cautions against slow Arts. Drum Roll is TP according to XSW, despite Game8's missing marker. The published Game8 set therefore contains four TP Arts when audited against XSW, not the three its labels suggest. | |
| 73 | + | |
| 74 | +**Final Arts, in order:** `Wild Down`, `Wild Smash`, `Trash Talk`, `Drum Roll`, `Reality Rift`, `Fire Carnival`, `Shield Wall`, `Bullet Storm`. | |
| 75 | + | |
| 76 | +Wild Down applies Topple; Wild Smash and Drum Roll reward the toppled/melee-combo state. Trash Talk supports aggro and TP generation. Shield Wall supplies a non-TP barrier; Reality Rift and Fire Carnival add control/damage. Bullet Storm deals weapon damage and can Flinch humanoids, with no aura prerequisite. Wild Down plus Drum Roll are the only TP Arts. [Cool Off](https://www.xenoserieswiki.org/wiki/Cool_Off_(XCX)) was rejected because it consumes an active aura, which Lin's fixed bar lacks. | |
| 77 | + | |
| 78 | +**Ordered Art substitutes:** `Flame Cloak`, `Bombardier`, `Supershield`, `Thermal Payload`. The first two do not spend TP. Supershield and Thermal Payload are TP replacements only; never equip them on top of both Wild Down and Drum Roll. | |
| 79 | + | |
| 80 | +**Final Skills, in order:** `Shield Screen`, `Dirty Fighter`, `Stand Strong` (3/3). This matches Game8's shield mitigation, topple damage, and resistance rationale. Ordered progression alternatives: `Steel Flesh`, `Mighty Muscle`, `Dismantler`, `Long Topple`. | |
| 81 | + | |
| 82 | +**Weapon recommendation:** Sakuraba Industries Shield Series + Machine Series (Gatling Gun), both AM Level 1. Its physical/stable product trend fits Shield damage, but does not itself add a character bonus. Grenada's Paive Shield + Repethe Gatling Gun are legal AM Level 1 alternatives; C&C's Haven Shield + Crank Gatling are another pair after Chapter 5, with C&C's non-Shield weapons electric. | |
| 83 | + | |
| 84 | +**Armor recommendation:** Candid & Credible Heavy Wear: Armet, Bulwark, Wrest, Stabilizers. Heavy Wear gives higher defense but lower attribute resistance; C&C's ground gear trends high-defense. This fits a tank only when incoming damage profile allows the resistance trade. C&C unlocks after Chapter 5 and Heavy Wear needs AM Level 3 plus 12,000 R&D points. Before that, use Sakuraba Medium Wear at AM Level 1, or Sakuraba Heavy after its AM Level 3 gate. Prefer Medium Wear for elemental-heavy encounters. | |
| 85 | + | |
| 86 | +### Lin Art facts | |
| 87 | + | |
| 88 | +| Art | Rank | Weapon | TP | Use | Source | | |
| 89 | +|---|---:|---|---|---|---| | |
| 90 | +| Wild Down | 1 | Shield | yes | canonical | [XSW](https://www.xenoserieswiki.org/wiki/Wild_Down_(XCX)) | | |
| 91 | +| Wild Smash | 2 | Shield | no | canonical | [XSW](https://www.xenoserieswiki.org/wiki/Wild_Smash) | | |
| 92 | +| Trash Talk | 4 | Shield | no | canonical | [XSW](https://www.xenoserieswiki.org/wiki/Trash_Talk) | | |
| 93 | +| Drum Roll | 14 | Shield | yes | canonical; cost confirmed in XSW caption | [XSW](https://www.xenoserieswiki.org/wiki/Drum_Roll_(XCX)) | | |
| 94 | +| Reality Rift | 10 | Shield | no | canonical | [XSW](https://www.xenoserieswiki.org/wiki/Reality_Rift) | | |
| 95 | +| Fire Carnival | 1 | Gatling Gun | no | canonical | [XSW](https://www.xenoserieswiki.org/wiki/Fire_Carnival) | | |
| 96 | +| Shield Wall | 12 | Shield | no | canonical | [XSW](https://www.xenoserieswiki.org/wiki/Shield_Wall_(XCX)) | | |
| 97 | +| Bullet Storm | 8 | Gatling Gun | no | canonical; weapon damage and humanoid Flinch | [XSW](https://www.xenoserieswiki.org/wiki/Bullet_Storm) | | |
| 98 | +| Flame Cloak | 3 | Shield | no | substitute | [XSW](https://www.xenoserieswiki.org/wiki/Flame_Cloak) | | |
| 99 | +| Bombardier | 7 | Shield | no | substitute | [XSW](https://www.xenoserieswiki.org/wiki/Bombardier) | | |
| 100 | +| Cool Off | 15 | Gatling Gun | no | rejected: consumes active aura to restore TP, none equipped | [XSW](https://www.xenoserieswiki.org/wiki/Cool_Off_(XCX)) | | |
| 101 | +| Supershield | 9 | Shield | yes | TP replacement only | [XSW](https://www.xenoserieswiki.org/wiki/Supershield) | | |
| 102 | +| Thermal Payload | 5 | Gatling Gun | yes | TP replacement only | [XSW](https://www.xenoserieswiki.org/wiki/Thermal_Payload_(XCX)) | | |
| 103 | + | |
| 104 | +## Irina | |
| 105 | + | |
| 106 | +**Candidate evidence.** Game8's [Irina Best Build](https://game8.co/games/Xenoblade-Chronicles-X/archives/506541) and Nintendo Life independently show a support list around Quick Cannon, Flash Grenade, Last Stand, Medic Free, Absorber Skin, Repair, Smooth Recovery, and Energy Source. The guides emphasize TP support, healing, and barriers; both also distinguish a less reliable Sleep/Control build. Reddit likewise favors support for AI Irina. The candidate list has three TP Arts: Last Stand, Medic Free, and Energy Source. | |
| 107 | + | |
| 108 | +**Final Arts, in order:** `Smooth Recovery`, `Quick Cannon`, `Repair`, `Assault Hammer`, `Last Stand`, `Energy Source`, `Absorber Skin`, `Flash Grenade`. | |
| 109 | + | |
| 110 | +Smooth Recovery, Repair, and Absorber Skin cover healing, cleanse, and barrier support. Last Stand and Energy Source provide team TP/potential support. Quick Cannon and Flash Grenade keep ranged damage/Blackout; Assault Hammer is a non-TP Topple option. Medic Free is dropped to keep the two-TP cap. This is a support build, not the player-controlled Psycorruptor Sleep/Control variant; late-game enemies can resist status effects. | |
| 111 | + | |
| 112 | +**Ordered Art substitutes:** `Furious Blast`, `Screamer`, `Medic Free`. The first two do not spend TP; Screamer may help against Sleep-susceptible early enemies but does not activate Control-dependent Skills. Medic Free is a TP replacement only, not a ninth Art. [Servant Sacrifice](https://xenoblade.fandom.com/wiki/Servant_Sacrifice) requires a target already under Control to grant HP/TP; it neither sacrifices Irina's HP nor inflicts Control. The fixed bar has no Control Art, so it is not an equipped substitute. | |
| 113 | + | |
| 114 | +**Final Skills, in order:** `Inner Search`, `Healing Touch`, `High Tension` (3/4). These three support Skills appear in Game8's guide. [King's Decree](https://xenoblade.fandom.com/wiki/King%27s_Decree) only affects Control. Irina's remaining personal Skills depend on Sleep or Control, which this fixed support bar does not provide. Rather than equip an inert fourth Skill, its last slot stays empty at every rank; no skill substitutes are selected. | |
| 115 | + | |
| 116 | +**Weapon recommendation:** Sakuraba Industries Assault Series + Knife Series, both AM Level 1. It covers both personal weapon types. Grenada's Avagar Assault Rifle + Riv Knife are AM Level 1 alternatives from its beam-focused weapon portfolio. Arts with fixed Thermal/Electric attributes keep those attributes; weapon-damage Arts use the equipped weapon attribute. | |
| 117 | + | |
| 118 | +**Armor recommendation:** Grenada Medium Wear: Spex, Torse, Quantlet, Soales, available at AM Level 1. Grenada's manufacturer page identifies beam-resistant ground gear as a product strength; that can protect a support character without defaulting to Heavy Wear. Sakuraba Medium Wear is the initial-manufacturer alternative. C&C Medium Wear is another option after Chapter 5 for its high-defense product trend. Choose item traits and the enemy's attribute, not a universal armor brand. | |
| 119 | + | |
| 120 | +### Irina Art facts | |
| 121 | + | |
| 122 | +| Art | Rank | Weapon | TP | Use | Source | | |
| 123 | +|---|---:|---|---|---|---| | |
| 124 | +| Smooth Recovery | 5 | Knife | no | canonical | [XSW](https://www.xenoserieswiki.org/wiki/Smooth_Recovery) | | |
| 125 | +| Quick Cannon | 10 | Assault Rifle | no | canonical | [XSW](https://www.xenoserieswiki.org/wiki/Quick_Cannon) | | |
| 126 | +| Repair | 1 | Knife | no | canonical | [XSW](https://www.xenoserieswiki.org/wiki/Repair) | | |
| 127 | +| Assault Hammer | 12 | Assault Rifle | no | canonical | [XSW](https://www.xenoserieswiki.org/wiki/Assault_Hammer) | | |
| 128 | +| Last Stand | 15 | Assault Rifle | yes | canonical | [XSW](https://www.xenoserieswiki.org/wiki/Last_Stand_(XCX)) | | |
| 129 | +| Energy Source | 14 | Knife | yes | canonical | [XSW](https://www.xenoserieswiki.org/wiki/Energy_Source) | | |
| 130 | +| Absorber Skin | 11 | Knife | no | canonical | [XSW](https://www.xenoserieswiki.org/wiki/Absorber_Skin) | | |
| 131 | +| Flash Grenade | 7 | Assault Rifle | no | canonical | [XSW](https://www.xenoserieswiki.org/wiki/Flash_Grenade) | | |
| 132 | +| Furious Blast | 3 | Assault Rifle | no | substitute | [XSW](https://www.xenoserieswiki.org/wiki/Furious_Blast) | | |
| 133 | +| Screamer | 4 | Knife | no | early situational Sleep substitute | [XSW](https://www.xenoserieswiki.org/wiki/Screamer_(XCX)) | | |
| 134 | +| Servant Sacrifice | 13 | Knife | no | rejected: requires existing Control, restores HP/TP | [XSW](https://www.xenoserieswiki.org/wiki/Servant_Sacrifice) | | |
| 135 | +| Medic Free | 9 | Assault Rifle | yes | TP replacement only | [XSW](https://www.xenoserieswiki.org/wiki/Medic_Free) | | |
| 136 | + | |
| 137 | +## Gwin | |
| 138 | + | |
| 139 | +**Candidate evidence.** Gwin's XSW page identifies Samurai Gunner, Longsword + Assault Rifle, three skill slots, and his default Arts. Game8's [all-character build article](https://game8.co/games/Xenoblade-Chronicles-X/archives/506659) labels Gwin a ranged attacker but lists Shadowrunner, Hundred Shells, Electric Surge, Back Slash, Side Slash, Sliding Slinger, Sky High, and Primer. XSW lists those Arts as Dual Swords or Dual Guns Arts. None matches Gwin's Longsword + Assault Rifle, so none is admissible. This is a source disagreement, not a basis to relabel the guide as Cross-only. | |
| 140 | + | |
| 141 | +**Final Arts, in order:** `Defensive Stance`, `Power Dive`, `Furious Blast`, `Magnum Edge`, `Flash Grenade`, `Grenade Blitz`, `Takedown Shot`, `Burst Grenade`. | |
| 142 | + | |
| 143 | +Defensive Stance gives an AI-safe defensive aura; Power Dive grants Supercharge/evasion. Grenade Blitz and Burst Grenade provide Thermal damage; Flash Grenade adds Electric damage/Blackout, and Takedown Shot adds mechanoid Topple. Burst Grenade and Defensive Stance are the only TP Arts. This thermal-leaning mixed weapon kit aligns with Gwin's legal Arts and Conflagrant Edge/Flame Trigger Skills. The specific composition is editorial because the published Game8 candidate is weapon-incompatible. | |
| 144 | + | |
| 145 | +**Ordered Art substitutes:** `Rising Blade`, `Ultraslash`, `Tornado Blade`, `Decoy Round`, `Incendiary Edge`, `Gunforce`. The first four are non-TP; the last two cost TP and may replace only, never add to, a two-TP loadout. | |
| 146 | + | |
| 147 | +**Final Skills, in order:** `Unwavering Courage`, `Flame Trigger`, `Conflagrant Edge` (3/3). Flame Trigger and Conflagrant Edge support the thermal Arts; Unwavering Courage is an early legal ground Skill. This is an editorial thermal build, not a source-backed consensus. Ordered ground-Skill alternatives: `Mighty Muscle`, `Auto Melee Boost`, `Healing Aura`, `Weapon Guard`, `Theroid Slayer`. No Skell-only Skill is included. | |
| 148 | + | |
| 149 | +**Weapon recommendation:** Sakuraba Industries Assault Series + Sword Series (Longsword), both AM Level 1. The series cover Gwin's actual pair and are the most accessible portfolio. Grenada's Avagar Assault Rifle + Slair Longsword are same-type AM Level 1 alternatives; Grenada's beam focus does not itself boost Gwin's Thermal Arts. | |
| 150 | + | |
| 151 | +**Armor recommendation:** Sakuraba Medium Wear: Goggles, Bodywear, Glove, Footwear, at AM Level 1. This is a conservative availability choice, not a claim of a unique Medium stat bonus. C&C Medium Wear is an alternative after Chapter 5; its ground line trends high-defense. Grenada Medium Wear is also available from the initial manufacturer pair and trends beam resistance. For all three, compare the exact piece's traits/resistances before buying. | |
| 152 | + | |
| 153 | +### Gwin Art facts | |
| 154 | + | |
| 155 | +| Art | Rank | Weapon | TP | Use | Source | | |
| 156 | +|---|---:|---|---|---|---| | |
| 157 | +| Defensive Stance | 3 | Longsword | yes | canonical | [XSW](https://www.xenoserieswiki.org/wiki/Defensive_Stance) | | |
| 158 | +| Power Dive | 2 | Assault Rifle | no | canonical | [XSW](https://www.xenoserieswiki.org/wiki/Power_Dive) | | |
| 159 | +| Furious Blast | 1 | Assault Rifle | no | canonical | [XSW](https://www.xenoserieswiki.org/wiki/Furious_Blast) | | |
| 160 | +| Magnum Edge | 4 | Longsword | no | canonical | [XSW](https://www.xenoserieswiki.org/wiki/Magnum_Edge_(XCX)) | | |
| 161 | +| Flash Grenade | 11 | Assault Rifle | no | canonical | [XSW](https://www.xenoserieswiki.org/wiki/Flash_Grenade) | | |
| 162 | +| Grenade Blitz | 13 | Assault Rifle | no | canonical | [XSW](https://www.xenoserieswiki.org/wiki/Grenade_Blitz) | | |
| 163 | +| Takedown Shot | 15 | Assault Rifle | no | canonical | [XSW](https://www.xenoserieswiki.org/wiki/Takedown_Shot) | | |
| 164 | +| Burst Grenade | 6 | Assault Rifle | yes | canonical | [XSW](https://www.xenoserieswiki.org/wiki/Burst_Grenade) | | |
| 165 | +| Rising Blade | 1 | Longsword | no | substitute | [XSW](https://www.xenoserieswiki.org/wiki/Rising_Blade) | | |
| 166 | +| Ultraslash | 5 | Longsword | no | substitute | [XSW](https://www.xenoserieswiki.org/wiki/Ultraslash_(XCX)) | | |
| 167 | +| Tornado Blade | 9 | Longsword | no | substitute | [XSW](https://www.xenoserieswiki.org/wiki/Tornado_Blade) | | |
| 168 | +| Decoy Round | 8 | Assault Rifle | no | substitute | [XSW](https://www.xenoserieswiki.org/wiki/Decoy_Round) | | |
| 169 | +| Incendiary Edge | 12 | Longsword | yes | TP replacement only | [XSW](https://www.xenoserieswiki.org/wiki/Incendiary_Edge) | | |
| 170 | +| Gunforce | 14 | Assault Rifle | yes | TP replacement only | [XSW](https://www.xenoserieswiki.org/wiki/Gunforce) | | |
| 171 | + | |
| 172 | +**Rejected Game8 candidates:** Shadowrunner (Dual Swords), Hundred Shells (Dual Swords), Electric Surge (Dual Swords), Back Slash (Dual Swords), Side Slash (Dual Swords), Sliding Slinger (Dual Guns), Sky High (Dual Guns), Primer (Dual Guns). Every one conflicts with Gwin's weapon pair. See the linked [Game8 page](https://game8.co/games/Xenoblade-Chronicles-X/archives/506659) and each linked [Art fact](https://www.xenoserieswiki.org/wiki/Sky_High). | |
| 173 | + | |
| 174 | +## Doug | |
| 175 | + | |
| 176 | +**Candidate evidence.** XSW identifies Doug's pair as Photon Saber + Raygun, four skill slots, and the default kit Starfall Blade, Starfall Rondo, Geolibrium, Beam Barrage. Game8's [dedicated Doug DE guide](https://game8.co/games/Xenoblade-Chronicles-X/archives/507626) recommends legal Starfall Blade, Starfall Rondo, Starlight Duster, Geolibrium, Myopic Screen, Gravity Blast, and Pathogen Blast, plus Galactic Cataclysm at a claimed class rank 8. Doug's personal kit unlocks Galactic Cataclysm at rank 15, so the guide's rank cannot drive companion progression. The separate Game8 all-character Doug row lists Longsword/Gatling Arts Doug cannot equip. Reject that row, not the dedicated guide. The final AI support and TP choices below remain editorial; one usable guide does not establish independent consensus. | |
| 177 | + | |
| 178 | +**Final Arts, in order:** `Starfall Blade`, `Starfall Rondo`, `Beam Barrage`, `Geolibrium`, `Myopic Screen`, `Astral Purge`, `Astral Heal`, `Subterfuge`. | |
| 179 | + | |
| 180 | +The first four include all four character defaults. Beam Barrage gains damage with an aura; Geolibrium supplies beam resistance, regeneration, and terrain protection. Astral Heal provides healing, Astral Purge removes debuffs, and Myopic Screen/Subterfuge supply control/debuff utility. Geolibrium and Astral Heal are the two TP Arts. This is a ground hybrid build, not a Skell package. | |
| 181 | + | |
| 182 | +**Ordered Art substitutes:** `Phenomenon`, `Pathogen Blast`, `Gravity Blast`, `Ether Blast`, `Novalibrium`. The first three do not spend TP. Ether Blast and Novalibrium are TP replacements only; don't equip them in addition to both canonical TP Arts. | |
| 183 | + | |
| 184 | +**Final Skills, in order:** `Inner Search`, `Beam Boost`, `High Tension`, `Aura Assault` (4/4). Beam Boost supports the beam-oriented equipment and Arts; Aura Assault works with aura use and melee follow-ups. Ordered ground alternatives: `Mechanoid Slayer`, `Knight's Soul`, `Supreme Sword`. `Stellar Entry` is not recommended: XSW marks it as Skell-active, and it would be misleading in this persistent ground build. | |
| 185 | + | |
| 186 | +**Weapon recommendation:** Grenada Galactic Group Lastyr Raygun + Fulge Photon Saber, both AM Level 1. Grenada's product trend is beam-focused and it sells both actual weapon types. Sakuraba Raygun Series + Saber Series are the initial-maker alternative; Sakuraba describes its weapons as stable but less resistant to non-physical attributes. The weapon attribute on weapon-damage Arts still depends on the equipped weapon. | |
| 187 | + | |
| 188 | +**Armor recommendation:** Grenada Medium Wear: Spex, Torse, Quantlet, Soales, at AM Level 1. The maker describes beam-resistant ground gear as a product strength, which fits the beam-leaning build. Sakuraba Medium Wear is an initial-manufacturer alternative. Use Grenada Light Wear at AM Level 2 if higher Gravity resistance matters more than defense; the type tradeoff is real and no fixed enemy profile was supplied. | |
| 189 | + | |
| 190 | +### Doug Art facts | |
| 191 | + | |
| 192 | +| Art | Rank | Weapon | TP | Use | Source | | |
| 193 | +|---|---:|---|---|---|---| | |
| 194 | +| Starfall Blade | 1 | Photon Saber | no | canonical | [XSW](https://www.xenoserieswiki.org/wiki/Starfall_Blade) | | |
| 195 | +| Starfall Rondo | 2 | Photon Saber | no | canonical | [XSW](https://www.xenoserieswiki.org/wiki/Starfall_Rondo) | | |
| 196 | +| Beam Barrage | 1 | Raygun | no | canonical | [XSW](https://www.xenoserieswiki.org/wiki/Beam_Barrage_(XCX)) | | |
| 197 | +| Geolibrium | 3 | Photon Saber | yes | canonical | [XSW](https://www.xenoserieswiki.org/wiki/Geolibrium) | | |
| 198 | +| Myopic Screen | 4 | Raygun | no | canonical | [XSW](https://www.xenoserieswiki.org/wiki/Myopic_Screen_(XCX)) | | |
| 199 | +| Astral Purge | 6 | Photon Saber | no | canonical | [XSW](https://www.xenoserieswiki.org/wiki/Astral_Purge) | | |
| 200 | +| Astral Heal | 9 | Photon Saber | yes | canonical | [XSW](https://www.xenoserieswiki.org/wiki/Astral_Heal) | | |
| 201 | +| Subterfuge | 10 | Raygun | no | canonical | [XSW](https://www.xenoserieswiki.org/wiki/Subterfuge) | | |
| 202 | +| Phenomenon | 13 | Photon Saber | no | substitute | [XSW](https://www.xenoserieswiki.org/wiki/Phenomenon) | | |
| 203 | +| Pathogen Blast | 14 | Raygun | no | substitute | [XSW](https://www.xenoserieswiki.org/wiki/Pathogen_Blast) | | |
| 204 | +| Gravity Blast | 11 | Raygun | no | substitute | [XSW](https://www.xenoserieswiki.org/wiki/Gravity_Blast) | | |
| 205 | +| Ether Blast | 7 | Raygun | yes | TP replacement only | [XSW](https://www.xenoserieswiki.org/wiki/Ether_Blast) | | |
| 206 | +| Novalibrium | 8 | Photon Saber | yes | TP replacement only | [XSW](https://www.xenoserieswiki.org/wiki/Novalibrium) | | |
| 207 | + | |
| 208 | +**Rejected all-character Game8 candidates:** Burning Slash (Longsword), Tornado Blade (Longsword), Cool Off (Gatling Gun), Defensive Stance (Longsword), Bullet Twister (Gatling Gun), Bullet Storm (Gatling Gun), Missile Volley (Gatling Gun), Hellfire (Gatling Gun). None matches Doug's weapon pair. The [dedicated Doug guide](https://game8.co/games/Xenoblade-Chronicles-X/archives/507626) is distinct and has useful legal choices; its Galactic Cataclysm rank is not Doug's personal unlock rank. | |
| 209 | + | |
| 210 | +## Lao | |
| 211 | + | |
| 212 | +**Candidate evidence.** Game8's [Lao Best Build](https://game8.co/games/Xenoblade-Chronicles-X/archives/506554) recommends an electric/Shock ranged role and the Arts Arcing Horn, Balance Breaker, Trident Buster, Overwhelm, Shrapnel, Afterburner, Eagle Eye, and Ghost Sniper. That list contains three TP Arts: Trident Buster, Afterburner, Ghost Sniper. Reddit's AI-focused guide independently agrees on ranged Electric/Shock DPS, but gives a different list and warns the AI can spend TP poorly. The two sources recur on Shock/ranged DPS, not one exact eight-Art set. | |
| 213 | + | |
| 214 | +**Final Arts, in order:** `Balance Breaker`, `Arcing Horn`, `Trident Buster`, `Overwhelm`, `Shrapnel`, `Eagle Eye`, `Ghost Sniper`, `Intercept`. | |
| 215 | + | |
| 216 | +Arcing Horn lowers Electric resistance; Trident Buster supplies Electric damage and Shock; Ghost Sniper gives ranged accuracy/critical/TP support. Non-TP Javelin and Sniper Arts round out damage and control. This keeps the guide's Shock core but drops TP-costing Afterburner to meet the cap, replacing it with non-TP Intercept. Trident Buster and Ghost Sniper are the only TP Arts. The final Skills below reinforce the Electric/Shock condition rather than overloading the Art bar with more TP attacks. | |
| 217 | + | |
| 218 | +**Ordered Art substitutes:** `First Down`, `Sidewinder`, `Spiral Horn`, `Hair Trigger`, `Hawkeye`, `Raijin`, `Afterburner`. The first five do not spend TP. Raijin and Afterburner are TP replacements only. Lao becomes permanently unplayable after Chapter 9 in the XSW story record, so his fixed build matters only while he remains available; do not describe him as a post-story party option. | |
| 219 | + | |
| 220 | +**Final Skills, in order:** `Knock 'n' Shock`, `Conductive Strike`, `Electric Boost` (3/3). The first two recur in Game8 and the independent AI guide. Electric Boost is preferred over Game8's TP Overdrive alternative for direct Electric/Shock synergy. Ordered alternatives: `Killshot`, `Piscinoid Slayer`, `Long Shot`, `Quick Reload`, `TP Overdrive`; the latter is an Overdrive/TP alternative, not an additional slot. | |
| 221 | + | |
| 222 | +**Weapon recommendation:** Candid & Credible Trigger Sniper Rifle + Bolide Javelin, both AM Level 1. C&C's page says every weapon other than Dual Guns and Shield is Electric, so these two series match Lao's Electric Arts/Skills. C&C unlocks after Chapter 5; its listed Level 1 series require no further R&D. Before that gate, use Sakuraba Sniper Rifle Series + Spear Series, also AM Level 1, as a physical alternative. This sacrifices the C&C Electric weapon attribute; the fixed Electric Arts retain their Art attribute. | |
| 223 | + | |
| 224 | +**Armor recommendation:** Candid & Credible Medium Wear: Sights, Encaser, Grip, Distancers, at AM Level 1 after the Chapter 5 manufacturer gate. C&C ground armor trends high-defense. Light Wear is available at AM Level 2 after 7,000 R&D points and trades defense for higher attribute resistance, especially Gravity; use it when that resistance profile matters. Sakuraba Medium Wear is the pre-gate alternative. Lao's chapter-limited availability makes the C&C gate relevant but reachable. | |
| 225 | + | |
| 226 | +### Lao Art facts | |
| 227 | + | |
| 228 | +| Art | Rank | Weapon | TP | Use | Source | | |
| 229 | +|---|---:|---|---|---|---| | |
| 230 | +| Balance Breaker | 1 | Javelin | no | canonical | [XSW](https://www.xenoserieswiki.org/wiki/Balance_Breaker) | | |
| 231 | +| Arcing Horn | 3 | Javelin | no | canonical | [XSW](https://www.xenoserieswiki.org/wiki/Arcing_Horn) | | |
| 232 | +| Trident Buster | 11 | Javelin | yes | canonical | [XSW](https://www.xenoserieswiki.org/wiki/Trident_Buster_(XCX)) | | |
| 233 | +| Overwhelm | 8 | Javelin | no | canonical | [XSW](https://www.xenoserieswiki.org/wiki/Overwhelm) | | |
| 234 | +| Shrapnel | 1 | Sniper Rifle | no | canonical | [XSW](https://www.xenoserieswiki.org/wiki/Shrapnel_(XCX)) | | |
| 235 | +| Eagle Eye | 4 | Sniper Rifle | no | canonical | [XSW](https://www.xenoserieswiki.org/wiki/Eagle_Eye) | | |
| 236 | +| Ghost Sniper | 15 | Sniper Rifle | yes | canonical | [XSW](https://www.xenoserieswiki.org/wiki/Ghost_Sniper) | | |
| 237 | +| Intercept | 12 | Sniper Rifle | no | canonical | [XSW](https://www.xenoserieswiki.org/wiki/Intercept) | | |
| 238 | +| First Down | 2 | Sniper Rifle | no | substitute | [XSW](https://www.xenoserieswiki.org/wiki/First_Down) | | |
| 239 | +| Sidewinder | 7 | Sniper Rifle | no | substitute | [XSW](https://www.xenoserieswiki.org/wiki/Sidewinder_(XCX)) | | |
| 240 | +| Spiral Horn | 6 | Javelin | no | substitute | [XSW](https://www.xenoserieswiki.org/wiki/Spiral_Horn) | | |
| 241 | +| Hair Trigger | 13 | Javelin | no | substitute | [XSW](https://www.xenoserieswiki.org/wiki/Hair_Trigger_(XCX)) | | |
| 242 | +| Hawkeye | 9 | Sniper Rifle | no | substitute | [XSW](https://www.xenoserieswiki.org/wiki/Hawkeye) | | |
| 243 | +| Raijin | 5 | Javelin | yes | TP replacement only | [XSW](https://www.xenoserieswiki.org/wiki/Raijin_(XCX)) | | |
| 244 | +| Afterburner | 14 | Sniper Rifle | yes | guide candidate; TP replacement only | [XSW](https://www.xenoserieswiki.org/wiki/Afterburner) | | |
| 245 | + | |
| 246 | +## Equipment source facts | |
| 247 | + | |
| 248 | +These are the manufacturer's actual product lineups, not the strategy-to-manufacturer heuristic in `src/data/arms.ts`. | |
| 249 | + | |
| 250 | +| Manufacturer | Verified ground offers and gates | Source | | |
| 251 | +|---|---|---| | |
| 252 | +| Sakuraba Industries | Initial AM. AM Level 1 offers Assault, Sniper Rifle, Dual Guns, Machine (Gatling Gun), Raygun, Launchers, Sword (Longsword), Spear (Javelin), Blades (Dual Swords), Shield, Knife, and Saber (Photon Saber) series. Level 2: Light Wear at 1,500 R&D. Level 3: Heavy Wear at 5,000. Level 4/5 gives shop gear two/three Battle Traits at 30,000/80,000. | [Sakuraba Industries](https://www.xenoserieswiki.org/wiki/Sakuraba_Industries) | | |
| 253 | +| Grenada Galactic Group | Initial AM. AM Level 1 offers Avagar Assault Rifle, Retic Sniper Rifle, Gemels Dual Guns, Repethe Gatling Gun, Lastyr Raygun, Psylans Launchers, Slair Longsword, Parce Javelin, Ralzes Dual Swords, Paive Shield, Riv Knife, and Fulge Photon Saber. Level 2: Light Wear at 2,000 R&D. Level 3: Heavy Wear at 6,500. Its product trend is beam-focused and its ground armor is beam-resistant. Level 4/5 gives two/three traits at 36,000/100,000. | [Grenada Galactic Group](https://www.xenoserieswiki.org/wiki/Grenada_Galactic_Group) | | |
| 254 | +| Candid & Credible | Chapter 5 completion unlocks the AM. Level 1 has Assailer Assault Rifle, Trigger Sniper Rifle, Dyads Dual Guns, Crank Gatling Gun, Strobe Raygun, Saboteurs Launchers, Bolide Javelin, Twins Dual Swords, and Haven Shield. All its weapons other than Dual Guns and Shield are Electric. Level 2: Light Wear at 7,000 R&D. Level 3: Heavy Wear at 12,000. It specializes in high-defense ground gear. Level 4/5 gives two/three traits at 60,000/100,000. | [Candid & Credible](https://www.xenoserieswiki.org/wiki/Candid_%26_Credible) | | |
| 255 | + | |
| 256 | +Armor source: [Armor (XCX)](https://www.xenoserieswiki.org/wiki/Armor_(XCX)). Any fighter can wear Light, Medium, or Heavy ground armor. Armor has one defense stat, six attribute resistances, usually one to three fixed Battle Traits, and usually one custom augment slot. Light trades lower defense for higher resistance, especially Gravity; Heavy trades lower resistance for higher defense. Defense matters mainly against physical damage and low-level attacks; attribute resistance is more important against stronger elemental attacks. Shop armor is level-gated at levels 5, 15, 25, and so on. These facts support category-level advice only; they do not establish one numeric best armor item without exact level, item tier, enemy attribute, Battle Traits, and augments. | |
| 257 | + | |
| 258 | +For weight-specific manufacturer piece names, see each source page: Sakuraba Medium is Goggles/Bodywear/Glove/Footwear; Grenada Medium is Spex/Torse/Quantlet/Soales; C&C Medium is Sights/Encaser/Grip/Distancers. C&C Light is Screen/Breaker/Ward/Trudgers and C&C Heavy is Armet/Bulwark/Wrest/Stabilizers. Armor pieces have gender/level availability details; the recommendation names the maker/category, not an unverified fixed four-piece stat roll. Mixed weights are not prescribed. Mix only when comparing the actual piece's Battle Traits/resistances. | |
| 259 | + | |
| 260 | +## Source index | |
| 261 | + | |
| 262 | +- Xeno Series Wiki character mechanics: [Elma](https://www.xenoserieswiki.org/wiki/Elma/Gameplay_(XCX)), [Lin](https://www.xenoserieswiki.org/wiki/Lin/Gameplay), [Irina](https://www.xenoserieswiki.org/wiki/Irina/Gameplay), [Gwin](https://www.xenoserieswiki.org/wiki/Gwin/Gameplay), [Doug](https://www.xenoserieswiki.org/wiki/Doug/Gameplay), [Lao](https://www.xenoserieswiki.org/wiki/Lao/Gameplay). Edition: XCX mechanics also applicable to DE. These pages provide class/weapons, default Arts, personal skill-slot count, and personal progression record; Lao's page states the post-Chapter-9 lockout. | |
| 263 | +- Xeno Series Wiki: [Battle Art (XCX)](https://www.xenoserieswiki.org/wiki/Battle_Art_(XCX)) and [Skill (XCX)](https://www.xenoserieswiki.org/wiki/Skill_(XCX)). Edition: shared XCX/DE mechanics. | |
| 264 | +- Game8 DE builds: [Elma](https://game8.co/games/Xenoblade-Chronicles-X/archives/506520), [Lin](https://game8.co/games/Xenoblade-Chronicles-X/archives/506544), [Irina](https://game8.co/games/Xenoblade-Chronicles-X/archives/506541), [Lao](https://game8.co/games/Xenoblade-Chronicles-X/archives/506554), [all characters, including Gwin and Doug](https://game8.co/games/Xenoblade-Chronicles-X/archives/506659). | |
| 265 | +- Nintendo Life DE all-character build article: [Best Combat Builds for All Characters](https://www.nintendolife.com/guides/xenoblade-chronicles-x-best-combat-builds-for-all-characters). Search indexing exposed Elma and Irina advice. The reader redirected to the article's comment feed, so I did not use it to assert any unobserved details beyond those indexed build snippets. | |
| 266 | +- Reddit community source: [A Guide to Xenoblade X DE Party Member Builds](https://www.reddit.com/r/Xenoblade_Chronicles/comments/1jnyxkz/a_guide_to_xenoblade_x_de_party_member_builds/). Search indexing returned AI-specific role/build excerpts; direct reader fetch was blocked. Treat as corroboration with reduced confidence, not proof of exact Art values. | |
| 267 | +- Manufacturer and armor references: [Arms Manufacturer](https://www.xenoserieswiki.org/wiki/Arms_Manufacturer), [Sakuraba Industries](https://www.xenoserieswiki.org/wiki/Sakuraba_Industries), [Grenada Galactic Group](https://www.xenoserieswiki.org/wiki/Grenada_Galactic_Group), [Candid & Credible](https://www.xenoserieswiki.org/wiki/Candid_%26_Credible), [Armor (XCX)](https://www.xenoserieswiki.org/wiki/Armor_(XCX)). Edition: XCX; manufacturer pages include DE-specific unlock annotations where applicable. | |
| 268 | + | |
| 269 | +No claim of an exhaustive internet search or broad community consensus. Evidence gap remains strongest for legal AI-specific builds for Gwin and Doug, and for numeric armor-item rankings independent of item level, Battle Traits, and enemy matchup. | |
| 270 | +## Skill progression facts | |
| 271 | + | |
| 272 | +The rank values below come from each companion's current personal unlock list in `src/data/companions.ts`; linked XSW gameplay pages cross-check each character's weapon/class and slot count. They are not Cross class-rank values. Canonical arrays are ordered for integration priority, not unlock-rank order. | |
| 273 | + | |
| 274 | +| Companion | Slots | Canonical Skills in order (personal unlock rank) | Ordered substitutes (personal unlock rank) | | |
| 275 | +|---|---:|---|---| | |
| 276 | +| [Elma](https://www.xenoserieswiki.org/wiki/Elma/Gameplay_(XCX)) | 4 | Agile Gunslinger (7), Steady Hand (9), Background Noise (11), Master Edge (13) | Mortal Enemy (15), Hellhound (16), Crisis Catalyst (17), Phantom Counter (18) | | |
| 277 | +| [Lin](https://www.xenoserieswiki.org/wiki/Lin/Gameplay) | 3 | Shield Screen (13), Dirty Fighter (16), Stand Strong (17) | Steel Flesh (7), Mighty Muscle (9), Dismantler (11), Long Topple (15) | | |
| 278 | +| [Irina](https://www.xenoserieswiki.org/wiki/Irina/Gameplay) | 4 | Inner Search (7), Healing Touch (11), High Tension (13); fourth left empty because other personal Skills need Sleep/Control | none for fixed support bar | | |
| 279 | +| [Gwin](https://www.xenoserieswiki.org/wiki/Gwin/Gameplay) | 3 | Unwavering Courage (7), Flame Trigger (9), Conflagrant Edge (18) | Mighty Muscle (11), Auto Melee Boost (13), Healing Aura (15), Weapon Guard (16), Theroid Slayer (17) | | |
| 280 | +| [Doug](https://www.xenoserieswiki.org/wiki/Doug/Gameplay) | 4 | Inner Search (7), Beam Boost (9), High Tension (11), Aura Assault (16) | Mechanoid Slayer (13), Knight's Soul (15), Supreme Sword (17) | | |
| 281 | +| [Lao](https://www.xenoserieswiki.org/wiki/Lao/Gameplay) | 3 | Knock 'n' Shock (11), Conductive Strike (17), Electric Boost (9) | Killshot (7), Piscinoid Slayer (13), Long Shot (15), Quick Reload (16), TP Overdrive (18) | | |
| 282 | + | |
| 283 | +No mode-specific override appears in these recommendations. The selected Skills are ground Skills; any Skell-only Skill remains excluded from the ground rationale. | |
| new file mode 100644 | |||
| @@ -0,0 +1,283 @@ | |||
| 1 | +# Companion build research: Elma, Lin, Irina, Gwin, Doug, Lao | ||
| 2 | + | ||
| 3 | +Research slice for Rickub #1. Covers these six companions only. Cross is out of scope and unchanged. Remaining roster coverage belongs to the other research slices. | ||
| 4 | + | ||
| 5 | +## Evidence and rules | ||
| 6 | + | ||
| 7 | +Preferred edition is Xenoblade Chronicles X: Definitive Edition (DE). Xeno Series Wiki character and equipment pages describe shared XCX mechanics; I cross-checked character weapon pairs, default Arts, and skill-slot counts against their gameplay pages. Game8 pages explicitly identify themselves as DE guides. Nintendo Life also has a DE-era all-character build article. Reddit's party-build guide was returned in search results, but direct fetch was blocked by Reddit; use its reported advice as low-weight evidence, not as a verified transcript. | ||
| 8 | + | ||
| 9 | +XSW's [Battle Art (XCX)](https://www.xenoserieswiki.org/wiki/Battle_Art_(XCX)) page says Arts are weapon-bound, including buffs and auras; each character can equip up to eight; AI companions use Arts automatically. Its TP section says TP Arts consume 1,000 TP, including all auras and some support Arts. `research/art-effects.json` is the project's Xeno Series Wiki semantic-data extraction (2026-08-04). The Art fact tables below record each candidate's specific weapon, TP flag, and direct XSW page. The rank column is the rank in the current `src/data/companions.ts` personal kit, not a Cross class-rank recommendation from a guide. | ||
| 10 | + | ||
| 11 | +XSW's [Skill (XCX)](https://www.xenoserieswiki.org/wiki/Skill_(XCX)) page confirms each non-Cross character has a fixed skill-slot count. Only Stellar Entry and Synchrony are active while in a Skell; the other Skills are ground-only. The builds below are persistent ground kits. Skell equipment/packages remain separate; no runtime Skell Skill swap is recommended. | ||
| 12 | + | ||
| 13 | +### Source independence and disagreements | ||
| 14 | + | ||
| 15 | +- Game8's dedicated Elma, Lin, Irina, and Lao pages are character-specific DE build sources. Nintendo Life provides another DE all-character list, but several lists are very similar. I count matching lists as one recommendation cluster, not independent consensus, unless the advice also recurs in a separately authored community discussion. | ||
| 16 | +- Reddit's 2025 DE party-build guide independently favors AI-aware support for Irina, tank/topple Lin, positional DPS Elma, and a ranged Shock build for Lao. It also warns that AI positioning and TP use are imperfect. Direct Reddit fetch failed, so these are search-indexed claims, not fully inspected text. | ||
| 17 | +- Game8's [dedicated Doug DE build](https://game8.co/games/Xenoblade-Chronicles-X/archives/507626) supplies legal Photon Saber/Raygun candidates, unlike its swapped all-character Doug row. Its Galactic Cataclysm rank 8 claim conflicts with Doug's personal rank 15; the final build keeps the compatible core, then makes editorial AI-support and TP choices. No independent exact eight-Art consensus exists for Doug or Gwin. Gwin's all-character Game8 list uses weapons he cannot equip. | ||
| 18 | +- Game8's Lin table does not mark Drum Roll as TP-consuming. XSW's [Drum Roll (XCX)](https://www.xenoserieswiki.org/wiki/Drum_Roll_(XCX)) data explicitly marks it `(TP)`. The XSW game-data caption wins; Lin's TP count includes Drum Roll. | ||
| 19 | +- Guides often show class-rank unlocks for player builds. Those ranks are not used as NPC progression facts. Companion unlock ranks come from the current companion roster and the XSW character gameplay record. | ||
| 20 | + | ||
| 21 | +## Quick matrix | ||
| 22 | + | ||
| 23 | +| Companion | XSW personal class and weapons | Skill slots | Evidence-backed role | Final TP Arts | | ||
| 24 | +|---|---|---:|---|---:| | ||
| 25 | +| Elma | Full Metal Jaguar; Dual Swords + Dual Guns | 4 | Positional DPS with party Decoy | Ghost Factory, Executioner | | ||
| 26 | +| Lin | Shield Trooper; Shield + Gatling Gun | 3 | Tank, Topple, melee follow-up | Wild Down, Drum Roll | | ||
| 27 | +| Irina | Psycorruptor+; Knife + Assault Rifle | 4 | Healing, TP, barrier and buff support | Last Stand, Energy Source | | ||
| 28 | +| Gwin | Samurai Gunner; Longsword + Assault Rifle | 3 | Thermal-leaning ranged/melee hybrid | Defensive Stance, Burst Grenade | | ||
| 29 | +| Doug | Blast Fencer+; Photon Saber + Raygun | 4 | Beam-leaning hybrid support | Geolibrium, Astral Heal | | ||
| 30 | +| Lao | Partisan Eagle; Javelin + Sniper Rifle | 3 | Ranged Electric/Shock DPS; story-limited | Trident Buster, Ghost Sniper | | ||
| 31 | + | ||
| 32 | +All six have eight canonical Arts, within their legal weapon pairs. Each canonical kit has exactly two TP Arts. Substitute arrays put non-TP choices before TP alternatives. A TP substitute may replace an unavailable canonical Art only when resulting loadout remains at two or fewer TP Arts. Never append a third TP Art to fill an empty slot. Every chosen Skill is in that companion's personal unlock list and the final Skill count stays within its slot cap; Irina intentionally uses three of four. | ||
| 33 | + | ||
| 34 | +## Elma | ||
| 35 | + | ||
| 36 | +**Candidate evidence.** Game8's [Elma Best Build](https://game8.co/games/Xenoblade-Chronicles-X/archives/506520) and the Nintendo Life all-character build recommend a positional melee/dual-weapon DPS kit with Primer, Electric Surge, Shadowstrike, Hundred Shells, Sliding Slinger, Side Slash, Ghost Factory, and Thirsty Edge. The three TP Arts are Hundred Shells, Ghost Factory, and Thirsty Edge, so that exact set fails the two-TP contract. Both sources warn that AI Elma may miss positional bonuses. Reddit independently reports the same AI weakness and proposes a different critical/positional skill package. Evidence supports the DPS role, not one settled AI loadout. | ||
| 37 | + | ||
| 38 | +**Final Arts, in order:** `Primer`, `Sliding Slinger`, `Shadowstrike`, `Side Slash`, `Violent Streak`, `Electric Surge`, `Ghost Factory`, `Executioner`. | ||
| 39 | + | ||
| 40 | +Primer and Sliding Slinger sustain TP; Violent Streak supplies another non-spending TP route through criticals. Shadowstrike and Side Slash retain positional damage, Electric Surge adds low-HP Ether damage, Ghost Factory gives nearby allies Decoy, and Executioner is the sole additional TP damage Art. Ghost Factory plus Executioner use two TP Arts. This trades the guides' TP-heavy Hundred Shells/Thirsty Edge choices for a non-TP critical Art and ranged finisher. AI positioning remains a limitation, not a claim that the AI executes player combos reliably. | ||
| 41 | + | ||
| 42 | +**Ordered Art substitutes:** `Upper Hand`, `Blood Sacrifice`, `Stream Edge`, `Thirsty Edge`, `Hundred Shells`. Upper Hand and Blood Sacrifice do not spend TP; Blood Sacrifice costs HP, so keep it behind Upper Hand for AI safety. The final three are TP options. They are replacements only, and must be skipped if two other TP Arts remain equipped. | ||
| 43 | + | ||
| 44 | +**Final Skills, in order:** `Agile Gunslinger`, `Steady Hand`, `Background Noise`, `Master Edge` (4/4). Reddit's AI-oriented list supports Agile Gunslinger and Steady Hand; Game8 supports Background Noise and Master Edge. This is an editorial blend, not a recurring four-skill consensus. `Mortal Enemy`, `Hellhound`, `Crisis Catalyst`, `Phantom Counter` are ordered alternatives from Elma's legal skill list. The skill substitutions do not expand the four-slot cap. | ||
| 45 | + | ||
| 46 | +**Weapon recommendation:** Sakuraba Industries Dual Guns Series + Blades Series (Dual Swords), both in the AM Level 1 offering. This is an actual legal two-weapon portfolio. Sakuraba's page describes its weapons as stable, with weaker resistance coverage beyond physical; do not assume the maker grants an Elma-specific bonus. Grenada Galactic Group is a legal alternative with Gemels Dual Guns + Ralzes Dual Swords at AM Level 1, from its beam-focused product line. Choose weapon attribute and Battle Traits for enemy matchup; Art damage using the weapon attribute follows the equipped weapon. | ||
| 47 | + | ||
| 48 | +**Armor recommendation:** Candid & Credible Light Wear: Screen, Breaker, Ward, Trudgers. C&C ground armor trends high-defense; Light Wear trades lower defense for higher attribute resistance, especially Gravity. This is a matchup-sensitive editorial choice for a high-dodge DPS, not a community standard. C&C unlocks after Chapter 5; Light Wear needs AM Level 2 and 7,000 R&D points. Until then, use available Medium Wear (Sakuraba or Grenada at AM Level 1), or C&C Medium after its story gate. Use item traits/resistances over brand name when the enemy profile is known. | ||
| 49 | + | ||
| 50 | +### Elma Art facts | ||
| 51 | + | ||
| 52 | +Ranks are current personal-kit ranks. `TP=yes` means the Art consumes TP. URLs open the source Art record. | ||
| 53 | + | ||
| 54 | +| Art | Rank | Weapon | TP | Use | Source | | ||
| 55 | +|---|---:|---|---|---|---| | ||
| 56 | +| Primer | 7 | Dual Guns | no | canonical | [XSW](https://www.xenoserieswiki.org/wiki/Primer) | | ||
| 57 | +| Sliding Slinger | 1 | Dual Guns | no | canonical | [XSW](https://www.xenoserieswiki.org/wiki/Sliding_Slinger_(XCX)) | | ||
| 58 | +| Shadowstrike | 1 | Dual Swords | no | canonical | [XSW](https://www.xenoserieswiki.org/wiki/Shadowstrike) | | ||
| 59 | +| Side Slash | 5 | Dual Swords | no | canonical | [XSW](https://www.xenoserieswiki.org/wiki/Side_Slash) | | ||
| 60 | +| Violent Streak | 9 | Dual Guns | no | canonical | [XSW](https://www.xenoserieswiki.org/wiki/Violent_Streak_(XCX)) | | ||
| 61 | +| Electric Surge | 12 | Dual Swords | no | canonical | [XSW](https://www.xenoserieswiki.org/wiki/Electric_Surge) | | ||
| 62 | +| Ghost Factory | 13 | Dual Guns | yes | canonical | [XSW](https://www.xenoserieswiki.org/wiki/Ghost_Factory) | | ||
| 63 | +| Executioner | 14 | Dual Guns | yes | canonical | [XSW](https://www.xenoserieswiki.org/wiki/Executioner_(XCX)) | | ||
| 64 | +| Upper Hand | 3 | Dual Swords | no | substitute | [XSW](https://www.xenoserieswiki.org/wiki/Upper_Hand) | | ||
| 65 | +| Blood Sacrifice | 11 | Dual Swords | no | substitute; HP cost | [XSW](https://www.xenoserieswiki.org/wiki/Blood_Sacrifice) | | ||
| 66 | +| Stream Edge | 2 | Dual Swords | yes | TP replacement only | [XSW](https://www.xenoserieswiki.org/wiki/Stream_Edge_(XCX)) | | ||
| 67 | +| Thirsty Edge | 8 | Dual Swords | yes | TP replacement only | [XSW](https://www.xenoserieswiki.org/wiki/Thirsty_Edge) | | ||
| 68 | +| Hundred Shells | 15 | Dual Swords | yes | guide candidate; not canonical | [XSW](https://www.xenoserieswiki.org/wiki/Hundred_Shells_(XCX)) | | ||
| 69 | + | ||
| 70 | +## Lin | ||
| 71 | + | ||
| 72 | +**Candidate evidence.** Game8's [Lin Best Build](https://game8.co/games/Xenoblade-Chronicles-X/archives/506544) and the Reddit AI discussion agree on a tank/Topple role, but the Art lists differ. Game8 recommends Wild Down, Wild Smash, Drum Roll, Thermal Payload, Supershield, Reality Rift, Trash Talk, and Cool Off. The Reddit AI proposal prefers Shield Wall and Fire Carnival; it also cautions against slow Arts. Drum Roll is TP according to XSW, despite Game8's missing marker. The published Game8 set therefore contains four TP Arts when audited against XSW, not the three its labels suggest. | ||
| 73 | + | ||
| 74 | +**Final Arts, in order:** `Wild Down`, `Wild Smash`, `Trash Talk`, `Drum Roll`, `Reality Rift`, `Fire Carnival`, `Shield Wall`, `Bullet Storm`. | ||
| 75 | + | ||
| 76 | +Wild Down applies Topple; Wild Smash and Drum Roll reward the toppled/melee-combo state. Trash Talk supports aggro and TP generation. Shield Wall supplies a non-TP barrier; Reality Rift and Fire Carnival add control/damage. Bullet Storm deals weapon damage and can Flinch humanoids, with no aura prerequisite. Wild Down plus Drum Roll are the only TP Arts. [Cool Off](https://www.xenoserieswiki.org/wiki/Cool_Off_(XCX)) was rejected because it consumes an active aura, which Lin's fixed bar lacks. | ||
| 77 | + | ||
| 78 | +**Ordered Art substitutes:** `Flame Cloak`, `Bombardier`, `Supershield`, `Thermal Payload`. The first two do not spend TP. Supershield and Thermal Payload are TP replacements only; never equip them on top of both Wild Down and Drum Roll. | ||
| 79 | + | ||
| 80 | +**Final Skills, in order:** `Shield Screen`, `Dirty Fighter`, `Stand Strong` (3/3). This matches Game8's shield mitigation, topple damage, and resistance rationale. Ordered progression alternatives: `Steel Flesh`, `Mighty Muscle`, `Dismantler`, `Long Topple`. | ||
| 81 | + | ||
| 82 | +**Weapon recommendation:** Sakuraba Industries Shield Series + Machine Series (Gatling Gun), both AM Level 1. Its physical/stable product trend fits Shield damage, but does not itself add a character bonus. Grenada's Paive Shield + Repethe Gatling Gun are legal AM Level 1 alternatives; C&C's Haven Shield + Crank Gatling are another pair after Chapter 5, with C&C's non-Shield weapons electric. | ||
| 83 | + | ||
| 84 | +**Armor recommendation:** Candid & Credible Heavy Wear: Armet, Bulwark, Wrest, Stabilizers. Heavy Wear gives higher defense but lower attribute resistance; C&C's ground gear trends high-defense. This fits a tank only when incoming damage profile allows the resistance trade. C&C unlocks after Chapter 5 and Heavy Wear needs AM Level 3 plus 12,000 R&D points. Before that, use Sakuraba Medium Wear at AM Level 1, or Sakuraba Heavy after its AM Level 3 gate. Prefer Medium Wear for elemental-heavy encounters. | ||
| 85 | + | ||
| 86 | +### Lin Art facts | ||
| 87 | + | ||
| 88 | +| Art | Rank | Weapon | TP | Use | Source | | ||
| 89 | +|---|---:|---|---|---|---| | ||
| 90 | +| Wild Down | 1 | Shield | yes | canonical | [XSW](https://www.xenoserieswiki.org/wiki/Wild_Down_(XCX)) | | ||
| 91 | +| Wild Smash | 2 | Shield | no | canonical | [XSW](https://www.xenoserieswiki.org/wiki/Wild_Smash) | | ||
| 92 | +| Trash Talk | 4 | Shield | no | canonical | [XSW](https://www.xenoserieswiki.org/wiki/Trash_Talk) | | ||
| 93 | +| Drum Roll | 14 | Shield | yes | canonical; cost confirmed in XSW caption | [XSW](https://www.xenoserieswiki.org/wiki/Drum_Roll_(XCX)) | | ||
| 94 | +| Reality Rift | 10 | Shield | no | canonical | [XSW](https://www.xenoserieswiki.org/wiki/Reality_Rift) | | ||
| 95 | +| Fire Carnival | 1 | Gatling Gun | no | canonical | [XSW](https://www.xenoserieswiki.org/wiki/Fire_Carnival) | | ||
| 96 | +| Shield Wall | 12 | Shield | no | canonical | [XSW](https://www.xenoserieswiki.org/wiki/Shield_Wall_(XCX)) | | ||
| 97 | +| Bullet Storm | 8 | Gatling Gun | no | canonical; weapon damage and humanoid Flinch | [XSW](https://www.xenoserieswiki.org/wiki/Bullet_Storm) | | ||
| 98 | +| Flame Cloak | 3 | Shield | no | substitute | [XSW](https://www.xenoserieswiki.org/wiki/Flame_Cloak) | | ||
| 99 | +| Bombardier | 7 | Shield | no | substitute | [XSW](https://www.xenoserieswiki.org/wiki/Bombardier) | | ||
| 100 | +| Cool Off | 15 | Gatling Gun | no | rejected: consumes active aura to restore TP, none equipped | [XSW](https://www.xenoserieswiki.org/wiki/Cool_Off_(XCX)) | | ||
| 101 | +| Supershield | 9 | Shield | yes | TP replacement only | [XSW](https://www.xenoserieswiki.org/wiki/Supershield) | | ||
| 102 | +| Thermal Payload | 5 | Gatling Gun | yes | TP replacement only | [XSW](https://www.xenoserieswiki.org/wiki/Thermal_Payload_(XCX)) | | ||
| 103 | + | ||
| 104 | +## Irina | ||
| 105 | + | ||
| 106 | +**Candidate evidence.** Game8's [Irina Best Build](https://game8.co/games/Xenoblade-Chronicles-X/archives/506541) and Nintendo Life independently show a support list around Quick Cannon, Flash Grenade, Last Stand, Medic Free, Absorber Skin, Repair, Smooth Recovery, and Energy Source. The guides emphasize TP support, healing, and barriers; both also distinguish a less reliable Sleep/Control build. Reddit likewise favors support for AI Irina. The candidate list has three TP Arts: Last Stand, Medic Free, and Energy Source. | ||
| 107 | + | ||
| 108 | +**Final Arts, in order:** `Smooth Recovery`, `Quick Cannon`, `Repair`, `Assault Hammer`, `Last Stand`, `Energy Source`, `Absorber Skin`, `Flash Grenade`. | ||
| 109 | + | ||
| 110 | +Smooth Recovery, Repair, and Absorber Skin cover healing, cleanse, and barrier support. Last Stand and Energy Source provide team TP/potential support. Quick Cannon and Flash Grenade keep ranged damage/Blackout; Assault Hammer is a non-TP Topple option. Medic Free is dropped to keep the two-TP cap. This is a support build, not the player-controlled Psycorruptor Sleep/Control variant; late-game enemies can resist status effects. | ||
| 111 | + | ||
| 112 | +**Ordered Art substitutes:** `Furious Blast`, `Screamer`, `Medic Free`. The first two do not spend TP; Screamer may help against Sleep-susceptible early enemies but does not activate Control-dependent Skills. Medic Free is a TP replacement only, not a ninth Art. [Servant Sacrifice](https://xenoblade.fandom.com/wiki/Servant_Sacrifice) requires a target already under Control to grant HP/TP; it neither sacrifices Irina's HP nor inflicts Control. The fixed bar has no Control Art, so it is not an equipped substitute. | ||
| 113 | + | ||
| 114 | +**Final Skills, in order:** `Inner Search`, `Healing Touch`, `High Tension` (3/4). These three support Skills appear in Game8's guide. [King's Decree](https://xenoblade.fandom.com/wiki/King%27s_Decree) only affects Control. Irina's remaining personal Skills depend on Sleep or Control, which this fixed support bar does not provide. Rather than equip an inert fourth Skill, its last slot stays empty at every rank; no skill substitutes are selected. | ||
| 115 | + | ||
| 116 | +**Weapon recommendation:** Sakuraba Industries Assault Series + Knife Series, both AM Level 1. It covers both personal weapon types. Grenada's Avagar Assault Rifle + Riv Knife are AM Level 1 alternatives from its beam-focused weapon portfolio. Arts with fixed Thermal/Electric attributes keep those attributes; weapon-damage Arts use the equipped weapon attribute. | ||
| 117 | + | ||
| 118 | +**Armor recommendation:** Grenada Medium Wear: Spex, Torse, Quantlet, Soales, available at AM Level 1. Grenada's manufacturer page identifies beam-resistant ground gear as a product strength; that can protect a support character without defaulting to Heavy Wear. Sakuraba Medium Wear is the initial-manufacturer alternative. C&C Medium Wear is another option after Chapter 5 for its high-defense product trend. Choose item traits and the enemy's attribute, not a universal armor brand. | ||
| 119 | + | ||
| 120 | +### Irina Art facts | ||
| 121 | + | ||
| 122 | +| Art | Rank | Weapon | TP | Use | Source | | ||
| 123 | +|---|---:|---|---|---|---| | ||
| 124 | +| Smooth Recovery | 5 | Knife | no | canonical | [XSW](https://www.xenoserieswiki.org/wiki/Smooth_Recovery) | | ||
| 125 | +| Quick Cannon | 10 | Assault Rifle | no | canonical | [XSW](https://www.xenoserieswiki.org/wiki/Quick_Cannon) | | ||
| 126 | +| Repair | 1 | Knife | no | canonical | [XSW](https://www.xenoserieswiki.org/wiki/Repair) | | ||
| 127 | +| Assault Hammer | 12 | Assault Rifle | no | canonical | [XSW](https://www.xenoserieswiki.org/wiki/Assault_Hammer) | | ||
| 128 | +| Last Stand | 15 | Assault Rifle | yes | canonical | [XSW](https://www.xenoserieswiki.org/wiki/Last_Stand_(XCX)) | | ||
| 129 | +| Energy Source | 14 | Knife | yes | canonical | [XSW](https://www.xenoserieswiki.org/wiki/Energy_Source) | | ||
| 130 | +| Absorber Skin | 11 | Knife | no | canonical | [XSW](https://www.xenoserieswiki.org/wiki/Absorber_Skin) | | ||
| 131 | +| Flash Grenade | 7 | Assault Rifle | no | canonical | [XSW](https://www.xenoserieswiki.org/wiki/Flash_Grenade) | | ||
| 132 | +| Furious Blast | 3 | Assault Rifle | no | substitute | [XSW](https://www.xenoserieswiki.org/wiki/Furious_Blast) | | ||
| 133 | +| Screamer | 4 | Knife | no | early situational Sleep substitute | [XSW](https://www.xenoserieswiki.org/wiki/Screamer_(XCX)) | | ||
| 134 | +| Servant Sacrifice | 13 | Knife | no | rejected: requires existing Control, restores HP/TP | [XSW](https://www.xenoserieswiki.org/wiki/Servant_Sacrifice) | | ||
| 135 | +| Medic Free | 9 | Assault Rifle | yes | TP replacement only | [XSW](https://www.xenoserieswiki.org/wiki/Medic_Free) | | ||
| 136 | + | ||
| 137 | +## Gwin | ||
| 138 | + | ||
| 139 | +**Candidate evidence.** Gwin's XSW page identifies Samurai Gunner, Longsword + Assault Rifle, three skill slots, and his default Arts. Game8's [all-character build article](https://game8.co/games/Xenoblade-Chronicles-X/archives/506659) labels Gwin a ranged attacker but lists Shadowrunner, Hundred Shells, Electric Surge, Back Slash, Side Slash, Sliding Slinger, Sky High, and Primer. XSW lists those Arts as Dual Swords or Dual Guns Arts. None matches Gwin's Longsword + Assault Rifle, so none is admissible. This is a source disagreement, not a basis to relabel the guide as Cross-only. | ||
| 140 | + | ||
| 141 | +**Final Arts, in order:** `Defensive Stance`, `Power Dive`, `Furious Blast`, `Magnum Edge`, `Flash Grenade`, `Grenade Blitz`, `Takedown Shot`, `Burst Grenade`. | ||
| 142 | + | ||
| 143 | +Defensive Stance gives an AI-safe defensive aura; Power Dive grants Supercharge/evasion. Grenade Blitz and Burst Grenade provide Thermal damage; Flash Grenade adds Electric damage/Blackout, and Takedown Shot adds mechanoid Topple. Burst Grenade and Defensive Stance are the only TP Arts. This thermal-leaning mixed weapon kit aligns with Gwin's legal Arts and Conflagrant Edge/Flame Trigger Skills. The specific composition is editorial because the published Game8 candidate is weapon-incompatible. | ||
| 144 | + | ||
| 145 | +**Ordered Art substitutes:** `Rising Blade`, `Ultraslash`, `Tornado Blade`, `Decoy Round`, `Incendiary Edge`, `Gunforce`. The first four are non-TP; the last two cost TP and may replace only, never add to, a two-TP loadout. | ||
| 146 | + | ||
| 147 | +**Final Skills, in order:** `Unwavering Courage`, `Flame Trigger`, `Conflagrant Edge` (3/3). Flame Trigger and Conflagrant Edge support the thermal Arts; Unwavering Courage is an early legal ground Skill. This is an editorial thermal build, not a source-backed consensus. Ordered ground-Skill alternatives: `Mighty Muscle`, `Auto Melee Boost`, `Healing Aura`, `Weapon Guard`, `Theroid Slayer`. No Skell-only Skill is included. | ||
| 148 | + | ||
| 149 | +**Weapon recommendation:** Sakuraba Industries Assault Series + Sword Series (Longsword), both AM Level 1. The series cover Gwin's actual pair and are the most accessible portfolio. Grenada's Avagar Assault Rifle + Slair Longsword are same-type AM Level 1 alternatives; Grenada's beam focus does not itself boost Gwin's Thermal Arts. | ||
| 150 | + | ||
| 151 | +**Armor recommendation:** Sakuraba Medium Wear: Goggles, Bodywear, Glove, Footwear, at AM Level 1. This is a conservative availability choice, not a claim of a unique Medium stat bonus. C&C Medium Wear is an alternative after Chapter 5; its ground line trends high-defense. Grenada Medium Wear is also available from the initial manufacturer pair and trends beam resistance. For all three, compare the exact piece's traits/resistances before buying. | ||
| 152 | + | ||
| 153 | +### Gwin Art facts | ||
| 154 | + | ||
| 155 | +| Art | Rank | Weapon | TP | Use | Source | | ||
| 156 | +|---|---:|---|---|---|---| | ||
| 157 | +| Defensive Stance | 3 | Longsword | yes | canonical | [XSW](https://www.xenoserieswiki.org/wiki/Defensive_Stance) | | ||
| 158 | +| Power Dive | 2 | Assault Rifle | no | canonical | [XSW](https://www.xenoserieswiki.org/wiki/Power_Dive) | | ||
| 159 | +| Furious Blast | 1 | Assault Rifle | no | canonical | [XSW](https://www.xenoserieswiki.org/wiki/Furious_Blast) | | ||
| 160 | +| Magnum Edge | 4 | Longsword | no | canonical | [XSW](https://www.xenoserieswiki.org/wiki/Magnum_Edge_(XCX)) | | ||
| 161 | +| Flash Grenade | 11 | Assault Rifle | no | canonical | [XSW](https://www.xenoserieswiki.org/wiki/Flash_Grenade) | | ||
| 162 | +| Grenade Blitz | 13 | Assault Rifle | no | canonical | [XSW](https://www.xenoserieswiki.org/wiki/Grenade_Blitz) | | ||
| 163 | +| Takedown Shot | 15 | Assault Rifle | no | canonical | [XSW](https://www.xenoserieswiki.org/wiki/Takedown_Shot) | | ||
| 164 | +| Burst Grenade | 6 | Assault Rifle | yes | canonical | [XSW](https://www.xenoserieswiki.org/wiki/Burst_Grenade) | | ||
| 165 | +| Rising Blade | 1 | Longsword | no | substitute | [XSW](https://www.xenoserieswiki.org/wiki/Rising_Blade) | | ||
| 166 | +| Ultraslash | 5 | Longsword | no | substitute | [XSW](https://www.xenoserieswiki.org/wiki/Ultraslash_(XCX)) | | ||
| 167 | +| Tornado Blade | 9 | Longsword | no | substitute | [XSW](https://www.xenoserieswiki.org/wiki/Tornado_Blade) | | ||
| 168 | +| Decoy Round | 8 | Assault Rifle | no | substitute | [XSW](https://www.xenoserieswiki.org/wiki/Decoy_Round) | | ||
| 169 | +| Incendiary Edge | 12 | Longsword | yes | TP replacement only | [XSW](https://www.xenoserieswiki.org/wiki/Incendiary_Edge) | | ||
| 170 | +| Gunforce | 14 | Assault Rifle | yes | TP replacement only | [XSW](https://www.xenoserieswiki.org/wiki/Gunforce) | | ||
| 171 | + | ||
| 172 | +**Rejected Game8 candidates:** Shadowrunner (Dual Swords), Hundred Shells (Dual Swords), Electric Surge (Dual Swords), Back Slash (Dual Swords), Side Slash (Dual Swords), Sliding Slinger (Dual Guns), Sky High (Dual Guns), Primer (Dual Guns). Every one conflicts with Gwin's weapon pair. See the linked [Game8 page](https://game8.co/games/Xenoblade-Chronicles-X/archives/506659) and each linked [Art fact](https://www.xenoserieswiki.org/wiki/Sky_High). | ||
| 173 | + | ||
| 174 | +## Doug | ||
| 175 | + | ||
| 176 | +**Candidate evidence.** XSW identifies Doug's pair as Photon Saber + Raygun, four skill slots, and the default kit Starfall Blade, Starfall Rondo, Geolibrium, Beam Barrage. Game8's [dedicated Doug DE guide](https://game8.co/games/Xenoblade-Chronicles-X/archives/507626) recommends legal Starfall Blade, Starfall Rondo, Starlight Duster, Geolibrium, Myopic Screen, Gravity Blast, and Pathogen Blast, plus Galactic Cataclysm at a claimed class rank 8. Doug's personal kit unlocks Galactic Cataclysm at rank 15, so the guide's rank cannot drive companion progression. The separate Game8 all-character Doug row lists Longsword/Gatling Arts Doug cannot equip. Reject that row, not the dedicated guide. The final AI support and TP choices below remain editorial; one usable guide does not establish independent consensus. | ||
| 177 | + | ||
| 178 | +**Final Arts, in order:** `Starfall Blade`, `Starfall Rondo`, `Beam Barrage`, `Geolibrium`, `Myopic Screen`, `Astral Purge`, `Astral Heal`, `Subterfuge`. | ||
| 179 | + | ||
| 180 | +The first four include all four character defaults. Beam Barrage gains damage with an aura; Geolibrium supplies beam resistance, regeneration, and terrain protection. Astral Heal provides healing, Astral Purge removes debuffs, and Myopic Screen/Subterfuge supply control/debuff utility. Geolibrium and Astral Heal are the two TP Arts. This is a ground hybrid build, not a Skell package. | ||
| 181 | + | ||
| 182 | +**Ordered Art substitutes:** `Phenomenon`, `Pathogen Blast`, `Gravity Blast`, `Ether Blast`, `Novalibrium`. The first three do not spend TP. Ether Blast and Novalibrium are TP replacements only; don't equip them in addition to both canonical TP Arts. | ||
| 183 | + | ||
| 184 | +**Final Skills, in order:** `Inner Search`, `Beam Boost`, `High Tension`, `Aura Assault` (4/4). Beam Boost supports the beam-oriented equipment and Arts; Aura Assault works with aura use and melee follow-ups. Ordered ground alternatives: `Mechanoid Slayer`, `Knight's Soul`, `Supreme Sword`. `Stellar Entry` is not recommended: XSW marks it as Skell-active, and it would be misleading in this persistent ground build. | ||
| 185 | + | ||
| 186 | +**Weapon recommendation:** Grenada Galactic Group Lastyr Raygun + Fulge Photon Saber, both AM Level 1. Grenada's product trend is beam-focused and it sells both actual weapon types. Sakuraba Raygun Series + Saber Series are the initial-maker alternative; Sakuraba describes its weapons as stable but less resistant to non-physical attributes. The weapon attribute on weapon-damage Arts still depends on the equipped weapon. | ||
| 187 | + | ||
| 188 | +**Armor recommendation:** Grenada Medium Wear: Spex, Torse, Quantlet, Soales, at AM Level 1. The maker describes beam-resistant ground gear as a product strength, which fits the beam-leaning build. Sakuraba Medium Wear is an initial-manufacturer alternative. Use Grenada Light Wear at AM Level 2 if higher Gravity resistance matters more than defense; the type tradeoff is real and no fixed enemy profile was supplied. | ||
| 189 | + | ||
| 190 | +### Doug Art facts | ||
| 191 | + | ||
| 192 | +| Art | Rank | Weapon | TP | Use | Source | | ||
| 193 | +|---|---:|---|---|---|---| | ||
| 194 | +| Starfall Blade | 1 | Photon Saber | no | canonical | [XSW](https://www.xenoserieswiki.org/wiki/Starfall_Blade) | | ||
| 195 | +| Starfall Rondo | 2 | Photon Saber | no | canonical | [XSW](https://www.xenoserieswiki.org/wiki/Starfall_Rondo) | | ||
| 196 | +| Beam Barrage | 1 | Raygun | no | canonical | [XSW](https://www.xenoserieswiki.org/wiki/Beam_Barrage_(XCX)) | | ||
| 197 | +| Geolibrium | 3 | Photon Saber | yes | canonical | [XSW](https://www.xenoserieswiki.org/wiki/Geolibrium) | | ||
| 198 | +| Myopic Screen | 4 | Raygun | no | canonical | [XSW](https://www.xenoserieswiki.org/wiki/Myopic_Screen_(XCX)) | | ||
| 199 | +| Astral Purge | 6 | Photon Saber | no | canonical | [XSW](https://www.xenoserieswiki.org/wiki/Astral_Purge) | | ||
| 200 | +| Astral Heal | 9 | Photon Saber | yes | canonical | [XSW](https://www.xenoserieswiki.org/wiki/Astral_Heal) | | ||
| 201 | +| Subterfuge | 10 | Raygun | no | canonical | [XSW](https://www.xenoserieswiki.org/wiki/Subterfuge) | | ||
| 202 | +| Phenomenon | 13 | Photon Saber | no | substitute | [XSW](https://www.xenoserieswiki.org/wiki/Phenomenon) | | ||
| 203 | +| Pathogen Blast | 14 | Raygun | no | substitute | [XSW](https://www.xenoserieswiki.org/wiki/Pathogen_Blast) | | ||
| 204 | +| Gravity Blast | 11 | Raygun | no | substitute | [XSW](https://www.xenoserieswiki.org/wiki/Gravity_Blast) | | ||
| 205 | +| Ether Blast | 7 | Raygun | yes | TP replacement only | [XSW](https://www.xenoserieswiki.org/wiki/Ether_Blast) | | ||
| 206 | +| Novalibrium | 8 | Photon Saber | yes | TP replacement only | [XSW](https://www.xenoserieswiki.org/wiki/Novalibrium) | | ||
| 207 | + | ||
| 208 | +**Rejected all-character Game8 candidates:** Burning Slash (Longsword), Tornado Blade (Longsword), Cool Off (Gatling Gun), Defensive Stance (Longsword), Bullet Twister (Gatling Gun), Bullet Storm (Gatling Gun), Missile Volley (Gatling Gun), Hellfire (Gatling Gun). None matches Doug's weapon pair. The [dedicated Doug guide](https://game8.co/games/Xenoblade-Chronicles-X/archives/507626) is distinct and has useful legal choices; its Galactic Cataclysm rank is not Doug's personal unlock rank. | ||
| 209 | + | ||
| 210 | +## Lao | ||
| 211 | + | ||
| 212 | +**Candidate evidence.** Game8's [Lao Best Build](https://game8.co/games/Xenoblade-Chronicles-X/archives/506554) recommends an electric/Shock ranged role and the Arts Arcing Horn, Balance Breaker, Trident Buster, Overwhelm, Shrapnel, Afterburner, Eagle Eye, and Ghost Sniper. That list contains three TP Arts: Trident Buster, Afterburner, Ghost Sniper. Reddit's AI-focused guide independently agrees on ranged Electric/Shock DPS, but gives a different list and warns the AI can spend TP poorly. The two sources recur on Shock/ranged DPS, not one exact eight-Art set. | ||
| 213 | + | ||
| 214 | +**Final Arts, in order:** `Balance Breaker`, `Arcing Horn`, `Trident Buster`, `Overwhelm`, `Shrapnel`, `Eagle Eye`, `Ghost Sniper`, `Intercept`. | ||
| 215 | + | ||
| 216 | +Arcing Horn lowers Electric resistance; Trident Buster supplies Electric damage and Shock; Ghost Sniper gives ranged accuracy/critical/TP support. Non-TP Javelin and Sniper Arts round out damage and control. This keeps the guide's Shock core but drops TP-costing Afterburner to meet the cap, replacing it with non-TP Intercept. Trident Buster and Ghost Sniper are the only TP Arts. The final Skills below reinforce the Electric/Shock condition rather than overloading the Art bar with more TP attacks. | ||
| 217 | + | ||
| 218 | +**Ordered Art substitutes:** `First Down`, `Sidewinder`, `Spiral Horn`, `Hair Trigger`, `Hawkeye`, `Raijin`, `Afterburner`. The first five do not spend TP. Raijin and Afterburner are TP replacements only. Lao becomes permanently unplayable after Chapter 9 in the XSW story record, so his fixed build matters only while he remains available; do not describe him as a post-story party option. | ||
| 219 | + | ||
| 220 | +**Final Skills, in order:** `Knock 'n' Shock`, `Conductive Strike`, `Electric Boost` (3/3). The first two recur in Game8 and the independent AI guide. Electric Boost is preferred over Game8's TP Overdrive alternative for direct Electric/Shock synergy. Ordered alternatives: `Killshot`, `Piscinoid Slayer`, `Long Shot`, `Quick Reload`, `TP Overdrive`; the latter is an Overdrive/TP alternative, not an additional slot. | ||
| 221 | + | ||
| 222 | +**Weapon recommendation:** Candid & Credible Trigger Sniper Rifle + Bolide Javelin, both AM Level 1. C&C's page says every weapon other than Dual Guns and Shield is Electric, so these two series match Lao's Electric Arts/Skills. C&C unlocks after Chapter 5; its listed Level 1 series require no further R&D. Before that gate, use Sakuraba Sniper Rifle Series + Spear Series, also AM Level 1, as a physical alternative. This sacrifices the C&C Electric weapon attribute; the fixed Electric Arts retain their Art attribute. | ||
| 223 | + | ||
| 224 | +**Armor recommendation:** Candid & Credible Medium Wear: Sights, Encaser, Grip, Distancers, at AM Level 1 after the Chapter 5 manufacturer gate. C&C ground armor trends high-defense. Light Wear is available at AM Level 2 after 7,000 R&D points and trades defense for higher attribute resistance, especially Gravity; use it when that resistance profile matters. Sakuraba Medium Wear is the pre-gate alternative. Lao's chapter-limited availability makes the C&C gate relevant but reachable. | ||
| 225 | + | ||
| 226 | +### Lao Art facts | ||
| 227 | + | ||
| 228 | +| Art | Rank | Weapon | TP | Use | Source | | ||
| 229 | +|---|---:|---|---|---|---| | ||
| 230 | +| Balance Breaker | 1 | Javelin | no | canonical | [XSW](https://www.xenoserieswiki.org/wiki/Balance_Breaker) | | ||
| 231 | +| Arcing Horn | 3 | Javelin | no | canonical | [XSW](https://www.xenoserieswiki.org/wiki/Arcing_Horn) | | ||
| 232 | +| Trident Buster | 11 | Javelin | yes | canonical | [XSW](https://www.xenoserieswiki.org/wiki/Trident_Buster_(XCX)) | | ||
| 233 | +| Overwhelm | 8 | Javelin | no | canonical | [XSW](https://www.xenoserieswiki.org/wiki/Overwhelm) | | ||
| 234 | +| Shrapnel | 1 | Sniper Rifle | no | canonical | [XSW](https://www.xenoserieswiki.org/wiki/Shrapnel_(XCX)) | | ||
| 235 | +| Eagle Eye | 4 | Sniper Rifle | no | canonical | [XSW](https://www.xenoserieswiki.org/wiki/Eagle_Eye) | | ||
| 236 | +| Ghost Sniper | 15 | Sniper Rifle | yes | canonical | [XSW](https://www.xenoserieswiki.org/wiki/Ghost_Sniper) | | ||
| 237 | +| Intercept | 12 | Sniper Rifle | no | canonical | [XSW](https://www.xenoserieswiki.org/wiki/Intercept) | | ||
| 238 | +| First Down | 2 | Sniper Rifle | no | substitute | [XSW](https://www.xenoserieswiki.org/wiki/First_Down) | | ||
| 239 | +| Sidewinder | 7 | Sniper Rifle | no | substitute | [XSW](https://www.xenoserieswiki.org/wiki/Sidewinder_(XCX)) | | ||
| 240 | +| Spiral Horn | 6 | Javelin | no | substitute | [XSW](https://www.xenoserieswiki.org/wiki/Spiral_Horn) | | ||
| 241 | +| Hair Trigger | 13 | Javelin | no | substitute | [XSW](https://www.xenoserieswiki.org/wiki/Hair_Trigger_(XCX)) | | ||
| 242 | +| Hawkeye | 9 | Sniper Rifle | no | substitute | [XSW](https://www.xenoserieswiki.org/wiki/Hawkeye) | | ||
| 243 | +| Raijin | 5 | Javelin | yes | TP replacement only | [XSW](https://www.xenoserieswiki.org/wiki/Raijin_(XCX)) | | ||
| 244 | +| Afterburner | 14 | Sniper Rifle | yes | guide candidate; TP replacement only | [XSW](https://www.xenoserieswiki.org/wiki/Afterburner) | | ||
| 245 | + | ||
| 246 | +## Equipment source facts | ||
| 247 | + | ||
| 248 | +These are the manufacturer's actual product lineups, not the strategy-to-manufacturer heuristic in `src/data/arms.ts`. | ||
| 249 | + | ||
| 250 | +| Manufacturer | Verified ground offers and gates | Source | | ||
| 251 | +|---|---|---| | ||
| 252 | +| Sakuraba Industries | Initial AM. AM Level 1 offers Assault, Sniper Rifle, Dual Guns, Machine (Gatling Gun), Raygun, Launchers, Sword (Longsword), Spear (Javelin), Blades (Dual Swords), Shield, Knife, and Saber (Photon Saber) series. Level 2: Light Wear at 1,500 R&D. Level 3: Heavy Wear at 5,000. Level 4/5 gives shop gear two/three Battle Traits at 30,000/80,000. | [Sakuraba Industries](https://www.xenoserieswiki.org/wiki/Sakuraba_Industries) | | ||
| 253 | +| Grenada Galactic Group | Initial AM. AM Level 1 offers Avagar Assault Rifle, Retic Sniper Rifle, Gemels Dual Guns, Repethe Gatling Gun, Lastyr Raygun, Psylans Launchers, Slair Longsword, Parce Javelin, Ralzes Dual Swords, Paive Shield, Riv Knife, and Fulge Photon Saber. Level 2: Light Wear at 2,000 R&D. Level 3: Heavy Wear at 6,500. Its product trend is beam-focused and its ground armor is beam-resistant. Level 4/5 gives two/three traits at 36,000/100,000. | [Grenada Galactic Group](https://www.xenoserieswiki.org/wiki/Grenada_Galactic_Group) | | ||
| 254 | +| Candid & Credible | Chapter 5 completion unlocks the AM. Level 1 has Assailer Assault Rifle, Trigger Sniper Rifle, Dyads Dual Guns, Crank Gatling Gun, Strobe Raygun, Saboteurs Launchers, Bolide Javelin, Twins Dual Swords, and Haven Shield. All its weapons other than Dual Guns and Shield are Electric. Level 2: Light Wear at 7,000 R&D. Level 3: Heavy Wear at 12,000. It specializes in high-defense ground gear. Level 4/5 gives two/three traits at 60,000/100,000. | [Candid & Credible](https://www.xenoserieswiki.org/wiki/Candid_%26_Credible) | | ||
| 255 | + | ||
| 256 | +Armor source: [Armor (XCX)](https://www.xenoserieswiki.org/wiki/Armor_(XCX)). Any fighter can wear Light, Medium, or Heavy ground armor. Armor has one defense stat, six attribute resistances, usually one to three fixed Battle Traits, and usually one custom augment slot. Light trades lower defense for higher resistance, especially Gravity; Heavy trades lower resistance for higher defense. Defense matters mainly against physical damage and low-level attacks; attribute resistance is more important against stronger elemental attacks. Shop armor is level-gated at levels 5, 15, 25, and so on. These facts support category-level advice only; they do not establish one numeric best armor item without exact level, item tier, enemy attribute, Battle Traits, and augments. | ||
| 257 | + | ||
| 258 | +For weight-specific manufacturer piece names, see each source page: Sakuraba Medium is Goggles/Bodywear/Glove/Footwear; Grenada Medium is Spex/Torse/Quantlet/Soales; C&C Medium is Sights/Encaser/Grip/Distancers. C&C Light is Screen/Breaker/Ward/Trudgers and C&C Heavy is Armet/Bulwark/Wrest/Stabilizers. Armor pieces have gender/level availability details; the recommendation names the maker/category, not an unverified fixed four-piece stat roll. Mixed weights are not prescribed. Mix only when comparing the actual piece's Battle Traits/resistances. | ||
| 259 | + | ||
| 260 | +## Source index | ||
| 261 | + | ||
| 262 | +- Xeno Series Wiki character mechanics: [Elma](https://www.xenoserieswiki.org/wiki/Elma/Gameplay_(XCX)), [Lin](https://www.xenoserieswiki.org/wiki/Lin/Gameplay), [Irina](https://www.xenoserieswiki.org/wiki/Irina/Gameplay), [Gwin](https://www.xenoserieswiki.org/wiki/Gwin/Gameplay), [Doug](https://www.xenoserieswiki.org/wiki/Doug/Gameplay), [Lao](https://www.xenoserieswiki.org/wiki/Lao/Gameplay). Edition: XCX mechanics also applicable to DE. These pages provide class/weapons, default Arts, personal skill-slot count, and personal progression record; Lao's page states the post-Chapter-9 lockout. | ||
| 263 | +- Xeno Series Wiki: [Battle Art (XCX)](https://www.xenoserieswiki.org/wiki/Battle_Art_(XCX)) and [Skill (XCX)](https://www.xenoserieswiki.org/wiki/Skill_(XCX)). Edition: shared XCX/DE mechanics. | ||
| 264 | +- Game8 DE builds: [Elma](https://game8.co/games/Xenoblade-Chronicles-X/archives/506520), [Lin](https://game8.co/games/Xenoblade-Chronicles-X/archives/506544), [Irina](https://game8.co/games/Xenoblade-Chronicles-X/archives/506541), [Lao](https://game8.co/games/Xenoblade-Chronicles-X/archives/506554), [all characters, including Gwin and Doug](https://game8.co/games/Xenoblade-Chronicles-X/archives/506659). | ||
| 265 | +- Nintendo Life DE all-character build article: [Best Combat Builds for All Characters](https://www.nintendolife.com/guides/xenoblade-chronicles-x-best-combat-builds-for-all-characters). Search indexing exposed Elma and Irina advice. The reader redirected to the article's comment feed, so I did not use it to assert any unobserved details beyond those indexed build snippets. | ||
| 266 | +- Reddit community source: [A Guide to Xenoblade X DE Party Member Builds](https://www.reddit.com/r/Xenoblade_Chronicles/comments/1jnyxkz/a_guide_to_xenoblade_x_de_party_member_builds/). Search indexing returned AI-specific role/build excerpts; direct reader fetch was blocked. Treat as corroboration with reduced confidence, not proof of exact Art values. | ||
| 267 | +- Manufacturer and armor references: [Arms Manufacturer](https://www.xenoserieswiki.org/wiki/Arms_Manufacturer), [Sakuraba Industries](https://www.xenoserieswiki.org/wiki/Sakuraba_Industries), [Grenada Galactic Group](https://www.xenoserieswiki.org/wiki/Grenada_Galactic_Group), [Candid & Credible](https://www.xenoserieswiki.org/wiki/Candid_%26_Credible), [Armor (XCX)](https://www.xenoserieswiki.org/wiki/Armor_(XCX)). Edition: XCX; manufacturer pages include DE-specific unlock annotations where applicable. | ||
| 268 | + | ||
| 269 | +No claim of an exhaustive internet search or broad community consensus. Evidence gap remains strongest for legal AI-specific builds for Gwin and Doug, and for numeric armor-item rankings independent of item level, Battle Traits, and enemy matchup. | ||
| 270 | +## Skill progression facts | ||
| 271 | + | ||
| 272 | +The rank values below come from each companion's current personal unlock list in `src/data/companions.ts`; linked XSW gameplay pages cross-check each character's weapon/class and slot count. They are not Cross class-rank values. Canonical arrays are ordered for integration priority, not unlock-rank order. | ||
| 273 | + | ||
| 274 | +| Companion | Slots | Canonical Skills in order (personal unlock rank) | Ordered substitutes (personal unlock rank) | | ||
| 275 | +|---|---:|---|---| | ||
| 276 | +| [Elma](https://www.xenoserieswiki.org/wiki/Elma/Gameplay_(XCX)) | 4 | Agile Gunslinger (7), Steady Hand (9), Background Noise (11), Master Edge (13) | Mortal Enemy (15), Hellhound (16), Crisis Catalyst (17), Phantom Counter (18) | | ||
| 277 | +| [Lin](https://www.xenoserieswiki.org/wiki/Lin/Gameplay) | 3 | Shield Screen (13), Dirty Fighter (16), Stand Strong (17) | Steel Flesh (7), Mighty Muscle (9), Dismantler (11), Long Topple (15) | | ||
| 278 | +| [Irina](https://www.xenoserieswiki.org/wiki/Irina/Gameplay) | 4 | Inner Search (7), Healing Touch (11), High Tension (13); fourth left empty because other personal Skills need Sleep/Control | none for fixed support bar | | ||
| 279 | +| [Gwin](https://www.xenoserieswiki.org/wiki/Gwin/Gameplay) | 3 | Unwavering Courage (7), Flame Trigger (9), Conflagrant Edge (18) | Mighty Muscle (11), Auto Melee Boost (13), Healing Aura (15), Weapon Guard (16), Theroid Slayer (17) | | ||
| 280 | +| [Doug](https://www.xenoserieswiki.org/wiki/Doug/Gameplay) | 4 | Inner Search (7), Beam Boost (9), High Tension (11), Aura Assault (16) | Mechanoid Slayer (13), Knight's Soul (15), Supreme Sword (17) | | ||
| 281 | +| [Lao](https://www.xenoserieswiki.org/wiki/Lao/Gameplay) | 3 | Knock 'n' Shock (11), Conductive Strike (17), Electric Boost (9) | Killshot (7), Piscinoid Slayer (13), Long Shot (15), Quick Reload (16), TP Overdrive (18) | | ||
| 282 | + | ||
| 283 | +No mode-specific override appears in these recommendations. The selected Skills are ground Skills; any Skell-only Skill remains excluded from the ground rationale. | ||
added
research/companion-builds-remaining.md +203 -0 | new file mode 100644 | ||
| @@ -0,0 +1,203 @@ | ||
| 1 | +# XCX companion build research — Phog, Yelv, Mia, Neilnail, Al | |
| 2 | + | |
| 3 | +**Edition/scope:** Xenoblade Chronicles X: Definitive Edition (DE) recommendations for AI-controlled non-Cross companions. This tranche covers five characters only; integration corpus covers the other roster slice. Do not treat these as player/Cross builds. XCX-era mechanics data is edition-neutral and checked against DE Game8 guides where accessible. Search was targeted, not internet-wide exhaustive. | |
| 4 | + | |
| 5 | +Structured JSON handoff was delivered separately to the engine owner; its session-local copy is not check-in evidence. This file is the durable, source-complete research record, including full candidate pools, recommendations, substitutes, and Art facts. | |
| 6 | + | |
| 7 | +## Findings / decision rules | |
| 8 | + | |
| 9 | +- Local roster is authoritative for exact names, weapon pairs, companion rank progression and Skill slots: `src/data/companions.ts`. Phog 3 Skill slots; Yelv 3; Mia 3; Neilnail 4; Al 4. Use the current character-specific unlock facts, not a generic class unlock rank. | |
| 10 | +- Complete every Arts bar to 8, no duplicate Arts, correct held weapon, maximum **two TP-consuming Arts**. TP generation does not count: `Blood Sacrifice` gives 1,000 TP and has no TP cost. | |
| 11 | +- Mechanically verified Art name → weapon → TP flag in JSON from local `research/art-effects.json`, sourced from Xeno Series Wiki semantic DB (extracted 2026-08-04). Each record carries individual page URL. Data is edition-neutral XCX. Do not infer weapon from companion’s default bar or class. | |
| 12 | +- TP-consuming Art substitutions are allowed, but canonical plus selected fallbacks may never exceed two TP Arts. TP generation does not count: Blood Sacrifice gives 1000 TP at no TP cost. Leave unused slots when no safe weapon-compatible Arts are unlocked. | |
| 13 | +- AI adjustment: avoid making recurring positional bonus, risky HP-sacrifice, or low-HP self-drain the build’s sole value. Many guides are written for the player piloting the character; they do not prove AI usage quality. | |
| 14 | + | |
| 15 | +## Per-character recommendation matrix | |
| 16 | + | |
| 17 | +| Character | Current project weapon pair / Skills | AI role and synergy | Final ordered Arts (TP-consuming Arts marked) | Final ordered Skills | | |
| 18 | +|---|---|---|---|---| | |
| 19 | +| **Phog** | Dual Guns + Dual Swords; 3 slots | Close melee combo damage; Sky High is physical/Stun signature, dual-weapon damage/position utility and Ghostwalker Decoy help mitigate AI flank inconsistency. | `Back Slash, Sliding Slinger, Sky High, Side Slash, Shadowrunner [TP], Primer, Ghostwalker, Hundred Shells [TP]` | `Background Noise, Master Edge, Phantom Counter` | | |
| 20 | +| **Yelv** | Raygun + Photon Saber; 3 slots | Ground Beam melee; Starfall trio + Astrolibrium, Astral Purge, Subterfuge. Galactic Cataclysm is sole TP damage Art. No Synchrony in fixed ground Skills; Skell package remains separate. | `Starfall Blade, Starfall Rondo, Starfall Blossom, Astrolibrium [TP], Astral Purge, Gravity Cloak, Subterfuge, Galactic Cataclysm [TP]` | `Beam Boost, Supreme Sword, Secondary Accelerator` | | |
| 21 | +| **Mia** | Raygun + Knife; 3 slots | Ranged debuffer/support-DPS; lowers debuff resistance, Topples, provides debuff cleanse/Ether protection, damages under Aura. Full Specs is her one TP spender. | `Full Specs [TP], Gravity Cloak, Subterfuge, Gravity Blast, Beam Barrage, Myopic Screen, Clarity Ray, Beam Bomber` | `Tactical Analyst, Ether Boost, Inner Search` | | |
| 22 | +| **Neilnail** | Psycho Launchers + Dual Swords; 4 slots | AI-safe frontline Ether hybrid; side/rear damage, team Blaze/Shock amplification and Astral Protection sustain. Inner Search adds Potential without an Aura prerequisite; Fast Forward is the melee-combo alternate. | `Side Slash, Back Slash, Electric Surge, Jetstream, Conduction Rise, Shooting Star, Astral Protection [TP], Hundred Shells [TP]` | `Ether Boost, Knight's Soul, Supreme Sword, Inner Search` | | |
| 23 | +| **Al** | Sniper Rifle + Longsword; 4 slots | High-risk melee burst/party support; Howling Soul buffs and may revive, Hercules Blow benefits from low HP, Steel Flesh offsets fragility; ranged Arts remain available. | `Hawkeye, Tornado Blade, Offensive Stance [TP], Hercules Blow, Eagle Eye, Sidewinder, Intercept, Howling Soul [TP]` | `Steel Flesh, Mighty Muscle, Healing Touch, Grand Procession` | | |
| 24 | + | |
| 25 | +### Ordered progression substitutes | |
| 26 | + | |
| 27 | +Substitutes are ordered; choose only unlocked, weapon-compatible choices. TP-costing substitutes remain subject to the strict two-TP ceiling; never add a third to fill eight slots. If safe, legal Arts are exhausted, leave the bar shorter. Skills may remain below slot cap before useful Skills unlock. | |
| 28 | + | |
| 29 | +| Character | Ordered Art substitutes | Ordered Skill substitutes | | |
| 30 | +|---|---|---| | |
| 31 | +| Phog | `Upper Hand, Electric Surge, Combat Limbo` | `Agile Gunslinger, Steady Hand, Crisis Catalyst` | | |
| 32 | +| Yelv | `Beam Barrage, Geolibrium, Ether Blast, Myopic Screen, Astral Heal, Master Gunner, Novalibrium` | `High Tension, Knight's Soul, Inner Search` | | |
| 33 | +| Mia | `Black Butterfly, Screamer, Pathogen Blast` | `Resistant Flesh, Gravity Boost, Beam Boost` | | |
| 34 | +| Neilnail | `Shadowrunner, Stellar Ray, Lightning Cloak, Heroic Tale, Upper Hand` | `Fast Forward` | | |
| 35 | +| Al | `Rising Blade, First Down, Magnum Edge, Burning Slash, Shrapnel` | `Quick Reload, Conflagrant Edge, Boosted Bullets, Dismantler` | | |
| 36 | + | |
| 37 | +These are curated same-character alternatives from project unlock facts, not automatically one-to-one pair replacements. The complete canonical + substitute Art weapon/TP/source table is persisted below; every Art is checked against the companion’s weapon pair. Check eligibility using this character's current progression record before choosing fallback. Exact gate must remain the project's character-rank fact, not a generic class unlock rank. | |
| 38 | + | |
| 39 | +## Candidate evidence, recurrence and disagreements | |
| 40 | + | |
| 41 | +### Phog | |
| 42 | +- **DE candidates:** Game8 recommends melee-centric Back Slash/Sliding Slinger/Side Slash/Sky High, one TP spender Hundred Shells, then TP-required Shadowrunner and TP-generation Primer among candidates; Skills Background Noise/Master Edge/Phantom Counter. It explicitly presents Phog as a less competitive early-game fit and exposes positional requirements. DE character guide confirms Sky High rank 3, Shadowrunner rank 4, Side Slash rank 5, Primer rank 7, Ghostwalker rank 11, Hundred Shells rank 15 in its own guide progression; these are not assumed project unlock gates. | |
| 43 | +- **Independent recurrence:** Reddit DE party-build search result repeats Sky High, Sliding Slinger, Side Slash, Shadowrunner, Ghostwalker and Primer among AI candidates, and suggests Executioner/Combat Limbo alternatives; direct Reddit read was network-blocked, so treat that recurrence as lower-confidence, search-result-only. Game8 and Reddit do **not** agree on one exact bar. | |
| 44 | +- **Decision:** use Game8’s AI-appropriate candidate pool. Keep Shadowrunner + Hundred Shells (two TP); don't add TP-costing Stream Edge or Executioner. Sky High’s correct weapon is **Dual Guns**, not Dual Swords. Ghostwalker is Dual Guns; positional melee candidates are Dual Swords. | |
| 45 | +- **Candidate exclusions:** Stream Edge and Executioner also cost TP, so adding either breaches cap; Crisis Zone is TP and drains HP over time, poor AI risk. Blood Sacrifice generates TP without costing it, but is omitted from canon and substitutes because half-current-HP cost is unsafe AI behavior. Electric Surge is non-TP but low-HP conditional; fallback only. | |
| 46 | + | |
| 47 | +### Yelv | |
| 48 | +- **DE Game8:** Starfall Blade/Rondo/Blossom are melee-combo core; recommends Astrolibrium (TP), Astral Heal (TP), Astral Purge, Galactic Cataclysm (TP), Subterfuge and Gravity Cloak candidates; Beam Boost, Supreme Sword, Synchrony Skills. Game8 explicitly emphasizes Skell pilot synergy. | |
| 49 | +- **Independent recurrence:** Reddit DE party build repeats the Starfall trio, Astrolibrium, Astral Purge, Gravity Cloak, Subterfuge and Beam Barrage/ether filler. Strong recurrence for ground arts; its High Tension/Synchrony slots and AI warning differ. | |
| 50 | +- **Decision:** use Sakuraba's Beam Saber series. Advanced Iron Saber is the early model supported by raw XSW data (MakerID 1, equipment level 3; Beam) and the DE Game8 Beam entry; Advanced Cermet Saber is the later Beam drop at min L53. The ordinary Iron Saber itself conflicts (Game8 says Physical; XSW raw says Beam), so do not rely on it. Pair the Starfall trio with Astrolibrium + Galactic Cataclysm (two TP) and free Astral Purge. Fixed ground Skills: Beam Boost/Supreme Sword/Secondary Accelerator; exclude Synchrony as Skell-only. Essence Exchange is excluded from AI substitutes because the HP/TP swap is unreliable for an autonomous character. | |
| 51 | + | |
| 52 | +### Mia | |
| 53 | +- **DE Game8:** recommended fixed Arts include Full Specs (TP), Gravity Cloak, Subterfuge, Gravity Blast (Topple), Beam Barrage, Myopic Screen, Clarity Ray (cleanse/Ether resistance), Beam Bomber. Recommended Skills include Inner Search, Resistant Flesh and Tactical Analyst; text explicitly offers Ether Boost or Gravity Boost as offense alternative. | |
| 54 | +- **Independent recurrence:** Nintendo Life DE roundup (article page searchable; reader exposed only alternate feed), Game8 and Reddit DE build search results all identify Mia as Ether/debuff hybrid; Subterfuge, Beam Barrage, Beam Bomber and Ether/Gravity focus recur. Exact complete bars are not independently corroborated; the Reddit result recommends Black Butterfly/Ether knife in contrast with Game8's Raygun-focused bar. Do not call exact loadout consensus. | |
| 55 | +- **Decision:** keep Game8 coherent Raygun-heavy bar and three-slot Skills Tactical Analyst/Ether Boost/Inner Search. Do not import Raygun-only skill or claims into Knife Art. Full Specs is a **Knife** Art; Black Butterfly is also Knife and remains substitute, not claim that all Arts are Raygun. | |
| 56 | + | |
| 57 | +### Neilnail | |
| 58 | +- **DE Game8:** Arts pool includes Hundred Shells [TP], Shadowrunner [TP], Blood Sacrifice (TP generator, **not a TP-costing Art**), Side Slash, Electric Surge, Conduction Rise, Jetstream, Astral Protection [TP]. Game8’s AI-oriented build proposes three TP Arts; curated bar uses two and selects Shadowrunner as an ordered Art substitute for rank-6–8 fill. It is TP/positional and may be less reliable for AI. Game8 also recommends Aura Assault, but it requires an equipped Aura; fixed Skills use Inner Search for its unconditionally useful Potential benefit to TP Arts/Soul Voice healing. | |
| 59 | +- **Independent recurrence:** Reddit DE party-build search result repeats Side Slash, Jetstream, Conduction Rise, Astral Protection, Hundred Shells and melee/Ether/debuff role. Article-specific AI version warns about Blood Sacrifice; direct Reddit page blocked. Exact set recurrence is partial, not a complete consensus. | |
| 60 | +- **Decision:** canonical TP Arts are Astral Protection + Hundred Shells; rank-4 Shadowrunner is a progression substitute, filtered by the two-TP cap once both canon Arts unlock. Blood Sacrifice remains excluded from substitutions because half-current-HP expenditure is AI-unsafe. Aura Assault is omitted from the Skill build to avoid an inert rank-9–10 window before Astral Protection (rank 11); use Inner Search (rank 16) instead of asserting an unmodeled Skill/Art dependency. | |
| 61 | + | |
| 62 | +### Al | |
| 63 | +- **DE Game8:** recommends Hawkeye, Offensive Stance [TP], Hercules Blow, Eagle Eye, Sidewinder, Intercept, Howling Soul [TP], Tornado Blade; explicitly details risk (Stance increases damage taken; Blow scales upward as HP falls), team buffs/revival and no self-sustain. Skills: Steel Flesh, Mighty Muscle, Healing Touch, Grand Procession. | |
| 64 | +- **Independent recurrence:** Reddit DE AI-build search result repeats Howling Soul/Hercules Blow/Offensive Stance and melee orientation but warns AI often handles TP Arts poorly and suggests simplify. Game8 and community source agree on core purpose, not on using all Arts. | |
| 65 | +- **Decision:** keep both TP Arts only (Offensive Stance + Howling Soul), use six free Arts. Steel Flesh and Healing Touch directly answer documented fragility/support needs. Four Skills legal for Al's four slots. Howling Soul's revive selects random incapacitated ally, per Game8; do not promise targeted resurrection. | |
| 66 | + | |
| 67 | +## Weapon / TP validation matrix | |
| 68 | + | |
| 69 | +The current roster's full candidate Arts pool for these five characters follows; rank is the exact per-character unlock rank in `src/data/companions.ts`. Weapon family, TP consumption, and direct source URL are independently recorded for all 78 unlockable Arts. `TP-consuming?=No` includes TP-generation Arts such as Blood Sacrifice. | |
| 70 | +| Character | Rank | Art | Weapon | TP-consuming? | Recommendation state | Direct source | | |
| 71 | +|---|---:|---|---|---|---|---| | |
| 72 | +| Phog | 1 | Back Slash | Dual Swords | No | Canonical | https://www.xenoserieswiki.org/wiki/Back_Slash_(XCX) | | |
| 73 | +| Phog | 1 | Sliding Slinger | Dual Guns | No | Canonical | https://www.xenoserieswiki.org/wiki/Sliding_Slinger_(XCX) | | |
| 74 | +| Phog | 2 | Upper Hand | Dual Swords | No | Substitute | https://www.xenoserieswiki.org/wiki/Upper_Hand | | |
| 75 | +| Phog | 3 | Sky High | Dual Guns | No | Canonical | https://www.xenoserieswiki.org/wiki/Sky_High | | |
| 76 | +| Phog | 4 | Shadowrunner | Dual Swords | Yes | Canonical | https://www.xenoserieswiki.org/wiki/Shadowrunner_(XCX) | | |
| 77 | +| Phog | 5 | Side Slash | Dual Swords | No | Canonical | https://www.xenoserieswiki.org/wiki/Side_Slash | | |
| 78 | +| Phog | 6 | Stream Edge | Dual Swords | Yes | Candidate pool | https://www.xenoserieswiki.org/wiki/Stream_Edge_(XCX) | | |
| 79 | +| Phog | 7 | Primer | Dual Guns | No | Canonical | https://www.xenoserieswiki.org/wiki/Primer | | |
| 80 | +| Phog | 8 | Early Bird | Dual Guns | Yes | Candidate pool | https://www.xenoserieswiki.org/wiki/Early_Bird | | |
| 81 | +| Phog | 9 | Electric Surge | Dual Swords | No | Substitute | https://www.xenoserieswiki.org/wiki/Electric_Surge | | |
| 82 | +| Phog | 10 | Executioner | Dual Guns | Yes | Candidate pool | https://www.xenoserieswiki.org/wiki/Executioner_(XCX) | | |
| 83 | +| Phog | 11 | Ghostwalker | Dual Guns | No | Canonical | https://www.xenoserieswiki.org/wiki/Ghostwalker | | |
| 84 | +| Phog | 12 | Crisis Zone | Dual Swords | Yes | Candidate pool | https://www.xenoserieswiki.org/wiki/Crisis_Zone | | |
| 85 | +| Phog | 13 | Blood Sacrifice | Dual Swords | No | Candidate pool | https://www.xenoserieswiki.org/wiki/Blood_Sacrifice | | |
| 86 | +| Phog | 14 | Combat Limbo | Dual Guns | No | Substitute | https://www.xenoserieswiki.org/wiki/Combat_Limbo | | |
| 87 | +| Phog | 15 | Hundred Shells | Dual Swords | Yes | Canonical | https://www.xenoserieswiki.org/wiki/Hundred_Shells_(XCX) | | |
| 88 | +| Yelv | 1 | Starfall Blade | Photon Saber | No | Canonical | https://www.xenoserieswiki.org/wiki/Starfall_Blade | | |
| 89 | +| Yelv | 1 | Beam Barrage | Raygun | No | Substitute | https://www.xenoserieswiki.org/wiki/Beam_Barrage_(XCX) | | |
| 90 | +| Yelv | 2 | Starfall Rondo | Photon Saber | No | Canonical | https://www.xenoserieswiki.org/wiki/Starfall_Rondo | | |
| 91 | +| Yelv | 3 | Gravity Cloak | Raygun | No | Canonical | https://www.xenoserieswiki.org/wiki/Gravity_Cloak | | |
| 92 | +| Yelv | 4 | Geolibrium | Photon Saber | Yes | Substitute | https://www.xenoserieswiki.org/wiki/Geolibrium | | |
| 93 | +| Yelv | 5 | Essence Exchange | Photon Saber | No | Candidate pool; excluded for AI (HP/TP swap) | https://www.xenoserieswiki.org/wiki/Essence_Exchange | | |
| 94 | +| Yelv | 6 | Ether Blast | Raygun | Yes | Substitute | https://www.xenoserieswiki.org/wiki/Ether_Blast | | |
| 95 | +| Yelv | 7 | Myopic Screen | Raygun | No | Substitute | https://www.xenoserieswiki.org/wiki/Myopic_Screen_(XCX) | | |
| 96 | +| Yelv | 8 | Astrolibrium | Photon Saber | Yes | Canonical | https://www.xenoserieswiki.org/wiki/Astrolibrium | | |
| 97 | +| Yelv | 9 | Astral Heal | Photon Saber | Yes | Substitute | https://www.xenoserieswiki.org/wiki/Astral_Heal | | |
| 98 | +| Yelv | 10 | Starfall Blossom | Photon Saber | No | Canonical | https://www.xenoserieswiki.org/wiki/Starfall_Blossom | | |
| 99 | +| Yelv | 11 | Master Gunner | Raygun | Yes | Substitute | https://www.xenoserieswiki.org/wiki/Master_Gunner | | |
| 100 | +| Yelv | 12 | Subterfuge | Raygun | No | Canonical | https://www.xenoserieswiki.org/wiki/Subterfuge | | |
| 101 | +| Yelv | 13 | Astral Purge | Photon Saber | No | Canonical | https://www.xenoserieswiki.org/wiki/Astral_Purge | | |
| 102 | +| Yelv | 14 | Novalibrium | Photon Saber | Yes | Substitute | https://www.xenoserieswiki.org/wiki/Novalibrium | | |
| 103 | +| Yelv | 15 | Galactic Cataclysm | Photon Saber | Yes | Canonical | https://www.xenoserieswiki.org/wiki/Galactic_Cataclysm | | |
| 104 | +| Mia | 1 | Screamer | Knife | No | Substitute | https://www.xenoserieswiki.org/wiki/Screamer_(XCX) | | |
| 105 | +| Mia | 1 | Beam Barrage | Raygun | No | Canonical | https://www.xenoserieswiki.org/wiki/Beam_Barrage_(XCX) | | |
| 106 | +| Mia | 2 | Myopic Screen | Raygun | No | Canonical | https://www.xenoserieswiki.org/wiki/Myopic_Screen_(XCX) | | |
| 107 | +| Mia | 3 | Clarity Ray | Raygun | No | Canonical | https://www.xenoserieswiki.org/wiki/Clarity_Ray | | |
| 108 | +| Mia | 4 | Full Specs | Knife | Yes | Canonical | https://www.xenoserieswiki.org/wiki/Full_Specs | | |
| 109 | +| Mia | 5 | Ether Blast | Raygun | Yes | Candidate pool | https://www.xenoserieswiki.org/wiki/Ether_Blast | | |
| 110 | +| Mia | 6 | Subterfuge | Raygun | No | Canonical | https://www.xenoserieswiki.org/wiki/Subterfuge | | |
| 111 | +| Mia | 7 | Dispel | Knife | Yes | Candidate pool | https://www.xenoserieswiki.org/wiki/Dispel | | |
| 112 | +| Mia | 8 | Gravity Cloak | Raygun | No | Canonical | https://www.xenoserieswiki.org/wiki/Gravity_Cloak | | |
| 113 | +| Mia | 9 | Energy Source | Knife | Yes | Candidate pool | https://www.xenoserieswiki.org/wiki/Energy_Source | | |
| 114 | +| Mia | 10 | Beam Bomber | Raygun | No | Canonical | https://www.xenoserieswiki.org/wiki/Beam_Bomber_(XCX) | | |
| 115 | +| Mia | 11 | Black Butterfly | Knife | No | Substitute | https://www.xenoserieswiki.org/wiki/Black_Butterfly | | |
| 116 | +| Mia | 12 | Pathogen Blast | Raygun | No | Substitute | https://www.xenoserieswiki.org/wiki/Pathogen_Blast | | |
| 117 | +| Mia | 13 | Gravity Blast | Raygun | No | Canonical | https://www.xenoserieswiki.org/wiki/Gravity_Blast | | |
| 118 | +| Neilnail | 1 | Back Slash | Dual Swords | No | Canonical | https://www.xenoserieswiki.org/wiki/Back_Slash_(XCX) | | |
| 119 | +| Neilnail | 1 | Jetstream | Psycho Launchers | No | Canonical | https://www.xenoserieswiki.org/wiki/Jetstream | | |
| 120 | +| Neilnail | 2 | Side Slash | Dual Swords | No | Canonical | https://www.xenoserieswiki.org/wiki/Side_Slash | | |
| 121 | +| Neilnail | 3 | Lightning Cloak | Psycho Launchers | No | Substitute | https://www.xenoserieswiki.org/wiki/Lightning_Cloak | | |
| 122 | +| Neilnail | 4 | Shadowrunner | Dual Swords | Yes | Substitute | https://www.xenoserieswiki.org/wiki/Shadowrunner_(XCX) | | |
| 123 | +| Neilnail | 5 | Stellar Ray | Psycho Launchers | No | Substitute | https://www.xenoserieswiki.org/wiki/Stellar_Ray | | |
| 124 | +| Neilnail | 6 | Blood Sacrifice | Dual Swords | No | Candidate pool | https://www.xenoserieswiki.org/wiki/Blood_Sacrifice | | |
| 125 | +| Neilnail | 7 | Shooting Star | Psycho Launchers | No | Canonical | https://www.xenoserieswiki.org/wiki/Shooting_Star | | |
| 126 | +| Neilnail | 8 | Hundred Shells | Dual Swords | Yes | Canonical | https://www.xenoserieswiki.org/wiki/Hundred_Shells_(XCX) | | |
| 127 | +| Neilnail | 9 | Conduction Rise | Psycho Launchers | No | Canonical | https://www.xenoserieswiki.org/wiki/Conduction_Rise | | |
| 128 | +| Neilnail | 10 | Upper Hand | Dual Swords | No | Substitute | https://www.xenoserieswiki.org/wiki/Upper_Hand | | |
| 129 | +| Neilnail | 11 | Astral Protection | Psycho Launchers | Yes | Canonical | https://www.xenoserieswiki.org/wiki/Astral_Protection | | |
| 130 | +| Neilnail | 12 | Electric Surge | Dual Swords | No | Canonical | https://www.xenoserieswiki.org/wiki/Electric_Surge | | |
| 131 | +| Neilnail | 13 | Heroic Tale | Psycho Launchers | No | Substitute | https://www.xenoserieswiki.org/wiki/Heroic_Tale | | |
| 132 | +| Neilnail | 14 | Starlight Kick | Psycho Launchers | Yes | Candidate pool | https://www.xenoserieswiki.org/wiki/Starlight_Kick_(XCX) | | |
| 133 | +| Neilnail | 15 | Thirsty Edge | Dual Swords | Yes | Candidate pool | https://www.xenoserieswiki.org/wiki/Thirsty_Edge | | |
| 134 | +| Al | 1 | Rising Blade | Longsword | No | Substitute | https://www.xenoserieswiki.org/wiki/Rising_Blade | | |
| 135 | +| Al | 1 | First Down | Sniper Rifle | No | Substitute | https://www.xenoserieswiki.org/wiki/First_Down | | |
| 136 | +| Al | 2 | Magnum Edge | Longsword | No | Substitute | https://www.xenoserieswiki.org/wiki/Magnum_Edge_(XCX) | | |
| 137 | +| Al | 3 | Eagle Eye | Sniper Rifle | No | Canonical | https://www.xenoserieswiki.org/wiki/Eagle_Eye | | |
| 138 | +| Al | 4 | Offensive Stance | Longsword | Yes | Canonical | https://www.xenoserieswiki.org/wiki/Offensive_Stance | | |
| 139 | +| Al | 5 | Shrapnel | Sniper Rifle | No | Substitute | https://www.xenoserieswiki.org/wiki/Shrapnel_(XCX) | | |
| 140 | +| Al | 6 | Hawkeye | Sniper Rifle | No | Canonical | https://www.xenoserieswiki.org/wiki/Hawkeye | | |
| 141 | +| Al | 7 | Tornado Blade | Longsword | No | Canonical | https://www.xenoserieswiki.org/wiki/Tornado_Blade | | |
| 142 | +| Al | 8 | Intercept | Sniper Rifle | No | Canonical | https://www.xenoserieswiki.org/wiki/Intercept | | |
| 143 | +| Al | 9 | Burning Slash | Longsword | No | Substitute | https://www.xenoserieswiki.org/wiki/Burning_Slash | | |
| 144 | +| Al | 10 | Sidewinder | Sniper Rifle | No | Canonical | https://www.xenoserieswiki.org/wiki/Sidewinder_(XCX) | | |
| 145 | +| Al | 11 | Hercules Blow | Longsword | No | Canonical | https://www.xenoserieswiki.org/wiki/Hercules_Blow | | |
| 146 | +| Al | 12 | Ghost Sniper | Sniper Rifle | Yes | Candidate pool | https://www.xenoserieswiki.org/wiki/Ghost_Sniper | | |
| 147 | +| Al | 13 | Samurai Soul | Longsword | Yes | Candidate pool | https://www.xenoserieswiki.org/wiki/Samurai_Soul | | |
| 148 | +| Al | 14 | Incendiary Edge | Longsword | Yes | Candidate pool | https://www.xenoserieswiki.org/wiki/Incendiary_Edge | | |
| 149 | +| Al | 15 | Howling Soul | Sniper Rifle | Yes | Canonical | https://www.xenoserieswiki.org/wiki/Howling_Soul | | |
| 150 | + | |
| 151 | +### Complete Skill candidate pool | |
| 152 | + | |
| 153 | +Rank is source-backed per-character progression rank from `src/data/companions.ts`; state labels reference final Skills and ordered substitute list above. | |
| 154 | + | |
| 155 | +| Character | Complete unlockable Skills by rank | | |
| 156 | +|---|---| | |
| 157 | +| Phog | `7 Agile Gunslinger (substitute); 9 Steady Hand (substitute); 11 Background Noise (canonical); 13 Master Edge (canonical); 15 Mortal Enemy; 16 Hellhound; 17 Crisis Catalyst (substitute); 18 Phantom Counter (canonical)` | | |
| 158 | +| Yelv | `7 Inner Search (substitute); 9 Beam Boost (canonical); 11 High Tension (substitute); 13 Mechanoid Slayer; 14 Knight's Soul (substitute); 15 Supreme Sword (canonical); 16 Secondary Accelerator (canonical); 17 Synchrony (Skell-only, excluded from fixed ground build)` | | |
| 159 | +| Mia | `7 Inner Search (canonical); 9 Beam Boost (substitute); 11 Beauty Sleep; 13 Ether Boost (canonical); 14 Extra Armor; 15 Gravity Boost (substitute); 16 Resistant Flesh (substitute); 17 Tactical Analyst (canonical)` | | |
| 160 | +| Neilnail | `7 Ether Boost (canonical); 9 Aura Assault (excluded from canonical selection: requires equipped Aura, causing rank-9–10 inert window); 11 Knight's Soul (canonical); 13 Supreme Sword (canonical); 14 Buff Extender (not selected; no matching effect rationale established); 15 Buff Heal (not selected); 16 Inner Search (canonical); 17 Fast Forward (substitute)` | | |
| 161 | +| Al | `7 Steel Flesh (canonical); 9 Mighty Muscle (canonical); 11 Quick Reload (substitute); 13 Conflagrant Edge (substitute); 14 Healing Touch (canonical); 15 Boosted Bullets (substitute); 16 Dismantler (substitute); 17 Grand Procession (canonical)` | | |
| 162 | + | |
| 163 | +## Manufacturer and armor recommendations | |
| 164 | + | |
| 165 | +**Manufacturer fact base:** Sakuraba Industries is an early AM with the relevant weapon families and physical-leaning product lines. Candid & Credible unlocks after Chapter 5 and offers defensive ground gear; Meredith & Co. unlocks after Chapter 4 and uses Ether technology. Armor wear availability is also tied to AM rank: Medium Wear at AM L1, Light Wear at AM L2, Heavy Wear at AM L3. Shop-trait stock is limited; drops/variants differ. Manufacturer, weapon type, individual model, attribute and armor weight are separate facts; do not generalize a maker specialty to every item. | |
| 166 | +| Character | Weapon maker/type/model/attribute | Armor maker/type/traits | Unlock/alternative | | |
| 167 | +|---|---|---|---| | |
| 168 | +| Phog | Sakuraba Dual Swords (physical Blades line, e.g. Iron Blades) + Physical Dual Guns. For ranged, physical **Sky High** seeks Ranged Attack/accuracy; Melee Attack applies to Dual-Sword **Side/Back Slash**; TP stats support the two TP Arts. | Sakuraba Medium Wear AM L1 for level-15 frontline: verified DE Combat Bodywear is Medium, min L15, defense 28, Physical +10, Gravity −15, Melee Attack Up II. C&C Light is optional AM L2; its published family traits include head Potential Up, arm Melee Attack/Max TP, leg Evasion/Max TP. | Sakuraba Medium is available at AM L1. Sakuraba Light requires AM L2. C&C unlocks after Chapter 5; C&C Light/Heavy require AM L2/L3. | | |
| 169 | +| Yelv | Sakuraba Photon Saber **Advanced Iron Saber** (Beam, ATK 40; raw XSW MakerID 1, AM L1, equipment level 3; DE Game8 also lists Advanced Iron Saber as Beam). This is the early Beam model for Beam Boost/Astrolibrium/Galactic Cataclysm. Later option: **Advanced Cermet Saber** (Beam, ATK 140, min L53, random drop). | Sakuraba Medium AM L1 for early armor; Light AM L2 offers arm Melee Attack Up/Max TP options. Names by slots: Goggles/Bodywear/Glove/Footwear (Medium); Visor/Vest/Guard/Boots (Light). | Advanced Iron Saber model/attribute is supported by Game8 and raw data; exact shop/drop path not established. Advanced Cermet Saber is a random drop, min L53. Ordinary Iron Saber attributes conflict and are not relied on. | | |
| 170 | +| Mia | Meredith & Co. Ether **Radius Raygun + Pugio Knife**; types/attributes match Raygun/Knife and Ether Boost. Item quality/level varies; prioritize Ether variants. | Meredith Medium Wear AM L1 (Chapter 4 manufacturer unlock); Ether-tech/resistance profile fits support role. Light AM L2 adds Potential Up head and Max TP/Ranged Attack Boost arm options. Slot names: Vitra/Corpus/Chiro/Plantars (Medium); Vizard/Vestis/Armilla/Ocreis (Light). | Meredith unlocks after Chapter 4. Light needs AM L2. C&C is later (Chapter 5, Light AM L2); armor’s item level must not exceed Mia's current level. | | |
| 171 | +| Neilnail | Meredith & Co. Ether **Ruina II Psycho Launchers** + Sakuraba physical Dual Swords (Blades line, e.g. Iron Blades). Ether Arts align to Ruina II; Dual Swords support Side/Back Slash and TP finisher. | Meredith Medium Wear AM L1; Ether-resistance profile fits Ether frontline. Light AM L2 offers Ether Res Up/Max TP/Ranged Attack Boost options. Slot names: Vitra/Corpus/Chiro/Plantars (Medium); Vizard/Vestis/Armilla/Ocreis (Light). | Meredith unlocks Chapter 4; AM stock level gates series. C&C later: Chapter 5 and Light AM L2. Use level-eligible armor. | | |
| 172 | +| Al | Sakuraba **Iron Sword** Longsword (Physical, min L1, attack 48, cooldown 2.0, TP gain 230, stability 8, shop 3,000 credits) + Sakuraba Sniper Rifle physical line. No thermal/Six Stars model in final advice. | Sakuraba Medium Wear AM L1. Verified DE Combat Bodywear: min L15, defense 28, Physical +10, Gravity −15, Melee Attack Up II; fits melee/physical frontline. Light AM L2 offers arm Melee Attack Up/Max TP alternatives. | Iron Sword is shop-purchasable at level 1. Sakuraba Medium AM L1; Light AM L2. Optional C&C Heavy Combat Bulwark requires Chapter 5 + C&C AM L3 (min L15; defense 40; Potential Up II; Electric +20, Beam −5, Gravity −15). | | |
| 173 | + | |
| 174 | +### Equipment evidence sources | |
| 175 | + | |
| 176 | +- Manufacturer rank gates and families: Sakuraba Industries (early AM; Medium L1, Light L2, Heavy L3; weapon/armor lines): https://xenoblade.fandom.com/wiki/Sakuraba_Industries. | |
| 177 | +- Candid & Credible (Chapter 5 unlock; Medium L1, Light L2, Heavy L3; armor part names/traits): https://xenoblade.fandom.com/wiki/Candid_%26_Credible. | |
| 178 | +- Meredith & Co. (Chapter 4 unlock; Ether equipment; Medium L1, Light L2): https://xenoblade.fandom.com/wiki/Meredith_%26_Co. | |
| 179 | +- DE Sakuraba Combat Bodywear (Medium torso, min L15, defense 28, Physical +10, Gravity −15, Melee Attack Up II): https://game8.co/games/Xenoblade-Chronicles-X/archives/510709. | |
| 180 | +- DE C&C Combat Bulwark (Heavy torso, min L15, defense 40, Potential Up II, Electric +20, Beam −5, Gravity −15): https://game8.co/games/Xenoblade-Chronicles-X/archives/510204. | |
| 181 | +- DE Advanced Iron Saber raw weapon record (Sakuraba MakerID 1, equipment level 3, Beam): https://www.xenoserieswiki.org/w/index.php?title=Advanced_Iron_Saber&action=raw. Game8 DE also lists its Beam attribute: https://game8.co/games/Xenoblade-Chronicles-X/archives/504904. DE Advanced Cermet Saber later drop: https://game8.co/games/Xenoblade-Chronicles-X/archives/512175. DE Iron Sword: https://game8.co/games/Xenoblade-Chronicles-X/archives/511408. | |
| 182 | +- DE weapon tables: Photon Sabers https://game8.co/games/Xenoblade-Chronicles-X/archives/504904; Dual Swords https://game8.co/games/Xenoblade-Chronicles-X/archives/504901; Dual Guns https://game8.co/games/Xenoblade-Chronicles-X/archives/504895; Rayguns https://game8.co/games/Xenoblade-Chronicles-X/archives/504897; Knives https://game8.co/games/Xenoblade-Chronicles-X/archives/504903; Psycho Launchers https://game8.co/games/Xenoblade-Chronicles-X/archives/504898. | |
| 183 | +- Game8 DE Sky High page: Ranged Dual Guns Art, physical, Rank 3 and melee-combo conditional. Sky High benefits from Ranged Attack; Melee Attack is relevant to Dual-Sword Arts: https://game8.co/games/Xenoblade-Chronicles-X/archives/506135. | |
| 184 | +- XSW raw Skill effects: Inner Search increases Potential (including TP Art damage/Soul Voice recovery): https://www.xenoserieswiki.org/w/index.php?title=Inner_Search&action=raw; Aura Assault requires an active Aura: https://www.xenoserieswiki.org/w/index.php?title=Aura_Assault&action=raw. | |
| 185 | +- Meredith Ether weapon examples: Radius Raygun / Pugio Knife https://xenoblade.fandom.com/wiki/Raygun and https://xenoblade.fandom.com/wiki/Knife; Ruina II Psycho Launchers https://xenoblade.fandom.com/wiki/Psycho_Launchers. | |
| 186 | + | |
| 187 | +## Source log and recurrence limits | |
| 188 | + | |
| 189 | +1. **Game8, DE, 2025:** [Phog Best Build](https://game8.co/games/Xenoblade-Chronicles-X/archives/507892), [Phog Arts/Skills/recruitment](https://game8.co/games/Xenoblade-Chronicles-X/archives/500611), [Yelv Best Build](https://game8.co/games/Xenoblade-Chronicles-X/archives/507260), [Mia Best Build](https://game8.co/games/Xenoblade-Chronicles-X/archives/514627), [Neilnail Best Build](https://game8.co/games/Xenoblade-Chronicles-X/archives/507640), [Al Best Build](https://game8.co/games/Xenoblade-Chronicles-X/archives/515373). The guide pages themselves disclaim Nintendo affiliation; their authored build recommendations are editorial evidence, not official Nintendo recommendations. | |
| 190 | +2. **Nintendo Life, DE, 2026:** [Best combat builds for all characters](https://www.nintendolife.com/guides/xenoblade-chronicles-x-best-combat-builds-for-all-characters). Reader returned comments feed, not article body. Search returned Mia as Ether/debuffer build; source recurrence is secondary and not used as sole proof. | |
| 191 | +3. **Independent community DE build guide:** [Reddit party member builds](https://www.reddit.com/r/Xenoblade_Chronicles/comments/1jnyxkz/a_guide_to_xenoblade_x_de_party_member_builds/). Search results yielded build details; direct source fetch blocked by Reddit network security. Its evidence is lower-confidence and logged as search-result only; no consensus claim relies exclusively on it. | |
| 192 | +4. **Mechanical Art source:** Xeno Series Wiki [Battle Art (XCX)](https://www.xenoserieswiki.org/wiki/Battle_Art_(XCX)) and **78 direct Art URLs in the durable candidate table above**. Local curated extractor `research/art-effects.json`, extraction date 2026-08-04; direct Art page and caption are per-Art evidence. | |
| 193 | +5. **Character/progression source:** current project companion facts `src/data/companions.ts` store exact character Arts, Skill slots, default loadouts, unlock order and source URLs to Xeno Series Wiki Gameplay pages. They do not store weapon per Art; durable table above supplies source-backed weapon/TP facts. | |
| 194 | + | |
| 195 | +## Evidence limits and unresolved differences | |
| 196 | + | |
| 197 | +- No first-party Nintendo source provides character-build prescriptions. Game8/Nintendo Life builds are editorial; community guidance provides independent partial recurrence, not evidence of full-loadout consensus. Character-level overlap is recorded above; search corpus was targeted, not exhaustive. | |
| 198 | +- Reddit community guide source fetched as blocked, so recurrence claims drawn from its search result only are explicitly lower-confidence. Nintendo Life reader exposed comments feed instead of article body. | |
| 199 | +- Xeno Series Wiki semantic extraction flags are regex-derived; table retains the underlying direct Art URLs. Local `companions.ts` rank is the project's per-character progression gate, not a class rank. No quest-level unlock condition is inferred where current source data does not state one. | |
| 200 | +- Candid & Credible manufacturer description mentions Electric weapon expansion, while its level-2 Dual Guns series text specifically describes Gravity weaponry. Treat this as line/catalog difference; no generic C&C weapon attribute is recommended. | |
| 201 | +- Photon Saber manufacturer/item evidence: Sakuraba Saber series is Beam; Six Stars Lightblade is Electric and Lightblade II Thermal (not Beam). Xeno Series Wiki lists Iron Saber raw as Beam while Game8 DE's table labels standard Iron Saber Physical; the build chooses **Advanced Iron Saber**, for which Game8 and raw XSW agree on Beam. Raw standard Iron Saber conflict: https://www.xenoserieswiki.org/w/index.php?title=Iron_Saber&action=raw; Game8 inventory: https://game8.co/games/Xenoblade-Chronicles-X/archives/504904. No Six Stars model used. | |
| 202 | +- Al's Wii U-era Thermal Glaive/Six Stars possibility is not recommended without DE stock/unlock proof; original-XCX source inspected: https://primagames.com/eguides/xenoblade-chronicles-x-eguide/shop-terminal-listings/ground-gear-weaponry/longsword. Use verified Sakuraba Physical Iron Sword instead. | |
| 203 | +- No universal armor model is best: elemental resistance profiles vary by manufacturer, wear, part and encounter. Product-level rank, character level, and Chapter manufacturer unlocks all constrain availability; body table records explicit known gates and DE item examples. | |
| new file mode 100644 | |||
| @@ -0,0 +1,203 @@ | |||
| 1 | +# XCX companion build research — Phog, Yelv, Mia, Neilnail, Al | ||
| 2 | + | ||
| 3 | +**Edition/scope:** Xenoblade Chronicles X: Definitive Edition (DE) recommendations for AI-controlled non-Cross companions. This tranche covers five characters only; integration corpus covers the other roster slice. Do not treat these as player/Cross builds. XCX-era mechanics data is edition-neutral and checked against DE Game8 guides where accessible. Search was targeted, not internet-wide exhaustive. | ||
| 4 | + | ||
| 5 | +Structured JSON handoff was delivered separately to the engine owner; its session-local copy is not check-in evidence. This file is the durable, source-complete research record, including full candidate pools, recommendations, substitutes, and Art facts. | ||
| 6 | + | ||
| 7 | +## Findings / decision rules | ||
| 8 | + | ||
| 9 | +- Local roster is authoritative for exact names, weapon pairs, companion rank progression and Skill slots: `src/data/companions.ts`. Phog 3 Skill slots; Yelv 3; Mia 3; Neilnail 4; Al 4. Use the current character-specific unlock facts, not a generic class unlock rank. | ||
| 10 | +- Complete every Arts bar to 8, no duplicate Arts, correct held weapon, maximum **two TP-consuming Arts**. TP generation does not count: `Blood Sacrifice` gives 1,000 TP and has no TP cost. | ||
| 11 | +- Mechanically verified Art name → weapon → TP flag in JSON from local `research/art-effects.json`, sourced from Xeno Series Wiki semantic DB (extracted 2026-08-04). Each record carries individual page URL. Data is edition-neutral XCX. Do not infer weapon from companion’s default bar or class. | ||
| 12 | +- TP-consuming Art substitutions are allowed, but canonical plus selected fallbacks may never exceed two TP Arts. TP generation does not count: Blood Sacrifice gives 1000 TP at no TP cost. Leave unused slots when no safe weapon-compatible Arts are unlocked. | ||
| 13 | +- AI adjustment: avoid making recurring positional bonus, risky HP-sacrifice, or low-HP self-drain the build’s sole value. Many guides are written for the player piloting the character; they do not prove AI usage quality. | ||
| 14 | + | ||
| 15 | +## Per-character recommendation matrix | ||
| 16 | + | ||
| 17 | +| Character | Current project weapon pair / Skills | AI role and synergy | Final ordered Arts (TP-consuming Arts marked) | Final ordered Skills | | ||
| 18 | +|---|---|---|---|---| | ||
| 19 | +| **Phog** | Dual Guns + Dual Swords; 3 slots | Close melee combo damage; Sky High is physical/Stun signature, dual-weapon damage/position utility and Ghostwalker Decoy help mitigate AI flank inconsistency. | `Back Slash, Sliding Slinger, Sky High, Side Slash, Shadowrunner [TP], Primer, Ghostwalker, Hundred Shells [TP]` | `Background Noise, Master Edge, Phantom Counter` | | ||
| 20 | +| **Yelv** | Raygun + Photon Saber; 3 slots | Ground Beam melee; Starfall trio + Astrolibrium, Astral Purge, Subterfuge. Galactic Cataclysm is sole TP damage Art. No Synchrony in fixed ground Skills; Skell package remains separate. | `Starfall Blade, Starfall Rondo, Starfall Blossom, Astrolibrium [TP], Astral Purge, Gravity Cloak, Subterfuge, Galactic Cataclysm [TP]` | `Beam Boost, Supreme Sword, Secondary Accelerator` | | ||
| 21 | +| **Mia** | Raygun + Knife; 3 slots | Ranged debuffer/support-DPS; lowers debuff resistance, Topples, provides debuff cleanse/Ether protection, damages under Aura. Full Specs is her one TP spender. | `Full Specs [TP], Gravity Cloak, Subterfuge, Gravity Blast, Beam Barrage, Myopic Screen, Clarity Ray, Beam Bomber` | `Tactical Analyst, Ether Boost, Inner Search` | | ||
| 22 | +| **Neilnail** | Psycho Launchers + Dual Swords; 4 slots | AI-safe frontline Ether hybrid; side/rear damage, team Blaze/Shock amplification and Astral Protection sustain. Inner Search adds Potential without an Aura prerequisite; Fast Forward is the melee-combo alternate. | `Side Slash, Back Slash, Electric Surge, Jetstream, Conduction Rise, Shooting Star, Astral Protection [TP], Hundred Shells [TP]` | `Ether Boost, Knight's Soul, Supreme Sword, Inner Search` | | ||
| 23 | +| **Al** | Sniper Rifle + Longsword; 4 slots | High-risk melee burst/party support; Howling Soul buffs and may revive, Hercules Blow benefits from low HP, Steel Flesh offsets fragility; ranged Arts remain available. | `Hawkeye, Tornado Blade, Offensive Stance [TP], Hercules Blow, Eagle Eye, Sidewinder, Intercept, Howling Soul [TP]` | `Steel Flesh, Mighty Muscle, Healing Touch, Grand Procession` | | ||
| 24 | + | ||
| 25 | +### Ordered progression substitutes | ||
| 26 | + | ||
| 27 | +Substitutes are ordered; choose only unlocked, weapon-compatible choices. TP-costing substitutes remain subject to the strict two-TP ceiling; never add a third to fill eight slots. If safe, legal Arts are exhausted, leave the bar shorter. Skills may remain below slot cap before useful Skills unlock. | ||
| 28 | + | ||
| 29 | +| Character | Ordered Art substitutes | Ordered Skill substitutes | | ||
| 30 | +|---|---|---| | ||
| 31 | +| Phog | `Upper Hand, Electric Surge, Combat Limbo` | `Agile Gunslinger, Steady Hand, Crisis Catalyst` | | ||
| 32 | +| Yelv | `Beam Barrage, Geolibrium, Ether Blast, Myopic Screen, Astral Heal, Master Gunner, Novalibrium` | `High Tension, Knight's Soul, Inner Search` | | ||
| 33 | +| Mia | `Black Butterfly, Screamer, Pathogen Blast` | `Resistant Flesh, Gravity Boost, Beam Boost` | | ||
| 34 | +| Neilnail | `Shadowrunner, Stellar Ray, Lightning Cloak, Heroic Tale, Upper Hand` | `Fast Forward` | | ||
| 35 | +| Al | `Rising Blade, First Down, Magnum Edge, Burning Slash, Shrapnel` | `Quick Reload, Conflagrant Edge, Boosted Bullets, Dismantler` | | ||
| 36 | + | ||
| 37 | +These are curated same-character alternatives from project unlock facts, not automatically one-to-one pair replacements. The complete canonical + substitute Art weapon/TP/source table is persisted below; every Art is checked against the companion’s weapon pair. Check eligibility using this character's current progression record before choosing fallback. Exact gate must remain the project's character-rank fact, not a generic class unlock rank. | ||
| 38 | + | ||
| 39 | +## Candidate evidence, recurrence and disagreements | ||
| 40 | + | ||
| 41 | +### Phog | ||
| 42 | +- **DE candidates:** Game8 recommends melee-centric Back Slash/Sliding Slinger/Side Slash/Sky High, one TP spender Hundred Shells, then TP-required Shadowrunner and TP-generation Primer among candidates; Skills Background Noise/Master Edge/Phantom Counter. It explicitly presents Phog as a less competitive early-game fit and exposes positional requirements. DE character guide confirms Sky High rank 3, Shadowrunner rank 4, Side Slash rank 5, Primer rank 7, Ghostwalker rank 11, Hundred Shells rank 15 in its own guide progression; these are not assumed project unlock gates. | ||
| 43 | +- **Independent recurrence:** Reddit DE party-build search result repeats Sky High, Sliding Slinger, Side Slash, Shadowrunner, Ghostwalker and Primer among AI candidates, and suggests Executioner/Combat Limbo alternatives; direct Reddit read was network-blocked, so treat that recurrence as lower-confidence, search-result-only. Game8 and Reddit do **not** agree on one exact bar. | ||
| 44 | +- **Decision:** use Game8’s AI-appropriate candidate pool. Keep Shadowrunner + Hundred Shells (two TP); don't add TP-costing Stream Edge or Executioner. Sky High’s correct weapon is **Dual Guns**, not Dual Swords. Ghostwalker is Dual Guns; positional melee candidates are Dual Swords. | ||
| 45 | +- **Candidate exclusions:** Stream Edge and Executioner also cost TP, so adding either breaches cap; Crisis Zone is TP and drains HP over time, poor AI risk. Blood Sacrifice generates TP without costing it, but is omitted from canon and substitutes because half-current-HP cost is unsafe AI behavior. Electric Surge is non-TP but low-HP conditional; fallback only. | ||
| 46 | + | ||
| 47 | +### Yelv | ||
| 48 | +- **DE Game8:** Starfall Blade/Rondo/Blossom are melee-combo core; recommends Astrolibrium (TP), Astral Heal (TP), Astral Purge, Galactic Cataclysm (TP), Subterfuge and Gravity Cloak candidates; Beam Boost, Supreme Sword, Synchrony Skills. Game8 explicitly emphasizes Skell pilot synergy. | ||
| 49 | +- **Independent recurrence:** Reddit DE party build repeats the Starfall trio, Astrolibrium, Astral Purge, Gravity Cloak, Subterfuge and Beam Barrage/ether filler. Strong recurrence for ground arts; its High Tension/Synchrony slots and AI warning differ. | ||
| 50 | +- **Decision:** use Sakuraba's Beam Saber series. Advanced Iron Saber is the early model supported by raw XSW data (MakerID 1, equipment level 3; Beam) and the DE Game8 Beam entry; Advanced Cermet Saber is the later Beam drop at min L53. The ordinary Iron Saber itself conflicts (Game8 says Physical; XSW raw says Beam), so do not rely on it. Pair the Starfall trio with Astrolibrium + Galactic Cataclysm (two TP) and free Astral Purge. Fixed ground Skills: Beam Boost/Supreme Sword/Secondary Accelerator; exclude Synchrony as Skell-only. Essence Exchange is excluded from AI substitutes because the HP/TP swap is unreliable for an autonomous character. | ||
| 51 | + | ||
| 52 | +### Mia | ||
| 53 | +- **DE Game8:** recommended fixed Arts include Full Specs (TP), Gravity Cloak, Subterfuge, Gravity Blast (Topple), Beam Barrage, Myopic Screen, Clarity Ray (cleanse/Ether resistance), Beam Bomber. Recommended Skills include Inner Search, Resistant Flesh and Tactical Analyst; text explicitly offers Ether Boost or Gravity Boost as offense alternative. | ||
| 54 | +- **Independent recurrence:** Nintendo Life DE roundup (article page searchable; reader exposed only alternate feed), Game8 and Reddit DE build search results all identify Mia as Ether/debuff hybrid; Subterfuge, Beam Barrage, Beam Bomber and Ether/Gravity focus recur. Exact complete bars are not independently corroborated; the Reddit result recommends Black Butterfly/Ether knife in contrast with Game8's Raygun-focused bar. Do not call exact loadout consensus. | ||
| 55 | +- **Decision:** keep Game8 coherent Raygun-heavy bar and three-slot Skills Tactical Analyst/Ether Boost/Inner Search. Do not import Raygun-only skill or claims into Knife Art. Full Specs is a **Knife** Art; Black Butterfly is also Knife and remains substitute, not claim that all Arts are Raygun. | ||
| 56 | + | ||
| 57 | +### Neilnail | ||
| 58 | +- **DE Game8:** Arts pool includes Hundred Shells [TP], Shadowrunner [TP], Blood Sacrifice (TP generator, **not a TP-costing Art**), Side Slash, Electric Surge, Conduction Rise, Jetstream, Astral Protection [TP]. Game8’s AI-oriented build proposes three TP Arts; curated bar uses two and selects Shadowrunner as an ordered Art substitute for rank-6–8 fill. It is TP/positional and may be less reliable for AI. Game8 also recommends Aura Assault, but it requires an equipped Aura; fixed Skills use Inner Search for its unconditionally useful Potential benefit to TP Arts/Soul Voice healing. | ||
| 59 | +- **Independent recurrence:** Reddit DE party-build search result repeats Side Slash, Jetstream, Conduction Rise, Astral Protection, Hundred Shells and melee/Ether/debuff role. Article-specific AI version warns about Blood Sacrifice; direct Reddit page blocked. Exact set recurrence is partial, not a complete consensus. | ||
| 60 | +- **Decision:** canonical TP Arts are Astral Protection + Hundred Shells; rank-4 Shadowrunner is a progression substitute, filtered by the two-TP cap once both canon Arts unlock. Blood Sacrifice remains excluded from substitutions because half-current-HP expenditure is AI-unsafe. Aura Assault is omitted from the Skill build to avoid an inert rank-9–10 window before Astral Protection (rank 11); use Inner Search (rank 16) instead of asserting an unmodeled Skill/Art dependency. | ||
| 61 | + | ||
| 62 | +### Al | ||
| 63 | +- **DE Game8:** recommends Hawkeye, Offensive Stance [TP], Hercules Blow, Eagle Eye, Sidewinder, Intercept, Howling Soul [TP], Tornado Blade; explicitly details risk (Stance increases damage taken; Blow scales upward as HP falls), team buffs/revival and no self-sustain. Skills: Steel Flesh, Mighty Muscle, Healing Touch, Grand Procession. | ||
| 64 | +- **Independent recurrence:** Reddit DE AI-build search result repeats Howling Soul/Hercules Blow/Offensive Stance and melee orientation but warns AI often handles TP Arts poorly and suggests simplify. Game8 and community source agree on core purpose, not on using all Arts. | ||
| 65 | +- **Decision:** keep both TP Arts only (Offensive Stance + Howling Soul), use six free Arts. Steel Flesh and Healing Touch directly answer documented fragility/support needs. Four Skills legal for Al's four slots. Howling Soul's revive selects random incapacitated ally, per Game8; do not promise targeted resurrection. | ||
| 66 | + | ||
| 67 | +## Weapon / TP validation matrix | ||
| 68 | + | ||
| 69 | +The current roster's full candidate Arts pool for these five characters follows; rank is the exact per-character unlock rank in `src/data/companions.ts`. Weapon family, TP consumption, and direct source URL are independently recorded for all 78 unlockable Arts. `TP-consuming?=No` includes TP-generation Arts such as Blood Sacrifice. | ||
| 70 | +| Character | Rank | Art | Weapon | TP-consuming? | Recommendation state | Direct source | | ||
| 71 | +|---|---:|---|---|---|---|---| | ||
| 72 | +| Phog | 1 | Back Slash | Dual Swords | No | Canonical | https://www.xenoserieswiki.org/wiki/Back_Slash_(XCX) | | ||
| 73 | +| Phog | 1 | Sliding Slinger | Dual Guns | No | Canonical | https://www.xenoserieswiki.org/wiki/Sliding_Slinger_(XCX) | | ||
| 74 | +| Phog | 2 | Upper Hand | Dual Swords | No | Substitute | https://www.xenoserieswiki.org/wiki/Upper_Hand | | ||
| 75 | +| Phog | 3 | Sky High | Dual Guns | No | Canonical | https://www.xenoserieswiki.org/wiki/Sky_High | | ||
| 76 | +| Phog | 4 | Shadowrunner | Dual Swords | Yes | Canonical | https://www.xenoserieswiki.org/wiki/Shadowrunner_(XCX) | | ||
| 77 | +| Phog | 5 | Side Slash | Dual Swords | No | Canonical | https://www.xenoserieswiki.org/wiki/Side_Slash | | ||
| 78 | +| Phog | 6 | Stream Edge | Dual Swords | Yes | Candidate pool | https://www.xenoserieswiki.org/wiki/Stream_Edge_(XCX) | | ||
| 79 | +| Phog | 7 | Primer | Dual Guns | No | Canonical | https://www.xenoserieswiki.org/wiki/Primer | | ||
| 80 | +| Phog | 8 | Early Bird | Dual Guns | Yes | Candidate pool | https://www.xenoserieswiki.org/wiki/Early_Bird | | ||
| 81 | +| Phog | 9 | Electric Surge | Dual Swords | No | Substitute | https://www.xenoserieswiki.org/wiki/Electric_Surge | | ||
| 82 | +| Phog | 10 | Executioner | Dual Guns | Yes | Candidate pool | https://www.xenoserieswiki.org/wiki/Executioner_(XCX) | | ||
| 83 | +| Phog | 11 | Ghostwalker | Dual Guns | No | Canonical | https://www.xenoserieswiki.org/wiki/Ghostwalker | | ||
| 84 | +| Phog | 12 | Crisis Zone | Dual Swords | Yes | Candidate pool | https://www.xenoserieswiki.org/wiki/Crisis_Zone | | ||
| 85 | +| Phog | 13 | Blood Sacrifice | Dual Swords | No | Candidate pool | https://www.xenoserieswiki.org/wiki/Blood_Sacrifice | | ||
| 86 | +| Phog | 14 | Combat Limbo | Dual Guns | No | Substitute | https://www.xenoserieswiki.org/wiki/Combat_Limbo | | ||
| 87 | +| Phog | 15 | Hundred Shells | Dual Swords | Yes | Canonical | https://www.xenoserieswiki.org/wiki/Hundred_Shells_(XCX) | | ||
| 88 | +| Yelv | 1 | Starfall Blade | Photon Saber | No | Canonical | https://www.xenoserieswiki.org/wiki/Starfall_Blade | | ||
| 89 | +| Yelv | 1 | Beam Barrage | Raygun | No | Substitute | https://www.xenoserieswiki.org/wiki/Beam_Barrage_(XCX) | | ||
| 90 | +| Yelv | 2 | Starfall Rondo | Photon Saber | No | Canonical | https://www.xenoserieswiki.org/wiki/Starfall_Rondo | | ||
| 91 | +| Yelv | 3 | Gravity Cloak | Raygun | No | Canonical | https://www.xenoserieswiki.org/wiki/Gravity_Cloak | | ||
| 92 | +| Yelv | 4 | Geolibrium | Photon Saber | Yes | Substitute | https://www.xenoserieswiki.org/wiki/Geolibrium | | ||
| 93 | +| Yelv | 5 | Essence Exchange | Photon Saber | No | Candidate pool; excluded for AI (HP/TP swap) | https://www.xenoserieswiki.org/wiki/Essence_Exchange | | ||
| 94 | +| Yelv | 6 | Ether Blast | Raygun | Yes | Substitute | https://www.xenoserieswiki.org/wiki/Ether_Blast | | ||
| 95 | +| Yelv | 7 | Myopic Screen | Raygun | No | Substitute | https://www.xenoserieswiki.org/wiki/Myopic_Screen_(XCX) | | ||
| 96 | +| Yelv | 8 | Astrolibrium | Photon Saber | Yes | Canonical | https://www.xenoserieswiki.org/wiki/Astrolibrium | | ||
| 97 | +| Yelv | 9 | Astral Heal | Photon Saber | Yes | Substitute | https://www.xenoserieswiki.org/wiki/Astral_Heal | | ||
| 98 | +| Yelv | 10 | Starfall Blossom | Photon Saber | No | Canonical | https://www.xenoserieswiki.org/wiki/Starfall_Blossom | | ||
| 99 | +| Yelv | 11 | Master Gunner | Raygun | Yes | Substitute | https://www.xenoserieswiki.org/wiki/Master_Gunner | | ||
| 100 | +| Yelv | 12 | Subterfuge | Raygun | No | Canonical | https://www.xenoserieswiki.org/wiki/Subterfuge | | ||
| 101 | +| Yelv | 13 | Astral Purge | Photon Saber | No | Canonical | https://www.xenoserieswiki.org/wiki/Astral_Purge | | ||
| 102 | +| Yelv | 14 | Novalibrium | Photon Saber | Yes | Substitute | https://www.xenoserieswiki.org/wiki/Novalibrium | | ||
| 103 | +| Yelv | 15 | Galactic Cataclysm | Photon Saber | Yes | Canonical | https://www.xenoserieswiki.org/wiki/Galactic_Cataclysm | | ||
| 104 | +| Mia | 1 | Screamer | Knife | No | Substitute | https://www.xenoserieswiki.org/wiki/Screamer_(XCX) | | ||
| 105 | +| Mia | 1 | Beam Barrage | Raygun | No | Canonical | https://www.xenoserieswiki.org/wiki/Beam_Barrage_(XCX) | | ||
| 106 | +| Mia | 2 | Myopic Screen | Raygun | No | Canonical | https://www.xenoserieswiki.org/wiki/Myopic_Screen_(XCX) | | ||
| 107 | +| Mia | 3 | Clarity Ray | Raygun | No | Canonical | https://www.xenoserieswiki.org/wiki/Clarity_Ray | | ||
| 108 | +| Mia | 4 | Full Specs | Knife | Yes | Canonical | https://www.xenoserieswiki.org/wiki/Full_Specs | | ||
| 109 | +| Mia | 5 | Ether Blast | Raygun | Yes | Candidate pool | https://www.xenoserieswiki.org/wiki/Ether_Blast | | ||
| 110 | +| Mia | 6 | Subterfuge | Raygun | No | Canonical | https://www.xenoserieswiki.org/wiki/Subterfuge | | ||
| 111 | +| Mia | 7 | Dispel | Knife | Yes | Candidate pool | https://www.xenoserieswiki.org/wiki/Dispel | | ||
| 112 | +| Mia | 8 | Gravity Cloak | Raygun | No | Canonical | https://www.xenoserieswiki.org/wiki/Gravity_Cloak | | ||
| 113 | +| Mia | 9 | Energy Source | Knife | Yes | Candidate pool | https://www.xenoserieswiki.org/wiki/Energy_Source | | ||
| 114 | +| Mia | 10 | Beam Bomber | Raygun | No | Canonical | https://www.xenoserieswiki.org/wiki/Beam_Bomber_(XCX) | | ||
| 115 | +| Mia | 11 | Black Butterfly | Knife | No | Substitute | https://www.xenoserieswiki.org/wiki/Black_Butterfly | | ||
| 116 | +| Mia | 12 | Pathogen Blast | Raygun | No | Substitute | https://www.xenoserieswiki.org/wiki/Pathogen_Blast | | ||
| 117 | +| Mia | 13 | Gravity Blast | Raygun | No | Canonical | https://www.xenoserieswiki.org/wiki/Gravity_Blast | | ||
| 118 | +| Neilnail | 1 | Back Slash | Dual Swords | No | Canonical | https://www.xenoserieswiki.org/wiki/Back_Slash_(XCX) | | ||
| 119 | +| Neilnail | 1 | Jetstream | Psycho Launchers | No | Canonical | https://www.xenoserieswiki.org/wiki/Jetstream | | ||
| 120 | +| Neilnail | 2 | Side Slash | Dual Swords | No | Canonical | https://www.xenoserieswiki.org/wiki/Side_Slash | | ||
| 121 | +| Neilnail | 3 | Lightning Cloak | Psycho Launchers | No | Substitute | https://www.xenoserieswiki.org/wiki/Lightning_Cloak | | ||
| 122 | +| Neilnail | 4 | Shadowrunner | Dual Swords | Yes | Substitute | https://www.xenoserieswiki.org/wiki/Shadowrunner_(XCX) | | ||
| 123 | +| Neilnail | 5 | Stellar Ray | Psycho Launchers | No | Substitute | https://www.xenoserieswiki.org/wiki/Stellar_Ray | | ||
| 124 | +| Neilnail | 6 | Blood Sacrifice | Dual Swords | No | Candidate pool | https://www.xenoserieswiki.org/wiki/Blood_Sacrifice | | ||
| 125 | +| Neilnail | 7 | Shooting Star | Psycho Launchers | No | Canonical | https://www.xenoserieswiki.org/wiki/Shooting_Star | | ||
| 126 | +| Neilnail | 8 | Hundred Shells | Dual Swords | Yes | Canonical | https://www.xenoserieswiki.org/wiki/Hundred_Shells_(XCX) | | ||
| 127 | +| Neilnail | 9 | Conduction Rise | Psycho Launchers | No | Canonical | https://www.xenoserieswiki.org/wiki/Conduction_Rise | | ||
| 128 | +| Neilnail | 10 | Upper Hand | Dual Swords | No | Substitute | https://www.xenoserieswiki.org/wiki/Upper_Hand | | ||
| 129 | +| Neilnail | 11 | Astral Protection | Psycho Launchers | Yes | Canonical | https://www.xenoserieswiki.org/wiki/Astral_Protection | | ||
| 130 | +| Neilnail | 12 | Electric Surge | Dual Swords | No | Canonical | https://www.xenoserieswiki.org/wiki/Electric_Surge | | ||
| 131 | +| Neilnail | 13 | Heroic Tale | Psycho Launchers | No | Substitute | https://www.xenoserieswiki.org/wiki/Heroic_Tale | | ||
| 132 | +| Neilnail | 14 | Starlight Kick | Psycho Launchers | Yes | Candidate pool | https://www.xenoserieswiki.org/wiki/Starlight_Kick_(XCX) | | ||
| 133 | +| Neilnail | 15 | Thirsty Edge | Dual Swords | Yes | Candidate pool | https://www.xenoserieswiki.org/wiki/Thirsty_Edge | | ||
| 134 | +| Al | 1 | Rising Blade | Longsword | No | Substitute | https://www.xenoserieswiki.org/wiki/Rising_Blade | | ||
| 135 | +| Al | 1 | First Down | Sniper Rifle | No | Substitute | https://www.xenoserieswiki.org/wiki/First_Down | | ||
| 136 | +| Al | 2 | Magnum Edge | Longsword | No | Substitute | https://www.xenoserieswiki.org/wiki/Magnum_Edge_(XCX) | | ||
| 137 | +| Al | 3 | Eagle Eye | Sniper Rifle | No | Canonical | https://www.xenoserieswiki.org/wiki/Eagle_Eye | | ||
| 138 | +| Al | 4 | Offensive Stance | Longsword | Yes | Canonical | https://www.xenoserieswiki.org/wiki/Offensive_Stance | | ||
| 139 | +| Al | 5 | Shrapnel | Sniper Rifle | No | Substitute | https://www.xenoserieswiki.org/wiki/Shrapnel_(XCX) | | ||
| 140 | +| Al | 6 | Hawkeye | Sniper Rifle | No | Canonical | https://www.xenoserieswiki.org/wiki/Hawkeye | | ||
| 141 | +| Al | 7 | Tornado Blade | Longsword | No | Canonical | https://www.xenoserieswiki.org/wiki/Tornado_Blade | | ||
| 142 | +| Al | 8 | Intercept | Sniper Rifle | No | Canonical | https://www.xenoserieswiki.org/wiki/Intercept | | ||
| 143 | +| Al | 9 | Burning Slash | Longsword | No | Substitute | https://www.xenoserieswiki.org/wiki/Burning_Slash | | ||
| 144 | +| Al | 10 | Sidewinder | Sniper Rifle | No | Canonical | https://www.xenoserieswiki.org/wiki/Sidewinder_(XCX) | | ||
| 145 | +| Al | 11 | Hercules Blow | Longsword | No | Canonical | https://www.xenoserieswiki.org/wiki/Hercules_Blow | | ||
| 146 | +| Al | 12 | Ghost Sniper | Sniper Rifle | Yes | Candidate pool | https://www.xenoserieswiki.org/wiki/Ghost_Sniper | | ||
| 147 | +| Al | 13 | Samurai Soul | Longsword | Yes | Candidate pool | https://www.xenoserieswiki.org/wiki/Samurai_Soul | | ||
| 148 | +| Al | 14 | Incendiary Edge | Longsword | Yes | Candidate pool | https://www.xenoserieswiki.org/wiki/Incendiary_Edge | | ||
| 149 | +| Al | 15 | Howling Soul | Sniper Rifle | Yes | Canonical | https://www.xenoserieswiki.org/wiki/Howling_Soul | | ||
| 150 | + | ||
| 151 | +### Complete Skill candidate pool | ||
| 152 | + | ||
| 153 | +Rank is source-backed per-character progression rank from `src/data/companions.ts`; state labels reference final Skills and ordered substitute list above. | ||
| 154 | + | ||
| 155 | +| Character | Complete unlockable Skills by rank | | ||
| 156 | +|---|---| | ||
| 157 | +| Phog | `7 Agile Gunslinger (substitute); 9 Steady Hand (substitute); 11 Background Noise (canonical); 13 Master Edge (canonical); 15 Mortal Enemy; 16 Hellhound; 17 Crisis Catalyst (substitute); 18 Phantom Counter (canonical)` | | ||
| 158 | +| Yelv | `7 Inner Search (substitute); 9 Beam Boost (canonical); 11 High Tension (substitute); 13 Mechanoid Slayer; 14 Knight's Soul (substitute); 15 Supreme Sword (canonical); 16 Secondary Accelerator (canonical); 17 Synchrony (Skell-only, excluded from fixed ground build)` | | ||
| 159 | +| Mia | `7 Inner Search (canonical); 9 Beam Boost (substitute); 11 Beauty Sleep; 13 Ether Boost (canonical); 14 Extra Armor; 15 Gravity Boost (substitute); 16 Resistant Flesh (substitute); 17 Tactical Analyst (canonical)` | | ||
| 160 | +| Neilnail | `7 Ether Boost (canonical); 9 Aura Assault (excluded from canonical selection: requires equipped Aura, causing rank-9–10 inert window); 11 Knight's Soul (canonical); 13 Supreme Sword (canonical); 14 Buff Extender (not selected; no matching effect rationale established); 15 Buff Heal (not selected); 16 Inner Search (canonical); 17 Fast Forward (substitute)` | | ||
| 161 | +| Al | `7 Steel Flesh (canonical); 9 Mighty Muscle (canonical); 11 Quick Reload (substitute); 13 Conflagrant Edge (substitute); 14 Healing Touch (canonical); 15 Boosted Bullets (substitute); 16 Dismantler (substitute); 17 Grand Procession (canonical)` | | ||
| 162 | + | ||
| 163 | +## Manufacturer and armor recommendations | ||
| 164 | + | ||
| 165 | +**Manufacturer fact base:** Sakuraba Industries is an early AM with the relevant weapon families and physical-leaning product lines. Candid & Credible unlocks after Chapter 5 and offers defensive ground gear; Meredith & Co. unlocks after Chapter 4 and uses Ether technology. Armor wear availability is also tied to AM rank: Medium Wear at AM L1, Light Wear at AM L2, Heavy Wear at AM L3. Shop-trait stock is limited; drops/variants differ. Manufacturer, weapon type, individual model, attribute and armor weight are separate facts; do not generalize a maker specialty to every item. | ||
| 166 | +| Character | Weapon maker/type/model/attribute | Armor maker/type/traits | Unlock/alternative | | ||
| 167 | +|---|---|---|---| | ||
| 168 | +| Phog | Sakuraba Dual Swords (physical Blades line, e.g. Iron Blades) + Physical Dual Guns. For ranged, physical **Sky High** seeks Ranged Attack/accuracy; Melee Attack applies to Dual-Sword **Side/Back Slash**; TP stats support the two TP Arts. | Sakuraba Medium Wear AM L1 for level-15 frontline: verified DE Combat Bodywear is Medium, min L15, defense 28, Physical +10, Gravity −15, Melee Attack Up II. C&C Light is optional AM L2; its published family traits include head Potential Up, arm Melee Attack/Max TP, leg Evasion/Max TP. | Sakuraba Medium is available at AM L1. Sakuraba Light requires AM L2. C&C unlocks after Chapter 5; C&C Light/Heavy require AM L2/L3. | | ||
| 169 | +| Yelv | Sakuraba Photon Saber **Advanced Iron Saber** (Beam, ATK 40; raw XSW MakerID 1, AM L1, equipment level 3; DE Game8 also lists Advanced Iron Saber as Beam). This is the early Beam model for Beam Boost/Astrolibrium/Galactic Cataclysm. Later option: **Advanced Cermet Saber** (Beam, ATK 140, min L53, random drop). | Sakuraba Medium AM L1 for early armor; Light AM L2 offers arm Melee Attack Up/Max TP options. Names by slots: Goggles/Bodywear/Glove/Footwear (Medium); Visor/Vest/Guard/Boots (Light). | Advanced Iron Saber model/attribute is supported by Game8 and raw data; exact shop/drop path not established. Advanced Cermet Saber is a random drop, min L53. Ordinary Iron Saber attributes conflict and are not relied on. | | ||
| 170 | +| Mia | Meredith & Co. Ether **Radius Raygun + Pugio Knife**; types/attributes match Raygun/Knife and Ether Boost. Item quality/level varies; prioritize Ether variants. | Meredith Medium Wear AM L1 (Chapter 4 manufacturer unlock); Ether-tech/resistance profile fits support role. Light AM L2 adds Potential Up head and Max TP/Ranged Attack Boost arm options. Slot names: Vitra/Corpus/Chiro/Plantars (Medium); Vizard/Vestis/Armilla/Ocreis (Light). | Meredith unlocks after Chapter 4. Light needs AM L2. C&C is later (Chapter 5, Light AM L2); armor’s item level must not exceed Mia's current level. | | ||
| 171 | +| Neilnail | Meredith & Co. Ether **Ruina II Psycho Launchers** + Sakuraba physical Dual Swords (Blades line, e.g. Iron Blades). Ether Arts align to Ruina II; Dual Swords support Side/Back Slash and TP finisher. | Meredith Medium Wear AM L1; Ether-resistance profile fits Ether frontline. Light AM L2 offers Ether Res Up/Max TP/Ranged Attack Boost options. Slot names: Vitra/Corpus/Chiro/Plantars (Medium); Vizard/Vestis/Armilla/Ocreis (Light). | Meredith unlocks Chapter 4; AM stock level gates series. C&C later: Chapter 5 and Light AM L2. Use level-eligible armor. | | ||
| 172 | +| Al | Sakuraba **Iron Sword** Longsword (Physical, min L1, attack 48, cooldown 2.0, TP gain 230, stability 8, shop 3,000 credits) + Sakuraba Sniper Rifle physical line. No thermal/Six Stars model in final advice. | Sakuraba Medium Wear AM L1. Verified DE Combat Bodywear: min L15, defense 28, Physical +10, Gravity −15, Melee Attack Up II; fits melee/physical frontline. Light AM L2 offers arm Melee Attack Up/Max TP alternatives. | Iron Sword is shop-purchasable at level 1. Sakuraba Medium AM L1; Light AM L2. Optional C&C Heavy Combat Bulwark requires Chapter 5 + C&C AM L3 (min L15; defense 40; Potential Up II; Electric +20, Beam −5, Gravity −15). | | ||
| 173 | + | ||
| 174 | +### Equipment evidence sources | ||
| 175 | + | ||
| 176 | +- Manufacturer rank gates and families: Sakuraba Industries (early AM; Medium L1, Light L2, Heavy L3; weapon/armor lines): https://xenoblade.fandom.com/wiki/Sakuraba_Industries. | ||
| 177 | +- Candid & Credible (Chapter 5 unlock; Medium L1, Light L2, Heavy L3; armor part names/traits): https://xenoblade.fandom.com/wiki/Candid_%26_Credible. | ||
| 178 | +- Meredith & Co. (Chapter 4 unlock; Ether equipment; Medium L1, Light L2): https://xenoblade.fandom.com/wiki/Meredith_%26_Co. | ||
| 179 | +- DE Sakuraba Combat Bodywear (Medium torso, min L15, defense 28, Physical +10, Gravity −15, Melee Attack Up II): https://game8.co/games/Xenoblade-Chronicles-X/archives/510709. | ||
| 180 | +- DE C&C Combat Bulwark (Heavy torso, min L15, defense 40, Potential Up II, Electric +20, Beam −5, Gravity −15): https://game8.co/games/Xenoblade-Chronicles-X/archives/510204. | ||
| 181 | +- DE Advanced Iron Saber raw weapon record (Sakuraba MakerID 1, equipment level 3, Beam): https://www.xenoserieswiki.org/w/index.php?title=Advanced_Iron_Saber&action=raw. Game8 DE also lists its Beam attribute: https://game8.co/games/Xenoblade-Chronicles-X/archives/504904. DE Advanced Cermet Saber later drop: https://game8.co/games/Xenoblade-Chronicles-X/archives/512175. DE Iron Sword: https://game8.co/games/Xenoblade-Chronicles-X/archives/511408. | ||
| 182 | +- DE weapon tables: Photon Sabers https://game8.co/games/Xenoblade-Chronicles-X/archives/504904; Dual Swords https://game8.co/games/Xenoblade-Chronicles-X/archives/504901; Dual Guns https://game8.co/games/Xenoblade-Chronicles-X/archives/504895; Rayguns https://game8.co/games/Xenoblade-Chronicles-X/archives/504897; Knives https://game8.co/games/Xenoblade-Chronicles-X/archives/504903; Psycho Launchers https://game8.co/games/Xenoblade-Chronicles-X/archives/504898. | ||
| 183 | +- Game8 DE Sky High page: Ranged Dual Guns Art, physical, Rank 3 and melee-combo conditional. Sky High benefits from Ranged Attack; Melee Attack is relevant to Dual-Sword Arts: https://game8.co/games/Xenoblade-Chronicles-X/archives/506135. | ||
| 184 | +- XSW raw Skill effects: Inner Search increases Potential (including TP Art damage/Soul Voice recovery): https://www.xenoserieswiki.org/w/index.php?title=Inner_Search&action=raw; Aura Assault requires an active Aura: https://www.xenoserieswiki.org/w/index.php?title=Aura_Assault&action=raw. | ||
| 185 | +- Meredith Ether weapon examples: Radius Raygun / Pugio Knife https://xenoblade.fandom.com/wiki/Raygun and https://xenoblade.fandom.com/wiki/Knife; Ruina II Psycho Launchers https://xenoblade.fandom.com/wiki/Psycho_Launchers. | ||
| 186 | + | ||
| 187 | +## Source log and recurrence limits | ||
| 188 | + | ||
| 189 | +1. **Game8, DE, 2025:** [Phog Best Build](https://game8.co/games/Xenoblade-Chronicles-X/archives/507892), [Phog Arts/Skills/recruitment](https://game8.co/games/Xenoblade-Chronicles-X/archives/500611), [Yelv Best Build](https://game8.co/games/Xenoblade-Chronicles-X/archives/507260), [Mia Best Build](https://game8.co/games/Xenoblade-Chronicles-X/archives/514627), [Neilnail Best Build](https://game8.co/games/Xenoblade-Chronicles-X/archives/507640), [Al Best Build](https://game8.co/games/Xenoblade-Chronicles-X/archives/515373). The guide pages themselves disclaim Nintendo affiliation; their authored build recommendations are editorial evidence, not official Nintendo recommendations. | ||
| 190 | +2. **Nintendo Life, DE, 2026:** [Best combat builds for all characters](https://www.nintendolife.com/guides/xenoblade-chronicles-x-best-combat-builds-for-all-characters). Reader returned comments feed, not article body. Search returned Mia as Ether/debuffer build; source recurrence is secondary and not used as sole proof. | ||
| 191 | +3. **Independent community DE build guide:** [Reddit party member builds](https://www.reddit.com/r/Xenoblade_Chronicles/comments/1jnyxkz/a_guide_to_xenoblade_x_de_party_member_builds/). Search results yielded build details; direct source fetch blocked by Reddit network security. Its evidence is lower-confidence and logged as search-result only; no consensus claim relies exclusively on it. | ||
| 192 | +4. **Mechanical Art source:** Xeno Series Wiki [Battle Art (XCX)](https://www.xenoserieswiki.org/wiki/Battle_Art_(XCX)) and **78 direct Art URLs in the durable candidate table above**. Local curated extractor `research/art-effects.json`, extraction date 2026-08-04; direct Art page and caption are per-Art evidence. | ||
| 193 | +5. **Character/progression source:** current project companion facts `src/data/companions.ts` store exact character Arts, Skill slots, default loadouts, unlock order and source URLs to Xeno Series Wiki Gameplay pages. They do not store weapon per Art; durable table above supplies source-backed weapon/TP facts. | ||
| 194 | + | ||
| 195 | +## Evidence limits and unresolved differences | ||
| 196 | + | ||
| 197 | +- No first-party Nintendo source provides character-build prescriptions. Game8/Nintendo Life builds are editorial; community guidance provides independent partial recurrence, not evidence of full-loadout consensus. Character-level overlap is recorded above; search corpus was targeted, not exhaustive. | ||
| 198 | +- Reddit community guide source fetched as blocked, so recurrence claims drawn from its search result only are explicitly lower-confidence. Nintendo Life reader exposed comments feed instead of article body. | ||
| 199 | +- Xeno Series Wiki semantic extraction flags are regex-derived; table retains the underlying direct Art URLs. Local `companions.ts` rank is the project's per-character progression gate, not a class rank. No quest-level unlock condition is inferred where current source data does not state one. | ||
| 200 | +- Candid & Credible manufacturer description mentions Electric weapon expansion, while its level-2 Dual Guns series text specifically describes Gravity weaponry. Treat this as line/catalog difference; no generic C&C weapon attribute is recommended. | ||
| 201 | +- Photon Saber manufacturer/item evidence: Sakuraba Saber series is Beam; Six Stars Lightblade is Electric and Lightblade II Thermal (not Beam). Xeno Series Wiki lists Iron Saber raw as Beam while Game8 DE's table labels standard Iron Saber Physical; the build chooses **Advanced Iron Saber**, for which Game8 and raw XSW agree on Beam. Raw standard Iron Saber conflict: https://www.xenoserieswiki.org/w/index.php?title=Iron_Saber&action=raw; Game8 inventory: https://game8.co/games/Xenoblade-Chronicles-X/archives/504904. No Six Stars model used. | ||
| 202 | +- Al's Wii U-era Thermal Glaive/Six Stars possibility is not recommended without DE stock/unlock proof; original-XCX source inspected: https://primagames.com/eguides/xenoblade-chronicles-x-eguide/shop-terminal-listings/ground-gear-weaponry/longsword. Use verified Sakuraba Physical Iron Sword instead. | ||
| 203 | +- No universal armor model is best: elemental resistance profiles vary by manufacturer, wear, part and encounter. Product-level rank, character level, and Chapter manufacturer unlocks all constrain availability; body table records explicit known gates and DE item examples. | ||
added
research/companion-builds-specialists.md +235 -0 | new file mode 100644 | ||
| @@ -0,0 +1,235 @@ | ||
| 1 | +# Companion build research: Ga Jiarg, Hope, Liesel, Murderess, Nagi | |
| 2 | + | |
| 3 | +As of 2026-09-26. Scope: five non-Cross companions in Rickub #1. No code changes. No Cross recommendations. No build, lint, test, or formatter runs. | |
| 4 | + | |
| 5 | +## Decision rules | |
| 6 | + | |
| 7 | +- Treat build-guide Arts and Skills as candidates, not as proof of companion progression or AI behavior. | |
| 8 | +- Use each character's Xeno Series Wiki gameplay table and the current roster's unlock facts for personal-rank progression. The two sources agree for these five records. | |
| 9 | +- A TP-consuming Art is one whose game-data caption says it requires TP. An Art that generates TP is not TP-consuming. `True Stream Edge`, `Violent Streak`, `Primer`, and `Sliding Slinger` generate TP without spending it. | |
| 10 | +- Each final Art list has eight unique Arts or fewer and no more than two TP-consuming Arts. The same limit applies when rank-based substitutes fill missing slots. Never take a third TP Art to reach eight. | |
| 11 | +- Arts must use the character's own native weapon pair. Weapon damage attribute and Art damage attribute are separate. Fixed Electric or Beam Arts keep their Art attribute with any compatible weapon; weapon-attribute damage Arts inherit their equipped weapon's attribute. | |
| 12 | +- Role, synergy, and AI-suitability judgments below are editorial unless attributed to a guide. Both guide publishers mostly give general/player-controlled builds. Neither tests the listed bars as fixed autonomous-companion builds. | |
| 13 | +- These are ground builds. Do not rewrite Skills for Skell mode or claim ground-only Skills as Skell benefits. Keep vehicle packages separate. | |
| 14 | + | |
| 15 | +## Source corpus and limits | |
| 16 | + | |
| 17 | +| Source | Edition | Claims used | Independence and limits | | |
| 18 | +|---|---|---|---| | |
| 19 | +| [Game8, Ga Jiarg Best Build](https://game8.co/games/Xenoblade-Chronicles-X/archives/513831), [Hope](https://game8.co/games/Xenoblade-Chronicles-X/archives/507443), [Liesel](https://game8.co/games/Xenoblade-Chronicles-X/archives/507864), [Murderess](https://game8.co/games/Xenoblade-Chronicles-X/archives/507456), [Nagi](https://game8.co/games/Xenoblade-Chronicles-X/archives/513229) | DE | Candidate Arts, Skills, combat roles, named character builds | One publisher. General build advice, not companion-AI trials. Several published unlock ranks differ from character personal-rank tables. | | |
| 20 | +| [Nintendo Life, Best Combat Builds For All Characters](https://www.nintendolife.com/guides/xenoblade-chronicles-x-best-combat-builds-for-all-characters) | DE page, also covers Wii U | Hope and Murderess candidate bars, roles, Skills; status of remaining researched characters | Independent publisher, article marked work-in-progress. Its Hope entry says `Astral Projection`, which is not a legal Art; do not silently reinterpret that as `Astral Protection`. Its Ga Jiarg, Liesel, and Nagi sections say "Coming soon." Published 2025-03-31, updated 2026-02-19, by PJ O'Reilly. | | |
| 21 | +| [Xeno Series Wiki gameplay pages](https://www.xenoserieswiki.org/wiki/Ga_Jiarg/Gameplay), [Hope](https://www.xenoserieswiki.org/wiki/Hope/Gameplay), [Liesel](https://www.xenoserieswiki.org/wiki/Liesel/Gameplay), [Murderess](https://www.xenoserieswiki.org/wiki/Murderess/Gameplay), [Nagi](https://www.xenoserieswiki.org/wiki/Nagi/Gameplay) | Ga Jiarg and Liesel pages explicitly DE; Hope, Murderess, and Nagi pages cover XCX and expose version-specific equipment data | Native weapons, default Arts, starting level/rank, personal class ranks, skill unlock ranks, Skill slots, stat modifiers | Mechanical reference, not a build recommendation. The three original-roster pages are not labelled DE-only. Their mechanics match current roster data; Game8's DE character pages independently confirm build availability. | | |
| 22 | +| Xeno Series Wiki individual Art pages linked in the Art tables; cached extraction [research/art-effects.json](art-effects.json) | Shared Art facts; some Arts have DE-specific pages | Native Art weapon and TP-consuming flag | The local semantic extraction is dated 2026-08-04. Each row links to the underlying Xeno Series Wiki Art page, not merely to the cache. | | |
| 23 | +| [Xeno Series Wiki, Arms Manufacturer](https://www.xenoserieswiki.org/wiki/Arms_Manufacturer), [Armor](https://www.xenoserieswiki.org/wiki/Armor_(XCX)), and weapon-category pages for [Photon Sabers](https://www.xenoserieswiki.org/wiki/Photon_Saber), [Rayguns](https://www.xenoserieswiki.org/wiki/Raygun), [Javelins](https://www.xenoserieswiki.org/wiki/Javelin), [Longswords](https://www.xenoserieswiki.org/wiki/Longsword), [Dual Swords](https://www.xenoserieswiki.org/wiki/Dual_Swords_(XCX)), [Psycho Launchers](https://www.xenoserieswiki.org/wiki/Psycho_Launchers), [Dual Guns](https://www.xenoserieswiki.org/wiki/Dual_Guns), and [Gatling Guns](https://www.xenoserieswiki.org/wiki/Gatling_Gun) | XCX and DE where marked | Weapon families, item attributes, armor types, manufacturer catalog restrictions, story and manufacturer-rank gates | Manufacturer name alone does not guarantee an item's attribute. Check specific weapon model. Light/Medium/Heavy trade defense against attribute resistance; each armor piece still has individual stats and traits. | | |
| 24 | +| Game8 armor entries: [Combat Norak](https://game8.co/games/Xenoblade-Chronicles-X/archives/510471), [Combat Bodywear](https://game8.co/games/Xenoblade-Chronicles-X/archives/510709), [Reginal Vest](https://game8.co/games/Xenoblade-Chronicles-X/archives/510523), [Reginal Breaker](https://game8.co/games/Xenoblade-Chronicles-X/archives/510343), [Combat Bulwark](https://game8.co/games/Xenoblade-Chronicles-X/archives/510204), [Vivid Bulwark](https://game8.co/games/Xenoblade-Chronicles-X/archives/510203) | DE | Exact item maker, category, minimum level, price, defense, resistances, built-in trait | Product pages, not character build endorsements. | | |
| 25 | +| [Game8, all Photon Sabers](https://game8.co/games/Xenoblade-Chronicles-X/archives/504904), [Rayguns](https://game8.co/games/Xenoblade-Chronicles-X/archives/504897), [Javelins](https://game8.co/games/Xenoblade-Chronicles-X/archives/504900), [Longswords](https://game8.co/games/Xenoblade-Chronicles-X/archives/504899) | DE | Concrete weapon models and attributes | Some shop entries and dropped variants differ. Cite model and attribute, not just maker. | | |
| 26 | + | |
| 27 | +Searches also surfaced GameFAQs and Reddit discussion threads. Direct retrieval returned HTTP 403 for GameFAQs and a network-security block for Reddit. I excluded those pages from recurrence counts. This is a documented source corpus, not a claim of exhaustive Internet search. | |
| 28 | + | |
| 29 | +### Independent recurrence | |
| 30 | + | |
| 31 | +| Character | Accessible independent build sources | Recurrence | Decision status | | |
| 32 | +|---|---|---|---| | |
| 33 | +| Ga Jiarg | Game8 only; Nintendo Life marks its section "Coming soon" | No independently recurring full build established | Game8 is one candidate source. Final two-TP bar is editorial. | | |
| 34 | +| Hope | Game8 and Nintendo Life | Both list Repair, Absorber Skin, Energy Source, Black Butterfly, Shooting Star, Stellar Ray, and Tacit Censure; both list Inner Search, Knight's Soul, and TP Overdrive. Nintendo Life's eighth Art is invalidly named `Astral Projection`; do not count it as Astral Protection recurrence. | Support role and seven Arts recur. Astral Protection is selected from Game8 and mechanical evidence, not claimed as independent consensus. | | |
| 35 | +| Liesel | Game8 only; Nintendo Life marks its section "Coming soon" | No independently recurring full build established | Game8's electric/crit combo is one candidate source. AI reliability remains editorial. | | |
| 36 | +| Murderess | Game8 and Nintendo Life | Both list Hundred Shells, Seventh Edge, Killing Machine, Side Slash, Back Slash, Electric Surge, Jetstream, and Astral Protection; both list Hellhound, Aura Assault, and High Tension. | Melee/Overdrive role recurs. Both source Arts bars exceed the requested TP cap by one; final bar is an editorial cutover. | | |
| 37 | +| Nagi | Game8 only; Nintendo Life marks its section "Coming soon" | No independently recurring full build established | Game8 is one candidate source. The selected TP pair preserves aura and Blossom Dance while dropping Incendiary Edge. | | |
| 38 | + | |
| 39 | +## Current roster and mechanics audit | |
| 40 | + | |
| 41 | +`src/data/companions.ts` is current project data. Class, personal-rank, initial weapon, and Skill-slot facts below match the linked Xeno Series Wiki gameplay pages. All five have eight ground-Art slots at maximum, personal-rank cap 20, and the current repo's ordered Art/Skill unlock facts. | |
| 42 | + | |
| 43 | +| Companion | Start level / rank | Class | Ranged / melee weapon pair | Skill slots | Relevant modifiers | | |
| 44 | +|---|---:|---|---|---:|---| | |
| 45 | +| Ga Jiarg | 40 / 3 | Galactic Knight+ | Raygun / Photon Saber | 4 | HP +5%, ranged attack +10%, melee attack +15%, potential +10% | | |
| 46 | +| Hope | 24 / 3 | Psycorruptor+ | Psycho Launchers / Knife | 3 | HP −20%; other listed combat modifiers 0% | | |
| 47 | +| Liesel | 25 / 3 | Partisan Eagle+ | Dual Guns / Javelin | 3 | ranged attack +30%, ranged accuracy +10%, potential −10% | | |
| 48 | +| Murderess | 21 / 3 | Winged Viper+ | Psycho Launchers / Dual Swords | 3 | HP −5%; other listed combat modifiers 0% | | |
| 49 | +| Nagi | 33 / 4 | Duelist+ | Gatling Gun / Longsword | 5 | HP +25%, ranged attack +20%, melee attack +25%, potential −15% | | |
| 50 | + | |
| 51 | +Arts below are legal for those weapon pairs. Rank means personal class rank in the companion progression data, not the rank label in a generic Cross build guide. Game8's displayed unlock ranks do not consistently match the per-character personal ranks in Xeno Series Wiki/current repo, for example Liesel's Spiral Horn is Game8 rank 6 but companion rank 14, and Trident Buster is Game8 rank 8 but companion rank 15. The axis is unreconciled. Use companion-specific rank facts for this integration, not Game8's generic rank columns. | |
| 52 | + | |
| 53 | +## Ga Jiarg | |
| 54 | + | |
| 55 | +**Candidate evidence.** Game8 recommends Starfall Blossom, Starfall Rondo, Astrolibrium, Sky Sunder, Astral Heal, Gravity Blast, Gravity Cloak, and Bahamut Wave. Three consume TP: Astrolibrium, Sky Sunder, Astral Heal. Its prose describes a melee Beam/debuff role, Starfall combos, status spread, Topple, and healing. | |
| 56 | + | |
| 57 | +**Final Arts, ordered.** Starfall Blossom / Starfall Rondo / Astrolibrium / Sky Sunder / Subterfuge / Bahamut Wave / Gravity Blast / Gravity Cloak. This keeps the TP-generation Art, the Beam aura, the Beam finisher, debuff resistance down/spread, Topple, and Gravity resistance. Astral Heal is not selected because it would be a third TP spender beside Astrolibrium and Sky Sunder. `Pathogen Blast` is a non-TP progression alternative if more Virus application matters. | |
| 58 | + | |
| 59 | +**Final Skills, ordered.** Beam Boost / Aura Assault / Supreme Sword / Tactical Analyst. Four slots. They support Beam output, Aura melee, melee combos, and debuff application. These choices come from Game8's character build, with ordered rank-based replacements below. | |
| 60 | + | |
| 61 | +**AI role and caveat.** Editorial: debuff-aware melee/Beam attacker with Topple and debuff spread. Starfall Blossom has a front-position TP benefit. Game8 does not test this as an AI bar. The ordered bar gives AI useful effects without assuming a scripted rotation. | |
| 62 | + | |
| 63 | +**Art legality, cost, and progression.** All listed Arts use Ga Jiarg's Raygun or Photon Saber. TP column means the Art consumes TP. Substitute order is rank order; if a substitute is TP-consuming, the companion-only selector must skip it when two TP Arts are already equipped. | |
| 64 | + | |
| 65 | +| Order | Art | Personal rank | Weapon | Consumes TP? | Status | Mechanical source | | |
| 66 | +|---:|---|---:|---|---|---|---| | |
| 67 | +| 1 | Starfall Blossom | 12 | Photon Saber | No, generates TP from the front | Final | [Art page](https://www.xenoserieswiki.org/wiki/Starfall_Blossom) | | |
| 68 | +| 2 | Starfall Rondo | 6 | Photon Saber | No | Final | [Art page](https://www.xenoserieswiki.org/wiki/Starfall_Rondo) | | |
| 69 | +| 3 | Astrolibrium | 5 | Photon Saber | Yes | Final | [Art page](https://www.xenoserieswiki.org/wiki/Astrolibrium) | | |
| 70 | +| 4 | Sky Sunder | 2 | Photon Saber | Yes | Final | [Art page](https://www.xenoserieswiki.org/wiki/Sky_Sunder) | | |
| 71 | +| 5 | Subterfuge | 3 | Raygun | No | Final | [Art page](https://www.xenoserieswiki.org/wiki/Subterfuge) | | |
| 72 | +| 6 | Bahamut Wave | 14 | Raygun | No | Final | [Art page](https://www.xenoserieswiki.org/wiki/Bahamut_Wave) | | |
| 73 | +| 7 | Gravity Blast | 9 | Raygun | No | Final | [Art page](https://www.xenoserieswiki.org/wiki/Gravity_Blast) | | |
| 74 | +| 8 | Gravity Cloak | 4 | Raygun | No | Final | [Art page](https://www.xenoserieswiki.org/wiki/Gravity_Cloak) | | |
| 75 | +| 1 | Starfall Blade | 1 | Photon Saber | No | Substitute | [Art page](https://www.xenoserieswiki.org/wiki/Starfall_Blade) | | |
| 76 | +| 2 | Beam Barrage | 1 | Raygun | No | Substitute | [Art page](https://www.xenoserieswiki.org/wiki/Beam_Barrage_(XCX)) | | |
| 77 | +| 3 | Myopic Screen | 7 | Raygun | No | Substitute | [Art page](https://www.xenoserieswiki.org/wiki/Myopic_Screen_(XCX)) | | |
| 78 | +| 4 | Astral Heal | 8 | Photon Saber | Yes | Substitute; displaced from guide bar by TP cap | [Art page](https://www.xenoserieswiki.org/wiki/Astral_Heal) | | |
| 79 | +| 5 | Novalibrium | 10 | Photon Saber | Yes | Substitute | [Art page](https://www.xenoserieswiki.org/wiki/Novalibrium) | | |
| 80 | +| 6 | Ether Blast | 11 | Raygun | Yes | Substitute | [Art page](https://www.xenoserieswiki.org/wiki/Ether_Blast) | | |
| 81 | +| 7 | Pathogen Blast | 13 | Raygun | No | Substitute | [Art page](https://www.xenoserieswiki.org/wiki/Pathogen_Blast) | | |
| 82 | +| 8 | Galactic Cataclysm | 15 | Photon Saber | Yes | Substitute | [Art page](https://www.xenoserieswiki.org/wiki/Galactic_Cataclysm) | | |
| 83 | + | |
| 84 | +**Skill progression.** Final ranks: Beam Boost 9, Aura Assault 13, Supreme Sword 14, Tactical Analyst 16. Ordered substitutes: Inner Search 7, Healing Touch 11, Appendage Erosion 15, Fast Forward 17. Source: [Ga Jiarg gameplay](https://www.xenoserieswiki.org/wiki/Ga_Jiarg/Gameplay). Four Skills selected at most. | |
| 85 | + | |
| 86 | +**Weapons.** Native pair is Raygun + Photon Saber. Ga's default Sakuraba Destroyer Raygun is Beam, level 40, attack 96. His default Six Stars Pulverizing Lightblade II is Thermal, level 40, attack 140. For weapon-damage Photon Saber Arts, a Beam alternative is Sakuraba Advanced Iron Saber, Beam, minimum level 3, obtained as a random enemy drop rather than guaranteed shop stock. Otherwise keep the legal Lightblade II; Sky Sunder itself remains Beam because its Art attribute is fixed. Sources: [Ga Jiarg gameplay](https://www.xenoserieswiki.org/wiki/Ga_Jiarg/Gameplay), [Destroyer Raygun](https://www.xenoserieswiki.org/wiki/Destroyer_Raygun), [Pulverizing Lightblade II](https://www.xenoserieswiki.org/wiki/Pulverizing_Lightblade_II), [Advanced Iron Saber](https://www.xenoserieswiki.org/wiki/Advanced_Iron_Saber), [weapon catalog](https://game8.co/games/Xenoblade-Chronicles-X/archives/504904), [manufacturer drop rules](https://www.xenoserieswiki.org/wiki/Arms_Manufacturer). | |
| 87 | + | |
| 88 | +**Armor.** Offensive TP option: Candid & Credible Light torso Reginal Breaker, level 55, Potential Up VI, Defense 60, Electric resistance +20, Beam −5, Gravity −5, 360,000 credits. Potential Up increases TP Art damage, which supports Sky Sunder; the Beam weakness needs a Beam Resistance Up augment if incoming Beam damage is the threat. Candid & Credible unlocks after Chapter 5; its Light line requires maker rank 2. Lower-level Candid & Credible fallback: Heavy Combat Bulwark, level 15, Potential Up II, Defense 40, Electric +20, Beam −5, Gravity −15, 26,200 credits; Heavy line requires maker rank 3. Beam-defense alternative: Grenada Light Combat Norak, level 15, Ranged Attack Up II, Defense 13, Beam +20, Gravity −10, 19,200 credits. Light armor trades base defense for better attribute resistance. Sources: [Reginal Breaker](https://game8.co/games/Xenoblade-Chronicles-X/archives/510343), [Potential Up](https://game8.co/games/Xenoblade-Chronicles-X/archives/505711), [Combat Bulwark](https://game8.co/games/Xenoblade-Chronicles-X/archives/510204), [Combat Norak](https://game8.co/games/Xenoblade-Chronicles-X/archives/510471), [manufacturer unlocks](https://www.xenoserieswiki.org/wiki/Arms_Manufacturer), [armor categories](https://www.xenoserieswiki.org/wiki/Armor_(XCX)). | |
| 89 | + | |
| 90 | +## Hope | |
| 91 | + | |
| 92 | +**Candidate evidence.** Game8 recommends Repair, Absorber Skin, Energy Source, Black Butterfly, Shooting Star, Stellar Ray, Tacit Censure, and Astral Protection. Nintendo Life repeats the first seven but writes `Astral Projection`; this is not a legal Art in Hope's roster. Do not count that typo as an independent recommendation for Astral Protection. Both sources recommend Inner Search, Knight's Soul, and TP Overdrive. The roster also unlocks Servant Sacrifice, but it requires a Controlled or Heroic Tale target; it is excluded from progression substitutes because Brainjack is TP-costing and cannot be guaranteed when both canonical TP Arts are present. | |
| 93 | + | |
| 94 | +**Final Arts, ordered.** Repair / Absorber Skin / Stellar Ray / Shooting Star / Tacit Censure / Black Butterfly / Astral Protection / Energy Source. Healing, debuff cleanse, barrier, Virus, Shock, Beam-resistance down, all-attribute resistance, and party TP cover her support role. Exactly two TP spenders: Astral Protection and Energy Source. | |
| 95 | + | |
| 96 | +**Final Skills, ordered.** Inner Search / Knight's Soul / TP Overdrive. Three slots. Potential, max TP, and Overdrive TP generation support the TP Arts. | |
| 97 | + | |
| 98 | +**AI role and caveat.** Editorial: ranged support/healer and TP provider. Hope's class modifier is −20% Max HP. The final bar favors healing, barrier, debuff cleanse, Virus, and team TP over a damage-only setup. Guide recommendations are general builds, not tests of AI timing. Avoid presenting `Astral Projection` as legal or replacing this bar in Skell mode. | |
| 99 | + | |
| 100 | +**Art legality, cost, and progression.** All Arts use Knife or Psycho Launchers, Hope's native pair. `Shooting Star` can generate Shock but does not consume TP. Only `Astral Protection` and `Energy Source` consume TP in the final bar. Substitute order is priority order; the planner filters locked ranks first. Brainjack precedes other TP substitutes so it remains selectable when the TP budget allows it. | |
| 101 | + | |
| 102 | +| Order | Art | Personal rank | Weapon | Consumes TP? | Status | Mechanical source | | |
| 103 | +|---:|---|---:|---|---|---|---| | |
| 104 | +| 1 | Repair | 1 | Knife | No | Final | [Art page](https://www.xenoserieswiki.org/wiki/Repair) | | |
| 105 | +| 2 | Absorber Skin | 4 | Knife | No | Final | [Art page](https://www.xenoserieswiki.org/wiki/Absorber_Skin) | | |
| 106 | +| 3 | Stellar Ray | 1 | Psycho Launchers | No | Final | [Art page](https://www.xenoserieswiki.org/wiki/Stellar_Ray) | | |
| 107 | +| 4 | Shooting Star | 3 | Psycho Launchers | No | Final | [Art page](https://www.xenoserieswiki.org/wiki/Shooting_Star) | | |
| 108 | +| 5 | Tacit Censure | 10 | Psycho Launchers | No | Final | [Art page](https://www.xenoserieswiki.org/wiki/Tacit_Censure) | | |
| 109 | +| 6 | Black Butterfly | 13 | Knife | No | Final | [Art page](https://www.xenoserieswiki.org/wiki/Black_Butterfly) | | |
| 110 | +| 7 | Astral Protection | 11 | Psycho Launchers | Yes | Final | [Art page](https://www.xenoserieswiki.org/wiki/Astral_Protection) | | |
| 111 | +| 8 | Energy Source | 9 | Knife | Yes | Final | [Art page](https://www.xenoserieswiki.org/wiki/Energy_Source) | | |
| 112 | +| 1 | Brainjack | 7 | Knife | Yes | Substitute, priority for Control | [Art page](https://www.xenoserieswiki.org/wiki/Brainjack) | | |
| 113 | +| 2 | Full Specs | 2 | Knife | Yes | Substitute | [Art page](https://www.xenoserieswiki.org/wiki/Full_Specs) | | |
| 114 | +| 3 | Secondary Speed | 5 | Knife | Yes | Substitute | [Art page](https://www.xenoserieswiki.org/wiki/Secondary_Speed) | | |
| 115 | +| 4 | Dispel | 6 | Knife | Yes | Substitute | [Art page](https://www.xenoserieswiki.org/wiki/Dispel) | | |
| 116 | +| 5 | Starlight Kick | 12 | Psycho Launchers | Yes | Substitute | [Art page](https://www.xenoserieswiki.org/wiki/Starlight_Kick_(XCX)) | | |
| 117 | +| - | Servant Sacrifice | 8 | Knife | No | Excluded; requires a Controlled/Heroic Tale target | [Art page](https://www.xenoserieswiki.org/wiki/Servant_Sacrifice) | | |
| 118 | +Servant Sacrifice is not a progression filler. Its game-data page says it is useless unless an ally supplies Brainjack or Heroic Tale. At ranks 11-12, Energy Source and Astral Protection already spend both allowed TP Arts, so Brainjack cannot be equipped with this static bar. A dependent Art would be inert at those ranks. | |
| 119 | + | |
| 120 | +**Skill progression.** Final ranks: Inner Search 7, Knight's Soul 15, TP Overdrive 17. Ordered substitutes: Buff Heal 9, Well-Weathered 11, Mechanoid Slayer 13, King's Decree 14, Supreme Sword 16. Source: [Hope gameplay](https://www.xenoserieswiki.org/wiki/Hope/Gameplay). Three Skills selected at most. | |
| 121 | + | |
| 122 | +**Weapons.** Keep Knife + Psycho Launchers. Hope's default [Chrome Knife](https://www.xenoserieswiki.org/wiki/Chrome_Knife) and [Warrior Launchers](https://www.xenoserieswiki.org/wiki/Warrior_Launchers) are both Sakuraba Physical models. Her selected support/status Arts do not require a special weapon attribute. Upgrade within the same types; prioritize item stats/TP gain over changing her weapon pair. Sakuraba is an initial Arms Manufacturer and makes all ground weapon types. Sources: [Hope gameplay](https://www.xenoserieswiki.org/wiki/Hope/Gameplay), [manufacturer catalog](https://www.xenoserieswiki.org/wiki/Arms_Manufacturer), [Game8 Hope build](https://game8.co/games/Xenoblade-Chronicles-X/archives/507443). | |
| 123 | + | |
| 124 | +**Armor.** Medium torso is the editorial baseline because Hope has −20% Max HP. At level 45, [Candid & Credible Forza Encaser](https://www.xenoserieswiki.org/wiki/Forza_Encaser) is Medium, Potential Up V, Defense 67, Electric +20, Beam −5, Gravity −10. Potential fits her TP-art support; add Max HP Up on a compatible armor piece because of her HP penalty. Candid & Credible unlocks after Chapter 5. Lower-level option: Candid & Credible Heavy Combat Bulwark at level 15, Potential Up II, Defense 40, Electric +20, Beam −5, Gravity −15; Heavy line needs maker rank 3. Before Candid & Credible unlocks, use a level-appropriate Sakuraba Medium piece and a crafted Potential Up or Max HP Up augment. Heavy is a story fallback, not the default weight recommendation. Sources: [Forza Encaser](https://www.xenoserieswiki.org/wiki/Forza_Encaser), [Combat Bulwark](https://game8.co/games/Xenoblade-Chronicles-X/archives/510204), [armor categories](https://www.xenoserieswiki.org/wiki/Armor_(XCX)), [manufacturer progression](https://www.xenoserieswiki.org/wiki/Arms_Manufacturer). | |
| 125 | + | |
| 126 | +## Liesel | |
| 127 | + | |
| 128 | +**Candidate evidence.** Game8 recommends Spiral Horn, Arcing Horn, Effect Charge, Trident Buster, Primer, Early Bird, Violent Streak, and Ghostwalker. Its Skills are Trigger Happy, Electric Boost, and Conductive Strike; it offers Knock 'n' Shock as an alternative to Electric Boost. Conductive Strike only boosts Electric damage against Shocked enemies. Knock 'n' Shock can cause Shock on Melee Arts, so it pairs with Liesel's rank-1 Arcing Horn before Trident Buster unlocks at rank 15. Nintendo Life has no Liesel build yet. | |
| 129 | + | |
| 130 | +**Final Arts, ordered.** Spiral Horn / Arcing Horn / Effect Charge / Trident Buster / Primer / Early Bird / Violent Streak / Ghostwalker. This preserves Game8's candidate bar and has exactly two TP spenders, Trident Buster and Early Bird. Arcing Horn and Trident Buster carry fixed Electric Arts. `Violent Streak` generates TP on criticals but does not consume TP. | |
| 131 | + | |
| 132 | +**Final Skills, ordered.** Knock 'n' Shock / Conductive Strike / Trigger Happy. Knock 'n' Shock supplies a probabilistic Shock path through Arcing Horn from rank 9; Trident Buster supplies direct Shock from rank 15. Conductive Strike therefore has an equipped Shock source before Trident Buster unlocks. Trigger Happy supports ranged-combo cycles. | |
| 133 | + | |
| 134 | +**AI role and caveat.** Editorial: ranged/electric combo striker with Shock, Electric Res Down, and Decoy. No consulted source benchmarks its combo timing under companion AI. Effect Charge and combo bonuses require Art sequencing; treat that as a mechanical synergy, not a guaranteed AI rotation. | |
| 135 | +**Art legality, cost, and progression.** All Arts use Dual Guns or Javelin, Liesel's native pair. Arcing Horn is a legal Melee Art and unlocks at rank 1. Knock 'n' Shock applies to Melee Arts. Trident Buster directly inflicts Shock after its rank-15 unlock. This avoids a Shock-dependent Skill without a compatible Art at the same personal rank. | |
| 136 | + | |
| 137 | +| Order | Art | Personal rank | Weapon | Consumes TP? | Status | Mechanical source | | |
| 138 | +|---:|---|---:|---|---|---|---| | |
| 139 | +| 1 | Spiral Horn | 14 | Javelin | No | Final | [Art page](https://www.xenoserieswiki.org/wiki/Spiral_Horn) | | |
| 140 | +| 2 | Arcing Horn | 1 | Javelin | No | Final | [Art page](https://www.xenoserieswiki.org/wiki/Arcing_Horn) | | |
| 141 | +| 3 | Effect Charge | 2 | Dual Guns | No | Final | [Art page](https://www.xenoserieswiki.org/wiki/Effect_Charge) | | |
| 142 | +| 4 | Trident Buster | 15 | Javelin | Yes | Final | [Art page](https://www.xenoserieswiki.org/wiki/Trident_Buster_(XCX)) | | |
| 143 | +| 5 | Primer | 4 | Dual Guns | No | Final | [Art page](https://www.xenoserieswiki.org/wiki/Primer) | | |
| 144 | +| 6 | Early Bird | 7 | Dual Guns | Yes | Final | [Art page](https://www.xenoserieswiki.org/wiki/Early_Bird) | | |
| 145 | +| 7 | Violent Streak | 6 | Dual Guns | No, generates TP on criticals | Final | [Art page](https://www.xenoserieswiki.org/wiki/Violent_Streak_(XCX)) | | |
| 146 | +| 8 | Ghostwalker | 13 | Dual Guns | No | Final | [Art page](https://www.xenoserieswiki.org/wiki/Ghostwalker) | | |
| 147 | +| 1 | Sliding Slinger | 1 | Dual Guns | No, can generate TP from the side | Substitute | [Art page](https://www.xenoserieswiki.org/wiki/Sliding_Slinger_(XCX)) | | |
| 148 | +| 2 | Overwhelm | 3 | Javelin | No | Substitute | [Art page](https://www.xenoserieswiki.org/wiki/Overwhelm) | | |
| 149 | +| 3 | Raijin | 5 | Javelin | Yes | Substitute | [Art page](https://www.xenoserieswiki.org/wiki/Raijin_(XCX)) | | |
| 150 | +| 4 | Speed Demon | 8 | Javelin | Yes | Substitute | [Art page](https://www.xenoserieswiki.org/wiki/Speed_Demon_(XCX)) | | |
| 151 | +| 5 | Executioner | 9 | Dual Guns | Yes | Substitute | [Art page](https://www.xenoserieswiki.org/wiki/Executioner_(XCX)) | | |
| 152 | +| 6 | Mind Shift | 10 | Javelin | No | Substitute | [Art page](https://www.xenoserieswiki.org/wiki/Mind_Shift) | | |
| 153 | +| 7 | Combat Limbo | 11 | Dual Guns | No | Substitute | [Art page](https://www.xenoserieswiki.org/wiki/Combat_Limbo) | | |
| 154 | +| 8 | Hair Trigger | 12 | Javelin | No | Substitute | [Art page](https://www.xenoserieswiki.org/wiki/Hair_Trigger_(XCX)) | | |
| 155 | +**Skill progression.** Final ranks: Knock 'n' Shock 9, Conductive Strike 13, Trigger Happy 16. Ordered substitutes, priority order with rank filtering: Electric Boost 14, Quick Reload 7. Quick Reload improves ranged auto-attack cooldown, not Art cooldown; Electric Boost adds Electric damage at ranks 14-15 before Trigger Happy takes its final slot. Sources: [Liesel gameplay](https://www.xenoserieswiki.org/wiki/Liesel/Gameplay), [Knock 'n' Shock](https://www.xenoserieswiki.org/wiki/Knock_%27n%27_Shock), [Conductive Strike](https://www.xenoserieswiki.org/wiki/Conductive_Strike), [Quick Reload](https://www.xenoserieswiki.org/wiki/Quick_Reload). Three Skills selected at most. | |
| 156 | + | |
| 157 | +**Weapons.** Liesel's native pair is Dual Guns + Javelin. Her Grenada [Warrior Gemels](https://www.xenoserieswiki.org/wiki/Warrior_Gemels) are Beam; her Grenada [Chrome Parce](https://www.xenoserieswiki.org/wiki/Chrome_Parce) is Physical, level 20, with TP Gain 120. The fixed Electric Arts work with either weapon attribute, but a Candid & Credible [Chrome Bolide](https://www.xenoserieswiki.org/wiki/Chrome_Bolide) makes weapon-damage Javelin Arts Electric too. Chrome Bolide is level 20 with 156 attack and TP Gain 155. Candid & Credible unlocks after Chapter 5. Before that gate, use the legal Physical Chrome Parce; do not call it Electric. Keep Dual Guns in the other slot for Effect Charge/Primer/Violent Streak/Ghostwalker. Sources: [Liesel gameplay](https://www.xenoserieswiki.org/wiki/Liesel/Gameplay), [Game8 Javelin catalog](https://game8.co/games/Xenoblade-Chronicles-X/archives/504900), [manufacturer story gates](https://www.xenoserieswiki.org/wiki/Arms_Manufacturer). | |
| 158 | + | |
| 159 | +**Armor.** Grenada Light Combat Norak torso, level 15, Ranged Attack Up II, Defense 13, Beam +20, Gravity −10, three trait upgrades, 19,200 credits. This matches Liesel's +30% ranged-attack modifier and retains Beam resistance. Light wear requires Grenada manufacturer rank 2. If that stock is locked, use Grenada Medium armor from its first-set stock at rank 1 and add a Ranged Attack Up augment; Medium has more defense, Light favors attribute resistance. Do not mistake Beam resistance on the armor for Electric damage on her Arts. Sources: [Combat Norak](https://game8.co/games/Xenoblade-Chronicles-X/archives/510471), [Armor](https://www.xenoserieswiki.org/wiki/Armor_(XCX)), [manufacturer progression](https://www.xenoserieswiki.org/wiki/Arms_Manufacturer). | |
| 160 | + | |
| 161 | +## Murderess | |
| 162 | + | |
| 163 | +**Candidate evidence.** Game8 and Nintendo Life both recommend the same eight-Arts melee/Overdrive bar: Hundred Shells, Seventh Edge, Killing Machine, Side Slash, Back Slash, Electric Surge, Jetstream, and Astral Protection. Both recommend Hellhound, Aura Assault, and High Tension. Each candidate bar has three TP spenders: Hundred Shells, Killing Machine, Astral Protection. | |
| 164 | + | |
| 165 | +**Final Arts, ordered.** Seventh Edge / Side Slash / Back Slash / Electric Surge / Jetstream / Stellar Ray / Astral Protection / Killing Machine. The final bar keeps the two TP Arts selected for defensive Aura and a melee accuracy/attack/Potential buff. It drops Hundred Shells, a TP positional burst, then fills that slot with Game8's suggested non-TP Stellar Ray. The build retains a damaging/stun ranged option. | |
| 166 | + | |
| 167 | +**Final Skills, ordered.** Aura Assault / High Tension / Hellhound. Three slots. Aura Assault supports melee while an Aura is active; High Tension adds max TP; Hellhound extends Overdrive. | |
| 168 | + | |
| 169 | +**AI role and caveat.** Editorial: melee pressure with Stun and a defensive Aura. Side Slash and Back Slash have side/behind bonuses. The game guide describes those conditions but does not validate the AI's positioning. Their base Arts remain legal; the conditional damage bonus is not promised. | |
| 170 | + | |
| 171 | +**Art legality, cost, and progression.** All Arts use Dual Swords or Psycho Launchers. Astral Protection and Killing Machine consume TP. Hundred Shells is a candidate/substitute, not a third TP slot. | |
| 172 | + | |
| 173 | +| Order | Art | Personal rank | Weapon | Consumes TP? | Status | Mechanical source | | |
| 174 | +|---:|---|---:|---|---|---|---| | |
| 175 | +| 1 | Seventh Edge | 5 | Dual Swords | No, generates TP on a melee combo | Final | [Art page](https://www.xenoserieswiki.org/wiki/Seventh_Edge_(XCX)) | | |
| 176 | +| 2 | Side Slash | 1 | Dual Swords | No | Final | [Art page](https://www.xenoserieswiki.org/wiki/Side_Slash) | | |
| 177 | +| 3 | Back Slash | 2 | Dual Swords | No | Final | [Art page](https://www.xenoserieswiki.org/wiki/Back_Slash_(XCX)) | | |
| 178 | +| 4 | Electric Surge | 11 | Dual Swords | No | Final | [Art page](https://www.xenoserieswiki.org/wiki/Electric_Surge) | | |
| 179 | +| 5 | Jetstream | 1 | Psycho Launchers | No | Final | [Art page](https://www.xenoserieswiki.org/wiki/Jetstream) | | |
| 180 | +| 6 | Stellar Ray | 3 | Psycho Launchers | No | Final; non-TP replacement for source bar's third TP Art | [Art page](https://www.xenoserieswiki.org/wiki/Stellar_Ray) | | |
| 181 | +| 7 | Astral Protection | 12 | Psycho Launchers | Yes | Final | [Art page](https://www.xenoserieswiki.org/wiki/Astral_Protection) | | |
| 182 | +| 8 | Killing Machine | 9 | Dual Swords | Yes | Final | [Art page](https://www.xenoserieswiki.org/wiki/Killing_Machine) | | |
| 183 | +| 1 | Lightning Cloak | 4 | Psycho Launchers | No | Substitute | [Art page](https://www.xenoserieswiki.org/wiki/Lightning_Cloak) | | |
| 184 | +| 2 | Shadowrunner | 6 | Dual Swords | Yes | Substitute | [Art page](https://www.xenoserieswiki.org/wiki/Shadowrunner_(XCX)) | | |
| 185 | +| 3 | Shooting Star | 7 | Psycho Launchers | No | Substitute | [Art page](https://www.xenoserieswiki.org/wiki/Shooting_Star) | | |
| 186 | +| 4 | Thirsty Edge | 8 | Dual Swords | Yes | Substitute | [Art page](https://www.xenoserieswiki.org/wiki/Thirsty_Edge) | | |
| 187 | +| 5 | Gravity Lunge | 10 | Psycho Launchers | Yes | Substitute | [Art page](https://www.xenoserieswiki.org/wiki/Gravity_Lunge) | | |
| 188 | +| 6 | Hundred Shells | 13 | Dual Swords | Yes | Substitute; source candidate displaced by TP cap | [Art page](https://www.xenoserieswiki.org/wiki/Hundred_Shells_(XCX)) | | |
| 189 | + | |
| 190 | +**Skill progression.** Final ranks: High Tension 11, Aura Assault 15, Hellhound 17. Ordered substitutes: Agile Gunslinger 7, Boosted Bullets 9, Mechanoid Slayer 13, Trigger Happy 14, Lifeline 16. Source: [Murderess gameplay](https://www.xenoserieswiki.org/wiki/Murderess/Gameplay). Three Skills selected at most. | |
| 191 | + | |
| 192 | +**Weapons.** Keep Psycho Launchers + Dual Swords. Murderess starts with Sakuraba [Warrior Launchers](https://www.xenoserieswiki.org/wiki/Warrior_Launchers) and [Chrome Blades](https://www.xenoserieswiki.org/wiki/Chrome_Blades), both Physical models. Her selected Arts' Ether effects remain Ether with those weapons. Upgrade inside the same two native types; there is no weapon-type change in this build. Sources: [Murderess gameplay](https://www.xenoserieswiki.org/wiki/Murderess/Gameplay), [Warrior Launchers](https://www.xenoserieswiki.org/wiki/Warrior_Launchers), [Chrome Blades](https://www.xenoserieswiki.org/wiki/Chrome_Blades), [Game8 build](https://game8.co/games/Xenoblade-Chronicles-X/archives/507456). | |
| 193 | + | |
| 194 | +**Armor.** Sakuraba Medium Combat Bodywear is the story baseline: level 15, Melee Attack Up II, Defense 28, Physical +10, Gravity −15, two trait upgrades, 21,000 credits. Medium adds defense for a close-range character with −5% Max HP. At level 55, Sakuraba Light Reginal Vest raises the offensive ceiling with Melee Attack Up VI, Defense 57, Physical +10, Gravity −10, 360,000 credits. Light changes the defense/resistance trade-off; use Reginal Vest when her survival is already adequate. Sakuraba is available from the start; Light stock needs maker rank 2. Sources: [Combat Bodywear](https://game8.co/games/Xenoblade-Chronicles-X/archives/510709), [Reginal Vest](https://game8.co/games/Xenoblade-Chronicles-X/archives/510523), [Armor](https://www.xenoserieswiki.org/wiki/Armor_(XCX)), [manufacturer progression](https://www.xenoserieswiki.org/wiki/Arms_Manufacturer). | |
| 195 | + | |
| 196 | +## Nagi | |
| 197 | + | |
| 198 | +**Candidate evidence.** Game8 recommends Blossom Dance, True Stream Edge, Rising Blade, Magnum Edge, Enhanced Stand, Missile Volley, Burning Slash, and Incendiary Edge. Three consume TP: Blossom Dance, Enhanced Stand, Incendiary Edge. The article describes physical-resistance down into melee damage and a Thermal-resistance-down sequence. | |
| 199 | + | |
| 200 | +**Final Arts, ordered.** Rising Blade / True Stream Edge / Blossom Dance / Magnum Edge / Enhanced Stand / Missile Volley / Burning Slash / Bullet Storm. This keeps Blossom Dance and Enhanced Stand as the two TP spenders. Enhanced Stand supplies its Aura/HP recovery; Blossom Dance remains the TP damage Art. Magnum Edge supports the weapon-damage melee side. Missile Volley plus Burning Slash retain a Thermal-resistance-down route. Bullet Storm is a non-TP filler from Nagi's legal Gatling Gun list. Incendiary Edge is rejected from the full build because it would be the third TP Art. | |
| 201 | + | |
| 202 | +**Final Skills, ordered.** Steel Flesh / Mighty Muscle / Yamato Spirit / Fortified Flesh / Grand Procession. Five slots. These add HP, melee attack, melee-Art TP generation, and party TP on Overdrive. Yamato Spirit's aura bonus is supported by Enhanced Stand. | |
| 203 | + | |
| 204 | +**AI role and caveat.** Editorial: durable melee striker with Physical and Thermal setup, a healing Aura, and one TP finisher. Game8's full combo includes three TP Arts; final selection cuts Incendiary Edge. No consulted guide verifies AI timing. `Cool Off` appears only as an ordered progression substitute; it can consume an active Aura for TP, so it is not in the final rank-20 bar. | |
| 205 | + | |
| 206 | +**Art legality, cost, and progression.** All Arts use Longsword or Gatling Gun. Blossom Dance and Enhanced Stand consume TP. True Stream Edge generates TP under its morale condition but does not consume TP. | |
| 207 | + | |
| 208 | +| Order | Art | Personal rank | Weapon | Consumes TP? | Status | Mechanical source | | |
| 209 | +|---:|---|---:|---|---|---|---| | |
| 210 | +| 1 | Rising Blade | 1 | Longsword | No | Final | [Art page](https://www.xenoserieswiki.org/wiki/Rising_Blade) | | |
| 211 | +| 2 | True Stream Edge | 4 | Longsword | No, can generate TP with morale | Final | [Art page](https://www.xenoserieswiki.org/wiki/True_Stream_Edge) | | |
| 212 | +| 3 | Blossom Dance | 10 | Longsword | Yes | Final | [Art page](https://www.xenoserieswiki.org/wiki/Blossom_Dance_(XCX)) | | |
| 213 | +| 4 | Magnum Edge | 5 | Longsword | No | Final | [Art page](https://www.xenoserieswiki.org/wiki/Magnum_Edge_(XCX)) | | |
| 214 | +| 5 | Enhanced Stand | 1 | Gatling Gun | Yes | Final | [Art page](https://www.xenoserieswiki.org/wiki/Enhanced_Stand) | | |
| 215 | +| 6 | Missile Volley | 12 | Gatling Gun | No | Final | [Art page](https://www.xenoserieswiki.org/wiki/Missile_Volley) | | |
| 216 | +| 7 | Burning Slash | 9 | Longsword | No | Final | [Art page](https://www.xenoserieswiki.org/wiki/Burning_Slash) | | |
| 217 | +| 8 | Bullet Storm | 6 | Gatling Gun | No | Final | [Art page](https://www.xenoserieswiki.org/wiki/Bullet_Storm) | | |
| 218 | +| 1 | Thermal Payload | 2 | Gatling Gun | Yes | Substitute | [Art page](https://www.xenoserieswiki.org/wiki/Thermal_Payload_(XCX)) | | |
| 219 | +| 2 | Cool Off | 3 | Gatling Gun | No; consumes an Aura to yield TP under its condition | Substitute | [Art page](https://www.xenoserieswiki.org/wiki/Cool_Off_(XCX)) | | |
| 220 | +| 3 | Defensive Stance | 7 | Longsword | Yes | Substitute | [Art page](https://www.xenoserieswiki.org/wiki/Defensive_Stance) | | |
| 221 | +| 4 | Offensive Stance | 8 | Longsword | Yes | Substitute | [Art page](https://www.xenoserieswiki.org/wiki/Offensive_Stance) | | |
| 222 | +| 5 | Samurai Soul | 11 | Longsword | Yes | Substitute | [Art page](https://www.xenoserieswiki.org/wiki/Samurai_Soul) | | |
| 223 | +| 6 | Incendiary Edge | 13 | Longsword | Yes | Substitute; source candidate displaced by TP cap | [Art page](https://www.xenoserieswiki.org/wiki/Incendiary_Edge) | | |
| 224 | + | |
| 225 | +**Skill progression.** Final ranks: Steel Flesh 7, Mighty Muscle 9, Trauma Tension 11 (substitute), Rising Renewal 13 (substitute), Yamato Spirit 14, Fortified Flesh 15, Machine Gunner 16 (substitute), Grand Procession 17. Ordered skill substitutes after the final five: Trauma Tension 11, Rising Renewal 13, Machine Gunner 16. Source: [Nagi gameplay](https://www.xenoserieswiki.org/wiki/Nagi/Gameplay). Five Skills selected at most. | |
| 226 | + | |
| 227 | +**Weapons.** Native pair is Gatling Gun + Longsword. Nagi starts with physical [Signature Glaive: Fledgling](https://www.xenoserieswiki.org/wiki/Signature_Glaive:_Fledgling), level 30, 136 attack; Xeno Series Wiki records its manufacturer as Unknown. His physical [Ophidian Machine](https://www.xenoserieswiki.org/wiki/Ophidian_Machine) Gatling Gun is Sakuraba, level 30. For purchased upgrades, use Sakuraba's physical Sword and Machine series for weapon-damage Arts such as Rising Blade and Magnum Edge. Nagi's Thermal Arts already have fixed Thermal damage. Sources: [Nagi gameplay](https://www.xenoserieswiki.org/wiki/Nagi/Gameplay), [Signature Glaive: Fledgling](https://www.xenoserieswiki.org/wiki/Signature_Glaive:_Fledgling), [Ophidian Machine](https://www.xenoserieswiki.org/wiki/Ophidian_Machine), [Game8 Longsword catalog](https://game8.co/games/Xenoblade-Chronicles-X/archives/504899), [manufacturer catalog](https://www.xenoserieswiki.org/wiki/Arms_Manufacturer). | |
| 228 | + | |
| 229 | +**Armor.** Nagi's +25% Max HP and HP Skills support Light armor once his gear is strong enough. At level 55, Sakuraba Light Reginal Vest adds Melee Attack Up VI, Defense 57, Physical +10, Gravity −10, and costs 360,000 credits. Story fallback: Medium Combat Bodywear, level 15, Melee Attack Up II, Defense 28, Physical +10, Gravity −15, 21,000 credits. Light improves the resistance trade-off; Medium buys more defense. Sakuraba starts available; Light stock needs maker rank 2. Sources: [Reginal Vest](https://game8.co/games/Xenoblade-Chronicles-X/archives/510523), [Combat Bodywear](https://game8.co/games/Xenoblade-Chronicles-X/archives/510709), [Armor](https://www.xenoserieswiki.org/wiki/Armor_(XCX)), [manufacturer progression](https://www.xenoserieswiki.org/wiki/Arms_Manufacturer). | |
| 230 | + | |
| 231 | +## Integration handoff | |
| 232 | + | |
| 233 | +The integrated recommendations are stored in [`src/data/companionBuilds.ts`](../src/data/companionBuilds.ts): ordered Arts, Skills and progression substitutes, bilingual role/rationale/equipment advice, and source references. This research matrix preserves the per-Art weapon, TP and unlock evidence; character progression and slot limits remain in [`src/data/companions.ts`](../src/data/companions.ts). | |
| 234 | + | |
| 235 | +No Cross selection, rank controls, Skell packages, or runtime behavior were changed here. | |
| new file mode 100644 | |||
| @@ -0,0 +1,235 @@ | |||
| 1 | +# Companion build research: Ga Jiarg, Hope, Liesel, Murderess, Nagi | ||
| 2 | + | ||
| 3 | +As of 2026-09-26. Scope: five non-Cross companions in Rickub #1. No code changes. No Cross recommendations. No build, lint, test, or formatter runs. | ||
| 4 | + | ||
| 5 | +## Decision rules | ||
| 6 | + | ||
| 7 | +- Treat build-guide Arts and Skills as candidates, not as proof of companion progression or AI behavior. | ||
| 8 | +- Use each character's Xeno Series Wiki gameplay table and the current roster's unlock facts for personal-rank progression. The two sources agree for these five records. | ||
| 9 | +- A TP-consuming Art is one whose game-data caption says it requires TP. An Art that generates TP is not TP-consuming. `True Stream Edge`, `Violent Streak`, `Primer`, and `Sliding Slinger` generate TP without spending it. | ||
| 10 | +- Each final Art list has eight unique Arts or fewer and no more than two TP-consuming Arts. The same limit applies when rank-based substitutes fill missing slots. Never take a third TP Art to reach eight. | ||
| 11 | +- Arts must use the character's own native weapon pair. Weapon damage attribute and Art damage attribute are separate. Fixed Electric or Beam Arts keep their Art attribute with any compatible weapon; weapon-attribute damage Arts inherit their equipped weapon's attribute. | ||
| 12 | +- Role, synergy, and AI-suitability judgments below are editorial unless attributed to a guide. Both guide publishers mostly give general/player-controlled builds. Neither tests the listed bars as fixed autonomous-companion builds. | ||
| 13 | +- These are ground builds. Do not rewrite Skills for Skell mode or claim ground-only Skills as Skell benefits. Keep vehicle packages separate. | ||
| 14 | + | ||
| 15 | +## Source corpus and limits | ||
| 16 | + | ||
| 17 | +| Source | Edition | Claims used | Independence and limits | | ||
| 18 | +|---|---|---|---| | ||
| 19 | +| [Game8, Ga Jiarg Best Build](https://game8.co/games/Xenoblade-Chronicles-X/archives/513831), [Hope](https://game8.co/games/Xenoblade-Chronicles-X/archives/507443), [Liesel](https://game8.co/games/Xenoblade-Chronicles-X/archives/507864), [Murderess](https://game8.co/games/Xenoblade-Chronicles-X/archives/507456), [Nagi](https://game8.co/games/Xenoblade-Chronicles-X/archives/513229) | DE | Candidate Arts, Skills, combat roles, named character builds | One publisher. General build advice, not companion-AI trials. Several published unlock ranks differ from character personal-rank tables. | | ||
| 20 | +| [Nintendo Life, Best Combat Builds For All Characters](https://www.nintendolife.com/guides/xenoblade-chronicles-x-best-combat-builds-for-all-characters) | DE page, also covers Wii U | Hope and Murderess candidate bars, roles, Skills; status of remaining researched characters | Independent publisher, article marked work-in-progress. Its Hope entry says `Astral Projection`, which is not a legal Art; do not silently reinterpret that as `Astral Protection`. Its Ga Jiarg, Liesel, and Nagi sections say "Coming soon." Published 2025-03-31, updated 2026-02-19, by PJ O'Reilly. | | ||
| 21 | +| [Xeno Series Wiki gameplay pages](https://www.xenoserieswiki.org/wiki/Ga_Jiarg/Gameplay), [Hope](https://www.xenoserieswiki.org/wiki/Hope/Gameplay), [Liesel](https://www.xenoserieswiki.org/wiki/Liesel/Gameplay), [Murderess](https://www.xenoserieswiki.org/wiki/Murderess/Gameplay), [Nagi](https://www.xenoserieswiki.org/wiki/Nagi/Gameplay) | Ga Jiarg and Liesel pages explicitly DE; Hope, Murderess, and Nagi pages cover XCX and expose version-specific equipment data | Native weapons, default Arts, starting level/rank, personal class ranks, skill unlock ranks, Skill slots, stat modifiers | Mechanical reference, not a build recommendation. The three original-roster pages are not labelled DE-only. Their mechanics match current roster data; Game8's DE character pages independently confirm build availability. | | ||
| 22 | +| Xeno Series Wiki individual Art pages linked in the Art tables; cached extraction [research/art-effects.json](art-effects.json) | Shared Art facts; some Arts have DE-specific pages | Native Art weapon and TP-consuming flag | The local semantic extraction is dated 2026-08-04. Each row links to the underlying Xeno Series Wiki Art page, not merely to the cache. | | ||
| 23 | +| [Xeno Series Wiki, Arms Manufacturer](https://www.xenoserieswiki.org/wiki/Arms_Manufacturer), [Armor](https://www.xenoserieswiki.org/wiki/Armor_(XCX)), and weapon-category pages for [Photon Sabers](https://www.xenoserieswiki.org/wiki/Photon_Saber), [Rayguns](https://www.xenoserieswiki.org/wiki/Raygun), [Javelins](https://www.xenoserieswiki.org/wiki/Javelin), [Longswords](https://www.xenoserieswiki.org/wiki/Longsword), [Dual Swords](https://www.xenoserieswiki.org/wiki/Dual_Swords_(XCX)), [Psycho Launchers](https://www.xenoserieswiki.org/wiki/Psycho_Launchers), [Dual Guns](https://www.xenoserieswiki.org/wiki/Dual_Guns), and [Gatling Guns](https://www.xenoserieswiki.org/wiki/Gatling_Gun) | XCX and DE where marked | Weapon families, item attributes, armor types, manufacturer catalog restrictions, story and manufacturer-rank gates | Manufacturer name alone does not guarantee an item's attribute. Check specific weapon model. Light/Medium/Heavy trade defense against attribute resistance; each armor piece still has individual stats and traits. | | ||
| 24 | +| Game8 armor entries: [Combat Norak](https://game8.co/games/Xenoblade-Chronicles-X/archives/510471), [Combat Bodywear](https://game8.co/games/Xenoblade-Chronicles-X/archives/510709), [Reginal Vest](https://game8.co/games/Xenoblade-Chronicles-X/archives/510523), [Reginal Breaker](https://game8.co/games/Xenoblade-Chronicles-X/archives/510343), [Combat Bulwark](https://game8.co/games/Xenoblade-Chronicles-X/archives/510204), [Vivid Bulwark](https://game8.co/games/Xenoblade-Chronicles-X/archives/510203) | DE | Exact item maker, category, minimum level, price, defense, resistances, built-in trait | Product pages, not character build endorsements. | | ||
| 25 | +| [Game8, all Photon Sabers](https://game8.co/games/Xenoblade-Chronicles-X/archives/504904), [Rayguns](https://game8.co/games/Xenoblade-Chronicles-X/archives/504897), [Javelins](https://game8.co/games/Xenoblade-Chronicles-X/archives/504900), [Longswords](https://game8.co/games/Xenoblade-Chronicles-X/archives/504899) | DE | Concrete weapon models and attributes | Some shop entries and dropped variants differ. Cite model and attribute, not just maker. | | ||
| 26 | + | ||
| 27 | +Searches also surfaced GameFAQs and Reddit discussion threads. Direct retrieval returned HTTP 403 for GameFAQs and a network-security block for Reddit. I excluded those pages from recurrence counts. This is a documented source corpus, not a claim of exhaustive Internet search. | ||
| 28 | + | ||
| 29 | +### Independent recurrence | ||
| 30 | + | ||
| 31 | +| Character | Accessible independent build sources | Recurrence | Decision status | | ||
| 32 | +|---|---|---|---| | ||
| 33 | +| Ga Jiarg | Game8 only; Nintendo Life marks its section "Coming soon" | No independently recurring full build established | Game8 is one candidate source. Final two-TP bar is editorial. | | ||
| 34 | +| Hope | Game8 and Nintendo Life | Both list Repair, Absorber Skin, Energy Source, Black Butterfly, Shooting Star, Stellar Ray, and Tacit Censure; both list Inner Search, Knight's Soul, and TP Overdrive. Nintendo Life's eighth Art is invalidly named `Astral Projection`; do not count it as Astral Protection recurrence. | Support role and seven Arts recur. Astral Protection is selected from Game8 and mechanical evidence, not claimed as independent consensus. | | ||
| 35 | +| Liesel | Game8 only; Nintendo Life marks its section "Coming soon" | No independently recurring full build established | Game8's electric/crit combo is one candidate source. AI reliability remains editorial. | | ||
| 36 | +| Murderess | Game8 and Nintendo Life | Both list Hundred Shells, Seventh Edge, Killing Machine, Side Slash, Back Slash, Electric Surge, Jetstream, and Astral Protection; both list Hellhound, Aura Assault, and High Tension. | Melee/Overdrive role recurs. Both source Arts bars exceed the requested TP cap by one; final bar is an editorial cutover. | | ||
| 37 | +| Nagi | Game8 only; Nintendo Life marks its section "Coming soon" | No independently recurring full build established | Game8 is one candidate source. The selected TP pair preserves aura and Blossom Dance while dropping Incendiary Edge. | | ||
| 38 | + | ||
| 39 | +## Current roster and mechanics audit | ||
| 40 | + | ||
| 41 | +`src/data/companions.ts` is current project data. Class, personal-rank, initial weapon, and Skill-slot facts below match the linked Xeno Series Wiki gameplay pages. All five have eight ground-Art slots at maximum, personal-rank cap 20, and the current repo's ordered Art/Skill unlock facts. | ||
| 42 | + | ||
| 43 | +| Companion | Start level / rank | Class | Ranged / melee weapon pair | Skill slots | Relevant modifiers | | ||
| 44 | +|---|---:|---|---|---:|---| | ||
| 45 | +| Ga Jiarg | 40 / 3 | Galactic Knight+ | Raygun / Photon Saber | 4 | HP +5%, ranged attack +10%, melee attack +15%, potential +10% | | ||
| 46 | +| Hope | 24 / 3 | Psycorruptor+ | Psycho Launchers / Knife | 3 | HP −20%; other listed combat modifiers 0% | | ||
| 47 | +| Liesel | 25 / 3 | Partisan Eagle+ | Dual Guns / Javelin | 3 | ranged attack +30%, ranged accuracy +10%, potential −10% | | ||
| 48 | +| Murderess | 21 / 3 | Winged Viper+ | Psycho Launchers / Dual Swords | 3 | HP −5%; other listed combat modifiers 0% | | ||
| 49 | +| Nagi | 33 / 4 | Duelist+ | Gatling Gun / Longsword | 5 | HP +25%, ranged attack +20%, melee attack +25%, potential −15% | | ||
| 50 | + | ||
| 51 | +Arts below are legal for those weapon pairs. Rank means personal class rank in the companion progression data, not the rank label in a generic Cross build guide. Game8's displayed unlock ranks do not consistently match the per-character personal ranks in Xeno Series Wiki/current repo, for example Liesel's Spiral Horn is Game8 rank 6 but companion rank 14, and Trident Buster is Game8 rank 8 but companion rank 15. The axis is unreconciled. Use companion-specific rank facts for this integration, not Game8's generic rank columns. | ||
| 52 | + | ||
| 53 | +## Ga Jiarg | ||
| 54 | + | ||
| 55 | +**Candidate evidence.** Game8 recommends Starfall Blossom, Starfall Rondo, Astrolibrium, Sky Sunder, Astral Heal, Gravity Blast, Gravity Cloak, and Bahamut Wave. Three consume TP: Astrolibrium, Sky Sunder, Astral Heal. Its prose describes a melee Beam/debuff role, Starfall combos, status spread, Topple, and healing. | ||
| 56 | + | ||
| 57 | +**Final Arts, ordered.** Starfall Blossom / Starfall Rondo / Astrolibrium / Sky Sunder / Subterfuge / Bahamut Wave / Gravity Blast / Gravity Cloak. This keeps the TP-generation Art, the Beam aura, the Beam finisher, debuff resistance down/spread, Topple, and Gravity resistance. Astral Heal is not selected because it would be a third TP spender beside Astrolibrium and Sky Sunder. `Pathogen Blast` is a non-TP progression alternative if more Virus application matters. | ||
| 58 | + | ||
| 59 | +**Final Skills, ordered.** Beam Boost / Aura Assault / Supreme Sword / Tactical Analyst. Four slots. They support Beam output, Aura melee, melee combos, and debuff application. These choices come from Game8's character build, with ordered rank-based replacements below. | ||
| 60 | + | ||
| 61 | +**AI role and caveat.** Editorial: debuff-aware melee/Beam attacker with Topple and debuff spread. Starfall Blossom has a front-position TP benefit. Game8 does not test this as an AI bar. The ordered bar gives AI useful effects without assuming a scripted rotation. | ||
| 62 | + | ||
| 63 | +**Art legality, cost, and progression.** All listed Arts use Ga Jiarg's Raygun or Photon Saber. TP column means the Art consumes TP. Substitute order is rank order; if a substitute is TP-consuming, the companion-only selector must skip it when two TP Arts are already equipped. | ||
| 64 | + | ||
| 65 | +| Order | Art | Personal rank | Weapon | Consumes TP? | Status | Mechanical source | | ||
| 66 | +|---:|---|---:|---|---|---|---| | ||
| 67 | +| 1 | Starfall Blossom | 12 | Photon Saber | No, generates TP from the front | Final | [Art page](https://www.xenoserieswiki.org/wiki/Starfall_Blossom) | | ||
| 68 | +| 2 | Starfall Rondo | 6 | Photon Saber | No | Final | [Art page](https://www.xenoserieswiki.org/wiki/Starfall_Rondo) | | ||
| 69 | +| 3 | Astrolibrium | 5 | Photon Saber | Yes | Final | [Art page](https://www.xenoserieswiki.org/wiki/Astrolibrium) | | ||
| 70 | +| 4 | Sky Sunder | 2 | Photon Saber | Yes | Final | [Art page](https://www.xenoserieswiki.org/wiki/Sky_Sunder) | | ||
| 71 | +| 5 | Subterfuge | 3 | Raygun | No | Final | [Art page](https://www.xenoserieswiki.org/wiki/Subterfuge) | | ||
| 72 | +| 6 | Bahamut Wave | 14 | Raygun | No | Final | [Art page](https://www.xenoserieswiki.org/wiki/Bahamut_Wave) | | ||
| 73 | +| 7 | Gravity Blast | 9 | Raygun | No | Final | [Art page](https://www.xenoserieswiki.org/wiki/Gravity_Blast) | | ||
| 74 | +| 8 | Gravity Cloak | 4 | Raygun | No | Final | [Art page](https://www.xenoserieswiki.org/wiki/Gravity_Cloak) | | ||
| 75 | +| 1 | Starfall Blade | 1 | Photon Saber | No | Substitute | [Art page](https://www.xenoserieswiki.org/wiki/Starfall_Blade) | | ||
| 76 | +| 2 | Beam Barrage | 1 | Raygun | No | Substitute | [Art page](https://www.xenoserieswiki.org/wiki/Beam_Barrage_(XCX)) | | ||
| 77 | +| 3 | Myopic Screen | 7 | Raygun | No | Substitute | [Art page](https://www.xenoserieswiki.org/wiki/Myopic_Screen_(XCX)) | | ||
| 78 | +| 4 | Astral Heal | 8 | Photon Saber | Yes | Substitute; displaced from guide bar by TP cap | [Art page](https://www.xenoserieswiki.org/wiki/Astral_Heal) | | ||
| 79 | +| 5 | Novalibrium | 10 | Photon Saber | Yes | Substitute | [Art page](https://www.xenoserieswiki.org/wiki/Novalibrium) | | ||
| 80 | +| 6 | Ether Blast | 11 | Raygun | Yes | Substitute | [Art page](https://www.xenoserieswiki.org/wiki/Ether_Blast) | | ||
| 81 | +| 7 | Pathogen Blast | 13 | Raygun | No | Substitute | [Art page](https://www.xenoserieswiki.org/wiki/Pathogen_Blast) | | ||
| 82 | +| 8 | Galactic Cataclysm | 15 | Photon Saber | Yes | Substitute | [Art page](https://www.xenoserieswiki.org/wiki/Galactic_Cataclysm) | | ||
| 83 | + | ||
| 84 | +**Skill progression.** Final ranks: Beam Boost 9, Aura Assault 13, Supreme Sword 14, Tactical Analyst 16. Ordered substitutes: Inner Search 7, Healing Touch 11, Appendage Erosion 15, Fast Forward 17. Source: [Ga Jiarg gameplay](https://www.xenoserieswiki.org/wiki/Ga_Jiarg/Gameplay). Four Skills selected at most. | ||
| 85 | + | ||
| 86 | +**Weapons.** Native pair is Raygun + Photon Saber. Ga's default Sakuraba Destroyer Raygun is Beam, level 40, attack 96. His default Six Stars Pulverizing Lightblade II is Thermal, level 40, attack 140. For weapon-damage Photon Saber Arts, a Beam alternative is Sakuraba Advanced Iron Saber, Beam, minimum level 3, obtained as a random enemy drop rather than guaranteed shop stock. Otherwise keep the legal Lightblade II; Sky Sunder itself remains Beam because its Art attribute is fixed. Sources: [Ga Jiarg gameplay](https://www.xenoserieswiki.org/wiki/Ga_Jiarg/Gameplay), [Destroyer Raygun](https://www.xenoserieswiki.org/wiki/Destroyer_Raygun), [Pulverizing Lightblade II](https://www.xenoserieswiki.org/wiki/Pulverizing_Lightblade_II), [Advanced Iron Saber](https://www.xenoserieswiki.org/wiki/Advanced_Iron_Saber), [weapon catalog](https://game8.co/games/Xenoblade-Chronicles-X/archives/504904), [manufacturer drop rules](https://www.xenoserieswiki.org/wiki/Arms_Manufacturer). | ||
| 87 | + | ||
| 88 | +**Armor.** Offensive TP option: Candid & Credible Light torso Reginal Breaker, level 55, Potential Up VI, Defense 60, Electric resistance +20, Beam −5, Gravity −5, 360,000 credits. Potential Up increases TP Art damage, which supports Sky Sunder; the Beam weakness needs a Beam Resistance Up augment if incoming Beam damage is the threat. Candid & Credible unlocks after Chapter 5; its Light line requires maker rank 2. Lower-level Candid & Credible fallback: Heavy Combat Bulwark, level 15, Potential Up II, Defense 40, Electric +20, Beam −5, Gravity −15, 26,200 credits; Heavy line requires maker rank 3. Beam-defense alternative: Grenada Light Combat Norak, level 15, Ranged Attack Up II, Defense 13, Beam +20, Gravity −10, 19,200 credits. Light armor trades base defense for better attribute resistance. Sources: [Reginal Breaker](https://game8.co/games/Xenoblade-Chronicles-X/archives/510343), [Potential Up](https://game8.co/games/Xenoblade-Chronicles-X/archives/505711), [Combat Bulwark](https://game8.co/games/Xenoblade-Chronicles-X/archives/510204), [Combat Norak](https://game8.co/games/Xenoblade-Chronicles-X/archives/510471), [manufacturer unlocks](https://www.xenoserieswiki.org/wiki/Arms_Manufacturer), [armor categories](https://www.xenoserieswiki.org/wiki/Armor_(XCX)). | ||
| 89 | + | ||
| 90 | +## Hope | ||
| 91 | + | ||
| 92 | +**Candidate evidence.** Game8 recommends Repair, Absorber Skin, Energy Source, Black Butterfly, Shooting Star, Stellar Ray, Tacit Censure, and Astral Protection. Nintendo Life repeats the first seven but writes `Astral Projection`; this is not a legal Art in Hope's roster. Do not count that typo as an independent recommendation for Astral Protection. Both sources recommend Inner Search, Knight's Soul, and TP Overdrive. The roster also unlocks Servant Sacrifice, but it requires a Controlled or Heroic Tale target; it is excluded from progression substitutes because Brainjack is TP-costing and cannot be guaranteed when both canonical TP Arts are present. | ||
| 93 | + | ||
| 94 | +**Final Arts, ordered.** Repair / Absorber Skin / Stellar Ray / Shooting Star / Tacit Censure / Black Butterfly / Astral Protection / Energy Source. Healing, debuff cleanse, barrier, Virus, Shock, Beam-resistance down, all-attribute resistance, and party TP cover her support role. Exactly two TP spenders: Astral Protection and Energy Source. | ||
| 95 | + | ||
| 96 | +**Final Skills, ordered.** Inner Search / Knight's Soul / TP Overdrive. Three slots. Potential, max TP, and Overdrive TP generation support the TP Arts. | ||
| 97 | + | ||
| 98 | +**AI role and caveat.** Editorial: ranged support/healer and TP provider. Hope's class modifier is −20% Max HP. The final bar favors healing, barrier, debuff cleanse, Virus, and team TP over a damage-only setup. Guide recommendations are general builds, not tests of AI timing. Avoid presenting `Astral Projection` as legal or replacing this bar in Skell mode. | ||
| 99 | + | ||
| 100 | +**Art legality, cost, and progression.** All Arts use Knife or Psycho Launchers, Hope's native pair. `Shooting Star` can generate Shock but does not consume TP. Only `Astral Protection` and `Energy Source` consume TP in the final bar. Substitute order is priority order; the planner filters locked ranks first. Brainjack precedes other TP substitutes so it remains selectable when the TP budget allows it. | ||
| 101 | + | ||
| 102 | +| Order | Art | Personal rank | Weapon | Consumes TP? | Status | Mechanical source | | ||
| 103 | +|---:|---|---:|---|---|---|---| | ||
| 104 | +| 1 | Repair | 1 | Knife | No | Final | [Art page](https://www.xenoserieswiki.org/wiki/Repair) | | ||
| 105 | +| 2 | Absorber Skin | 4 | Knife | No | Final | [Art page](https://www.xenoserieswiki.org/wiki/Absorber_Skin) | | ||
| 106 | +| 3 | Stellar Ray | 1 | Psycho Launchers | No | Final | [Art page](https://www.xenoserieswiki.org/wiki/Stellar_Ray) | | ||
| 107 | +| 4 | Shooting Star | 3 | Psycho Launchers | No | Final | [Art page](https://www.xenoserieswiki.org/wiki/Shooting_Star) | | ||
| 108 | +| 5 | Tacit Censure | 10 | Psycho Launchers | No | Final | [Art page](https://www.xenoserieswiki.org/wiki/Tacit_Censure) | | ||
| 109 | +| 6 | Black Butterfly | 13 | Knife | No | Final | [Art page](https://www.xenoserieswiki.org/wiki/Black_Butterfly) | | ||
| 110 | +| 7 | Astral Protection | 11 | Psycho Launchers | Yes | Final | [Art page](https://www.xenoserieswiki.org/wiki/Astral_Protection) | | ||
| 111 | +| 8 | Energy Source | 9 | Knife | Yes | Final | [Art page](https://www.xenoserieswiki.org/wiki/Energy_Source) | | ||
| 112 | +| 1 | Brainjack | 7 | Knife | Yes | Substitute, priority for Control | [Art page](https://www.xenoserieswiki.org/wiki/Brainjack) | | ||
| 113 | +| 2 | Full Specs | 2 | Knife | Yes | Substitute | [Art page](https://www.xenoserieswiki.org/wiki/Full_Specs) | | ||
| 114 | +| 3 | Secondary Speed | 5 | Knife | Yes | Substitute | [Art page](https://www.xenoserieswiki.org/wiki/Secondary_Speed) | | ||
| 115 | +| 4 | Dispel | 6 | Knife | Yes | Substitute | [Art page](https://www.xenoserieswiki.org/wiki/Dispel) | | ||
| 116 | +| 5 | Starlight Kick | 12 | Psycho Launchers | Yes | Substitute | [Art page](https://www.xenoserieswiki.org/wiki/Starlight_Kick_(XCX)) | | ||
| 117 | +| - | Servant Sacrifice | 8 | Knife | No | Excluded; requires a Controlled/Heroic Tale target | [Art page](https://www.xenoserieswiki.org/wiki/Servant_Sacrifice) | | ||
| 118 | +Servant Sacrifice is not a progression filler. Its game-data page says it is useless unless an ally supplies Brainjack or Heroic Tale. At ranks 11-12, Energy Source and Astral Protection already spend both allowed TP Arts, so Brainjack cannot be equipped with this static bar. A dependent Art would be inert at those ranks. | ||
| 119 | + | ||
| 120 | +**Skill progression.** Final ranks: Inner Search 7, Knight's Soul 15, TP Overdrive 17. Ordered substitutes: Buff Heal 9, Well-Weathered 11, Mechanoid Slayer 13, King's Decree 14, Supreme Sword 16. Source: [Hope gameplay](https://www.xenoserieswiki.org/wiki/Hope/Gameplay). Three Skills selected at most. | ||
| 121 | + | ||
| 122 | +**Weapons.** Keep Knife + Psycho Launchers. Hope's default [Chrome Knife](https://www.xenoserieswiki.org/wiki/Chrome_Knife) and [Warrior Launchers](https://www.xenoserieswiki.org/wiki/Warrior_Launchers) are both Sakuraba Physical models. Her selected support/status Arts do not require a special weapon attribute. Upgrade within the same types; prioritize item stats/TP gain over changing her weapon pair. Sakuraba is an initial Arms Manufacturer and makes all ground weapon types. Sources: [Hope gameplay](https://www.xenoserieswiki.org/wiki/Hope/Gameplay), [manufacturer catalog](https://www.xenoserieswiki.org/wiki/Arms_Manufacturer), [Game8 Hope build](https://game8.co/games/Xenoblade-Chronicles-X/archives/507443). | ||
| 123 | + | ||
| 124 | +**Armor.** Medium torso is the editorial baseline because Hope has −20% Max HP. At level 45, [Candid & Credible Forza Encaser](https://www.xenoserieswiki.org/wiki/Forza_Encaser) is Medium, Potential Up V, Defense 67, Electric +20, Beam −5, Gravity −10. Potential fits her TP-art support; add Max HP Up on a compatible armor piece because of her HP penalty. Candid & Credible unlocks after Chapter 5. Lower-level option: Candid & Credible Heavy Combat Bulwark at level 15, Potential Up II, Defense 40, Electric +20, Beam −5, Gravity −15; Heavy line needs maker rank 3. Before Candid & Credible unlocks, use a level-appropriate Sakuraba Medium piece and a crafted Potential Up or Max HP Up augment. Heavy is a story fallback, not the default weight recommendation. Sources: [Forza Encaser](https://www.xenoserieswiki.org/wiki/Forza_Encaser), [Combat Bulwark](https://game8.co/games/Xenoblade-Chronicles-X/archives/510204), [armor categories](https://www.xenoserieswiki.org/wiki/Armor_(XCX)), [manufacturer progression](https://www.xenoserieswiki.org/wiki/Arms_Manufacturer). | ||
| 125 | + | ||
| 126 | +## Liesel | ||
| 127 | + | ||
| 128 | +**Candidate evidence.** Game8 recommends Spiral Horn, Arcing Horn, Effect Charge, Trident Buster, Primer, Early Bird, Violent Streak, and Ghostwalker. Its Skills are Trigger Happy, Electric Boost, and Conductive Strike; it offers Knock 'n' Shock as an alternative to Electric Boost. Conductive Strike only boosts Electric damage against Shocked enemies. Knock 'n' Shock can cause Shock on Melee Arts, so it pairs with Liesel's rank-1 Arcing Horn before Trident Buster unlocks at rank 15. Nintendo Life has no Liesel build yet. | ||
| 129 | + | ||
| 130 | +**Final Arts, ordered.** Spiral Horn / Arcing Horn / Effect Charge / Trident Buster / Primer / Early Bird / Violent Streak / Ghostwalker. This preserves Game8's candidate bar and has exactly two TP spenders, Trident Buster and Early Bird. Arcing Horn and Trident Buster carry fixed Electric Arts. `Violent Streak` generates TP on criticals but does not consume TP. | ||
| 131 | + | ||
| 132 | +**Final Skills, ordered.** Knock 'n' Shock / Conductive Strike / Trigger Happy. Knock 'n' Shock supplies a probabilistic Shock path through Arcing Horn from rank 9; Trident Buster supplies direct Shock from rank 15. Conductive Strike therefore has an equipped Shock source before Trident Buster unlocks. Trigger Happy supports ranged-combo cycles. | ||
| 133 | + | ||
| 134 | +**AI role and caveat.** Editorial: ranged/electric combo striker with Shock, Electric Res Down, and Decoy. No consulted source benchmarks its combo timing under companion AI. Effect Charge and combo bonuses require Art sequencing; treat that as a mechanical synergy, not a guaranteed AI rotation. | ||
| 135 | +**Art legality, cost, and progression.** All Arts use Dual Guns or Javelin, Liesel's native pair. Arcing Horn is a legal Melee Art and unlocks at rank 1. Knock 'n' Shock applies to Melee Arts. Trident Buster directly inflicts Shock after its rank-15 unlock. This avoids a Shock-dependent Skill without a compatible Art at the same personal rank. | ||
| 136 | + | ||
| 137 | +| Order | Art | Personal rank | Weapon | Consumes TP? | Status | Mechanical source | | ||
| 138 | +|---:|---|---:|---|---|---|---| | ||
| 139 | +| 1 | Spiral Horn | 14 | Javelin | No | Final | [Art page](https://www.xenoserieswiki.org/wiki/Spiral_Horn) | | ||
| 140 | +| 2 | Arcing Horn | 1 | Javelin | No | Final | [Art page](https://www.xenoserieswiki.org/wiki/Arcing_Horn) | | ||
| 141 | +| 3 | Effect Charge | 2 | Dual Guns | No | Final | [Art page](https://www.xenoserieswiki.org/wiki/Effect_Charge) | | ||
| 142 | +| 4 | Trident Buster | 15 | Javelin | Yes | Final | [Art page](https://www.xenoserieswiki.org/wiki/Trident_Buster_(XCX)) | | ||
| 143 | +| 5 | Primer | 4 | Dual Guns | No | Final | [Art page](https://www.xenoserieswiki.org/wiki/Primer) | | ||
| 144 | +| 6 | Early Bird | 7 | Dual Guns | Yes | Final | [Art page](https://www.xenoserieswiki.org/wiki/Early_Bird) | | ||
| 145 | +| 7 | Violent Streak | 6 | Dual Guns | No, generates TP on criticals | Final | [Art page](https://www.xenoserieswiki.org/wiki/Violent_Streak_(XCX)) | | ||
| 146 | +| 8 | Ghostwalker | 13 | Dual Guns | No | Final | [Art page](https://www.xenoserieswiki.org/wiki/Ghostwalker) | | ||
| 147 | +| 1 | Sliding Slinger | 1 | Dual Guns | No, can generate TP from the side | Substitute | [Art page](https://www.xenoserieswiki.org/wiki/Sliding_Slinger_(XCX)) | | ||
| 148 | +| 2 | Overwhelm | 3 | Javelin | No | Substitute | [Art page](https://www.xenoserieswiki.org/wiki/Overwhelm) | | ||
| 149 | +| 3 | Raijin | 5 | Javelin | Yes | Substitute | [Art page](https://www.xenoserieswiki.org/wiki/Raijin_(XCX)) | | ||
| 150 | +| 4 | Speed Demon | 8 | Javelin | Yes | Substitute | [Art page](https://www.xenoserieswiki.org/wiki/Speed_Demon_(XCX)) | | ||
| 151 | +| 5 | Executioner | 9 | Dual Guns | Yes | Substitute | [Art page](https://www.xenoserieswiki.org/wiki/Executioner_(XCX)) | | ||
| 152 | +| 6 | Mind Shift | 10 | Javelin | No | Substitute | [Art page](https://www.xenoserieswiki.org/wiki/Mind_Shift) | | ||
| 153 | +| 7 | Combat Limbo | 11 | Dual Guns | No | Substitute | [Art page](https://www.xenoserieswiki.org/wiki/Combat_Limbo) | | ||
| 154 | +| 8 | Hair Trigger | 12 | Javelin | No | Substitute | [Art page](https://www.xenoserieswiki.org/wiki/Hair_Trigger_(XCX)) | | ||
| 155 | +**Skill progression.** Final ranks: Knock 'n' Shock 9, Conductive Strike 13, Trigger Happy 16. Ordered substitutes, priority order with rank filtering: Electric Boost 14, Quick Reload 7. Quick Reload improves ranged auto-attack cooldown, not Art cooldown; Electric Boost adds Electric damage at ranks 14-15 before Trigger Happy takes its final slot. Sources: [Liesel gameplay](https://www.xenoserieswiki.org/wiki/Liesel/Gameplay), [Knock 'n' Shock](https://www.xenoserieswiki.org/wiki/Knock_%27n%27_Shock), [Conductive Strike](https://www.xenoserieswiki.org/wiki/Conductive_Strike), [Quick Reload](https://www.xenoserieswiki.org/wiki/Quick_Reload). Three Skills selected at most. | ||
| 156 | + | ||
| 157 | +**Weapons.** Liesel's native pair is Dual Guns + Javelin. Her Grenada [Warrior Gemels](https://www.xenoserieswiki.org/wiki/Warrior_Gemels) are Beam; her Grenada [Chrome Parce](https://www.xenoserieswiki.org/wiki/Chrome_Parce) is Physical, level 20, with TP Gain 120. The fixed Electric Arts work with either weapon attribute, but a Candid & Credible [Chrome Bolide](https://www.xenoserieswiki.org/wiki/Chrome_Bolide) makes weapon-damage Javelin Arts Electric too. Chrome Bolide is level 20 with 156 attack and TP Gain 155. Candid & Credible unlocks after Chapter 5. Before that gate, use the legal Physical Chrome Parce; do not call it Electric. Keep Dual Guns in the other slot for Effect Charge/Primer/Violent Streak/Ghostwalker. Sources: [Liesel gameplay](https://www.xenoserieswiki.org/wiki/Liesel/Gameplay), [Game8 Javelin catalog](https://game8.co/games/Xenoblade-Chronicles-X/archives/504900), [manufacturer story gates](https://www.xenoserieswiki.org/wiki/Arms_Manufacturer). | ||
| 158 | + | ||
| 159 | +**Armor.** Grenada Light Combat Norak torso, level 15, Ranged Attack Up II, Defense 13, Beam +20, Gravity −10, three trait upgrades, 19,200 credits. This matches Liesel's +30% ranged-attack modifier and retains Beam resistance. Light wear requires Grenada manufacturer rank 2. If that stock is locked, use Grenada Medium armor from its first-set stock at rank 1 and add a Ranged Attack Up augment; Medium has more defense, Light favors attribute resistance. Do not mistake Beam resistance on the armor for Electric damage on her Arts. Sources: [Combat Norak](https://game8.co/games/Xenoblade-Chronicles-X/archives/510471), [Armor](https://www.xenoserieswiki.org/wiki/Armor_(XCX)), [manufacturer progression](https://www.xenoserieswiki.org/wiki/Arms_Manufacturer). | ||
| 160 | + | ||
| 161 | +## Murderess | ||
| 162 | + | ||
| 163 | +**Candidate evidence.** Game8 and Nintendo Life both recommend the same eight-Arts melee/Overdrive bar: Hundred Shells, Seventh Edge, Killing Machine, Side Slash, Back Slash, Electric Surge, Jetstream, and Astral Protection. Both recommend Hellhound, Aura Assault, and High Tension. Each candidate bar has three TP spenders: Hundred Shells, Killing Machine, Astral Protection. | ||
| 164 | + | ||
| 165 | +**Final Arts, ordered.** Seventh Edge / Side Slash / Back Slash / Electric Surge / Jetstream / Stellar Ray / Astral Protection / Killing Machine. The final bar keeps the two TP Arts selected for defensive Aura and a melee accuracy/attack/Potential buff. It drops Hundred Shells, a TP positional burst, then fills that slot with Game8's suggested non-TP Stellar Ray. The build retains a damaging/stun ranged option. | ||
| 166 | + | ||
| 167 | +**Final Skills, ordered.** Aura Assault / High Tension / Hellhound. Three slots. Aura Assault supports melee while an Aura is active; High Tension adds max TP; Hellhound extends Overdrive. | ||
| 168 | + | ||
| 169 | +**AI role and caveat.** Editorial: melee pressure with Stun and a defensive Aura. Side Slash and Back Slash have side/behind bonuses. The game guide describes those conditions but does not validate the AI's positioning. Their base Arts remain legal; the conditional damage bonus is not promised. | ||
| 170 | + | ||
| 171 | +**Art legality, cost, and progression.** All Arts use Dual Swords or Psycho Launchers. Astral Protection and Killing Machine consume TP. Hundred Shells is a candidate/substitute, not a third TP slot. | ||
| 172 | + | ||
| 173 | +| Order | Art | Personal rank | Weapon | Consumes TP? | Status | Mechanical source | | ||
| 174 | +|---:|---|---:|---|---|---|---| | ||
| 175 | +| 1 | Seventh Edge | 5 | Dual Swords | No, generates TP on a melee combo | Final | [Art page](https://www.xenoserieswiki.org/wiki/Seventh_Edge_(XCX)) | | ||
| 176 | +| 2 | Side Slash | 1 | Dual Swords | No | Final | [Art page](https://www.xenoserieswiki.org/wiki/Side_Slash) | | ||
| 177 | +| 3 | Back Slash | 2 | Dual Swords | No | Final | [Art page](https://www.xenoserieswiki.org/wiki/Back_Slash_(XCX)) | | ||
| 178 | +| 4 | Electric Surge | 11 | Dual Swords | No | Final | [Art page](https://www.xenoserieswiki.org/wiki/Electric_Surge) | | ||
| 179 | +| 5 | Jetstream | 1 | Psycho Launchers | No | Final | [Art page](https://www.xenoserieswiki.org/wiki/Jetstream) | | ||
| 180 | +| 6 | Stellar Ray | 3 | Psycho Launchers | No | Final; non-TP replacement for source bar's third TP Art | [Art page](https://www.xenoserieswiki.org/wiki/Stellar_Ray) | | ||
| 181 | +| 7 | Astral Protection | 12 | Psycho Launchers | Yes | Final | [Art page](https://www.xenoserieswiki.org/wiki/Astral_Protection) | | ||
| 182 | +| 8 | Killing Machine | 9 | Dual Swords | Yes | Final | [Art page](https://www.xenoserieswiki.org/wiki/Killing_Machine) | | ||
| 183 | +| 1 | Lightning Cloak | 4 | Psycho Launchers | No | Substitute | [Art page](https://www.xenoserieswiki.org/wiki/Lightning_Cloak) | | ||
| 184 | +| 2 | Shadowrunner | 6 | Dual Swords | Yes | Substitute | [Art page](https://www.xenoserieswiki.org/wiki/Shadowrunner_(XCX)) | | ||
| 185 | +| 3 | Shooting Star | 7 | Psycho Launchers | No | Substitute | [Art page](https://www.xenoserieswiki.org/wiki/Shooting_Star) | | ||
| 186 | +| 4 | Thirsty Edge | 8 | Dual Swords | Yes | Substitute | [Art page](https://www.xenoserieswiki.org/wiki/Thirsty_Edge) | | ||
| 187 | +| 5 | Gravity Lunge | 10 | Psycho Launchers | Yes | Substitute | [Art page](https://www.xenoserieswiki.org/wiki/Gravity_Lunge) | | ||
| 188 | +| 6 | Hundred Shells | 13 | Dual Swords | Yes | Substitute; source candidate displaced by TP cap | [Art page](https://www.xenoserieswiki.org/wiki/Hundred_Shells_(XCX)) | | ||
| 189 | + | ||
| 190 | +**Skill progression.** Final ranks: High Tension 11, Aura Assault 15, Hellhound 17. Ordered substitutes: Agile Gunslinger 7, Boosted Bullets 9, Mechanoid Slayer 13, Trigger Happy 14, Lifeline 16. Source: [Murderess gameplay](https://www.xenoserieswiki.org/wiki/Murderess/Gameplay). Three Skills selected at most. | ||
| 191 | + | ||
| 192 | +**Weapons.** Keep Psycho Launchers + Dual Swords. Murderess starts with Sakuraba [Warrior Launchers](https://www.xenoserieswiki.org/wiki/Warrior_Launchers) and [Chrome Blades](https://www.xenoserieswiki.org/wiki/Chrome_Blades), both Physical models. Her selected Arts' Ether effects remain Ether with those weapons. Upgrade inside the same two native types; there is no weapon-type change in this build. Sources: [Murderess gameplay](https://www.xenoserieswiki.org/wiki/Murderess/Gameplay), [Warrior Launchers](https://www.xenoserieswiki.org/wiki/Warrior_Launchers), [Chrome Blades](https://www.xenoserieswiki.org/wiki/Chrome_Blades), [Game8 build](https://game8.co/games/Xenoblade-Chronicles-X/archives/507456). | ||
| 193 | + | ||
| 194 | +**Armor.** Sakuraba Medium Combat Bodywear is the story baseline: level 15, Melee Attack Up II, Defense 28, Physical +10, Gravity −15, two trait upgrades, 21,000 credits. Medium adds defense for a close-range character with −5% Max HP. At level 55, Sakuraba Light Reginal Vest raises the offensive ceiling with Melee Attack Up VI, Defense 57, Physical +10, Gravity −10, 360,000 credits. Light changes the defense/resistance trade-off; use Reginal Vest when her survival is already adequate. Sakuraba is available from the start; Light stock needs maker rank 2. Sources: [Combat Bodywear](https://game8.co/games/Xenoblade-Chronicles-X/archives/510709), [Reginal Vest](https://game8.co/games/Xenoblade-Chronicles-X/archives/510523), [Armor](https://www.xenoserieswiki.org/wiki/Armor_(XCX)), [manufacturer progression](https://www.xenoserieswiki.org/wiki/Arms_Manufacturer). | ||
| 195 | + | ||
| 196 | +## Nagi | ||
| 197 | + | ||
| 198 | +**Candidate evidence.** Game8 recommends Blossom Dance, True Stream Edge, Rising Blade, Magnum Edge, Enhanced Stand, Missile Volley, Burning Slash, and Incendiary Edge. Three consume TP: Blossom Dance, Enhanced Stand, Incendiary Edge. The article describes physical-resistance down into melee damage and a Thermal-resistance-down sequence. | ||
| 199 | + | ||
| 200 | +**Final Arts, ordered.** Rising Blade / True Stream Edge / Blossom Dance / Magnum Edge / Enhanced Stand / Missile Volley / Burning Slash / Bullet Storm. This keeps Blossom Dance and Enhanced Stand as the two TP spenders. Enhanced Stand supplies its Aura/HP recovery; Blossom Dance remains the TP damage Art. Magnum Edge supports the weapon-damage melee side. Missile Volley plus Burning Slash retain a Thermal-resistance-down route. Bullet Storm is a non-TP filler from Nagi's legal Gatling Gun list. Incendiary Edge is rejected from the full build because it would be the third TP Art. | ||
| 201 | + | ||
| 202 | +**Final Skills, ordered.** Steel Flesh / Mighty Muscle / Yamato Spirit / Fortified Flesh / Grand Procession. Five slots. These add HP, melee attack, melee-Art TP generation, and party TP on Overdrive. Yamato Spirit's aura bonus is supported by Enhanced Stand. | ||
| 203 | + | ||
| 204 | +**AI role and caveat.** Editorial: durable melee striker with Physical and Thermal setup, a healing Aura, and one TP finisher. Game8's full combo includes three TP Arts; final selection cuts Incendiary Edge. No consulted guide verifies AI timing. `Cool Off` appears only as an ordered progression substitute; it can consume an active Aura for TP, so it is not in the final rank-20 bar. | ||
| 205 | + | ||
| 206 | +**Art legality, cost, and progression.** All Arts use Longsword or Gatling Gun. Blossom Dance and Enhanced Stand consume TP. True Stream Edge generates TP under its morale condition but does not consume TP. | ||
| 207 | + | ||
| 208 | +| Order | Art | Personal rank | Weapon | Consumes TP? | Status | Mechanical source | | ||
| 209 | +|---:|---|---:|---|---|---|---| | ||
| 210 | +| 1 | Rising Blade | 1 | Longsword | No | Final | [Art page](https://www.xenoserieswiki.org/wiki/Rising_Blade) | | ||
| 211 | +| 2 | True Stream Edge | 4 | Longsword | No, can generate TP with morale | Final | [Art page](https://www.xenoserieswiki.org/wiki/True_Stream_Edge) | | ||
| 212 | +| 3 | Blossom Dance | 10 | Longsword | Yes | Final | [Art page](https://www.xenoserieswiki.org/wiki/Blossom_Dance_(XCX)) | | ||
| 213 | +| 4 | Magnum Edge | 5 | Longsword | No | Final | [Art page](https://www.xenoserieswiki.org/wiki/Magnum_Edge_(XCX)) | | ||
| 214 | +| 5 | Enhanced Stand | 1 | Gatling Gun | Yes | Final | [Art page](https://www.xenoserieswiki.org/wiki/Enhanced_Stand) | | ||
| 215 | +| 6 | Missile Volley | 12 | Gatling Gun | No | Final | [Art page](https://www.xenoserieswiki.org/wiki/Missile_Volley) | | ||
| 216 | +| 7 | Burning Slash | 9 | Longsword | No | Final | [Art page](https://www.xenoserieswiki.org/wiki/Burning_Slash) | | ||
| 217 | +| 8 | Bullet Storm | 6 | Gatling Gun | No | Final | [Art page](https://www.xenoserieswiki.org/wiki/Bullet_Storm) | | ||
| 218 | +| 1 | Thermal Payload | 2 | Gatling Gun | Yes | Substitute | [Art page](https://www.xenoserieswiki.org/wiki/Thermal_Payload_(XCX)) | | ||
| 219 | +| 2 | Cool Off | 3 | Gatling Gun | No; consumes an Aura to yield TP under its condition | Substitute | [Art page](https://www.xenoserieswiki.org/wiki/Cool_Off_(XCX)) | | ||
| 220 | +| 3 | Defensive Stance | 7 | Longsword | Yes | Substitute | [Art page](https://www.xenoserieswiki.org/wiki/Defensive_Stance) | | ||
| 221 | +| 4 | Offensive Stance | 8 | Longsword | Yes | Substitute | [Art page](https://www.xenoserieswiki.org/wiki/Offensive_Stance) | | ||
| 222 | +| 5 | Samurai Soul | 11 | Longsword | Yes | Substitute | [Art page](https://www.xenoserieswiki.org/wiki/Samurai_Soul) | | ||
| 223 | +| 6 | Incendiary Edge | 13 | Longsword | Yes | Substitute; source candidate displaced by TP cap | [Art page](https://www.xenoserieswiki.org/wiki/Incendiary_Edge) | | ||
| 224 | + | ||
| 225 | +**Skill progression.** Final ranks: Steel Flesh 7, Mighty Muscle 9, Trauma Tension 11 (substitute), Rising Renewal 13 (substitute), Yamato Spirit 14, Fortified Flesh 15, Machine Gunner 16 (substitute), Grand Procession 17. Ordered skill substitutes after the final five: Trauma Tension 11, Rising Renewal 13, Machine Gunner 16. Source: [Nagi gameplay](https://www.xenoserieswiki.org/wiki/Nagi/Gameplay). Five Skills selected at most. | ||
| 226 | + | ||
| 227 | +**Weapons.** Native pair is Gatling Gun + Longsword. Nagi starts with physical [Signature Glaive: Fledgling](https://www.xenoserieswiki.org/wiki/Signature_Glaive:_Fledgling), level 30, 136 attack; Xeno Series Wiki records its manufacturer as Unknown. His physical [Ophidian Machine](https://www.xenoserieswiki.org/wiki/Ophidian_Machine) Gatling Gun is Sakuraba, level 30. For purchased upgrades, use Sakuraba's physical Sword and Machine series for weapon-damage Arts such as Rising Blade and Magnum Edge. Nagi's Thermal Arts already have fixed Thermal damage. Sources: [Nagi gameplay](https://www.xenoserieswiki.org/wiki/Nagi/Gameplay), [Signature Glaive: Fledgling](https://www.xenoserieswiki.org/wiki/Signature_Glaive:_Fledgling), [Ophidian Machine](https://www.xenoserieswiki.org/wiki/Ophidian_Machine), [Game8 Longsword catalog](https://game8.co/games/Xenoblade-Chronicles-X/archives/504899), [manufacturer catalog](https://www.xenoserieswiki.org/wiki/Arms_Manufacturer). | ||
| 228 | + | ||
| 229 | +**Armor.** Nagi's +25% Max HP and HP Skills support Light armor once his gear is strong enough. At level 55, Sakuraba Light Reginal Vest adds Melee Attack Up VI, Defense 57, Physical +10, Gravity −10, and costs 360,000 credits. Story fallback: Medium Combat Bodywear, level 15, Melee Attack Up II, Defense 28, Physical +10, Gravity −15, 21,000 credits. Light improves the resistance trade-off; Medium buys more defense. Sakuraba starts available; Light stock needs maker rank 2. Sources: [Reginal Vest](https://game8.co/games/Xenoblade-Chronicles-X/archives/510523), [Combat Bodywear](https://game8.co/games/Xenoblade-Chronicles-X/archives/510709), [Armor](https://www.xenoserieswiki.org/wiki/Armor_(XCX)), [manufacturer progression](https://www.xenoserieswiki.org/wiki/Arms_Manufacturer). | ||
| 230 | + | ||
| 231 | +## Integration handoff | ||
| 232 | + | ||
| 233 | +The integrated recommendations are stored in [`src/data/companionBuilds.ts`](../src/data/companionBuilds.ts): ordered Arts, Skills and progression substitutes, bilingual role/rationale/equipment advice, and source references. This research matrix preserves the per-Art weapon, TP and unlock evidence; character progression and slot limits remain in [`src/data/companions.ts`](../src/data/companions.ts). | ||
| 234 | + | ||
| 235 | +No Cross selection, rank controls, Skell packages, or runtime behavior were changed here. | ||
added
research/companion-builds-veterans.md +327 -0 | new file mode 100644 | ||
| @@ -0,0 +1,327 @@ | ||
| 1 | +# Researched companion builds: veterans (six-character slice) | |
| 2 | + | |
| 3 | +## Scope and policy | |
| 4 | + | |
| 5 | +Covers L, H.B., Alexa, Bozé, Celica and Frye only; Cross excluded. Research scope is Xenoblade Chronicles X: Definitive Edition (DE), with Wii U-era evidence labeled separately and validated against current personal game-data records. These are fixed AI-companion **ground** loadouts; team/mission context does not rewrite them. Skell vehicle packages remain separate. No selected ground Skill is presented as an active Skell benefit. | |
| 6 | + | |
| 7 | +Canonical order and progression-substitute order are explicit. Personal Art rank and Skill slots come from each character gameplay record and `src/data/companions.ts`; weapon compatibility and TP cost come from Art/weapon-family data. Each final loadout has 8 Arts and no more than two TP-consuming Arts. All alternatives are weapon-compatible; all fallback lists keep combined TP costs within 2. Lv.60 gear stats are catalogue comparisons, not guaranteed story stock. | |
| 8 | + | |
| 9 | +## Search corpus and source limits | |
| 10 | + | |
| 11 | +| Source | Edition | Use | Limits / independence | | |
| 12 | +|---|---|---|---| | |
| 13 | +| [DE party-member guide by Stuart98](https://www.reddit.com/r/Xenoblade_Chronicles/comments/1jnyxkz/a_guide_to_xenoblade_x_de_party_member_builds/) | DE (2025-era) | Art/Skill candidates, character roles, equipment claims | Direct Reddit and JSON fetch returned 403; search-index excerpts consulted. Not a mechanics authority. | | |
| 14 | +| [GameFAQs party-member build thread](https://gamefaqs.gamespot.com/boards/701151-xenoblade-chronicles-x/73179135) | Original XCX / Wii U | Independent L/H.B./Alexa/Bozé build suggestions | Direct fetch returned 403; used indexed excerpts, checked against DE personal ranks and weapon tables. | | |
| 15 | +| [Nintendo Life character builds](https://www.nintendolife.com/guides/xenoblade-chronicles-x-best-combat-builds-for-all-characters) | XCX guide; edition coverage incomplete | L/H.B. role overlap; Celica/Frye excerpt says “Coming soon” | Reader returned comments feed; only search excerpt. L has “Astral Projection” typo; not legal name. | | |
| 16 | +| [sgs_ripple Note mirror](https://note.com/sgs_ripple/n/nd342aa00f4e3) | DE mirror/translation | Builds also shown in search excerpts | Says transcribed from Reddit; deduplicated, not independent recurrence. Direct reader fell back to profile. | | |
| 17 | +| [Xeno Series Wiki Arms Manufacturer](https://www.xenoserieswiki.org/wiki/Arms_Manufacturer) and character gameplay pages | XCX + DE data | Personal weapon types, Arts/Skills ranks, slots, story unlock/R&D progression | Game data/reference source, not an official Nintendo build guide. | | |
| 18 | +| [Weapon-family Art/model tables](https://xenoblade.fandom.com/wiki/Assault_Rifle) | XCX base data; some pages also tag DE | Exact Art weapon, TP cost, manufacturer models/stats | Community wiki catalog; current DE character facts separately checked. | | |
| 19 | +| [Candid & Credible](https://xenoblade.fandom.com/wiki/Candid_%26_Credible), [Orphean](https://xenoblade.fandom.com/wiki/Orphean_Technologies), [Armor](https://xenoblade.fandom.com/wiki/Armor) | XCX catalog | Armor types, piece names, traits, weight tradeoffs, manufacturer progression | Traits vary by piece/drop/shop; no blanket best-in-slot claim. Armor summary direct fetch was blocked; indexed page excerpt + maker tables consulted. | | |
| 20 | + | |
| 21 | +Search included DE party builds, character-specific discussion, weapon Art tables, armor/maker catalog. This is full coverage only for assigned six, not exhaustive internet search. Direct Reddit/GameFAQs/Nintendo pages were partly blocked; those evidence paths are labeled. Sparse evidence is editorial, not consensus. | |
| 22 | + | |
| 23 | +## Signature Art: Cross vs companion | |
| 24 | + | |
| 25 | +Affinity-mission “signature Art” entries name the mission reward that teaches Cross the companion Art; they do not add a mission gate to the owner companion’s personal Art. The personal Gameplay pages expose owner LearnArts/ranks; e.g. L Mindstorm rank 5 and Frye Bullet Twister rank 4 in the current companion facts. Do not add Cross mission gates to the fixed companion selector. Cross behavior remains unchanged. Sources: [Battle Arts](https://xenoblade.fandom.com/wiki/Battle_Arts_%28XCX%29), [L gameplay](https://www.xenoserieswiki.org/wiki/L/Gameplay), [Frye gameplay](https://www.xenoserieswiki.org/wiki/Frye/Gameplay). | |
| 26 | + | |
| 27 | +## L | |
| 28 | + | |
| 29 | +**Weapons / Skill slots:** Shield + Psycho Launchers; 3 slots. Full loadout at personal rank 13. **Role:** Defensive tank / control-support. | |
| 30 | + | |
| 31 | +**Candidate Arts from sources:** DE guide: Wild Down, Astral Protection, Mindstorm, Shield Wall, Trash Talk, Stellar Ray, Shooting Star, Flame Cloak/Lightning Cloak. GameFAQs adds Wild Smash and Reality Rift. | |
| 32 | +**Candidate Skills from sources:** Steel Flesh; Long Topple; Stand Strong or Shield Screen. | |
| 33 | +**Evidence and recurrence:** Moderate role/Art recurrence across DE Reddit and independent 2015 GameFAQs; Nintendo Life also labels L a Shield Trooper tank. Lists overlap on Wild Down, Astral Protection, Mindstorm, Shield Wall, Trash Talk; precise ordered TP-capped set is editorial. | |
| 34 | +**Final rationale:** Wild Down supplies party Topple; Long Topple extends it. Shield Wall's Barrier, Astral Protection and Mindstorm protect/heal allies; Shooting Star adds Shock without spending TP. AI fit is steady defense/control, not burst DPS. | |
| 35 | + | |
| 36 | +**Canonical ordered Arts:** `Wild Down`, `Astral Protection`, `Mindstorm`, `Shield Wall`, `Trash Talk`, `Stellar Ray`, `Shooting Star`, `Lightning Cloak`. | |
| 37 | +**Canonical ordered Skills:** `Steel Flesh`, `Long Topple`, `Shield Screen`. | |
| 38 | +**Ordered Art substitutes:** `Wild Smash` (rank 4), `Reality Rift` (rank 8), `Bombardier` (rank 11), `Flame Cloak` (rank 12). | |
| 39 | +**Ordered Skill substitutes:** `Mighty Muscle` (rank 9), `Stand Strong` (rank 15). | |
| 40 | + | |
| 41 | +| Candidate Art | Outcome | Personal rank | Required weapon | TP cost | Individual Art page | TP/weapon evidence | | |
| 42 | +|---|---|---:|---|---:|---|---| | |
| 43 | +| `Wild Down` | canonical | 1 | Shield | 1000 | [Art](https://www.xenoserieswiki.org/wiki/Wild_Down_(XCX)) | [family TP table](https://xenoblade.fandom.com/wiki/Shield) | | |
| 44 | +| `Astral Protection` | canonical | 13 | Psycho Launchers | 1000 | [Art](https://www.xenoserieswiki.org/wiki/Astral_Protection) | [family TP table](https://xenoblade.fandom.com/wiki/Psycho_Launchers) | | |
| 45 | +| `Mindstorm` | canonical | 5 | Shield | 0 | [Art](https://www.xenoserieswiki.org/wiki/Mindstorm) | [family TP table](https://xenoblade.fandom.com/wiki/Shield) | | |
| 46 | +| `Shield Wall` | canonical | 9 | Shield | 0 | [Art](https://www.xenoserieswiki.org/wiki/Shield_Wall_(XCX)) | [family TP table](https://xenoblade.fandom.com/wiki/Shield) | | |
| 47 | +| `Trash Talk` | canonical | 6 | Shield | 0 | [Art](https://www.xenoserieswiki.org/wiki/Trash_Talk) | [family TP table](https://xenoblade.fandom.com/wiki/Shield) | | |
| 48 | +| `Stellar Ray` | canonical | 1 | Psycho Launchers | 0 | [Art](https://www.xenoserieswiki.org/wiki/Stellar_Ray) | [family TP table](https://xenoblade.fandom.com/wiki/Psycho_Launchers) | | |
| 49 | +| `Shooting Star` | canonical | 7 | Psycho Launchers | 0 | [Art](https://www.xenoserieswiki.org/wiki/Shooting_Star) | [family TP table](https://xenoblade.fandom.com/wiki/Psycho_Launchers) | | |
| 50 | +| `Flame Cloak` | ordered substitute | 12 | Shield | 0 | [Art](https://www.xenoserieswiki.org/wiki/Flame_Cloak) | [family TP table](https://xenoblade.fandom.com/wiki/Shield) | | |
| 51 | +| `Lightning Cloak` | canonical | 2 | Psycho Launchers | 0 | [Art](https://www.xenoserieswiki.org/wiki/Lightning_Cloak) | [family TP table](https://xenoblade.fandom.com/wiki/Psycho_Launchers) | | |
| 52 | +| `Wild Smash` | ordered substitute | 4 | Shield | 0 | [Art](https://www.xenoserieswiki.org/wiki/Wild_Smash) | [family TP table](https://xenoblade.fandom.com/wiki/Shield) | | |
| 53 | +| `Reality Rift` | ordered substitute | 8 | Shield | 0 | [Art](https://www.xenoserieswiki.org/wiki/Reality_Rift) | [family TP table](https://xenoblade.fandom.com/wiki/Shield) | | |
| 54 | +| `Bombardier` | ordered substitute | 11 | Shield | 0 | [Art](https://www.xenoserieswiki.org/wiki/Bombardier) | [family TP table](https://xenoblade.fandom.com/wiki/Shield) | | |
| 55 | + | |
| 56 | +| Candidate Skill | Outcome | Personal rank evidence | | |
| 57 | +|---|---|---| | |
| 58 | +| `Steel Flesh` | canonical | rank 7 — [personal data](https://www.xenoserieswiki.org/wiki/L/Gameplay) | | |
| 59 | +| `Long Topple` | canonical | rank 13 — [personal data](https://www.xenoserieswiki.org/wiki/L/Gameplay) | | |
| 60 | +| `Stand Strong` | ordered substitute | rank 15 — [personal data](https://www.xenoserieswiki.org/wiki/L/Gameplay) | | |
| 61 | +| `Shield Screen` | canonical | rank 11 — [personal data](https://www.xenoserieswiki.org/wiki/L/Gameplay) | | |
| 62 | +| `Mighty Muscle` | ordered substitute | rank 9 — [personal data](https://www.xenoserieswiki.org/wiki/L/Gameplay) | | |
| 63 | + | |
| 64 | +**TP/slot audit:** canonical TP Arts: `Wild Down` = 1000, `Astral Protection` = 1000 (2/2). Maximum if all TP substitutes entered: 2/2. Canonical 8/8 Arts; 3/3 Skills. All canonical/substitute Art family types match personal weapon pair. | |
| 65 | + | |
| 66 | +**Weapon manufacturers, actual models, attributes and stats:** Shield: Sakuraba physical Shield Series (Lv.60 320 damage, 165 TP gain) gives greater auto-attack TP than Grenada Paive (320/120). Psycho Launchers: Grenada Psylans beam (Lv.60 32 damage, 1.8 s, 5 ammo, 3 TP gain) pairs with Stellar Ray’s weapon-damage/Beam-Res-Down role. This beam model does not change Shooting Star’s fixed electric damage. | |
| 67 | + | |
| 68 | +**Armor manufacturer/type and trait rationale:** Orphean Technologies Light Wear (Yii/Yimsel/Yiys/Yiym): select Evasion/HP/Max-TP traits by actual piece for L's Astral Protection tank role. Light Wear itself grants no evasion. Representative Lv.55 torso Yimsel has Defense 40 and Gravity +20; C&C Heavy Bulwark has Defense 100, Electric +20, Gravity −15. Compare defense and resistance for the encounter; traits are not guaranteed set defaults. [Armor table](https://xenoblade.fandom.com/wiki/Armor). | |
| 69 | + | |
| 70 | +**Unlocks and documented alternatives:** Orphean unlocks after Rescue at the Ensconced Citadel; AM level 2 unlocks Light, level 3 Heavy. Early fallback: currently stocked Sakuraba Light armor and legal physical Shield/available launcher until preferred models are available. | |
| 71 | + | |
| 72 | +## H.B. | |
| 73 | + | |
| 74 | +**Weapons / Skill slots:** Shield + Assault Rifle; 4 slots. Full loadout at personal rank 15. **Role:** Tank / party TP battery / Topple control. | |
| 75 | + | |
| 76 | +**Candidate Arts from sources:** DE guide: Shield Wall, Wild Down, Wild Smash, Gunforce/Flamehand, Decoy Round, Last Stand, Trash Talk, Burst/Flash/Takedown. GameFAQs: Last Stand, Gunforce, Decoy Round, Trash Talk, Shield Wall, Atomic Hit, Power Dive, Furious Blast. | |
| 77 | +**Candidate Skills from sources:** Steel Flesh, Long Topple, Topple Topper, Combat Presence/Trauma Tension; GameFAQs also Shield Screen/Mighty Muscle. | |
| 78 | +**Evidence and recurrence:** Moderate: DE Reddit and independent 2015 GameFAQs converge on tank/TP support and repeated Shield Wall/Decoy Round/Last Stand/Trash Talk. Nintendo Life independently calls H.B. an HP-generator/tank. Candidate lists exceed TP ceiling; omitting Gunforce/Flamehand/Burst Grenade is editorial budget cut. | |
| 79 | +**Final rationale:** Wild Down and Long Topple/Topple Topper form reliable control; taunts and Shield Wall protect the party. Last Stand converts H.B.’s TP into ally TP. Canonical TP spenders: Wild Down and Last Stand only. | |
| 80 | + | |
| 81 | +**Canonical ordered Arts:** `Wild Down`, `Shield Wall`, `Decoy Round`, `Last Stand`, `Wild Smash`, `Trash Talk`, `Takedown Shot`, `Power Dive`. | |
| 82 | +**Canonical ordered Skills:** `Steel Flesh`, `Long Topple`, `Topple Topper`, `Combat Presence`. | |
| 83 | +**Ordered Art substitutes:** `Atomic Hit` (rank 1), `Furious Blast` (rank 6), `Flash Grenade` (rank 8), `Bombardier` (rank 13). | |
| 84 | +**Ordered Skill substitutes:** `Mighty Muscle` (rank 9), `Shield Screen` (rank 14), `Trauma Tension` (rank 16), `Double Spike` (rank 17). | |
| 85 | + | |
| 86 | +| Candidate Art | Outcome | Personal rank | Required weapon | TP cost | Individual Art page | TP/weapon evidence | | |
| 87 | +|---|---|---:|---|---:|---|---| | |
| 88 | +| `Wild Down` | canonical | 7 | Shield | 1000 | [Art](https://www.xenoserieswiki.org/wiki/Wild_Down_(XCX)) | [family TP table](https://xenoblade.fandom.com/wiki/Shield) | | |
| 89 | +| `Shield Wall` | canonical | 9 | Shield | 0 | [Art](https://www.xenoserieswiki.org/wiki/Shield_Wall_(XCX)) | [family TP table](https://xenoblade.fandom.com/wiki/Shield) | | |
| 90 | +| `Wild Smash` | canonical | 5 | Shield | 0 | [Art](https://www.xenoserieswiki.org/wiki/Wild_Smash) | [family TP table](https://xenoblade.fandom.com/wiki/Shield) | | |
| 91 | +| `Gunforce` | source candidate, not selected | 14 | Assault Rifle | 1000 | [Art](https://www.xenoserieswiki.org/wiki/Gunforce) | [family TP table](https://xenoblade.fandom.com/wiki/Assault_Rifle) | | |
| 92 | +| `Flamehand` | source candidate, not selected | 10 | Shield | 1000 | [Art](https://www.xenoserieswiki.org/wiki/Flamehand) | [family TP table](https://xenoblade.fandom.com/wiki/Shield) | | |
| 93 | +| `Decoy Round` | canonical | 1 | Assault Rifle | 0 | [Art](https://www.xenoserieswiki.org/wiki/Decoy_Round) | [family TP table](https://xenoblade.fandom.com/wiki/Assault_Rifle) | | |
| 94 | +| `Last Stand` | canonical | 15 | Assault Rifle | 1000 | [Art](https://www.xenoserieswiki.org/wiki/Last_Stand_(XCX)) | [family TP table](https://xenoblade.fandom.com/wiki/Assault_Rifle) | | |
| 95 | +| `Trash Talk` | canonical | 12 | Shield | 0 | [Art](https://www.xenoserieswiki.org/wiki/Trash_Talk) | [family TP table](https://xenoblade.fandom.com/wiki/Shield) | | |
| 96 | +| `Burst Grenade` | source candidate, not selected | 2 | Assault Rifle | 1000 | [Art](https://www.xenoserieswiki.org/wiki/Burst_Grenade) | [family TP table](https://xenoblade.fandom.com/wiki/Assault_Rifle) | | |
| 97 | +| `Flash Grenade` | ordered substitute | 8 | Assault Rifle | 0 | [Art](https://www.xenoserieswiki.org/wiki/Flash_Grenade) | [family TP table](https://xenoblade.fandom.com/wiki/Assault_Rifle) | | |
| 98 | +| `Takedown Shot` | canonical | 11 | Assault Rifle | 0 | [Art](https://www.xenoserieswiki.org/wiki/Takedown_Shot) | [family TP table](https://xenoblade.fandom.com/wiki/Assault_Rifle) | | |
| 99 | +| `Atomic Hit` | ordered substitute | 1 | Shield | 0 | [Art](https://www.xenoserieswiki.org/wiki/Atomic_Hit) | [family TP table](https://xenoblade.fandom.com/wiki/Shield) | | |
| 100 | +| `Power Dive` | canonical | 3 | Assault Rifle | 0 | [Art](https://www.xenoserieswiki.org/wiki/Power_Dive) | [family TP table](https://xenoblade.fandom.com/wiki/Assault_Rifle) | | |
| 101 | +| `Furious Blast` | ordered substitute | 6 | Assault Rifle | 0 | [Art](https://www.xenoserieswiki.org/wiki/Furious_Blast) | [family TP table](https://xenoblade.fandom.com/wiki/Assault_Rifle) | | |
| 102 | +| `Bombardier` | ordered substitute | 13 | Shield | 0 | [Art](https://www.xenoserieswiki.org/wiki/Bombardier) | [family TP table](https://xenoblade.fandom.com/wiki/Shield) | | |
| 103 | + | |
| 104 | +| Candidate Skill | Outcome | Personal rank evidence | | |
| 105 | +|---|---|---| | |
| 106 | +| `Steel Flesh` | canonical | rank 7 — [personal data](https://www.xenoserieswiki.org/wiki/H.B./Gameplay) | | |
| 107 | +| `Long Topple` | canonical | rank 15 — [personal data](https://www.xenoserieswiki.org/wiki/H.B./Gameplay) | | |
| 108 | +| `Topple Topper` | canonical | rank 13 — [personal data](https://www.xenoserieswiki.org/wiki/H.B./Gameplay) | | |
| 109 | +| `Combat Presence` | canonical | rank 11 — [personal data](https://www.xenoserieswiki.org/wiki/H.B./Gameplay) | | |
| 110 | +| `Trauma Tension` | ordered substitute | rank 16 — [personal data](https://www.xenoserieswiki.org/wiki/H.B./Gameplay) | | |
| 111 | +| `Mighty Muscle` | ordered substitute | rank 9 — [personal data](https://www.xenoserieswiki.org/wiki/H.B./Gameplay) | | |
| 112 | +| `Shield Screen` | ordered substitute | rank 14 — [personal data](https://www.xenoserieswiki.org/wiki/H.B./Gameplay) | | |
| 113 | +| `Double Spike` | ordered substitute | rank 17 — [personal data](https://www.xenoserieswiki.org/wiki/H.B./Gameplay) | | |
| 114 | + | |
| 115 | +**TP/slot audit:** canonical TP Arts: `Wild Down` = 1000, `Last Stand` = 1000 (2/2). Maximum if all TP substitutes entered: 2/2. Canonical 8/8 Arts; 4/4 Skills. All canonical/substitute Art family types match personal weapon pair. | |
| 116 | + | |
| 117 | +**Weapon manufacturers, actual models, attributes and stats:** Shield: Candid & Credible Haven II physical, Lv.60 320 damage/3.3 s/200 TP gain, supports TP throughput. Assault Rifle: Sakuraba physical (Lv.60 16 damage/2.7 s/20 ammo/1 TP), so weapon-damage Takedown Shot stays physical. Before C&C unlock use Sakuraba Shield (320/165 TP). | |
| 118 | + | |
| 119 | +**Armor manufacturer/type and trait rationale:** Candid & Credible Heavy Wear (Armet/Bulwark/Wrest/Stabilizers): high-defense maker and explicit raw-defense choice for taunting frontline. Representative Lv.55 torso Bulwark has Defense 100, Electric +20, Gravity −15; Light Breaker has Defense 60, Electric +20, Gravity −5. Heavy trades gravity resistance/upgrade flexibility for defense. [Armor table](https://xenoblade.fandom.com/wiki/Armor). | |
| 120 | + | |
| 121 | +**Unlocks and documented alternatives:** C&C unlocks after Chapter 5; Haven II series is AM level 2, Heavy Wear level 3. Earlier fallback: Sakuraba physical Shield/Assault Rifle and currently available armor weight. | |
| 122 | + | |
| 123 | +## Alexa | |
| 124 | + | |
| 125 | +**Weapons / Skill slots:** Javelin + Assault Rifle; 3 slots. Full loadout at personal rank 14. **Role:** Electric control / durable bruiser-support. | |
| 126 | + | |
| 127 | +**Candidate Arts from sources:** Assault Hammer; Raijin; Arcing Horn; Power Dive; Decoy Round; Maximum Voltage; Overwhelm; Flash Grenade/Furious Blast. GameFAQs adds Trident Buster and Hair Trigger. | |
| 128 | +**Candidate Skills from sources:** Fortified Flesh; Steel Flesh or Electric Boost; High Tension or Synchrony. Synchrony/Stellar Entry are Skell-oriented and excluded from ground canonical Skills. | |
| 129 | +**Evidence and recurrence:** Moderate: DE Reddit and independent 2015 GameFAQs converge on electric Javelin / Arcing Horn, Raijin, Maximum Voltage, Overwhelm, Assault Hammer and Furious Blast. Final instead uses Trident Buster for direct Electric/Shock pairing, keeps only two TP Arts, and treats Maximum Voltage as situational. | |
| 130 | +**Final rationale:** Arcing Horn lowers Electric Resistance; Trident Buster inflicts Shock, supported by Electric Boost. Raijin adds healing/reflect, Assault Hammer adds non-TP Topple. Maximum Voltage is legal but its post-Skell-destruction bonus is situational and another TP Art would break the two-Art package. | |
| 131 | + | |
| 132 | +**Canonical ordered Arts:** `Arcing Horn`, `Raijin`, `Trident Buster`, `Assault Hammer`, `Power Dive`, `Decoy Round`, `Furious Blast`, `Overwhelm`. | |
| 133 | +**Canonical ordered Skills:** `Fortified Flesh`, `Electric Boost`, `High Tension`. | |
| 134 | +**Ordered Art substitutes:** `Spiral Horn` (rank 2), `Hair Trigger` (rank 10), `Flash Grenade` (rank 13). | |
| 135 | +**Ordered Skill substitutes:** `Steel Flesh` (rank 7), `Quick Reload` (rank 13), `TP Overdrive` (rank 15). | |
| 136 | + | |
| 137 | +| Candidate Art | Outcome | Personal rank | Required weapon | TP cost | Individual Art page | TP/weapon evidence | | |
| 138 | +|---|---|---:|---|---:|---|---| | |
| 139 | +| `Assault Hammer` | canonical | 8 | Assault Rifle | 0 | [Art](https://www.xenoserieswiki.org/wiki/Assault_Hammer) | [family TP table](https://xenoblade.fandom.com/wiki/Assault_Rifle) | | |
| 140 | +| `Raijin` | canonical | 12 | Javelin | 1000 | [Art](https://www.xenoserieswiki.org/wiki/Raijin_(XCX)) | [family TP table](https://xenoblade.fandom.com/wiki/Javelin) | | |
| 141 | +| `Arcing Horn` | canonical | 1 | Javelin | 0 | [Art](https://www.xenoserieswiki.org/wiki/Arcing_Horn) | [family TP table](https://xenoblade.fandom.com/wiki/Javelin) | | |
| 142 | +| `Power Dive` | canonical | 3 | Assault Rifle | 0 | [Art](https://www.xenoserieswiki.org/wiki/Power_Dive) | [family TP table](https://xenoblade.fandom.com/wiki/Assault_Rifle) | | |
| 143 | +| `Decoy Round` | canonical | 7 | Assault Rifle | 0 | [Art](https://www.xenoserieswiki.org/wiki/Decoy_Round) | [family TP table](https://xenoblade.fandom.com/wiki/Assault_Rifle) | | |
| 144 | +| `Maximum Voltage` | source candidate, not selected | 11 | Javelin | 1000 | [Art](https://www.xenoserieswiki.org/wiki/Maximum_Voltage_(XCX)) | [family TP table](https://xenoblade.fandom.com/wiki/Javelin) | | |
| 145 | +| `Overwhelm` | canonical | 5 | Javelin | 0 | [Art](https://www.xenoserieswiki.org/wiki/Overwhelm) | [family TP table](https://xenoblade.fandom.com/wiki/Javelin) | | |
| 146 | +| `Flash Grenade` | ordered substitute | 13 | Assault Rifle | 0 | [Art](https://www.xenoserieswiki.org/wiki/Flash_Grenade) | [family TP table](https://xenoblade.fandom.com/wiki/Assault_Rifle) | | |
| 147 | +| `Furious Blast` | canonical | 1 | Assault Rifle | 0 | [Art](https://www.xenoserieswiki.org/wiki/Furious_Blast) | [family TP table](https://xenoblade.fandom.com/wiki/Assault_Rifle) | | |
| 148 | +| `Trident Buster` | canonical | 14 | Javelin | 1000 | [Art](https://www.xenoserieswiki.org/wiki/Trident_Buster_(XCX)) | [family TP table](https://xenoblade.fandom.com/wiki/Javelin) | | |
| 149 | +| `Hair Trigger` | ordered substitute | 10 | Javelin | 0 | [Art](https://www.xenoserieswiki.org/wiki/Hair_Trigger_(XCX)) | [family TP table](https://xenoblade.fandom.com/wiki/Javelin) | | |
| 150 | +| `Spiral Horn` | ordered substitute | 2 | Javelin | 0 | [Art](https://www.xenoserieswiki.org/wiki/Spiral_Horn) | [family TP table](https://xenoblade.fandom.com/wiki/Javelin) | | |
| 151 | + | |
| 152 | +| Candidate Skill | Outcome | Personal rank evidence | | |
| 153 | +|---|---|---| | |
| 154 | +| `Fortified Flesh` | canonical | rank 14 — [personal data](https://www.xenoserieswiki.org/wiki/Alexa/Gameplay) | | |
| 155 | +| `Steel Flesh` | ordered substitute | rank 7 — [personal data](https://www.xenoserieswiki.org/wiki/Alexa/Gameplay) | | |
| 156 | +| `Electric Boost` | canonical | rank 11 — [personal data](https://www.xenoserieswiki.org/wiki/Alexa/Gameplay) | | |
| 157 | +| `High Tension` | canonical | rank 9 — [personal data](https://www.xenoserieswiki.org/wiki/Alexa/Gameplay) | | |
| 158 | +| `Synchrony` | candidate only | rank 17 — [personal data](https://www.xenoserieswiki.org/wiki/Alexa/Gameplay) | | |
| 159 | +| `Stellar Entry` | candidate only | rank 16 — [personal data](https://www.xenoserieswiki.org/wiki/Alexa/Gameplay) | | |
| 160 | +| `Quick Reload` | ordered substitute | rank 13 — [personal data](https://www.xenoserieswiki.org/wiki/Alexa/Gameplay) | | |
| 161 | +| `TP Overdrive` | ordered substitute | rank 15 — [personal data](https://www.xenoserieswiki.org/wiki/Alexa/Gameplay) | | |
| 162 | + | |
| 163 | +**TP/slot audit:** canonical TP Arts: `Raijin` = 1000, `Trident Buster` = 1000 (2/2). Maximum if all TP substitutes entered: 2/2. Canonical 8/8 Arts; 3/3 Skills. All canonical/substitute Art family types match personal weapon pair. | |
| 164 | + | |
| 165 | +**Weapon manufacturers, actual models, attributes and stats:** Candid & Credible Bolide Electric Javelin (Lv.60 312 damage/2.5 s/155 TP) and Assailer Electric Assault Rifle (Lv.60 16 damage/2.7 s/20 ammo/1 TP). These attributes support weapon-damage Arts; Arcing Horn, Trident Buster and Maximum Voltage have fixed Art elements. | |
| 166 | + | |
| 167 | +**Armor manufacturer/type and trait rationale:** Candid & Credible Light Wear (Screen/Breaker/Ward/Trudgers): Max TP and Electric Res traits exist on relevant slots; representative Lv.55 torso Breaker has Defense 60, Electric +20, Gravity −5. Heavy Bulwark has Defense 100, Electric +20, Gravity −15; choose only if raw defense beats those tradeoffs. Inspect actual item traits. [Armor table](https://xenoblade.fandom.com/wiki/Armor). | |
| 168 | + | |
| 169 | +**Unlocks and documented alternatives:** C&C unlocks after Chapter 5; Light Wear requires AM level 2, Heavy level 3. Before then use Sakuraba physical weapons/armor; fixed-electric Arts stay electric, weapon-damage Arts inherit physical. Skell mode must not replace ground build. | |
| 170 | + | |
| 171 | +**Skell-only Skills considered and rejected from ground array:** `Synchrony`, `Stellar Entry`. Skill mode must not replace canonical ground Arts/Skills. | |
| 172 | + | |
| 173 | +## Bozé | |
| 174 | + | |
| 175 | +**Weapons / Skill slots:** Javelin + Sniper Rifle; 3 slots. Full loadout at personal rank 16. **Role:** Long-range Electric / Shock setup. | |
| 176 | + | |
| 177 | +**Candidate Arts from sources:** Arcing Horn; Sidewinder; Eagle Eye; Hair Trigger/Hawkeye; Raijin; Overwhelm; Shrapnel/Trident Buster; Slayonet. | |
| 178 | +**Candidate Skills from sources:** Conductive Strike; Knock ’n’ Shock; Electric Boost. | |
| 179 | +**Evidence and recurrence:** Moderate on Shock/electric role and core Arts/Skills across DE Reddit and independent 2015 GameFAQs. Final order is editorial for AI: one TP Art, ranged buffs, and no Slayonet melee-combo condition in core. Shock immunities remain a matchup limit. | |
| 180 | +**Final rationale:** Arcing Horn lowers Electric Resistance, Trident Buster inflicts Shock; Electric Boost, Conductive Strike and Knock ’n’ Shock support this package. Eagle Eye boosts ranged accuracy/attack. Shock-dependent value falls against resistance/immunity; no evidence supports universal top-tier claims. | |
| 181 | + | |
| 182 | +**Canonical ordered Arts:** `Arcing Horn`, `Eagle Eye`, `Sidewinder`, `Shrapnel`, `Trident Buster`, `Hair Trigger`, `Hawkeye`, `Overwhelm`. | |
| 183 | +**Canonical ordered Skills:** `Electric Boost`, `Conductive Strike`, `Knock 'n' Shock`. | |
| 184 | +**Ordered Art substitutes:** `Spiral Horn` (rank 1), `Raijin` (rank 4), `Vortex` (rank 5), `First Down` (rank 6), `Intercept` (rank 14). | |
| 185 | +**Ordered Skill substitutes:** `Master Edge` (rank 7), `Killshot` (rank 9), `Electric Guard` (rank 11), `Quick Reload` (rank 15), `TP Overdrive` (rank 17). | |
| 186 | + | |
| 187 | +| Candidate Art | Outcome | Personal rank | Required weapon | TP cost | Individual Art page | TP/weapon evidence | | |
| 188 | +|---|---|---:|---|---:|---|---| | |
| 189 | +| `Arcing Horn` | canonical | 2 | Javelin | 0 | [Art](https://www.xenoserieswiki.org/wiki/Arcing_Horn) | [family TP table](https://xenoblade.fandom.com/wiki/Javelin) | | |
| 190 | +| `Sidewinder` | canonical | 9 | Sniper Rifle | 0 | [Art](https://www.xenoserieswiki.org/wiki/Sidewinder_(XCX)) | [family TP table](https://xenoblade.fandom.com/wiki/Sniper_Rifle) | | |
| 191 | +| `Slayonet` | source candidate, not selected | 11 | Sniper Rifle | 0 | [Art](https://www.xenoserieswiki.org/wiki/Slayonet) | [family TP table](https://xenoblade.fandom.com/wiki/Sniper_Rifle) | | |
| 192 | +| `Eagle Eye` | canonical | 3 | Sniper Rifle | 0 | [Art](https://www.xenoserieswiki.org/wiki/Eagle_Eye) | [family TP table](https://xenoblade.fandom.com/wiki/Sniper_Rifle) | | |
| 193 | +| `Hair Trigger` | canonical | 8 | Javelin | 0 | [Art](https://www.xenoserieswiki.org/wiki/Hair_Trigger_(XCX)) | [family TP table](https://xenoblade.fandom.com/wiki/Javelin) | | |
| 194 | +| `Hawkeye` | canonical | 12 | Sniper Rifle | 0 | [Art](https://www.xenoserieswiki.org/wiki/Hawkeye) | [family TP table](https://xenoblade.fandom.com/wiki/Sniper_Rifle) | | |
| 195 | +| `Raijin` | ordered substitute | 4 | Javelin | 1000 | [Art](https://www.xenoserieswiki.org/wiki/Raijin_(XCX)) | [family TP table](https://xenoblade.fandom.com/wiki/Javelin) | | |
| 196 | +| `Overwhelm` | canonical | 7 | Javelin | 0 | [Art](https://www.xenoserieswiki.org/wiki/Overwhelm) | [family TP table](https://xenoblade.fandom.com/wiki/Javelin) | | |
| 197 | +| `Shrapnel` | canonical | 1 | Sniper Rifle | 0 | [Art](https://www.xenoserieswiki.org/wiki/Shrapnel_(XCX)) | [family TP table](https://xenoblade.fandom.com/wiki/Sniper_Rifle) | | |
| 198 | +| `Trident Buster` | canonical | 15 | Javelin | 1000 | [Art](https://www.xenoserieswiki.org/wiki/Trident_Buster_(XCX)) | [family TP table](https://xenoblade.fandom.com/wiki/Javelin) | | |
| 199 | +| `Vortex` | ordered substitute | 5 | Javelin | 0 | [Art](https://www.xenoserieswiki.org/wiki/Vortex_(XCX)) | [family TP table](https://xenoblade.fandom.com/wiki/Javelin) | | |
| 200 | +| `First Down` | ordered substitute | 6 | Sniper Rifle | 0 | [Art](https://www.xenoserieswiki.org/wiki/First_Down) | [family TP table](https://xenoblade.fandom.com/wiki/Sniper_Rifle) | | |
| 201 | +| `Intercept` | ordered substitute | 14 | Sniper Rifle | 0 | [Art](https://www.xenoserieswiki.org/wiki/Intercept) | [family TP table](https://xenoblade.fandom.com/wiki/Sniper_Rifle) | | |
| 202 | +| `Spiral Horn` | ordered substitute | 1 | Javelin | 0 | [Art](https://www.xenoserieswiki.org/wiki/Spiral_Horn) | [family TP table](https://xenoblade.fandom.com/wiki/Javelin) | | |
| 203 | + | |
| 204 | +| Candidate Skill | Outcome | Personal rank evidence | | |
| 205 | +|---|---|---| | |
| 206 | +| `Conductive Strike` | canonical | rank 16 — [personal data](https://www.xenoserieswiki.org/wiki/Boz%C3%A9/Gameplay) | | |
| 207 | +| `Knock 'n' Shock` | canonical | rank 14 — [personal data](https://www.xenoserieswiki.org/wiki/Boz%C3%A9/Gameplay) | | |
| 208 | +| `Electric Boost` | canonical | rank 13 — [personal data](https://www.xenoserieswiki.org/wiki/Boz%C3%A9/Gameplay) | | |
| 209 | +| `Electric Guard` | ordered substitute | rank 11 — [personal data](https://www.xenoserieswiki.org/wiki/Boz%C3%A9/Gameplay) | | |
| 210 | +| `Quick Reload` | ordered substitute | rank 15 — [personal data](https://www.xenoserieswiki.org/wiki/Boz%C3%A9/Gameplay) | | |
| 211 | +| `TP Overdrive` | ordered substitute | rank 17 — [personal data](https://www.xenoserieswiki.org/wiki/Boz%C3%A9/Gameplay) | | |
| 212 | +| `Master Edge` | ordered substitute | rank 7 — [personal data](https://www.xenoserieswiki.org/wiki/Boz%C3%A9/Gameplay) | | |
| 213 | +| `Killshot` | ordered substitute | rank 9 — [personal data](https://www.xenoserieswiki.org/wiki/Boz%C3%A9/Gameplay) | | |
| 214 | + | |
| 215 | +**TP/slot audit:** canonical TP Arts: `Trident Buster` = 1000 (1/2). Maximum if all TP substitutes entered: 2/2. Canonical 8/8 Arts; 3/3 Skills. All canonical/substitute Art family types match personal weapon pair. | |
| 216 | + | |
| 217 | +**Weapon manufacturers, actual models, attributes and stats:** Candid & Credible Bolide Electric Javelin (Lv.60 312 damage/2.5 s/155 TP) + Trigger Electric Sniper Rifle (Lv.60 112 damage/4 s/5 ammo/7 TP). Fixed-electric Arts retain their attribute. | |
| 218 | + | |
| 219 | +**Armor manufacturer/type and trait rationale:** Candid & Credible Light Wear: Electric Res/Max TP traits are available on relevant pieces; representative Lv.55 torso Breaker has Defense 60, Electric +20, Gravity −5. Heavy Bulwark raises that sample to Defense 100 but Gravity −15. Light weight grants no intrinsic mobility; pick verified piece traits/resistances according to the encounter. [Armor table](https://xenoblade.fandom.com/wiki/Armor). | |
| 220 | + | |
| 221 | +**Unlocks and documented alternatives:** C&C unlocks after Chapter 5; Light Wear AM level 2, Heavy level 3. Earlier fallback: Sakuraba physical Javelin/Sniper Rifle; fixed-electric Arts remain electric. Keep fixed build even against Shock-resistant targets. | |
| 222 | + | |
| 223 | +## Celica | |
| 224 | + | |
| 225 | +**Weapons / Skill slots:** Knife + Dual Guns; 3 slots. Full loadout at personal rank 16. **Role:** Ether debuff / Potential Dual Guns DPS with defense. | |
| 226 | + | |
| 227 | +**Candidate Arts from sources:** Zero Zero; Black Butterfly; Ghostwalker; Full Specs; Energy Source or Absorber Skin; Primer; Executioner; Screamer. Black Bane is editorially added from her personal art pool. | |
| 228 | +**Candidate Skills from sources:** Inner Search; Steady Hand; Mindscape or Red Zone. | |
| 229 | +**Evidence and recurrence:** Sparse: one detailed DE Reddit build source. Nintendo Life excerpts still say Celica “Coming soon”; pre-DE GameFAQs discussions predate Definitive Edition, not Celica. Celica was playable in original XCX, so earlier character-specific discussions remain relevant when they contain usable evidence, but no second matching full build emerged. Reddit frames Celica as a player-control build, not tested AI consensus. Ether Dual Guns claim for Black Butterfly is false: Knife-only, fixed Ether. | |
| 230 | +**Final rationale:** Black Butterfly and Black Bane are Knife Arts with fixed Ether damage; Black Butterfly applies Ether Res Down, supporting Black Bane’s debuff scaling. Zero Zero/Executioner use weapon damage on Dual Guns; Ghostwalker adds survival. Full Specs and Executioner are the only TP Arts. Absorber Skin supplies non-TP Barrier. Sleep is fragile in party AI [editorial]. | |
| 231 | + | |
| 232 | +**Canonical ordered Arts:** `Black Butterfly`, `Black Bane`, `Full Specs`, `Zero Zero`, `Ghostwalker`, `Primer`, `Executioner`, `Absorber Skin`. | |
| 233 | +**Canonical ordered Skills:** `Steady Hand`, `Inner Search`, `Mindscape`. | |
| 234 | +**Ordered Art substitutes:** `Sliding Slinger` (rank 1), `Screamer` (rank 4), `Violent Streak` (rank 6). Violent Streak deals weapon damage and gains TP on criticals; it fills progression bars while late canonicals are locked, then drops out when eight canonicals become available. | |
| 235 | +**Ordered Skill substitutes:** `Aura Burst` (rank 11), `Fleet Feet` (rank 13), `Gentle Approach` (rank 15), `Feather Touch` (rank 17), `Red Zone` (rank 18). | |
| 236 | + | |
| 237 | +| Candidate Art | Outcome | Personal rank | Required weapon | TP cost | Individual Art page | TP/weapon evidence | | |
| 238 | +|---|---|---:|---|---:|---|---| | |
| 239 | +| `Zero Zero` | canonical | 10 | Dual Guns | 0 | [Art](https://www.xenoserieswiki.org/wiki/Zero_Zero) | [family TP table](https://xenoblade.fandom.com/wiki/Dual_Guns) | | |
| 240 | +| `Black Butterfly` | canonical | 15 | Knife | 0 | [Art](https://www.xenoserieswiki.org/wiki/Black_Butterfly) | [family TP table](https://xenoblade.fandom.com/wiki/Knife) | | |
| 241 | +| `Ghostwalker` | canonical | 11 | Dual Guns | 0 | [Art](https://www.xenoserieswiki.org/wiki/Ghostwalker) | [family TP table](https://xenoblade.fandom.com/wiki/Dual_Guns) | | |
| 242 | +| `Full Specs` | canonical | 3 | Knife | 1000 | [Art](https://www.xenoserieswiki.org/wiki/Full_Specs) | [family TP table](https://xenoblade.fandom.com/wiki/Knife) | | |
| 243 | +| `Energy Source` | source candidate, not selected | 9 | Knife | 1000 | [Art](https://www.xenoserieswiki.org/wiki/Energy_Source) | [family TP table](https://xenoblade.fandom.com/wiki/Knife) | | |
| 244 | +| `Absorber Skin` | canonical | 1 | Knife | 0 | [Art](https://www.xenoserieswiki.org/wiki/Absorber_Skin) | [family TP table](https://xenoblade.fandom.com/wiki/Knife) | | |
| 245 | +| `Primer` | canonical | 5 | Dual Guns | 0 | [Art](https://www.xenoserieswiki.org/wiki/Primer) | [family TP table](https://xenoblade.fandom.com/wiki/Dual_Guns) | | |
| 246 | +| `Executioner` | canonical | 13 | Dual Guns | 1000 | [Art](https://www.xenoserieswiki.org/wiki/Executioner_(XCX)) | [family TP table](https://xenoblade.fandom.com/wiki/Dual_Guns) | | |
| 247 | +| `Screamer` | ordered substitute | 4 | Knife | 0 | [Art](https://www.xenoserieswiki.org/wiki/Screamer_(XCX)) | [family TP table](https://xenoblade.fandom.com/wiki/Knife) | | |
| 248 | +| `Black Bane` | canonical | 2 | Knife | 0 | [Art](https://www.xenoserieswiki.org/wiki/Black_Bane) | [family TP table](https://xenoblade.fandom.com/wiki/Knife) | | |
| 249 | +| `Sliding Slinger` | ordered substitute | 1 | Dual Guns | 0 | [Art](https://www.xenoserieswiki.org/wiki/Sliding_Slinger_(XCX)) | [family TP table](https://xenoblade.fandom.com/wiki/Dual_Guns) | | |
| 250 | +| `Violent Streak` | ordered substitute | 6 | Dual Guns | 0 | [Art](https://www.xenoserieswiki.org/wiki/Violent_Streak_(XCX)) | [family TP table](https://xenoblade.fandom.com/wiki/Dual_Guns) | | |
| 251 | + | |
| 252 | +| Candidate Skill | Outcome | Personal rank evidence | | |
| 253 | +|---|---|---| | |
| 254 | +| `Inner Search` | canonical | rank 9 — [personal data](https://www.xenoserieswiki.org/wiki/Celica/Gameplay) | | |
| 255 | +| `Steady Hand` | canonical | rank 7 — [personal data](https://www.xenoserieswiki.org/wiki/Celica/Gameplay) | | |
| 256 | +| `Mindscape` | canonical | rank 16 — [personal data](https://www.xenoserieswiki.org/wiki/Celica/Gameplay) | | |
| 257 | +| `Red Zone` | ordered substitute | rank 18 — [personal data](https://www.xenoserieswiki.org/wiki/Celica/Gameplay) | | |
| 258 | +| `Aura Burst` | ordered substitute | rank 11 — [personal data](https://www.xenoserieswiki.org/wiki/Celica/Gameplay) | | |
| 259 | +| `Fleet Feet` | ordered substitute | rank 13 — [personal data](https://www.xenoserieswiki.org/wiki/Celica/Gameplay) | | |
| 260 | +| `Gentle Approach` | ordered substitute | rank 15 — [personal data](https://www.xenoserieswiki.org/wiki/Celica/Gameplay) | | |
| 261 | +| `Feather Touch` | ordered substitute | rank 17 — [personal data](https://www.xenoserieswiki.org/wiki/Celica/Gameplay) | | |
| 262 | + | |
| 263 | +**TP/slot audit:** canonical TP Arts: `Full Specs` = 1000, `Executioner` = 1000 (2/2). Maximum if all TP substitutes entered: 2/2. Canonical 8/8 Arts; 3/3 Skills. All canonical/substitute Art family types match personal weapon pair. | |
| 264 | + | |
| 265 | +**Weapon manufacturers, actual models, attributes and stats:** Meredith & Co. Ether Pistolia Dual Guns (Lv.60 24 damage/2.0 s/6 ammo/2 TP) for weapon-damage Zero Zero/Executioner; Ether Pugio Knife (56 damage/1.0 s/60 TP). Critical correction: Black Butterfly is Knife-only, fixed Ether; Ether Dual Guns neither equip it nor boost its listed damage. | |
| 266 | + | |
| 267 | +**Armor manufacturer/type and trait rationale:** Orphean Light Wear: Yii head may have Potential Up/Potential Boost; other slots can supply Max HP/TP, Evasion, Overdrive traits. Representative Lv.55 torso Yimsel has Defense 40 and Gravity +20; C&C Light Breaker has Defense 60, Electric +20 and Gravity −5. Target actual traits by piece; shop stock contains only a subset. [Armor table](https://xenoblade.fandom.com/wiki/Armor). | |
| 268 | + | |
| 269 | +**Unlocks and documented alternatives:** Meredith unlocks after Chapter 4. Orphean armor requires Rescue at the Ensconced Citadel and AM level 2 Light Wear; C&C unlocks after Chapter 5 and also needs level 2 Light Wear. Earlier fallback: Sakuraba-compatible Dual Guns/Knife and current armor; fixed Ether Arts stay Ether. | |
| 270 | + | |
| 271 | +## Frye | |
| 272 | + | |
| 273 | +**Weapons / Skill slots:** Longsword + Gatling Gun; 3 slots. Full loadout at personal rank 17. **Role:** Thermal ranged mob clearer / aura-assisted TP economy. | |
| 274 | + | |
| 275 | +**Candidate Arts from sources:** Missile Volley; Bullet Twister; Bullet Storm; Thermal Payload; Defensive Stance; Cool Off; Burning Slash; Tornado Blade. | |
| 276 | +**Candidate Skills from sources:** Machine Gunner; Trauma Tension; Mighty Muscle. | |
| 277 | +**Evidence and recurrence:** Sparse: one detailed DE Reddit build. Nintendo Life excerpt says Frye build “Coming soon”; 2015 GameFAQs discussions predate Definitive Edition, not Frye. Frye was playable in original XCX. Earlier character-specific advice remains eligible but did not yield a second matching full build. Guide’s thermal Gatling→Burning Slash claim is wrong: Burning Slash is Longsword-only, fixed Thermal. | |
| 278 | +**Final rationale:** Missile Volley lowers Thermal Res; Thermal Payload adds toppled-target damage. Defensive Stance supplies an Aura so Bullet Twister/Tornado Blade can gain TP; Cool Off consumes an Aura to return TP. DE guide warns Frye is less reliable against bosses and AI/skill fit is imperfect. Two TP Arts only. | |
| 279 | + | |
| 280 | +**Canonical ordered Arts:** `Missile Volley`, `Bullet Twister`, `Thermal Payload`, `Defensive Stance`, `Bullet Storm`, `Cool Off`, `Burning Slash`, `Tornado Blade`. | |
| 281 | +**Canonical ordered Skills:** `Machine Gunner`, `Trauma Tension`, `Mighty Muscle`. | |
| 282 | +**Ordered Art substitutes:** `Rising Blade` (rank 1). | |
| 283 | +**Ordered Skill substitutes:** `Unwavering Courage` (rank 7), `Iron Knuckle` (rank 11), `Rising Renewal` (rank 13), `Weapon Guard` (rank 14), `Blazing Auto` (rank 16). | |
| 284 | + | |
| 285 | +| Candidate Art | Outcome | Personal rank | Required weapon | TP cost | Individual Art page | TP/weapon evidence | | |
| 286 | +|---|---|---:|---|---:|---|---| | |
| 287 | +| `Missile Volley` | canonical | 1 | Gatling Gun | 0 | [Art](https://www.xenoserieswiki.org/wiki/Missile_Volley) | [family TP table](https://xenoblade.fandom.com/wiki/Gatling_Gun) | | |
| 288 | +| `Bullet Twister` | canonical | 4 | Gatling Gun | 0 | [Art](https://www.xenoserieswiki.org/wiki/Bullet_Twister) | [family TP table](https://xenoblade.fandom.com/wiki/Gatling_Gun) | | |
| 289 | +| `Bullet Storm` | canonical | 7 | Gatling Gun | 0 | [Art](https://www.xenoserieswiki.org/wiki/Bullet_Storm) | [family TP table](https://xenoblade.fandom.com/wiki/Gatling_Gun) | | |
| 290 | +| `Thermal Payload` | canonical | 11 | Gatling Gun | 1000 | [Art](https://www.xenoserieswiki.org/wiki/Thermal_Payload_(XCX)) | [family TP table](https://xenoblade.fandom.com/wiki/Gatling_Gun) | | |
| 291 | +| `Defensive Stance` | canonical | 12 | Longsword | 1000 | [Art](https://www.xenoserieswiki.org/wiki/Defensive_Stance) | [family TP table](https://xenoblade.fandom.com/wiki/Longsword) | | |
| 292 | +| `Cool Off` | canonical | 8 | Gatling Gun | 0 | [Art](https://www.xenoserieswiki.org/wiki/Cool_Off_(XCX)) | [family TP table](https://xenoblade.fandom.com/wiki/Gatling_Gun) | | |
| 293 | +| `Burning Slash` | canonical | 5 | Longsword | 0 | [Art](https://www.xenoserieswiki.org/wiki/Burning_Slash) | [family TP table](https://xenoblade.fandom.com/wiki/Longsword) | | |
| 294 | +| `Tornado Blade` | canonical | 2 | Longsword | 0 | [Art](https://www.xenoserieswiki.org/wiki/Tornado_Blade) | [family TP table](https://xenoblade.fandom.com/wiki/Longsword) | | |
| 295 | +| `Rising Blade` | ordered substitute | 1 | Longsword | 0 | [Art](https://www.xenoserieswiki.org/wiki/Rising_Blade) | [family TP table](https://xenoblade.fandom.com/wiki/Longsword) | | |
| 296 | + | |
| 297 | +| Candidate Skill | Outcome | Personal rank evidence | | |
| 298 | +|---|---|---| | |
| 299 | +| `Machine Gunner` | canonical | rank 17 — [personal data](https://www.xenoserieswiki.org/wiki/Frye/Gameplay) | | |
| 300 | +| `Trauma Tension` | canonical | rank 15 — [personal data](https://www.xenoserieswiki.org/wiki/Frye/Gameplay) | | |
| 301 | +| `Mighty Muscle` | canonical | rank 9 — [personal data](https://www.xenoserieswiki.org/wiki/Frye/Gameplay) | | |
| 302 | +| `Iron Knuckle` | ordered substitute | rank 11 — [personal data](https://www.xenoserieswiki.org/wiki/Frye/Gameplay) | | |
| 303 | +| `Unwavering Courage` | ordered substitute | rank 7 — [personal data](https://www.xenoserieswiki.org/wiki/Frye/Gameplay) | | |
| 304 | +| `Rising Renewal` | ordered substitute | rank 13 — [personal data](https://www.xenoserieswiki.org/wiki/Frye/Gameplay) | | |
| 305 | +| `Weapon Guard` | ordered substitute | rank 14 — [personal data](https://www.xenoserieswiki.org/wiki/Frye/Gameplay) | | |
| 306 | +| `Blazing Auto` | ordered substitute | rank 16 — [personal data](https://www.xenoserieswiki.org/wiki/Frye/Gameplay) | | |
| 307 | + | |
| 308 | +**TP/slot audit:** canonical TP Arts: `Thermal Payload` = 1000, `Defensive Stance` = 1000 (2/2). Maximum if all TP substitutes entered: 2/2. Canonical 8/8 Arts; 3/3 Skills. All canonical/substitute Art family types match personal weapon pair. | |
| 309 | + | |
| 310 | +**Weapon manufacturers, actual models, attributes and stats:** Nopon Commerce Guild Ratatatta Thermal Gatling (Lv.60 20 damage/6.7 s/48 ammo/1 TP) for inherited-weapon Gatling Arts; Six Stars Glaive Thermal Longsword (Lv.60 204 damage/2.0 s/210 TP; Glaive II 216/180 TP) for weapon-damage Tornado Blade. Burning Slash is Longsword-only, fixed Thermal; Gatling attribute cannot affect it. | |
| 311 | + | |
| 312 | +**Armor manufacturer/type and trait rationale:** Orphean Light Wear for documented high evasion, matching Frye’s high personal Dodge coefficient and ranged-mob role. Representative Lv.55 torso Yimsel has Defense 40 and Gravity +20; C&C Light Breaker alternative has Defense 60, Electric +20, Gravity −5. Target HP/Evasion/Max-TP by slot; weight is not universal BIS. [Armor table](https://xenoblade.fandom.com/wiki/Armor). | |
| 313 | + | |
| 314 | +**Unlocks and documented alternatives:** Nopon unlocks after BFFs; Six Stars after A Challenger Approaches. Orphean armor requires Rescue at the Ensconced Citadel and AM level 2 for Light Wear; C&C Chapter 5/AM level 2 is fallback. Earlier weapon fallback: Sakuraba physical Gatling/Longsword; fixed Thermal Arts remain thermal. Lv.60 values are catalogue comparisons, not Frye’s guaranteed story gear. | |
| 315 | + | |
| 316 | +## Mechanical corrections and gaps | |
| 317 | + | |
| 318 | +- **Celica:** community guide claims Ether Dual Guns benefit Black Butterfly; false. Art is Knife-only with fixed Ether damage. Meredith Ether Dual Guns are useful for weapon-damage Arts only. | |
| 319 | +- **Frye:** guide claims thermal Gatling synergizes with Burning Slash; false. Burning Slash is Longsword-only with fixed Thermal damage. Split manufacturer advice by actual weapon family. | |
| 320 | +- TP generation is not TP consumption: TP cost values follow weapon-family tables; `Trash Talk`, `Bullet Twister`, `Cool Off`, `Tornado Blade` remain 0 when they generate/return TP conditionally. No third TP Art is used to fill slot. | |
| 321 | +- **AI performance:** guide-specific claims are not exhaustive tests. Celica is framed as player-control-oriented; Frye weaker vs bosses; Bozé Shock depends on enemy resistance. Other behavior remains editorial/unverified. No runtime tests were run for this research assignment. | |
| 322 | +- **Equipment:** listed stats are Lv.60 catalog values; actual purchase/drop level, trait rolls and account R&D tier depend on progression. Light/Medium/Heavy are not universally ordered best. | |
| 323 | +- **Recurrence:** L/H.B./Alexa/Bozé have at least two independent build sources (DE Reddit + Wii U GameFAQs; L/H.B. also role/build excerpt); Celica/Frye one detailed DE source only. Note mirror deduplicated. | |
| 324 | + | |
| 325 | +## Integration handoff | |
| 326 | + | |
| 327 | +Machine-readable recommendations are stored in [`src/data/companionBuilds.ts`](../src/data/companionBuilds.ts). This research matrix preserves every candidate, canonical and substitute Art’s personal rank, required weapon, TP cost, individual source URL and weapon-family TP-table URL. The integrated data contains ordered Arts, Skills and substitutes, bilingual equipment advice and sources. Cross remains unchanged. | |
| new file mode 100644 | |||
| @@ -0,0 +1,327 @@ | |||
| 1 | +# Researched companion builds: veterans (six-character slice) | ||
| 2 | + | ||
| 3 | +## Scope and policy | ||
| 4 | + | ||
| 5 | +Covers L, H.B., Alexa, Bozé, Celica and Frye only; Cross excluded. Research scope is Xenoblade Chronicles X: Definitive Edition (DE), with Wii U-era evidence labeled separately and validated against current personal game-data records. These are fixed AI-companion **ground** loadouts; team/mission context does not rewrite them. Skell vehicle packages remain separate. No selected ground Skill is presented as an active Skell benefit. | ||
| 6 | + | ||
| 7 | +Canonical order and progression-substitute order are explicit. Personal Art rank and Skill slots come from each character gameplay record and `src/data/companions.ts`; weapon compatibility and TP cost come from Art/weapon-family data. Each final loadout has 8 Arts and no more than two TP-consuming Arts. All alternatives are weapon-compatible; all fallback lists keep combined TP costs within 2. Lv.60 gear stats are catalogue comparisons, not guaranteed story stock. | ||
| 8 | + | ||
| 9 | +## Search corpus and source limits | ||
| 10 | + | ||
| 11 | +| Source | Edition | Use | Limits / independence | | ||
| 12 | +|---|---|---|---| | ||
| 13 | +| [DE party-member guide by Stuart98](https://www.reddit.com/r/Xenoblade_Chronicles/comments/1jnyxkz/a_guide_to_xenoblade_x_de_party_member_builds/) | DE (2025-era) | Art/Skill candidates, character roles, equipment claims | Direct Reddit and JSON fetch returned 403; search-index excerpts consulted. Not a mechanics authority. | | ||
| 14 | +| [GameFAQs party-member build thread](https://gamefaqs.gamespot.com/boards/701151-xenoblade-chronicles-x/73179135) | Original XCX / Wii U | Independent L/H.B./Alexa/Bozé build suggestions | Direct fetch returned 403; used indexed excerpts, checked against DE personal ranks and weapon tables. | | ||
| 15 | +| [Nintendo Life character builds](https://www.nintendolife.com/guides/xenoblade-chronicles-x-best-combat-builds-for-all-characters) | XCX guide; edition coverage incomplete | L/H.B. role overlap; Celica/Frye excerpt says “Coming soon” | Reader returned comments feed; only search excerpt. L has “Astral Projection” typo; not legal name. | | ||
| 16 | +| [sgs_ripple Note mirror](https://note.com/sgs_ripple/n/nd342aa00f4e3) | DE mirror/translation | Builds also shown in search excerpts | Says transcribed from Reddit; deduplicated, not independent recurrence. Direct reader fell back to profile. | | ||
| 17 | +| [Xeno Series Wiki Arms Manufacturer](https://www.xenoserieswiki.org/wiki/Arms_Manufacturer) and character gameplay pages | XCX + DE data | Personal weapon types, Arts/Skills ranks, slots, story unlock/R&D progression | Game data/reference source, not an official Nintendo build guide. | | ||
| 18 | +| [Weapon-family Art/model tables](https://xenoblade.fandom.com/wiki/Assault_Rifle) | XCX base data; some pages also tag DE | Exact Art weapon, TP cost, manufacturer models/stats | Community wiki catalog; current DE character facts separately checked. | | ||
| 19 | +| [Candid & Credible](https://xenoblade.fandom.com/wiki/Candid_%26_Credible), [Orphean](https://xenoblade.fandom.com/wiki/Orphean_Technologies), [Armor](https://xenoblade.fandom.com/wiki/Armor) | XCX catalog | Armor types, piece names, traits, weight tradeoffs, manufacturer progression | Traits vary by piece/drop/shop; no blanket best-in-slot claim. Armor summary direct fetch was blocked; indexed page excerpt + maker tables consulted. | | ||
| 20 | + | ||
| 21 | +Search included DE party builds, character-specific discussion, weapon Art tables, armor/maker catalog. This is full coverage only for assigned six, not exhaustive internet search. Direct Reddit/GameFAQs/Nintendo pages were partly blocked; those evidence paths are labeled. Sparse evidence is editorial, not consensus. | ||
| 22 | + | ||
| 23 | +## Signature Art: Cross vs companion | ||
| 24 | + | ||
| 25 | +Affinity-mission “signature Art” entries name the mission reward that teaches Cross the companion Art; they do not add a mission gate to the owner companion’s personal Art. The personal Gameplay pages expose owner LearnArts/ranks; e.g. L Mindstorm rank 5 and Frye Bullet Twister rank 4 in the current companion facts. Do not add Cross mission gates to the fixed companion selector. Cross behavior remains unchanged. Sources: [Battle Arts](https://xenoblade.fandom.com/wiki/Battle_Arts_%28XCX%29), [L gameplay](https://www.xenoserieswiki.org/wiki/L/Gameplay), [Frye gameplay](https://www.xenoserieswiki.org/wiki/Frye/Gameplay). | ||
| 26 | + | ||
| 27 | +## L | ||
| 28 | + | ||
| 29 | +**Weapons / Skill slots:** Shield + Psycho Launchers; 3 slots. Full loadout at personal rank 13. **Role:** Defensive tank / control-support. | ||
| 30 | + | ||
| 31 | +**Candidate Arts from sources:** DE guide: Wild Down, Astral Protection, Mindstorm, Shield Wall, Trash Talk, Stellar Ray, Shooting Star, Flame Cloak/Lightning Cloak. GameFAQs adds Wild Smash and Reality Rift. | ||
| 32 | +**Candidate Skills from sources:** Steel Flesh; Long Topple; Stand Strong or Shield Screen. | ||
| 33 | +**Evidence and recurrence:** Moderate role/Art recurrence across DE Reddit and independent 2015 GameFAQs; Nintendo Life also labels L a Shield Trooper tank. Lists overlap on Wild Down, Astral Protection, Mindstorm, Shield Wall, Trash Talk; precise ordered TP-capped set is editorial. | ||
| 34 | +**Final rationale:** Wild Down supplies party Topple; Long Topple extends it. Shield Wall's Barrier, Astral Protection and Mindstorm protect/heal allies; Shooting Star adds Shock without spending TP. AI fit is steady defense/control, not burst DPS. | ||
| 35 | + | ||
| 36 | +**Canonical ordered Arts:** `Wild Down`, `Astral Protection`, `Mindstorm`, `Shield Wall`, `Trash Talk`, `Stellar Ray`, `Shooting Star`, `Lightning Cloak`. | ||
| 37 | +**Canonical ordered Skills:** `Steel Flesh`, `Long Topple`, `Shield Screen`. | ||
| 38 | +**Ordered Art substitutes:** `Wild Smash` (rank 4), `Reality Rift` (rank 8), `Bombardier` (rank 11), `Flame Cloak` (rank 12). | ||
| 39 | +**Ordered Skill substitutes:** `Mighty Muscle` (rank 9), `Stand Strong` (rank 15). | ||
| 40 | + | ||
| 41 | +| Candidate Art | Outcome | Personal rank | Required weapon | TP cost | Individual Art page | TP/weapon evidence | | ||
| 42 | +|---|---|---:|---|---:|---|---| | ||
| 43 | +| `Wild Down` | canonical | 1 | Shield | 1000 | [Art](https://www.xenoserieswiki.org/wiki/Wild_Down_(XCX)) | [family TP table](https://xenoblade.fandom.com/wiki/Shield) | | ||
| 44 | +| `Astral Protection` | canonical | 13 | Psycho Launchers | 1000 | [Art](https://www.xenoserieswiki.org/wiki/Astral_Protection) | [family TP table](https://xenoblade.fandom.com/wiki/Psycho_Launchers) | | ||
| 45 | +| `Mindstorm` | canonical | 5 | Shield | 0 | [Art](https://www.xenoserieswiki.org/wiki/Mindstorm) | [family TP table](https://xenoblade.fandom.com/wiki/Shield) | | ||
| 46 | +| `Shield Wall` | canonical | 9 | Shield | 0 | [Art](https://www.xenoserieswiki.org/wiki/Shield_Wall_(XCX)) | [family TP table](https://xenoblade.fandom.com/wiki/Shield) | | ||
| 47 | +| `Trash Talk` | canonical | 6 | Shield | 0 | [Art](https://www.xenoserieswiki.org/wiki/Trash_Talk) | [family TP table](https://xenoblade.fandom.com/wiki/Shield) | | ||
| 48 | +| `Stellar Ray` | canonical | 1 | Psycho Launchers | 0 | [Art](https://www.xenoserieswiki.org/wiki/Stellar_Ray) | [family TP table](https://xenoblade.fandom.com/wiki/Psycho_Launchers) | | ||
| 49 | +| `Shooting Star` | canonical | 7 | Psycho Launchers | 0 | [Art](https://www.xenoserieswiki.org/wiki/Shooting_Star) | [family TP table](https://xenoblade.fandom.com/wiki/Psycho_Launchers) | | ||
| 50 | +| `Flame Cloak` | ordered substitute | 12 | Shield | 0 | [Art](https://www.xenoserieswiki.org/wiki/Flame_Cloak) | [family TP table](https://xenoblade.fandom.com/wiki/Shield) | | ||
| 51 | +| `Lightning Cloak` | canonical | 2 | Psycho Launchers | 0 | [Art](https://www.xenoserieswiki.org/wiki/Lightning_Cloak) | [family TP table](https://xenoblade.fandom.com/wiki/Psycho_Launchers) | | ||
| 52 | +| `Wild Smash` | ordered substitute | 4 | Shield | 0 | [Art](https://www.xenoserieswiki.org/wiki/Wild_Smash) | [family TP table](https://xenoblade.fandom.com/wiki/Shield) | | ||
| 53 | +| `Reality Rift` | ordered substitute | 8 | Shield | 0 | [Art](https://www.xenoserieswiki.org/wiki/Reality_Rift) | [family TP table](https://xenoblade.fandom.com/wiki/Shield) | | ||
| 54 | +| `Bombardier` | ordered substitute | 11 | Shield | 0 | [Art](https://www.xenoserieswiki.org/wiki/Bombardier) | [family TP table](https://xenoblade.fandom.com/wiki/Shield) | | ||
| 55 | + | ||
| 56 | +| Candidate Skill | Outcome | Personal rank evidence | | ||
| 57 | +|---|---|---| | ||
| 58 | +| `Steel Flesh` | canonical | rank 7 — [personal data](https://www.xenoserieswiki.org/wiki/L/Gameplay) | | ||
| 59 | +| `Long Topple` | canonical | rank 13 — [personal data](https://www.xenoserieswiki.org/wiki/L/Gameplay) | | ||
| 60 | +| `Stand Strong` | ordered substitute | rank 15 — [personal data](https://www.xenoserieswiki.org/wiki/L/Gameplay) | | ||
| 61 | +| `Shield Screen` | canonical | rank 11 — [personal data](https://www.xenoserieswiki.org/wiki/L/Gameplay) | | ||
| 62 | +| `Mighty Muscle` | ordered substitute | rank 9 — [personal data](https://www.xenoserieswiki.org/wiki/L/Gameplay) | | ||
| 63 | + | ||
| 64 | +**TP/slot audit:** canonical TP Arts: `Wild Down` = 1000, `Astral Protection` = 1000 (2/2). Maximum if all TP substitutes entered: 2/2. Canonical 8/8 Arts; 3/3 Skills. All canonical/substitute Art family types match personal weapon pair. | ||
| 65 | + | ||
| 66 | +**Weapon manufacturers, actual models, attributes and stats:** Shield: Sakuraba physical Shield Series (Lv.60 320 damage, 165 TP gain) gives greater auto-attack TP than Grenada Paive (320/120). Psycho Launchers: Grenada Psylans beam (Lv.60 32 damage, 1.8 s, 5 ammo, 3 TP gain) pairs with Stellar Ray’s weapon-damage/Beam-Res-Down role. This beam model does not change Shooting Star’s fixed electric damage. | ||
| 67 | + | ||
| 68 | +**Armor manufacturer/type and trait rationale:** Orphean Technologies Light Wear (Yii/Yimsel/Yiys/Yiym): select Evasion/HP/Max-TP traits by actual piece for L's Astral Protection tank role. Light Wear itself grants no evasion. Representative Lv.55 torso Yimsel has Defense 40 and Gravity +20; C&C Heavy Bulwark has Defense 100, Electric +20, Gravity −15. Compare defense and resistance for the encounter; traits are not guaranteed set defaults. [Armor table](https://xenoblade.fandom.com/wiki/Armor). | ||
| 69 | + | ||
| 70 | +**Unlocks and documented alternatives:** Orphean unlocks after Rescue at the Ensconced Citadel; AM level 2 unlocks Light, level 3 Heavy. Early fallback: currently stocked Sakuraba Light armor and legal physical Shield/available launcher until preferred models are available. | ||
| 71 | + | ||
| 72 | +## H.B. | ||
| 73 | + | ||
| 74 | +**Weapons / Skill slots:** Shield + Assault Rifle; 4 slots. Full loadout at personal rank 15. **Role:** Tank / party TP battery / Topple control. | ||
| 75 | + | ||
| 76 | +**Candidate Arts from sources:** DE guide: Shield Wall, Wild Down, Wild Smash, Gunforce/Flamehand, Decoy Round, Last Stand, Trash Talk, Burst/Flash/Takedown. GameFAQs: Last Stand, Gunforce, Decoy Round, Trash Talk, Shield Wall, Atomic Hit, Power Dive, Furious Blast. | ||
| 77 | +**Candidate Skills from sources:** Steel Flesh, Long Topple, Topple Topper, Combat Presence/Trauma Tension; GameFAQs also Shield Screen/Mighty Muscle. | ||
| 78 | +**Evidence and recurrence:** Moderate: DE Reddit and independent 2015 GameFAQs converge on tank/TP support and repeated Shield Wall/Decoy Round/Last Stand/Trash Talk. Nintendo Life independently calls H.B. an HP-generator/tank. Candidate lists exceed TP ceiling; omitting Gunforce/Flamehand/Burst Grenade is editorial budget cut. | ||
| 79 | +**Final rationale:** Wild Down and Long Topple/Topple Topper form reliable control; taunts and Shield Wall protect the party. Last Stand converts H.B.’s TP into ally TP. Canonical TP spenders: Wild Down and Last Stand only. | ||
| 80 | + | ||
| 81 | +**Canonical ordered Arts:** `Wild Down`, `Shield Wall`, `Decoy Round`, `Last Stand`, `Wild Smash`, `Trash Talk`, `Takedown Shot`, `Power Dive`. | ||
| 82 | +**Canonical ordered Skills:** `Steel Flesh`, `Long Topple`, `Topple Topper`, `Combat Presence`. | ||
| 83 | +**Ordered Art substitutes:** `Atomic Hit` (rank 1), `Furious Blast` (rank 6), `Flash Grenade` (rank 8), `Bombardier` (rank 13). | ||
| 84 | +**Ordered Skill substitutes:** `Mighty Muscle` (rank 9), `Shield Screen` (rank 14), `Trauma Tension` (rank 16), `Double Spike` (rank 17). | ||
| 85 | + | ||
| 86 | +| Candidate Art | Outcome | Personal rank | Required weapon | TP cost | Individual Art page | TP/weapon evidence | | ||
| 87 | +|---|---|---:|---|---:|---|---| | ||
| 88 | +| `Wild Down` | canonical | 7 | Shield | 1000 | [Art](https://www.xenoserieswiki.org/wiki/Wild_Down_(XCX)) | [family TP table](https://xenoblade.fandom.com/wiki/Shield) | | ||
| 89 | +| `Shield Wall` | canonical | 9 | Shield | 0 | [Art](https://www.xenoserieswiki.org/wiki/Shield_Wall_(XCX)) | [family TP table](https://xenoblade.fandom.com/wiki/Shield) | | ||
| 90 | +| `Wild Smash` | canonical | 5 | Shield | 0 | [Art](https://www.xenoserieswiki.org/wiki/Wild_Smash) | [family TP table](https://xenoblade.fandom.com/wiki/Shield) | | ||
| 91 | +| `Gunforce` | source candidate, not selected | 14 | Assault Rifle | 1000 | [Art](https://www.xenoserieswiki.org/wiki/Gunforce) | [family TP table](https://xenoblade.fandom.com/wiki/Assault_Rifle) | | ||
| 92 | +| `Flamehand` | source candidate, not selected | 10 | Shield | 1000 | [Art](https://www.xenoserieswiki.org/wiki/Flamehand) | [family TP table](https://xenoblade.fandom.com/wiki/Shield) | | ||
| 93 | +| `Decoy Round` | canonical | 1 | Assault Rifle | 0 | [Art](https://www.xenoserieswiki.org/wiki/Decoy_Round) | [family TP table](https://xenoblade.fandom.com/wiki/Assault_Rifle) | | ||
| 94 | +| `Last Stand` | canonical | 15 | Assault Rifle | 1000 | [Art](https://www.xenoserieswiki.org/wiki/Last_Stand_(XCX)) | [family TP table](https://xenoblade.fandom.com/wiki/Assault_Rifle) | | ||
| 95 | +| `Trash Talk` | canonical | 12 | Shield | 0 | [Art](https://www.xenoserieswiki.org/wiki/Trash_Talk) | [family TP table](https://xenoblade.fandom.com/wiki/Shield) | | ||
| 96 | +| `Burst Grenade` | source candidate, not selected | 2 | Assault Rifle | 1000 | [Art](https://www.xenoserieswiki.org/wiki/Burst_Grenade) | [family TP table](https://xenoblade.fandom.com/wiki/Assault_Rifle) | | ||
| 97 | +| `Flash Grenade` | ordered substitute | 8 | Assault Rifle | 0 | [Art](https://www.xenoserieswiki.org/wiki/Flash_Grenade) | [family TP table](https://xenoblade.fandom.com/wiki/Assault_Rifle) | | ||
| 98 | +| `Takedown Shot` | canonical | 11 | Assault Rifle | 0 | [Art](https://www.xenoserieswiki.org/wiki/Takedown_Shot) | [family TP table](https://xenoblade.fandom.com/wiki/Assault_Rifle) | | ||
| 99 | +| `Atomic Hit` | ordered substitute | 1 | Shield | 0 | [Art](https://www.xenoserieswiki.org/wiki/Atomic_Hit) | [family TP table](https://xenoblade.fandom.com/wiki/Shield) | | ||
| 100 | +| `Power Dive` | canonical | 3 | Assault Rifle | 0 | [Art](https://www.xenoserieswiki.org/wiki/Power_Dive) | [family TP table](https://xenoblade.fandom.com/wiki/Assault_Rifle) | | ||
| 101 | +| `Furious Blast` | ordered substitute | 6 | Assault Rifle | 0 | [Art](https://www.xenoserieswiki.org/wiki/Furious_Blast) | [family TP table](https://xenoblade.fandom.com/wiki/Assault_Rifle) | | ||
| 102 | +| `Bombardier` | ordered substitute | 13 | Shield | 0 | [Art](https://www.xenoserieswiki.org/wiki/Bombardier) | [family TP table](https://xenoblade.fandom.com/wiki/Shield) | | ||
| 103 | + | ||
| 104 | +| Candidate Skill | Outcome | Personal rank evidence | | ||
| 105 | +|---|---|---| | ||
| 106 | +| `Steel Flesh` | canonical | rank 7 — [personal data](https://www.xenoserieswiki.org/wiki/H.B./Gameplay) | | ||
| 107 | +| `Long Topple` | canonical | rank 15 — [personal data](https://www.xenoserieswiki.org/wiki/H.B./Gameplay) | | ||
| 108 | +| `Topple Topper` | canonical | rank 13 — [personal data](https://www.xenoserieswiki.org/wiki/H.B./Gameplay) | | ||
| 109 | +| `Combat Presence` | canonical | rank 11 — [personal data](https://www.xenoserieswiki.org/wiki/H.B./Gameplay) | | ||
| 110 | +| `Trauma Tension` | ordered substitute | rank 16 — [personal data](https://www.xenoserieswiki.org/wiki/H.B./Gameplay) | | ||
| 111 | +| `Mighty Muscle` | ordered substitute | rank 9 — [personal data](https://www.xenoserieswiki.org/wiki/H.B./Gameplay) | | ||
| 112 | +| `Shield Screen` | ordered substitute | rank 14 — [personal data](https://www.xenoserieswiki.org/wiki/H.B./Gameplay) | | ||
| 113 | +| `Double Spike` | ordered substitute | rank 17 — [personal data](https://www.xenoserieswiki.org/wiki/H.B./Gameplay) | | ||
| 114 | + | ||
| 115 | +**TP/slot audit:** canonical TP Arts: `Wild Down` = 1000, `Last Stand` = 1000 (2/2). Maximum if all TP substitutes entered: 2/2. Canonical 8/8 Arts; 4/4 Skills. All canonical/substitute Art family types match personal weapon pair. | ||
| 116 | + | ||
| 117 | +**Weapon manufacturers, actual models, attributes and stats:** Shield: Candid & Credible Haven II physical, Lv.60 320 damage/3.3 s/200 TP gain, supports TP throughput. Assault Rifle: Sakuraba physical (Lv.60 16 damage/2.7 s/20 ammo/1 TP), so weapon-damage Takedown Shot stays physical. Before C&C unlock use Sakuraba Shield (320/165 TP). | ||
| 118 | + | ||
| 119 | +**Armor manufacturer/type and trait rationale:** Candid & Credible Heavy Wear (Armet/Bulwark/Wrest/Stabilizers): high-defense maker and explicit raw-defense choice for taunting frontline. Representative Lv.55 torso Bulwark has Defense 100, Electric +20, Gravity −15; Light Breaker has Defense 60, Electric +20, Gravity −5. Heavy trades gravity resistance/upgrade flexibility for defense. [Armor table](https://xenoblade.fandom.com/wiki/Armor). | ||
| 120 | + | ||
| 121 | +**Unlocks and documented alternatives:** C&C unlocks after Chapter 5; Haven II series is AM level 2, Heavy Wear level 3. Earlier fallback: Sakuraba physical Shield/Assault Rifle and currently available armor weight. | ||
| 122 | + | ||
| 123 | +## Alexa | ||
| 124 | + | ||
| 125 | +**Weapons / Skill slots:** Javelin + Assault Rifle; 3 slots. Full loadout at personal rank 14. **Role:** Electric control / durable bruiser-support. | ||
| 126 | + | ||
| 127 | +**Candidate Arts from sources:** Assault Hammer; Raijin; Arcing Horn; Power Dive; Decoy Round; Maximum Voltage; Overwhelm; Flash Grenade/Furious Blast. GameFAQs adds Trident Buster and Hair Trigger. | ||
| 128 | +**Candidate Skills from sources:** Fortified Flesh; Steel Flesh or Electric Boost; High Tension or Synchrony. Synchrony/Stellar Entry are Skell-oriented and excluded from ground canonical Skills. | ||
| 129 | +**Evidence and recurrence:** Moderate: DE Reddit and independent 2015 GameFAQs converge on electric Javelin / Arcing Horn, Raijin, Maximum Voltage, Overwhelm, Assault Hammer and Furious Blast. Final instead uses Trident Buster for direct Electric/Shock pairing, keeps only two TP Arts, and treats Maximum Voltage as situational. | ||
| 130 | +**Final rationale:** Arcing Horn lowers Electric Resistance; Trident Buster inflicts Shock, supported by Electric Boost. Raijin adds healing/reflect, Assault Hammer adds non-TP Topple. Maximum Voltage is legal but its post-Skell-destruction bonus is situational and another TP Art would break the two-Art package. | ||
| 131 | + | ||
| 132 | +**Canonical ordered Arts:** `Arcing Horn`, `Raijin`, `Trident Buster`, `Assault Hammer`, `Power Dive`, `Decoy Round`, `Furious Blast`, `Overwhelm`. | ||
| 133 | +**Canonical ordered Skills:** `Fortified Flesh`, `Electric Boost`, `High Tension`. | ||
| 134 | +**Ordered Art substitutes:** `Spiral Horn` (rank 2), `Hair Trigger` (rank 10), `Flash Grenade` (rank 13). | ||
| 135 | +**Ordered Skill substitutes:** `Steel Flesh` (rank 7), `Quick Reload` (rank 13), `TP Overdrive` (rank 15). | ||
| 136 | + | ||
| 137 | +| Candidate Art | Outcome | Personal rank | Required weapon | TP cost | Individual Art page | TP/weapon evidence | | ||
| 138 | +|---|---|---:|---|---:|---|---| | ||
| 139 | +| `Assault Hammer` | canonical | 8 | Assault Rifle | 0 | [Art](https://www.xenoserieswiki.org/wiki/Assault_Hammer) | [family TP table](https://xenoblade.fandom.com/wiki/Assault_Rifle) | | ||
| 140 | +| `Raijin` | canonical | 12 | Javelin | 1000 | [Art](https://www.xenoserieswiki.org/wiki/Raijin_(XCX)) | [family TP table](https://xenoblade.fandom.com/wiki/Javelin) | | ||
| 141 | +| `Arcing Horn` | canonical | 1 | Javelin | 0 | [Art](https://www.xenoserieswiki.org/wiki/Arcing_Horn) | [family TP table](https://xenoblade.fandom.com/wiki/Javelin) | | ||
| 142 | +| `Power Dive` | canonical | 3 | Assault Rifle | 0 | [Art](https://www.xenoserieswiki.org/wiki/Power_Dive) | [family TP table](https://xenoblade.fandom.com/wiki/Assault_Rifle) | | ||
| 143 | +| `Decoy Round` | canonical | 7 | Assault Rifle | 0 | [Art](https://www.xenoserieswiki.org/wiki/Decoy_Round) | [family TP table](https://xenoblade.fandom.com/wiki/Assault_Rifle) | | ||
| 144 | +| `Maximum Voltage` | source candidate, not selected | 11 | Javelin | 1000 | [Art](https://www.xenoserieswiki.org/wiki/Maximum_Voltage_(XCX)) | [family TP table](https://xenoblade.fandom.com/wiki/Javelin) | | ||
| 145 | +| `Overwhelm` | canonical | 5 | Javelin | 0 | [Art](https://www.xenoserieswiki.org/wiki/Overwhelm) | [family TP table](https://xenoblade.fandom.com/wiki/Javelin) | | ||
| 146 | +| `Flash Grenade` | ordered substitute | 13 | Assault Rifle | 0 | [Art](https://www.xenoserieswiki.org/wiki/Flash_Grenade) | [family TP table](https://xenoblade.fandom.com/wiki/Assault_Rifle) | | ||
| 147 | +| `Furious Blast` | canonical | 1 | Assault Rifle | 0 | [Art](https://www.xenoserieswiki.org/wiki/Furious_Blast) | [family TP table](https://xenoblade.fandom.com/wiki/Assault_Rifle) | | ||
| 148 | +| `Trident Buster` | canonical | 14 | Javelin | 1000 | [Art](https://www.xenoserieswiki.org/wiki/Trident_Buster_(XCX)) | [family TP table](https://xenoblade.fandom.com/wiki/Javelin) | | ||
| 149 | +| `Hair Trigger` | ordered substitute | 10 | Javelin | 0 | [Art](https://www.xenoserieswiki.org/wiki/Hair_Trigger_(XCX)) | [family TP table](https://xenoblade.fandom.com/wiki/Javelin) | | ||
| 150 | +| `Spiral Horn` | ordered substitute | 2 | Javelin | 0 | [Art](https://www.xenoserieswiki.org/wiki/Spiral_Horn) | [family TP table](https://xenoblade.fandom.com/wiki/Javelin) | | ||
| 151 | + | ||
| 152 | +| Candidate Skill | Outcome | Personal rank evidence | | ||
| 153 | +|---|---|---| | ||
| 154 | +| `Fortified Flesh` | canonical | rank 14 — [personal data](https://www.xenoserieswiki.org/wiki/Alexa/Gameplay) | | ||
| 155 | +| `Steel Flesh` | ordered substitute | rank 7 — [personal data](https://www.xenoserieswiki.org/wiki/Alexa/Gameplay) | | ||
| 156 | +| `Electric Boost` | canonical | rank 11 — [personal data](https://www.xenoserieswiki.org/wiki/Alexa/Gameplay) | | ||
| 157 | +| `High Tension` | canonical | rank 9 — [personal data](https://www.xenoserieswiki.org/wiki/Alexa/Gameplay) | | ||
| 158 | +| `Synchrony` | candidate only | rank 17 — [personal data](https://www.xenoserieswiki.org/wiki/Alexa/Gameplay) | | ||
| 159 | +| `Stellar Entry` | candidate only | rank 16 — [personal data](https://www.xenoserieswiki.org/wiki/Alexa/Gameplay) | | ||
| 160 | +| `Quick Reload` | ordered substitute | rank 13 — [personal data](https://www.xenoserieswiki.org/wiki/Alexa/Gameplay) | | ||
| 161 | +| `TP Overdrive` | ordered substitute | rank 15 — [personal data](https://www.xenoserieswiki.org/wiki/Alexa/Gameplay) | | ||
| 162 | + | ||
| 163 | +**TP/slot audit:** canonical TP Arts: `Raijin` = 1000, `Trident Buster` = 1000 (2/2). Maximum if all TP substitutes entered: 2/2. Canonical 8/8 Arts; 3/3 Skills. All canonical/substitute Art family types match personal weapon pair. | ||
| 164 | + | ||
| 165 | +**Weapon manufacturers, actual models, attributes and stats:** Candid & Credible Bolide Electric Javelin (Lv.60 312 damage/2.5 s/155 TP) and Assailer Electric Assault Rifle (Lv.60 16 damage/2.7 s/20 ammo/1 TP). These attributes support weapon-damage Arts; Arcing Horn, Trident Buster and Maximum Voltage have fixed Art elements. | ||
| 166 | + | ||
| 167 | +**Armor manufacturer/type and trait rationale:** Candid & Credible Light Wear (Screen/Breaker/Ward/Trudgers): Max TP and Electric Res traits exist on relevant slots; representative Lv.55 torso Breaker has Defense 60, Electric +20, Gravity −5. Heavy Bulwark has Defense 100, Electric +20, Gravity −15; choose only if raw defense beats those tradeoffs. Inspect actual item traits. [Armor table](https://xenoblade.fandom.com/wiki/Armor). | ||
| 168 | + | ||
| 169 | +**Unlocks and documented alternatives:** C&C unlocks after Chapter 5; Light Wear requires AM level 2, Heavy level 3. Before then use Sakuraba physical weapons/armor; fixed-electric Arts stay electric, weapon-damage Arts inherit physical. Skell mode must not replace ground build. | ||
| 170 | + | ||
| 171 | +**Skell-only Skills considered and rejected from ground array:** `Synchrony`, `Stellar Entry`. Skill mode must not replace canonical ground Arts/Skills. | ||
| 172 | + | ||
| 173 | +## Bozé | ||
| 174 | + | ||
| 175 | +**Weapons / Skill slots:** Javelin + Sniper Rifle; 3 slots. Full loadout at personal rank 16. **Role:** Long-range Electric / Shock setup. | ||
| 176 | + | ||
| 177 | +**Candidate Arts from sources:** Arcing Horn; Sidewinder; Eagle Eye; Hair Trigger/Hawkeye; Raijin; Overwhelm; Shrapnel/Trident Buster; Slayonet. | ||
| 178 | +**Candidate Skills from sources:** Conductive Strike; Knock ’n’ Shock; Electric Boost. | ||
| 179 | +**Evidence and recurrence:** Moderate on Shock/electric role and core Arts/Skills across DE Reddit and independent 2015 GameFAQs. Final order is editorial for AI: one TP Art, ranged buffs, and no Slayonet melee-combo condition in core. Shock immunities remain a matchup limit. | ||
| 180 | +**Final rationale:** Arcing Horn lowers Electric Resistance, Trident Buster inflicts Shock; Electric Boost, Conductive Strike and Knock ’n’ Shock support this package. Eagle Eye boosts ranged accuracy/attack. Shock-dependent value falls against resistance/immunity; no evidence supports universal top-tier claims. | ||
| 181 | + | ||
| 182 | +**Canonical ordered Arts:** `Arcing Horn`, `Eagle Eye`, `Sidewinder`, `Shrapnel`, `Trident Buster`, `Hair Trigger`, `Hawkeye`, `Overwhelm`. | ||
| 183 | +**Canonical ordered Skills:** `Electric Boost`, `Conductive Strike`, `Knock 'n' Shock`. | ||
| 184 | +**Ordered Art substitutes:** `Spiral Horn` (rank 1), `Raijin` (rank 4), `Vortex` (rank 5), `First Down` (rank 6), `Intercept` (rank 14). | ||
| 185 | +**Ordered Skill substitutes:** `Master Edge` (rank 7), `Killshot` (rank 9), `Electric Guard` (rank 11), `Quick Reload` (rank 15), `TP Overdrive` (rank 17). | ||
| 186 | + | ||
| 187 | +| Candidate Art | Outcome | Personal rank | Required weapon | TP cost | Individual Art page | TP/weapon evidence | | ||
| 188 | +|---|---|---:|---|---:|---|---| | ||
| 189 | +| `Arcing Horn` | canonical | 2 | Javelin | 0 | [Art](https://www.xenoserieswiki.org/wiki/Arcing_Horn) | [family TP table](https://xenoblade.fandom.com/wiki/Javelin) | | ||
| 190 | +| `Sidewinder` | canonical | 9 | Sniper Rifle | 0 | [Art](https://www.xenoserieswiki.org/wiki/Sidewinder_(XCX)) | [family TP table](https://xenoblade.fandom.com/wiki/Sniper_Rifle) | | ||
| 191 | +| `Slayonet` | source candidate, not selected | 11 | Sniper Rifle | 0 | [Art](https://www.xenoserieswiki.org/wiki/Slayonet) | [family TP table](https://xenoblade.fandom.com/wiki/Sniper_Rifle) | | ||
| 192 | +| `Eagle Eye` | canonical | 3 | Sniper Rifle | 0 | [Art](https://www.xenoserieswiki.org/wiki/Eagle_Eye) | [family TP table](https://xenoblade.fandom.com/wiki/Sniper_Rifle) | | ||
| 193 | +| `Hair Trigger` | canonical | 8 | Javelin | 0 | [Art](https://www.xenoserieswiki.org/wiki/Hair_Trigger_(XCX)) | [family TP table](https://xenoblade.fandom.com/wiki/Javelin) | | ||
| 194 | +| `Hawkeye` | canonical | 12 | Sniper Rifle | 0 | [Art](https://www.xenoserieswiki.org/wiki/Hawkeye) | [family TP table](https://xenoblade.fandom.com/wiki/Sniper_Rifle) | | ||
| 195 | +| `Raijin` | ordered substitute | 4 | Javelin | 1000 | [Art](https://www.xenoserieswiki.org/wiki/Raijin_(XCX)) | [family TP table](https://xenoblade.fandom.com/wiki/Javelin) | | ||
| 196 | +| `Overwhelm` | canonical | 7 | Javelin | 0 | [Art](https://www.xenoserieswiki.org/wiki/Overwhelm) | [family TP table](https://xenoblade.fandom.com/wiki/Javelin) | | ||
| 197 | +| `Shrapnel` | canonical | 1 | Sniper Rifle | 0 | [Art](https://www.xenoserieswiki.org/wiki/Shrapnel_(XCX)) | [family TP table](https://xenoblade.fandom.com/wiki/Sniper_Rifle) | | ||
| 198 | +| `Trident Buster` | canonical | 15 | Javelin | 1000 | [Art](https://www.xenoserieswiki.org/wiki/Trident_Buster_(XCX)) | [family TP table](https://xenoblade.fandom.com/wiki/Javelin) | | ||
| 199 | +| `Vortex` | ordered substitute | 5 | Javelin | 0 | [Art](https://www.xenoserieswiki.org/wiki/Vortex_(XCX)) | [family TP table](https://xenoblade.fandom.com/wiki/Javelin) | | ||
| 200 | +| `First Down` | ordered substitute | 6 | Sniper Rifle | 0 | [Art](https://www.xenoserieswiki.org/wiki/First_Down) | [family TP table](https://xenoblade.fandom.com/wiki/Sniper_Rifle) | | ||
| 201 | +| `Intercept` | ordered substitute | 14 | Sniper Rifle | 0 | [Art](https://www.xenoserieswiki.org/wiki/Intercept) | [family TP table](https://xenoblade.fandom.com/wiki/Sniper_Rifle) | | ||
| 202 | +| `Spiral Horn` | ordered substitute | 1 | Javelin | 0 | [Art](https://www.xenoserieswiki.org/wiki/Spiral_Horn) | [family TP table](https://xenoblade.fandom.com/wiki/Javelin) | | ||
| 203 | + | ||
| 204 | +| Candidate Skill | Outcome | Personal rank evidence | | ||
| 205 | +|---|---|---| | ||
| 206 | +| `Conductive Strike` | canonical | rank 16 — [personal data](https://www.xenoserieswiki.org/wiki/Boz%C3%A9/Gameplay) | | ||
| 207 | +| `Knock 'n' Shock` | canonical | rank 14 — [personal data](https://www.xenoserieswiki.org/wiki/Boz%C3%A9/Gameplay) | | ||
| 208 | +| `Electric Boost` | canonical | rank 13 — [personal data](https://www.xenoserieswiki.org/wiki/Boz%C3%A9/Gameplay) | | ||
| 209 | +| `Electric Guard` | ordered substitute | rank 11 — [personal data](https://www.xenoserieswiki.org/wiki/Boz%C3%A9/Gameplay) | | ||
| 210 | +| `Quick Reload` | ordered substitute | rank 15 — [personal data](https://www.xenoserieswiki.org/wiki/Boz%C3%A9/Gameplay) | | ||
| 211 | +| `TP Overdrive` | ordered substitute | rank 17 — [personal data](https://www.xenoserieswiki.org/wiki/Boz%C3%A9/Gameplay) | | ||
| 212 | +| `Master Edge` | ordered substitute | rank 7 — [personal data](https://www.xenoserieswiki.org/wiki/Boz%C3%A9/Gameplay) | | ||
| 213 | +| `Killshot` | ordered substitute | rank 9 — [personal data](https://www.xenoserieswiki.org/wiki/Boz%C3%A9/Gameplay) | | ||
| 214 | + | ||
| 215 | +**TP/slot audit:** canonical TP Arts: `Trident Buster` = 1000 (1/2). Maximum if all TP substitutes entered: 2/2. Canonical 8/8 Arts; 3/3 Skills. All canonical/substitute Art family types match personal weapon pair. | ||
| 216 | + | ||
| 217 | +**Weapon manufacturers, actual models, attributes and stats:** Candid & Credible Bolide Electric Javelin (Lv.60 312 damage/2.5 s/155 TP) + Trigger Electric Sniper Rifle (Lv.60 112 damage/4 s/5 ammo/7 TP). Fixed-electric Arts retain their attribute. | ||
| 218 | + | ||
| 219 | +**Armor manufacturer/type and trait rationale:** Candid & Credible Light Wear: Electric Res/Max TP traits are available on relevant pieces; representative Lv.55 torso Breaker has Defense 60, Electric +20, Gravity −5. Heavy Bulwark raises that sample to Defense 100 but Gravity −15. Light weight grants no intrinsic mobility; pick verified piece traits/resistances according to the encounter. [Armor table](https://xenoblade.fandom.com/wiki/Armor). | ||
| 220 | + | ||
| 221 | +**Unlocks and documented alternatives:** C&C unlocks after Chapter 5; Light Wear AM level 2, Heavy level 3. Earlier fallback: Sakuraba physical Javelin/Sniper Rifle; fixed-electric Arts remain electric. Keep fixed build even against Shock-resistant targets. | ||
| 222 | + | ||
| 223 | +## Celica | ||
| 224 | + | ||
| 225 | +**Weapons / Skill slots:** Knife + Dual Guns; 3 slots. Full loadout at personal rank 16. **Role:** Ether debuff / Potential Dual Guns DPS with defense. | ||
| 226 | + | ||
| 227 | +**Candidate Arts from sources:** Zero Zero; Black Butterfly; Ghostwalker; Full Specs; Energy Source or Absorber Skin; Primer; Executioner; Screamer. Black Bane is editorially added from her personal art pool. | ||
| 228 | +**Candidate Skills from sources:** Inner Search; Steady Hand; Mindscape or Red Zone. | ||
| 229 | +**Evidence and recurrence:** Sparse: one detailed DE Reddit build source. Nintendo Life excerpts still say Celica “Coming soon”; pre-DE GameFAQs discussions predate Definitive Edition, not Celica. Celica was playable in original XCX, so earlier character-specific discussions remain relevant when they contain usable evidence, but no second matching full build emerged. Reddit frames Celica as a player-control build, not tested AI consensus. Ether Dual Guns claim for Black Butterfly is false: Knife-only, fixed Ether. | ||
| 230 | +**Final rationale:** Black Butterfly and Black Bane are Knife Arts with fixed Ether damage; Black Butterfly applies Ether Res Down, supporting Black Bane’s debuff scaling. Zero Zero/Executioner use weapon damage on Dual Guns; Ghostwalker adds survival. Full Specs and Executioner are the only TP Arts. Absorber Skin supplies non-TP Barrier. Sleep is fragile in party AI [editorial]. | ||
| 231 | + | ||
| 232 | +**Canonical ordered Arts:** `Black Butterfly`, `Black Bane`, `Full Specs`, `Zero Zero`, `Ghostwalker`, `Primer`, `Executioner`, `Absorber Skin`. | ||
| 233 | +**Canonical ordered Skills:** `Steady Hand`, `Inner Search`, `Mindscape`. | ||
| 234 | +**Ordered Art substitutes:** `Sliding Slinger` (rank 1), `Screamer` (rank 4), `Violent Streak` (rank 6). Violent Streak deals weapon damage and gains TP on criticals; it fills progression bars while late canonicals are locked, then drops out when eight canonicals become available. | ||
| 235 | +**Ordered Skill substitutes:** `Aura Burst` (rank 11), `Fleet Feet` (rank 13), `Gentle Approach` (rank 15), `Feather Touch` (rank 17), `Red Zone` (rank 18). | ||
| 236 | + | ||
| 237 | +| Candidate Art | Outcome | Personal rank | Required weapon | TP cost | Individual Art page | TP/weapon evidence | | ||
| 238 | +|---|---|---:|---|---:|---|---| | ||
| 239 | +| `Zero Zero` | canonical | 10 | Dual Guns | 0 | [Art](https://www.xenoserieswiki.org/wiki/Zero_Zero) | [family TP table](https://xenoblade.fandom.com/wiki/Dual_Guns) | | ||
| 240 | +| `Black Butterfly` | canonical | 15 | Knife | 0 | [Art](https://www.xenoserieswiki.org/wiki/Black_Butterfly) | [family TP table](https://xenoblade.fandom.com/wiki/Knife) | | ||
| 241 | +| `Ghostwalker` | canonical | 11 | Dual Guns | 0 | [Art](https://www.xenoserieswiki.org/wiki/Ghostwalker) | [family TP table](https://xenoblade.fandom.com/wiki/Dual_Guns) | | ||
| 242 | +| `Full Specs` | canonical | 3 | Knife | 1000 | [Art](https://www.xenoserieswiki.org/wiki/Full_Specs) | [family TP table](https://xenoblade.fandom.com/wiki/Knife) | | ||
| 243 | +| `Energy Source` | source candidate, not selected | 9 | Knife | 1000 | [Art](https://www.xenoserieswiki.org/wiki/Energy_Source) | [family TP table](https://xenoblade.fandom.com/wiki/Knife) | | ||
| 244 | +| `Absorber Skin` | canonical | 1 | Knife | 0 | [Art](https://www.xenoserieswiki.org/wiki/Absorber_Skin) | [family TP table](https://xenoblade.fandom.com/wiki/Knife) | | ||
| 245 | +| `Primer` | canonical | 5 | Dual Guns | 0 | [Art](https://www.xenoserieswiki.org/wiki/Primer) | [family TP table](https://xenoblade.fandom.com/wiki/Dual_Guns) | | ||
| 246 | +| `Executioner` | canonical | 13 | Dual Guns | 1000 | [Art](https://www.xenoserieswiki.org/wiki/Executioner_(XCX)) | [family TP table](https://xenoblade.fandom.com/wiki/Dual_Guns) | | ||
| 247 | +| `Screamer` | ordered substitute | 4 | Knife | 0 | [Art](https://www.xenoserieswiki.org/wiki/Screamer_(XCX)) | [family TP table](https://xenoblade.fandom.com/wiki/Knife) | | ||
| 248 | +| `Black Bane` | canonical | 2 | Knife | 0 | [Art](https://www.xenoserieswiki.org/wiki/Black_Bane) | [family TP table](https://xenoblade.fandom.com/wiki/Knife) | | ||
| 249 | +| `Sliding Slinger` | ordered substitute | 1 | Dual Guns | 0 | [Art](https://www.xenoserieswiki.org/wiki/Sliding_Slinger_(XCX)) | [family TP table](https://xenoblade.fandom.com/wiki/Dual_Guns) | | ||
| 250 | +| `Violent Streak` | ordered substitute | 6 | Dual Guns | 0 | [Art](https://www.xenoserieswiki.org/wiki/Violent_Streak_(XCX)) | [family TP table](https://xenoblade.fandom.com/wiki/Dual_Guns) | | ||
| 251 | + | ||
| 252 | +| Candidate Skill | Outcome | Personal rank evidence | | ||
| 253 | +|---|---|---| | ||
| 254 | +| `Inner Search` | canonical | rank 9 — [personal data](https://www.xenoserieswiki.org/wiki/Celica/Gameplay) | | ||
| 255 | +| `Steady Hand` | canonical | rank 7 — [personal data](https://www.xenoserieswiki.org/wiki/Celica/Gameplay) | | ||
| 256 | +| `Mindscape` | canonical | rank 16 — [personal data](https://www.xenoserieswiki.org/wiki/Celica/Gameplay) | | ||
| 257 | +| `Red Zone` | ordered substitute | rank 18 — [personal data](https://www.xenoserieswiki.org/wiki/Celica/Gameplay) | | ||
| 258 | +| `Aura Burst` | ordered substitute | rank 11 — [personal data](https://www.xenoserieswiki.org/wiki/Celica/Gameplay) | | ||
| 259 | +| `Fleet Feet` | ordered substitute | rank 13 — [personal data](https://www.xenoserieswiki.org/wiki/Celica/Gameplay) | | ||
| 260 | +| `Gentle Approach` | ordered substitute | rank 15 — [personal data](https://www.xenoserieswiki.org/wiki/Celica/Gameplay) | | ||
| 261 | +| `Feather Touch` | ordered substitute | rank 17 — [personal data](https://www.xenoserieswiki.org/wiki/Celica/Gameplay) | | ||
| 262 | + | ||
| 263 | +**TP/slot audit:** canonical TP Arts: `Full Specs` = 1000, `Executioner` = 1000 (2/2). Maximum if all TP substitutes entered: 2/2. Canonical 8/8 Arts; 3/3 Skills. All canonical/substitute Art family types match personal weapon pair. | ||
| 264 | + | ||
| 265 | +**Weapon manufacturers, actual models, attributes and stats:** Meredith & Co. Ether Pistolia Dual Guns (Lv.60 24 damage/2.0 s/6 ammo/2 TP) for weapon-damage Zero Zero/Executioner; Ether Pugio Knife (56 damage/1.0 s/60 TP). Critical correction: Black Butterfly is Knife-only, fixed Ether; Ether Dual Guns neither equip it nor boost its listed damage. | ||
| 266 | + | ||
| 267 | +**Armor manufacturer/type and trait rationale:** Orphean Light Wear: Yii head may have Potential Up/Potential Boost; other slots can supply Max HP/TP, Evasion, Overdrive traits. Representative Lv.55 torso Yimsel has Defense 40 and Gravity +20; C&C Light Breaker has Defense 60, Electric +20 and Gravity −5. Target actual traits by piece; shop stock contains only a subset. [Armor table](https://xenoblade.fandom.com/wiki/Armor). | ||
| 268 | + | ||
| 269 | +**Unlocks and documented alternatives:** Meredith unlocks after Chapter 4. Orphean armor requires Rescue at the Ensconced Citadel and AM level 2 Light Wear; C&C unlocks after Chapter 5 and also needs level 2 Light Wear. Earlier fallback: Sakuraba-compatible Dual Guns/Knife and current armor; fixed Ether Arts stay Ether. | ||
| 270 | + | ||
| 271 | +## Frye | ||
| 272 | + | ||
| 273 | +**Weapons / Skill slots:** Longsword + Gatling Gun; 3 slots. Full loadout at personal rank 17. **Role:** Thermal ranged mob clearer / aura-assisted TP economy. | ||
| 274 | + | ||
| 275 | +**Candidate Arts from sources:** Missile Volley; Bullet Twister; Bullet Storm; Thermal Payload; Defensive Stance; Cool Off; Burning Slash; Tornado Blade. | ||
| 276 | +**Candidate Skills from sources:** Machine Gunner; Trauma Tension; Mighty Muscle. | ||
| 277 | +**Evidence and recurrence:** Sparse: one detailed DE Reddit build. Nintendo Life excerpt says Frye build “Coming soon”; 2015 GameFAQs discussions predate Definitive Edition, not Frye. Frye was playable in original XCX. Earlier character-specific advice remains eligible but did not yield a second matching full build. Guide’s thermal Gatling→Burning Slash claim is wrong: Burning Slash is Longsword-only, fixed Thermal. | ||
| 278 | +**Final rationale:** Missile Volley lowers Thermal Res; Thermal Payload adds toppled-target damage. Defensive Stance supplies an Aura so Bullet Twister/Tornado Blade can gain TP; Cool Off consumes an Aura to return TP. DE guide warns Frye is less reliable against bosses and AI/skill fit is imperfect. Two TP Arts only. | ||
| 279 | + | ||
| 280 | +**Canonical ordered Arts:** `Missile Volley`, `Bullet Twister`, `Thermal Payload`, `Defensive Stance`, `Bullet Storm`, `Cool Off`, `Burning Slash`, `Tornado Blade`. | ||
| 281 | +**Canonical ordered Skills:** `Machine Gunner`, `Trauma Tension`, `Mighty Muscle`. | ||
| 282 | +**Ordered Art substitutes:** `Rising Blade` (rank 1). | ||
| 283 | +**Ordered Skill substitutes:** `Unwavering Courage` (rank 7), `Iron Knuckle` (rank 11), `Rising Renewal` (rank 13), `Weapon Guard` (rank 14), `Blazing Auto` (rank 16). | ||
| 284 | + | ||
| 285 | +| Candidate Art | Outcome | Personal rank | Required weapon | TP cost | Individual Art page | TP/weapon evidence | | ||
| 286 | +|---|---|---:|---|---:|---|---| | ||
| 287 | +| `Missile Volley` | canonical | 1 | Gatling Gun | 0 | [Art](https://www.xenoserieswiki.org/wiki/Missile_Volley) | [family TP table](https://xenoblade.fandom.com/wiki/Gatling_Gun) | | ||
| 288 | +| `Bullet Twister` | canonical | 4 | Gatling Gun | 0 | [Art](https://www.xenoserieswiki.org/wiki/Bullet_Twister) | [family TP table](https://xenoblade.fandom.com/wiki/Gatling_Gun) | | ||
| 289 | +| `Bullet Storm` | canonical | 7 | Gatling Gun | 0 | [Art](https://www.xenoserieswiki.org/wiki/Bullet_Storm) | [family TP table](https://xenoblade.fandom.com/wiki/Gatling_Gun) | | ||
| 290 | +| `Thermal Payload` | canonical | 11 | Gatling Gun | 1000 | [Art](https://www.xenoserieswiki.org/wiki/Thermal_Payload_(XCX)) | [family TP table](https://xenoblade.fandom.com/wiki/Gatling_Gun) | | ||
| 291 | +| `Defensive Stance` | canonical | 12 | Longsword | 1000 | [Art](https://www.xenoserieswiki.org/wiki/Defensive_Stance) | [family TP table](https://xenoblade.fandom.com/wiki/Longsword) | | ||
| 292 | +| `Cool Off` | canonical | 8 | Gatling Gun | 0 | [Art](https://www.xenoserieswiki.org/wiki/Cool_Off_(XCX)) | [family TP table](https://xenoblade.fandom.com/wiki/Gatling_Gun) | | ||
| 293 | +| `Burning Slash` | canonical | 5 | Longsword | 0 | [Art](https://www.xenoserieswiki.org/wiki/Burning_Slash) | [family TP table](https://xenoblade.fandom.com/wiki/Longsword) | | ||
| 294 | +| `Tornado Blade` | canonical | 2 | Longsword | 0 | [Art](https://www.xenoserieswiki.org/wiki/Tornado_Blade) | [family TP table](https://xenoblade.fandom.com/wiki/Longsword) | | ||
| 295 | +| `Rising Blade` | ordered substitute | 1 | Longsword | 0 | [Art](https://www.xenoserieswiki.org/wiki/Rising_Blade) | [family TP table](https://xenoblade.fandom.com/wiki/Longsword) | | ||
| 296 | + | ||
| 297 | +| Candidate Skill | Outcome | Personal rank evidence | | ||
| 298 | +|---|---|---| | ||
| 299 | +| `Machine Gunner` | canonical | rank 17 — [personal data](https://www.xenoserieswiki.org/wiki/Frye/Gameplay) | | ||
| 300 | +| `Trauma Tension` | canonical | rank 15 — [personal data](https://www.xenoserieswiki.org/wiki/Frye/Gameplay) | | ||
| 301 | +| `Mighty Muscle` | canonical | rank 9 — [personal data](https://www.xenoserieswiki.org/wiki/Frye/Gameplay) | | ||
| 302 | +| `Iron Knuckle` | ordered substitute | rank 11 — [personal data](https://www.xenoserieswiki.org/wiki/Frye/Gameplay) | | ||
| 303 | +| `Unwavering Courage` | ordered substitute | rank 7 — [personal data](https://www.xenoserieswiki.org/wiki/Frye/Gameplay) | | ||
| 304 | +| `Rising Renewal` | ordered substitute | rank 13 — [personal data](https://www.xenoserieswiki.org/wiki/Frye/Gameplay) | | ||
| 305 | +| `Weapon Guard` | ordered substitute | rank 14 — [personal data](https://www.xenoserieswiki.org/wiki/Frye/Gameplay) | | ||
| 306 | +| `Blazing Auto` | ordered substitute | rank 16 — [personal data](https://www.xenoserieswiki.org/wiki/Frye/Gameplay) | | ||
| 307 | + | ||
| 308 | +**TP/slot audit:** canonical TP Arts: `Thermal Payload` = 1000, `Defensive Stance` = 1000 (2/2). Maximum if all TP substitutes entered: 2/2. Canonical 8/8 Arts; 3/3 Skills. All canonical/substitute Art family types match personal weapon pair. | ||
| 309 | + | ||
| 310 | +**Weapon manufacturers, actual models, attributes and stats:** Nopon Commerce Guild Ratatatta Thermal Gatling (Lv.60 20 damage/6.7 s/48 ammo/1 TP) for inherited-weapon Gatling Arts; Six Stars Glaive Thermal Longsword (Lv.60 204 damage/2.0 s/210 TP; Glaive II 216/180 TP) for weapon-damage Tornado Blade. Burning Slash is Longsword-only, fixed Thermal; Gatling attribute cannot affect it. | ||
| 311 | + | ||
| 312 | +**Armor manufacturer/type and trait rationale:** Orphean Light Wear for documented high evasion, matching Frye’s high personal Dodge coefficient and ranged-mob role. Representative Lv.55 torso Yimsel has Defense 40 and Gravity +20; C&C Light Breaker alternative has Defense 60, Electric +20, Gravity −5. Target HP/Evasion/Max-TP by slot; weight is not universal BIS. [Armor table](https://xenoblade.fandom.com/wiki/Armor). | ||
| 313 | + | ||
| 314 | +**Unlocks and documented alternatives:** Nopon unlocks after BFFs; Six Stars after A Challenger Approaches. Orphean armor requires Rescue at the Ensconced Citadel and AM level 2 for Light Wear; C&C Chapter 5/AM level 2 is fallback. Earlier weapon fallback: Sakuraba physical Gatling/Longsword; fixed Thermal Arts remain thermal. Lv.60 values are catalogue comparisons, not Frye’s guaranteed story gear. | ||
| 315 | + | ||
| 316 | +## Mechanical corrections and gaps | ||
| 317 | + | ||
| 318 | +- **Celica:** community guide claims Ether Dual Guns benefit Black Butterfly; false. Art is Knife-only with fixed Ether damage. Meredith Ether Dual Guns are useful for weapon-damage Arts only. | ||
| 319 | +- **Frye:** guide claims thermal Gatling synergizes with Burning Slash; false. Burning Slash is Longsword-only with fixed Thermal damage. Split manufacturer advice by actual weapon family. | ||
| 320 | +- TP generation is not TP consumption: TP cost values follow weapon-family tables; `Trash Talk`, `Bullet Twister`, `Cool Off`, `Tornado Blade` remain 0 when they generate/return TP conditionally. No third TP Art is used to fill slot. | ||
| 321 | +- **AI performance:** guide-specific claims are not exhaustive tests. Celica is framed as player-control-oriented; Frye weaker vs bosses; Bozé Shock depends on enemy resistance. Other behavior remains editorial/unverified. No runtime tests were run for this research assignment. | ||
| 322 | +- **Equipment:** listed stats are Lv.60 catalog values; actual purchase/drop level, trait rolls and account R&D tier depend on progression. Light/Medium/Heavy are not universally ordered best. | ||
| 323 | +- **Recurrence:** L/H.B./Alexa/Bozé have at least two independent build sources (DE Reddit + Wii U GameFAQs; L/H.B. also role/build excerpt); Celica/Frye one detailed DE source only. Note mirror deduplicated. | ||
| 324 | + | ||
| 325 | +## Integration handoff | ||
| 326 | + | ||
| 327 | +Machine-readable recommendations are stored in [`src/data/companionBuilds.ts`](../src/data/companionBuilds.ts). This research matrix preserves every candidate, canonical and substitute Art’s personal rank, required weapon, TP cost, individual source URL and weapon-family TP-table URL. The integrated data contains ordered Arts, Skills and substitutes, bilingual equipment advice and sources. Cross remains unchanged. | ||
modified
src/components/BuildCard.tsx +68 -10 | @@ -31,9 +31,11 @@ export default function BuildCard({ | ||
| 31 | 31 | postgameFrames, |
| 32 | 32 | }: BuildCardProps) { |
| 33 | 33 | const strategy = buildStrategies[member.strategy]; |
| 34 | - const dominantAttribute = localizedGameUiText(member.dominantAttribute, lang) | |
| 35 | - .toLocaleUpperCase(lang === "fr" ? "fr-FR" : "en-US"); | |
| 36 | - const armsManufacturer = armsManufacturers[member.strategy]; | |
| 34 | + const curatedBuild = member.kind === "companion" ? member.curatedBuild : undefined; | |
| 35 | + const dominantAttribute = curatedBuild | |
| 36 | + ? "" | |
| 37 | + : localizedGameUiText(member.dominantAttribute, lang) | |
| 38 | + .toLocaleUpperCase(lang === "fr" ? "fr-FR" : "en-US"); | |
| 37 | 39 | const skell = recommendSkellFrame({ |
| 38 | 40 | strategy: member.strategy, |
| 39 | 41 | pilotLevel: member.effectiveLevel, |
| @@ -65,12 +67,20 @@ export default function BuildCard({ | ||
| 65 | 67 | <header className="build-card-head"> |
| 66 | 68 | <span className="member-number">{String(index + 1).padStart(2, "0")}</span> |
| 67 | 69 | <div><h3>{member.name}</h3><p>{member.className} · {t.levelShort} {member.effectiveLevel} · {t.personalRankShort} {member.rank}</p></div> |
| 68 | - <div className="role-tag"><small>{t.dominantAttribute} · {dominantAttribute} ({strategy.damage})</small><b>{localized(strategy.role, lang)}</b></div> | |
| 70 | + <div className="role-tag"><small>{curatedBuild ? t.researchedBuild : `${t.dominantAttribute} · ${dominantAttribute} (${strategy.damage})`}</small><b>{localized(curatedBuild ? curatedBuild.role : strategy.role, lang)}</b></div> | |
| 69 | 71 | </header> |
| 70 | 72 | <div className="build-columns"> |
| 71 | 73 | <section className="loadout-block arts-block"> |
| 72 | 74 | <h4><span>A</span>{t.artsLoadout} · {member.arts.length}/8</h4> |
| 73 | 75 | <p className="weapon-lock">{member.weapons.ranged} + {member.weapons.melee} · {localized(member.note, lang)}</p> |
| 76 | + {curatedBuild && ( | |
| 77 | + <details className="skell-detail curated-disclosure"> | |
| 78 | + <summary>{t.curatedRationale}</summary> | |
| 79 | + <div className="skell-detail-body"> | |
| 80 | + <p className="curated-rationale">{localized(curatedBuild.rationale, lang)}</p> | |
| 81 | + </div> | |
| 82 | + </details> | |
| 83 | + )} | |
| 74 | 84 | {member.arts.length > 0 ? <ol> |
| 75 | 85 | {member.arts.slice(0, 8).map((art, artIndex) => ( |
| 76 | 86 | <li className={art.specialUnlock ? "special-art" : undefined} key={`${art.name}-${artIndex}`}> |
| @@ -93,6 +103,16 @@ export default function BuildCard({ | ||
| 93 | 103 | </li> |
| 94 | 104 | ))} |
| 95 | 105 | </ol> : <p className="empty-loadout">{t.noLearnedArts}</p>} |
| 106 | + {curatedBuild && curatedBuild.artSubstitutes.length > 0 && ( | |
| 107 | + <details className="skell-detail curated-disclosure"> | |
| 108 | + <summary>{t.progressionSubstitutes}<small>{curatedBuild.artSubstitutes.length}</small></summary> | |
| 109 | + <div className="skell-detail-body"> | |
| 110 | + <ol className="substitute-list"> | |
| 111 | + {curatedBuild.artSubstitutes.map((name) => <li key={name}>{name}</li>)} | |
| 112 | + </ol> | |
| 113 | + </div> | |
| 114 | + </details> | |
| 115 | + )} | |
| 96 | 116 | </section> |
| 97 | 117 | |
| 98 | 118 | <section className="loadout-block skills-block"> |
| @@ -109,13 +129,51 @@ export default function BuildCard({ | ||
| 109 | 129 | ))} |
| 110 | 130 | </div> : <p className="empty-loadout">{t.noLearnedSkills}</p>} |
| 111 | 131 | |
| 112 | - <h5>{t.heuristicStatPriority}</h5> | |
| 113 | - <ol className="stat-priority-list"> | |
| 114 | - {strategy.statPriority.map((stat) => <li key={stat}>{localizedGameUiText(stat, lang)}</li>)} | |
| 115 | - </ol> | |
| 132 | + {curatedBuild ? ( | |
| 133 | + <> | |
| 134 | + <h5>{t.curatedEquipment}</h5> | |
| 135 | + <dl className="equip-facts"> | |
| 136 | + <div><dt>{t.equipmentWeapons}</dt><dd>{localized(curatedBuild.equipment.weapons, lang)}</dd></div> | |
| 137 | + <div><dt>{t.equipmentArmor}</dt><dd>{localized(curatedBuild.equipment.armor, lang)}</dd></div> | |
| 138 | + <div><dt>{t.equipmentAvailability}</dt><dd>{localized(curatedBuild.equipment.availability, lang)}</dd></div> | |
| 139 | + </dl> | |
| 140 | + {curatedBuild.skillSubstitutes.length > 0 && ( | |
| 141 | + <details className="skell-detail curated-disclosure"> | |
| 142 | + <summary>{t.progressionSubstitutes}<small>{curatedBuild.skillSubstitutes.length}</small></summary> | |
| 143 | + <div className="skell-detail-body"> | |
| 144 | + <ol className="substitute-list"> | |
| 145 | + {curatedBuild.skillSubstitutes.map((name) => <li key={name}>{name}</li>)} | |
| 146 | + </ol> | |
| 147 | + </div> | |
| 148 | + </details> | |
| 149 | + )} | |
| 150 | + {curatedBuild.sources.length > 0 && ( | |
| 151 | + <details className="skell-detail curated-disclosure"> | |
| 152 | + <summary>{t.curatedSources}<small>{curatedBuild.sources.length}</small></summary> | |
| 153 | + <div className="skell-detail-body"> | |
| 154 | + <ul className="source-list"> | |
| 155 | + {curatedBuild.sources.map((source) => ( | |
| 156 | + <li key={source.url}> | |
| 157 | + <a href={source.url} target="_blank" rel="noreferrer">{source.label}</a> | |
| 158 | + <small>{source.edition.toUpperCase()}</small> | |
| 159 | + </li> | |
| 160 | + ))} | |
| 161 | + </ul> | |
| 162 | + </div> | |
| 163 | + </details> | |
| 164 | + )} | |
| 165 | + </> | |
| 166 | + ) : ( | |
| 167 | + <> | |
| 168 | + <h5>{t.heuristicStatPriority}</h5> | |
| 169 | + <ol className="stat-priority-list"> | |
| 170 | + {strategy.statPriority.map((stat) => <li key={stat}>{localizedGameUiText(stat, lang)}</li>)} | |
| 171 | + </ol> | |
| 116 | 172 | |
| 117 | - <h5>{t.amRecommended}</h5> | |
| 118 | - <p className="am-note"><b>{armsManufacturer.name}</b><span>{localized(armsManufacturer.specialty, lang)}</span></p> | |
| 173 | + <h5>{t.amRecommended}</h5> | |
| 174 | + <p className="am-note"><b>{armsManufacturers[member.strategy].name}</b><span>{localized(armsManufacturers[member.strategy].specialty, lang)}</span></p> | |
| 175 | + </> | |
| 176 | + )} | |
| 119 | 177 | |
| 120 | 178 | <h5>{t.planReasons}</h5> |
| 121 | 179 | <ul className="plan-reasons"> |
| @@ -31,9 +31,11 @@ export default function BuildCard({ | |||
| 31 | postgameFrames, | 31 | postgameFrames, |
| 32 | }: BuildCardProps) { | 32 | }: BuildCardProps) { |
| 33 | const strategy = buildStrategies[member.strategy]; | 33 | const strategy = buildStrategies[member.strategy]; |
| 34 | - const dominantAttribute = localizedGameUiText(member.dominantAttribute, lang) | 34 | + const curatedBuild = member.kind === "companion" ? member.curatedBuild : undefined; |
| 35 | - .toLocaleUpperCase(lang === "fr" ? "fr-FR" : "en-US"); | 35 | + const dominantAttribute = curatedBuild |
| 36 | - const armsManufacturer = armsManufacturers[member.strategy]; | 36 | + ? "" |
| 37 | + : localizedGameUiText(member.dominantAttribute, lang) | ||
| 38 | + .toLocaleUpperCase(lang === "fr" ? "fr-FR" : "en-US"); | ||
| 37 | const skell = recommendSkellFrame({ | 39 | const skell = recommendSkellFrame({ |
| 38 | strategy: member.strategy, | 40 | strategy: member.strategy, |
| 39 | pilotLevel: member.effectiveLevel, | 41 | pilotLevel: member.effectiveLevel, |
| @@ -65,12 +67,20 @@ export default function BuildCard({ | |||
| 65 | <header className="build-card-head"> | 67 | <header className="build-card-head"> |
| 66 | <span className="member-number">{String(index + 1).padStart(2, "0")}</span> | 68 | <span className="member-number">{String(index + 1).padStart(2, "0")}</span> |
| 67 | <div><h3>{member.name}</h3><p>{member.className} · {t.levelShort} {member.effectiveLevel} · {t.personalRankShort} {member.rank}</p></div> | 69 | <div><h3>{member.name}</h3><p>{member.className} · {t.levelShort} {member.effectiveLevel} · {t.personalRankShort} {member.rank}</p></div> |
| 68 | - <div className="role-tag"><small>{t.dominantAttribute} · {dominantAttribute} ({strategy.damage})</small><b>{localized(strategy.role, lang)}</b></div> | 70 | + <div className="role-tag"><small>{curatedBuild ? t.researchedBuild : `${t.dominantAttribute} · ${dominantAttribute} (${strategy.damage})`}</small><b>{localized(curatedBuild ? curatedBuild.role : strategy.role, lang)}</b></div> |
| 69 | </header> | 71 | </header> |
| 70 | <div className="build-columns"> | 72 | <div className="build-columns"> |
| 71 | <section className="loadout-block arts-block"> | 73 | <section className="loadout-block arts-block"> |
| 72 | <h4><span>A</span>{t.artsLoadout} · {member.arts.length}/8</h4> | 74 | <h4><span>A</span>{t.artsLoadout} · {member.arts.length}/8</h4> |
| 73 | <p className="weapon-lock">{member.weapons.ranged} + {member.weapons.melee} · {localized(member.note, lang)}</p> | 75 | <p className="weapon-lock">{member.weapons.ranged} + {member.weapons.melee} · {localized(member.note, lang)}</p> |
| 76 | + {curatedBuild && ( | ||
| 77 | + <details className="skell-detail curated-disclosure"> | ||
| 78 | + <summary>{t.curatedRationale}</summary> | ||
| 79 | + <div className="skell-detail-body"> | ||
| 80 | + <p className="curated-rationale">{localized(curatedBuild.rationale, lang)}</p> | ||
| 81 | + </div> | ||
| 82 | + </details> | ||
| 83 | + )} | ||
| 74 | {member.arts.length > 0 ? <ol> | 84 | {member.arts.length > 0 ? <ol> |
| 75 | {member.arts.slice(0, 8).map((art, artIndex) => ( | 85 | {member.arts.slice(0, 8).map((art, artIndex) => ( |
| 76 | <li className={art.specialUnlock ? "special-art" : undefined} key={`${art.name}-${artIndex}`}> | 86 | <li className={art.specialUnlock ? "special-art" : undefined} key={`${art.name}-${artIndex}`}> |
| @@ -93,6 +103,16 @@ export default function BuildCard({ | |||
| 93 | </li> | 103 | </li> |
| 94 | ))} | 104 | ))} |
| 95 | </ol> : <p className="empty-loadout">{t.noLearnedArts}</p>} | 105 | </ol> : <p className="empty-loadout">{t.noLearnedArts}</p>} |
| 106 | + {curatedBuild && curatedBuild.artSubstitutes.length > 0 && ( | ||
| 107 | + <details className="skell-detail curated-disclosure"> | ||
| 108 | + <summary>{t.progressionSubstitutes}<small>{curatedBuild.artSubstitutes.length}</small></summary> | ||
| 109 | + <div className="skell-detail-body"> | ||
| 110 | + <ol className="substitute-list"> | ||
| 111 | + {curatedBuild.artSubstitutes.map((name) => <li key={name}>{name}</li>)} | ||
| 112 | + </ol> | ||
| 113 | + </div> | ||
| 114 | + </details> | ||
| 115 | + )} | ||
| 96 | </section> | 116 | </section> |
| 97 | 117 | ||
| 98 | <section className="loadout-block skills-block"> | 118 | <section className="loadout-block skills-block"> |
| @@ -109,13 +129,51 @@ export default function BuildCard({ | |||
| 109 | ))} | 129 | ))} |
| 110 | </div> : <p className="empty-loadout">{t.noLearnedSkills}</p>} | 130 | </div> : <p className="empty-loadout">{t.noLearnedSkills}</p>} |
| 111 | 131 | ||
| 112 | - <h5>{t.heuristicStatPriority}</h5> | 132 | + {curatedBuild ? ( |
| 113 | - <ol className="stat-priority-list"> | 133 | + <> |
| 114 | - {strategy.statPriority.map((stat) => <li key={stat}>{localizedGameUiText(stat, lang)}</li>)} | 134 | + <h5>{t.curatedEquipment}</h5> |
| 115 | - </ol> | 135 | + <dl className="equip-facts"> |
| 136 | + <div><dt>{t.equipmentWeapons}</dt><dd>{localized(curatedBuild.equipment.weapons, lang)}</dd></div> | ||
| 137 | + <div><dt>{t.equipmentArmor}</dt><dd>{localized(curatedBuild.equipment.armor, lang)}</dd></div> | ||
| 138 | + <div><dt>{t.equipmentAvailability}</dt><dd>{localized(curatedBuild.equipment.availability, lang)}</dd></div> | ||
| 139 | + </dl> | ||
| 140 | + {curatedBuild.skillSubstitutes.length > 0 && ( | ||
| 141 | + <details className="skell-detail curated-disclosure"> | ||
| 142 | + <summary>{t.progressionSubstitutes}<small>{curatedBuild.skillSubstitutes.length}</small></summary> | ||
| 143 | + <div className="skell-detail-body"> | ||
| 144 | + <ol className="substitute-list"> | ||
| 145 | + {curatedBuild.skillSubstitutes.map((name) => <li key={name}>{name}</li>)} | ||
| 146 | + </ol> | ||
| 147 | + </div> | ||
| 148 | + </details> | ||
| 149 | + )} | ||
| 150 | + {curatedBuild.sources.length > 0 && ( | ||
| 151 | + <details className="skell-detail curated-disclosure"> | ||
| 152 | + <summary>{t.curatedSources}<small>{curatedBuild.sources.length}</small></summary> | ||
| 153 | + <div className="skell-detail-body"> | ||
| 154 | + <ul className="source-list"> | ||
| 155 | + {curatedBuild.sources.map((source) => ( | ||
| 156 | + <li key={source.url}> | ||
| 157 | + <a href={source.url} target="_blank" rel="noreferrer">{source.label}</a> | ||
| 158 | + <small>{source.edition.toUpperCase()}</small> | ||
| 159 | + </li> | ||
| 160 | + ))} | ||
| 161 | + </ul> | ||
| 162 | + </div> | ||
| 163 | + </details> | ||
| 164 | + )} | ||
| 165 | + </> | ||
| 166 | + ) : ( | ||
| 167 | + <> | ||
| 168 | + <h5>{t.heuristicStatPriority}</h5> | ||
| 169 | + <ol className="stat-priority-list"> | ||
| 170 | + {strategy.statPriority.map((stat) => <li key={stat}>{localizedGameUiText(stat, lang)}</li>)} | ||
| 171 | + </ol> | ||
| 116 | 172 | ||
| 117 | - <h5>{t.amRecommended}</h5> | 173 | + <h5>{t.amRecommended}</h5> |
| 118 | - <p className="am-note"><b>{armsManufacturer.name}</b><span>{localized(armsManufacturer.specialty, lang)}</span></p> | 174 | + <p className="am-note"><b>{armsManufacturers[member.strategy].name}</b><span>{localized(armsManufacturers[member.strategy].specialty, lang)}</span></p> |
| 175 | + </> | ||
| 176 | + )} | ||
| 119 | 177 | ||
| 120 | <h5>{t.planReasons}</h5> | 178 | <h5>{t.planReasons}</h5> |
| 121 | <ul className="plan-reasons"> | 179 | <ul className="plan-reasons"> |
added
src/data/companionBuilds.ts +2225 -0 | new file mode 100644 | ||
| @@ -0,0 +1,2225 @@ | ||
| 1 | +import type { CuratedCompanionBuild } from "@/src/lib/types"; | |
| 2 | + | |
| 3 | +/** | |
| 4 | + * Curated fixed AI builds (Rickub #1): editorial selections with canonical-first ordered | |
| 5 | + * substitutes; evidence and per-Art provenance live in research/companion-builds-*.md. | |
| 6 | + * Cross (player avatar) is intentionally excluded. | |
| 7 | + */ | |
| 8 | +export const companionBuilds: Readonly<Record<string, CuratedCompanionBuild>> = { | |
| 9 | + "Elma": { | |
| 10 | + "role": [ | |
| 11 | + "Positional dual-weapon DPS with party Decoy support", | |
| 12 | + "DPS positionnel à double arme, avec Décoy de groupe" | |
| 13 | + ], | |
| 14 | + "rationale": [ | |
| 15 | + "Keep Primer and Sliding Slinger for TP flow; Violent Streak adds critical-based TP gain. Ghost Factory protects nearby allies; Executioner is ranged TP damage. Side Slash and Shadowstrike retain positional attacks, but AI positioning is unreliable. Ghost Factory and Executioner are the only equipped TP Arts.", | |
| 16 | + "Garder Primer et Sliding Slinger pour générer des PT ; Violent Streak ajoute le gain de PT sur critique. Ghost Factory protège les alliés proches ; Executioner apporte des dégâts à distance contre des PT. Side Slash et Shadowstrike gardent les attaques positionnelles, mais le placement de l’IA reste peu fiable. Ghost Factory et Executioner sont les deux seuls Arts à PT équipés." | |
| 17 | + ], | |
| 18 | + "arts": [ | |
| 19 | + "Primer", | |
| 20 | + "Sliding Slinger", | |
| 21 | + "Shadowstrike", | |
| 22 | + "Side Slash", | |
| 23 | + "Violent Streak", | |
| 24 | + "Electric Surge", | |
| 25 | + "Ghost Factory", | |
| 26 | + "Executioner" | |
| 27 | + ], | |
| 28 | + "skills": [ | |
| 29 | + "Agile Gunslinger", | |
| 30 | + "Steady Hand", | |
| 31 | + "Background Noise", | |
| 32 | + "Master Edge" | |
| 33 | + ], | |
| 34 | + "artSubstitutes": [ | |
| 35 | + "Upper Hand", | |
| 36 | + "Blood Sacrifice", | |
| 37 | + "Stream Edge", | |
| 38 | + "Thirsty Edge", | |
| 39 | + "Hundred Shells" | |
| 40 | + ], | |
| 41 | + "skillSubstitutes": [ | |
| 42 | + "Mortal Enemy", | |
| 43 | + "Hellhound", | |
| 44 | + "Crisis Catalyst", | |
| 45 | + "Phantom Counter" | |
| 46 | + ], | |
| 47 | + "equipment": { | |
| 48 | + "weapons": [ | |
| 49 | + "Sakuraba Industries Dual Guns Series + Blades Series (Dual Swords), both AM Level 1. Alternative: Grenada Gemels Dual Guns + Ralzes Dual Swords, AM Level 1. Choose weapon attribute and Battle Traits for enemy matchup; no manufacturer grants an Elma-specific bonus.", | |
| 50 | + "Sakuraba Industries, séries Dual Guns + Blades (épées doubles), AM niv. 1. Alternative : Grenada Gemels (Dual Guns) + Ralzes (épées doubles), AM niv. 1. Choisir l’attribut et les traits selon l’ennemi ; aucun fabricant ne donne de bonus propre à Elma." | |
| 51 | + ], | |
| 52 | + "armor": [ | |
| 53 | + "Candid & Credible Light Wear: Screen, Breaker, Ward, Trudgers. Light trades defense for higher attribute resistance, especially Gravity; C&C ground gear trends high-defense. Editorial DPS choice, not consensus.", | |
| 54 | + "Armure légère Candid & Credible : Screen, Breaker, Ward, Trudgers. Le type léger sacrifie de la défense pour davantage de résistances, surtout Gravité ; les équipements terrestres C&C tendent vers une défense élevée. Choix éditorial pour un DPS, pas un consensus." | |
| 55 | + ], | |
| 56 | + "availability": [ | |
| 57 | + "C&C unlocks after Chapter 5; Light Wear requires AM Level 2 and 7,000 R&D. Before that use initial Sakuraba or Grenada Medium Wear at AM Level 1; C&C Medium is also AM Level 1 after its story gate.", | |
| 58 | + "C&C se débloque après le chapitre 5 ; l’armure légère exige AM niv. 2 et 7 000 points de R&D. Avant cela, utiliser l’armure moyenne Sakuraba ou Grenada (fabricants initiaux, AM niv. 1) ; l’armure moyenne C&C est aussi AM niv. 1 après son déblocage scénario." | |
| 59 | + ] | |
| 60 | + }, | |
| 61 | + "sources": [ | |
| 62 | + { | |
| 63 | + "label": "Xeno Series Wiki — Elma/Gameplay (XCX)", | |
| 64 | + "url": "https://www.xenoserieswiki.org/wiki/Elma/Gameplay_(XCX)", | |
| 65 | + "edition": "both" | |
| 66 | + }, | |
| 67 | + { | |
| 68 | + "label": "Game8 — Elma Best Build (DE)", | |
| 69 | + "url": "https://game8.co/games/Xenoblade-Chronicles-X/archives/506520", | |
| 70 | + "edition": "DE" | |
| 71 | + }, | |
| 72 | + { | |
| 73 | + "label": "Nintendo Life — Best Combat Builds for All Characters (DE)", | |
| 74 | + "url": "https://www.nintendolife.com/guides/xenoblade-chronicles-x-best-combat-builds-for-all-characters", | |
| 75 | + "edition": "DE" | |
| 76 | + }, | |
| 77 | + { | |
| 78 | + "label": "Reddit — A Guide to Xenoblade X DE Party Member Builds (search-indexed; direct fetch blocked)", | |
| 79 | + "url": "https://www.reddit.com/r/Xenoblade_Chronicles/comments/1jnyxkz/a_guide_to_xenoblade_x_de_party_member_builds/", | |
| 80 | + "edition": "DE" | |
| 81 | + }, | |
| 82 | + { | |
| 83 | + "label": "Xeno Series Wiki — Battle Art (XCX)", | |
| 84 | + "url": "https://www.xenoserieswiki.org/wiki/Battle_Art_(XCX)", | |
| 85 | + "edition": "both" | |
| 86 | + }, | |
| 87 | + { | |
| 88 | + "label": "Xeno Series Wiki — Skill (XCX)", | |
| 89 | + "url": "https://www.xenoserieswiki.org/wiki/Skill_(XCX)", | |
| 90 | + "edition": "both" | |
| 91 | + }, | |
| 92 | + { | |
| 93 | + "label": "Xeno Series Wiki — Sakuraba Industries", | |
| 94 | + "url": "https://www.xenoserieswiki.org/wiki/Sakuraba_Industries", | |
| 95 | + "edition": "both" | |
| 96 | + }, | |
| 97 | + { | |
| 98 | + "label": "Xeno Series Wiki — Grenada Galactic Group", | |
| 99 | + "url": "https://www.xenoserieswiki.org/wiki/Grenada_Galactic_Group", | |
| 100 | + "edition": "both" | |
| 101 | + }, | |
| 102 | + { | |
| 103 | + "label": "Xeno Series Wiki — Candid & Credible", | |
| 104 | + "url": "https://www.xenoserieswiki.org/wiki/Candid_%26_Credible", | |
| 105 | + "edition": "both" | |
| 106 | + }, | |
| 107 | + { | |
| 108 | + "label": "Xeno Series Wiki — Armor (XCX)", | |
| 109 | + "url": "https://www.xenoserieswiki.org/wiki/Armor_(XCX)", | |
| 110 | + "edition": "both" | |
| 111 | + } | |
| 112 | + ] | |
| 113 | + }, | |
| 114 | + "Lin": { | |
| 115 | + "role": [ | |
| 116 | + "Shield tank and Topple setup", | |
| 117 | + "Tank bouclier et spécialiste du Topple" | |
| 118 | + ], | |
| 119 | + "rationale": [ | |
| 120 | + "Wild Down topples; Wild Smash and Drum Roll exploit toppled/melee-combo targets. Trash Talk supports aggro/TP; Shield Wall adds a non-TP barrier and Bullet Storm deals weapon damage, with Flinch against humanoids, without needing an aura. Wild Down and Drum Roll are the only TP Arts. Game8 omitted Drum Roll’s TP marker; XSW marks it (TP).", | |
| 121 | + "Wild Down renverse l’ennemi ; Wild Smash et Drum Roll exploitent les cibles renversées et les combos au corps-à-corps. Trash Talk soutient l’aggro et les PT ; Shield Wall ajoute une barrière sans coût en PT et Bullet Storm inflige des dégâts d’arme et Flinch aux humanoïdes sans exiger d’aura. Wild Down et Drum Roll sont les deux seuls Arts à PT. Game8 a omis le marqueur PT de Drum Roll ; XSW le marque (TP)." | |
| 122 | + ], | |
| 123 | + "arts": [ | |
| 124 | + "Wild Down", | |
| 125 | + "Wild Smash", | |
| 126 | + "Trash Talk", | |
| 127 | + "Drum Roll", | |
| 128 | + "Reality Rift", | |
| 129 | + "Fire Carnival", | |
| 130 | + "Shield Wall", | |
| 131 | + "Bullet Storm" | |
| 132 | + ], | |
| 133 | + "skills": [ | |
| 134 | + "Shield Screen", | |
| 135 | + "Dirty Fighter", | |
| 136 | + "Stand Strong" | |
| 137 | + ], | |
| 138 | + "artSubstitutes": [ | |
| 139 | + "Flame Cloak", | |
| 140 | + "Bombardier", | |
| 141 | + "Supershield", | |
| 142 | + "Thermal Payload" | |
| 143 | + ], | |
| 144 | + "skillSubstitutes": [ | |
| 145 | + "Steel Flesh", | |
| 146 | + "Mighty Muscle", | |
| 147 | + "Dismantler", | |
| 148 | + "Long Topple" | |
| 149 | + ], | |
| 150 | + "equipment": { | |
| 151 | + "weapons": [ | |
| 152 | + "Sakuraba Industries Shield Series + Machine Series (Gatling Gun), AM Level 1. Grenada Paive + Repethe (AM Level 1) is an alternative; C&C Haven + Crank (AM Level 1) is available after Chapter 5.", | |
| 153 | + "Sakuraba Industries, séries Shield + Machine (mitrailleuse Gatling), AM niv. 1. Alternative Grenada Paive + Repethe (AM niv. 1) ; C&C Haven + Crank (AM niv. 1) après le chapitre 5." | |
| 154 | + ], | |
| 155 | + "armor": [ | |
| 156 | + "Candid & Credible Heavy Wear: Armet, Bulwark, Wrest, Stabilizers. Heavy trades resistance for higher defense; C&C ground armor trends high-defense. Use it only when the incoming attribute profile permits.", | |
| 157 | + "Armure lourde Candid & Credible : Armet, Bulwark, Wrest, Stabilizers. Le type lourd échange des résistances contre plus de défense ; les armures terrestres C&C tendent vers une défense élevée. À choisir seulement si les attributs ennemis le permettent." | |
| 158 | + ], | |
| 159 | + "availability": [ | |
| 160 | + "C&C unlocks after Chapter 5; Heavy Wear requires AM Level 3 and 12,000 R&D. Before then use Sakuraba Medium Wear at AM Level 1, or Sakuraba Heavy after its AM Level 3/5,000 R&D gate. Medium Wear is safer against elemental-heavy encounters.", | |
| 161 | + "C&C se débloque après le chapitre 5 ; l’armure lourde exige AM niv. 3 et 12 000 points de R&D. Avant cela, utiliser l’armure moyenne Sakuraba AM niv. 1, ou son armure lourde après le palier AM niv. 3/5 000 points. L’armure moyenne convient mieux face à de forts dégâts élémentaires." | |
| 162 | + ] | |
| 163 | + }, | |
| 164 | + "sources": [ | |
| 165 | + { | |
| 166 | + "label": "Xeno Series Wiki — Lin/Gameplay", | |
| 167 | + "url": "https://www.xenoserieswiki.org/wiki/Lin/Gameplay", | |
| 168 | + "edition": "both" | |
| 169 | + }, | |
| 170 | + { | |
| 171 | + "label": "Game8 — Lin Best Build (DE)", | |
| 172 | + "url": "https://game8.co/games/Xenoblade-Chronicles-X/archives/506544", | |
| 173 | + "edition": "DE" | |
| 174 | + }, | |
| 175 | + { | |
| 176 | + "label": "Nintendo Life — Best Combat Builds for All Characters (DE)", | |
| 177 | + "url": "https://www.nintendolife.com/guides/xenoblade-chronicles-x-best-combat-builds-for-all-characters", | |
| 178 | + "edition": "DE" | |
| 179 | + }, | |
| 180 | + { | |
| 181 | + "label": "Reddit — A Guide to Xenoblade X DE Party Member Builds (search-indexed; direct fetch blocked)", | |
| 182 | + "url": "https://www.reddit.com/r/Xenoblade_Chronicles/comments/1jnyxkz/a_guide_to_xenoblade_x_de_party_member_builds/", | |
| 183 | + "edition": "DE" | |
| 184 | + }, | |
| 185 | + { | |
| 186 | + "label": "Xeno Series Wiki — Battle Art (XCX)", | |
| 187 | + "url": "https://www.xenoserieswiki.org/wiki/Battle_Art_(XCX)", | |
| 188 | + "edition": "both" | |
| 189 | + }, | |
| 190 | + { | |
| 191 | + "label": "Xeno Series Wiki — Skill (XCX)", | |
| 192 | + "url": "https://www.xenoserieswiki.org/wiki/Skill_(XCX)", | |
| 193 | + "edition": "both" | |
| 194 | + }, | |
| 195 | + { | |
| 196 | + "label": "Xeno Series Wiki — Sakuraba Industries", | |
| 197 | + "url": "https://www.xenoserieswiki.org/wiki/Sakuraba_Industries", | |
| 198 | + "edition": "both" | |
| 199 | + }, | |
| 200 | + { | |
| 201 | + "label": "Xeno Series Wiki — Grenada Galactic Group", | |
| 202 | + "url": "https://www.xenoserieswiki.org/wiki/Grenada_Galactic_Group", | |
| 203 | + "edition": "both" | |
| 204 | + }, | |
| 205 | + { | |
| 206 | + "label": "Xeno Series Wiki — Candid & Credible", | |
| 207 | + "url": "https://www.xenoserieswiki.org/wiki/Candid_%26_Credible", | |
| 208 | + "edition": "both" | |
| 209 | + }, | |
| 210 | + { | |
| 211 | + "label": "Xeno Series Wiki — Armor (XCX)", | |
| 212 | + "url": "https://www.xenoserieswiki.org/wiki/Armor_(XCX)", | |
| 213 | + "edition": "both" | |
| 214 | + }, | |
| 215 | + { | |
| 216 | + "label": "Xeno Series Wiki — Cool Off aura prerequisite", | |
| 217 | + "url": "https://www.xenoserieswiki.org/wiki/Cool_Off_(XCX)", | |
| 218 | + "edition": "both" | |
| 219 | + } | |
| 220 | + ] | |
| 221 | + }, | |
| 222 | + "Irina": { | |
| 223 | + "role": [ | |
| 224 | + "Healing, TP, barrier and buff support", | |
| 225 | + "Soutien par soins, PT, barrières et bonus" | |
| 226 | + ], | |
| 227 | + "rationale": [ | |
| 228 | + "Smooth Recovery, Repair and Absorber Skin cover healing, cleanse and Barrier. Last Stand and Energy Source provide team TP/Potential support. Quick Cannon and Flash Grenade retain ranged damage/Blackout; Assault Hammer adds non-TP Topple. Medic Free is removed to keep the strict two-TP limit. This is not the player-style Sleep/Control build. Irina has only three own Skills useful to this support bar without Sleep or Control; leave the fourth slot empty rather than equip an inert Control-specific Skill.", | |
| 229 | + "Smooth Recovery, Repair et Absorber Skin assurent soins, dissipation et barrière. Last Stand et Energy Source soutiennent les PT/le Potentiel de l’équipe. Quick Cannon et Flash Grenade gardent dégâts à distance et Blackout ; Assault Hammer ajoute Topple sans coût en PT. Medic Free est retiré pour respecter la limite stricte de deux Arts à PT. Ce n’est pas le build Sommeil/Contrôle manuel. Seules trois compétences propres à Irina servent cette barre de soutien sans Sommeil ni Contrôle ; la quatrième place reste vide plutôt que d’équiper une compétence de Contrôle inactive." | |
| 230 | + ], | |
| 231 | + "arts": [ | |
| 232 | + "Smooth Recovery", | |
| 233 | + "Quick Cannon", | |
| 234 | + "Repair", | |
| 235 | + "Assault Hammer", | |
| 236 | + "Last Stand", | |
| 237 | + "Energy Source", | |
| 238 | + "Absorber Skin", | |
| 239 | + "Flash Grenade" | |
| 240 | + ], | |
| 241 | + "skills": [ | |
| 242 | + "Inner Search", | |
| 243 | + "Healing Touch", | |
| 244 | + "High Tension" | |
| 245 | + ], | |
| 246 | + "artSubstitutes": [ | |
| 247 | + "Furious Blast", | |
| 248 | + "Screamer", | |
| 249 | + "Medic Free" | |
| 250 | + ], | |
| 251 | + "skillSubstitutes": [], | |
| 252 | + "equipment": { | |
| 253 | + "weapons": [ | |
| 254 | + "Sakuraba Industries Assault Series + Knife Series, AM Level 1. Grenada Avagar + Riv (AM Level 1) is a same-type alternative.", | |
| 255 | + "Sakuraba Industries, séries Assault + Knife, AM niv. 1. Alternative de mêmes types : Grenada Avagar + Riv (AM niv. 1)." | |
| 256 | + ], | |
| 257 | + "armor": [ | |
| 258 | + "Grenada Medium Wear: Spex, Torse, Quantlet, Soales, AM Level 1. Grenada identifies beam-resistant ground armor as a product strength; use item resistances/traits for actual enemy matchup.", | |
| 259 | + "Armure moyenne Grenada : Spex, Torse, Quantlet, Soales, AM niv. 1. Grenada identifie les armures terrestres résistantes aux lasers comme un point fort ; choisir résistances/traits selon l’ennemi." | |
| 260 | + ], | |
| 261 | + "availability": [ | |
| 262 | + "Grenada is one of the two initial AMs; Medium Wear and weapon lines are AM Level 1. Sakuraba Medium is the initial-maker alternative. C&C Medium is available at AM Level 1 only after Chapter 5.", | |
| 263 | + "Grenada est l’un des deux fabricants initiaux ; l’armure moyenne et les armes sont disponibles à AM niv. 1. L’armure moyenne Sakuraba est l’alternative initiale. C&C propose l’armure moyenne à AM niv. 1 après le chapitre 5." | |
| 264 | + ] | |
| 265 | + }, | |
| 266 | + "sources": [ | |
| 267 | + { | |
| 268 | + "label": "Xeno Series Wiki — Irina/Gameplay", | |
| 269 | + "url": "https://www.xenoserieswiki.org/wiki/Irina/Gameplay", | |
| 270 | + "edition": "both" | |
| 271 | + }, | |
| 272 | + { | |
| 273 | + "label": "Game8 — Irina Best Build (DE)", | |
| 274 | + "url": "https://game8.co/games/Xenoblade-Chronicles-X/archives/506541", | |
| 275 | + "edition": "DE" | |
| 276 | + }, | |
| 277 | + { | |
| 278 | + "label": "Nintendo Life — Best Combat Builds for All Characters (DE)", | |
| 279 | + "url": "https://www.nintendolife.com/guides/xenoblade-chronicles-x-best-combat-builds-for-all-characters", | |
| 280 | + "edition": "DE" | |
| 281 | + }, | |
| 282 | + { | |
| 283 | + "label": "Reddit — A Guide to Xenoblade X DE Party Member Builds (search-indexed; direct fetch blocked)", | |
| 284 | + "url": "https://www.reddit.com/r/Xenoblade_Chronicles/comments/1jnyxkz/a_guide_to_xenoblade_x_de_party_member_builds/", | |
| 285 | + "edition": "DE" | |
| 286 | + }, | |
| 287 | + { | |
| 288 | + "label": "Xeno Series Wiki — Battle Art (XCX)", | |
| 289 | + "url": "https://www.xenoserieswiki.org/wiki/Battle_Art_(XCX)", | |
| 290 | + "edition": "both" | |
| 291 | + }, | |
| 292 | + { | |
| 293 | + "label": "Xeno Series Wiki — Skill (XCX)", | |
| 294 | + "url": "https://www.xenoserieswiki.org/wiki/Skill_(XCX)", | |
| 295 | + "edition": "both" | |
| 296 | + }, | |
| 297 | + { | |
| 298 | + "label": "Xeno Series Wiki — Sakuraba Industries", | |
| 299 | + "url": "https://www.xenoserieswiki.org/wiki/Sakuraba_Industries", | |
| 300 | + "edition": "both" | |
| 301 | + }, | |
| 302 | + { | |
| 303 | + "label": "Xeno Series Wiki — Grenada Galactic Group", | |
| 304 | + "url": "https://www.xenoserieswiki.org/wiki/Grenada_Galactic_Group", | |
| 305 | + "edition": "both" | |
| 306 | + }, | |
| 307 | + { | |
| 308 | + "label": "Xeno Series Wiki — Candid & Credible", | |
| 309 | + "url": "https://www.xenoserieswiki.org/wiki/Candid_%26_Credible", | |
| 310 | + "edition": "both" | |
| 311 | + }, | |
| 312 | + { | |
| 313 | + "label": "Xeno Series Wiki — Armor (XCX)", | |
| 314 | + "url": "https://www.xenoserieswiki.org/wiki/Armor_(XCX)", | |
| 315 | + "edition": "both" | |
| 316 | + }, | |
| 317 | + { | |
| 318 | + "label": "Xenoblade Wiki — King's Decree Control-only effect", | |
| 319 | + "url": "https://xenoblade.fandom.com/wiki/King%27s_Decree", | |
| 320 | + "edition": "both" | |
| 321 | + }, | |
| 322 | + { | |
| 323 | + "label": "Xenoblade Wiki — Servant Sacrifice Control prerequisite and HP/TP restore", | |
| 324 | + "url": "https://xenoblade.fandom.com/wiki/Servant_Sacrifice", | |
| 325 | + "edition": "both" | |
| 326 | + } | |
| 327 | + ] | |
| 328 | + }, | |
| 329 | + "Gwin": { | |
| 330 | + "role": [ | |
| 331 | + "Thermal-leaning ranged/melee hybrid", | |
| 332 | + "Hybride distance/corps-à-corps orienté thermique" | |
| 333 | + ], | |
| 334 | + "rationale": [ | |
| 335 | + "Use Gwin’s legal Longsword + Assault Rifle Arts. Defensive Stance gives an AI-safe aura; Power Dive grants Supercharge/evasion. Grenade Blitz and Burst Grenade support Thermal damage; Flash Grenade adds Electric damage/Blackout; Takedown Shot adds mechanoid Topple. Defensive Stance and Burst Grenade are the only TP Arts. Published Game8 Gwin Arts are weapon-incompatible, so this build is editorial.", | |
| 336 | + "Utiliser les Arts légaux de Gwin, épée longue + fusil d’assaut. Defensive Stance apporte une aura défensive adaptée à l’IA ; Power Dive donne Supercharge/évasion. Grenade Blitz et Burst Grenade soutiennent les dégâts thermiques ; Flash Grenade ajoute dégâts électriques/Blackout ; Takedown Shot ajoute Topple contre les méchanoïdes. Defensive Stance et Burst Grenade sont les deux seuls Arts à PT. Les Arts Game8 pour Gwin sont incompatibles avec ses armes ; ce build est éditorial." | |
| 337 | + ], | |
| 338 | + "arts": [ | |
| 339 | + "Defensive Stance", | |
| 340 | + "Power Dive", | |
| 341 | + "Furious Blast", | |
| 342 | + "Magnum Edge", | |
| 343 | + "Flash Grenade", | |
| 344 | + "Grenade Blitz", | |
| 345 | + "Takedown Shot", | |
| 346 | + "Burst Grenade" | |
| 347 | + ], | |
| 348 | + "skills": [ | |
| 349 | + "Unwavering Courage", | |
| 350 | + "Flame Trigger", | |
| 351 | + "Conflagrant Edge" | |
| 352 | + ], | |
| 353 | + "artSubstitutes": [ | |
| 354 | + "Rising Blade", | |
| 355 | + "Ultraslash", | |
| 356 | + "Tornado Blade", | |
| 357 | + "Decoy Round", | |
| 358 | + "Incendiary Edge", | |
| 359 | + "Gunforce" | |
| 360 | + ], | |
| 361 | + "skillSubstitutes": [ | |
| 362 | + "Mighty Muscle", | |
| 363 | + "Auto Melee Boost", | |
| 364 | + "Healing Aura", | |
| 365 | + "Weapon Guard", | |
| 366 | + "Theroid Slayer" | |
| 367 | + ], | |
| 368 | + "equipment": { | |
| 369 | + "weapons": [ | |
| 370 | + "Sakuraba Industries Assault Series + Sword Series (Longsword), AM Level 1. Grenada Avagar + Slair are same-type AM Level 1 alternatives.", | |
| 371 | + "Sakuraba Industries, séries Assault + Sword (épée longue), AM niv. 1. Alternatives de mêmes types : Grenada Avagar + Slair, AM niv. 1." | |
| 372 | + ], | |
| 373 | + "armor": [ | |
| 374 | + "Sakuraba Medium Wear: Goggles, Bodywear, Glove, Footwear, AM Level 1. Conservative availability recommendation only; no Medium-specific numeric bonus is asserted.", | |
| 375 | + "Armure moyenne Sakuraba : Goggles, Bodywear, Glove, Footwear, AM niv. 1. Recommandation prudente de disponibilité ; aucun bonus numérique propre au type moyen n’est affirmé." | |
| 376 | + ], | |
| 377 | + "availability": [ | |
| 378 | + "Sakuraba and Grenada are initial AMs; Medium Wear and weapon lines are AM Level 1. C&C Medium is an alternative after Chapter 5 and AM Level 1, with a high-defense product trend.", | |
| 379 | + "Sakuraba et Grenada sont initiaux ; armes et armure moyenne disponibles à AM niv. 1. L’armure moyenne C&C est une alternative après le chapitre 5, AM niv. 1, avec une gamme terrestre orientée défense." | |
| 380 | + ] | |
| 381 | + }, | |
| 382 | + "sources": [ | |
| 383 | + { | |
| 384 | + "label": "Xeno Series Wiki — Gwin/Gameplay", | |
| 385 | + "url": "https://www.xenoserieswiki.org/wiki/Gwin/Gameplay", | |
| 386 | + "edition": "both" | |
| 387 | + }, | |
| 388 | + { | |
| 389 | + "label": "Game8 — Best Builds for All Characters (DE)", | |
| 390 | + "url": "https://game8.co/games/Xenoblade-Chronicles-X/archives/506659", | |
| 391 | + "edition": "DE" | |
| 392 | + }, | |
| 393 | + { | |
| 394 | + "label": "Xeno Series Wiki — Battle Art (XCX)", | |
| 395 | + "url": "https://www.xenoserieswiki.org/wiki/Battle_Art_(XCX)", | |
| 396 | + "edition": "both" | |
| 397 | + }, | |
| 398 | + { | |
| 399 | + "label": "Xeno Series Wiki — Skill (XCX)", | |
| 400 | + "url": "https://www.xenoserieswiki.org/wiki/Skill_(XCX)", | |
| 401 | + "edition": "both" | |
| 402 | + }, | |
| 403 | + { | |
| 404 | + "label": "Xeno Series Wiki — Sakuraba Industries", | |
| 405 | + "url": "https://www.xenoserieswiki.org/wiki/Sakuraba_Industries", | |
| 406 | + "edition": "both" | |
| 407 | + }, | |
| 408 | + { | |
| 409 | + "label": "Xeno Series Wiki — Grenada Galactic Group", | |
| 410 | + "url": "https://www.xenoserieswiki.org/wiki/Grenada_Galactic_Group", | |
| 411 | + "edition": "both" | |
| 412 | + }, | |
| 413 | + { | |
| 414 | + "label": "Xeno Series Wiki — Candid & Credible", | |
| 415 | + "url": "https://www.xenoserieswiki.org/wiki/Candid_%26_Credible", | |
| 416 | + "edition": "both" | |
| 417 | + }, | |
| 418 | + { | |
| 419 | + "label": "Xeno Series Wiki — Armor (XCX)", | |
| 420 | + "url": "https://www.xenoserieswiki.org/wiki/Armor_(XCX)", | |
| 421 | + "edition": "both" | |
| 422 | + } | |
| 423 | + ] | |
| 424 | + }, | |
| 425 | + "Doug": { | |
| 426 | + "role": [ | |
| 427 | + "Beam-leaning Photon Saber/Raygun hybrid support", | |
| 428 | + "Hybride de soutien laser au sabre photonique/pistolet laser" | |
| 429 | + ], | |
| 430 | + "rationale": [ | |
| 431 | + "Keep Doug’s legal Photon Saber + Raygun defaults, then add cleanse, healing and debuff utility. Beam Barrage gains damage with an aura; Geolibrium supplies beam resistance/regeneration; Astral Heal heals. Geolibrium and Astral Heal are the only TP Arts. This is editorial: the published Game8 Doug list uses Longsword/Gatling Arts, not Doug’s weapons.", | |
| 432 | + "Garder les Arts légaux par défaut de Doug, sabre photonique + pistolet laser, puis ajouter dissipation, soins et affaiblissements. Beam Barrage gagne des dégâts avec une aura ; Geolibrium apporte résistance laser/régénération ; Astral Heal soigne. Geolibrium et Astral Heal sont les deux seuls Arts à PT. Choix éditorial : la liste Game8 publiée utilise des Arts d’épée longue/mitrailleuse, pas les armes de Doug." | |
| 433 | + ], | |
| 434 | + "arts": [ | |
| 435 | + "Starfall Blade", | |
| 436 | + "Starfall Rondo", | |
| 437 | + "Beam Barrage", | |
| 438 | + "Geolibrium", | |
| 439 | + "Myopic Screen", | |
| 440 | + "Astral Purge", | |
| 441 | + "Astral Heal", | |
| 442 | + "Subterfuge" | |
| 443 | + ], | |
| 444 | + "skills": [ | |
| 445 | + "Inner Search", | |
| 446 | + "Beam Boost", | |
| 447 | + "High Tension", | |
| 448 | + "Aura Assault" | |
| 449 | + ], | |
| 450 | + "artSubstitutes": [ | |
| 451 | + "Phenomenon", | |
| 452 | + "Pathogen Blast", | |
| 453 | + "Gravity Blast", | |
| 454 | + "Ether Blast", | |
| 455 | + "Novalibrium" | |
| 456 | + ], | |
| 457 | + "skillSubstitutes": [ | |
| 458 | + "Mechanoid Slayer", | |
| 459 | + "Knight's Soul", | |
| 460 | + "Supreme Sword" | |
| 461 | + ], | |
| 462 | + "equipment": { | |
| 463 | + "weapons": [ | |
| 464 | + "Grenada Galactic Group Lastyr Raygun + Fulge Photon Saber, AM Level 1. Grenada’s product portfolio is beam-focused. Sakuraba Raygun + Saber are initial-maker alternatives.", | |
| 465 | + "Grenada Galactic Group, Lastyr (pistolet laser) + Fulge (sabre photonique), AM niv. 1. Sa gamme est orientée laser. Sakuraba Raygun + Saber sont des alternatives du fabricant initial." | |
| 466 | + ], | |
| 467 | + "armor": [ | |
| 468 | + "Grenada Medium Wear: Spex, Torse, Quantlet, Soales, AM Level 1. Its ground armor trends beam-resistant. Use Light Wear at AM Level 2 if Gravity resistance matters more than defense.", | |
| 469 | + "Armure moyenne Grenada : Spex, Torse, Quantlet, Soales, AM niv. 1. Ses armures terrestres tendent à résister aux lasers. Choisir l’armure légère AM niv. 2 si la résistance Gravité compte davantage que la défense." | |
| 470 | + ], | |
| 471 | + "availability": [ | |
| 472 | + "Grenada is an initial AM; Raygun/Photon Saber series and Medium Wear are AM Level 1. Light Wear requires AM Level 2 and 2,000 R&D. Sakuraba is the initial-maker alternative; its Medium Wear is AM Level 1.", | |
| 473 | + "Grenada est un fabricant initial ; séries pistolet laser/sabre photonique et armure moyenne disponibles à AM niv. 1. L’armure légère exige AM niv. 2 et 2 000 points de R&D. Sakuraba est l’alternative initiale ; son armure moyenne est AM niv. 1." | |
| 474 | + ] | |
| 475 | + }, | |
| 476 | + "sources": [ | |
| 477 | + { | |
| 478 | + "label": "Xeno Series Wiki — Doug/Gameplay", | |
| 479 | + "url": "https://www.xenoserieswiki.org/wiki/Doug/Gameplay", | |
| 480 | + "edition": "both" | |
| 481 | + }, | |
| 482 | + { | |
| 483 | + "label": "Game8 — Doug Best Build (DE; personal ranks and TP recommendations checked against XSW)", | |
| 484 | + "url": "https://game8.co/games/Xenoblade-Chronicles-X/archives/507626", | |
| 485 | + "edition": "DE" | |
| 486 | + }, | |
| 487 | + { | |
| 488 | + "label": "Game8 — Best Builds for All Characters (DE)", | |
| 489 | + "url": "https://game8.co/games/Xenoblade-Chronicles-X/archives/506659", | |
| 490 | + "edition": "DE" | |
| 491 | + }, | |
| 492 | + { | |
| 493 | + "label": "Xeno Series Wiki — Battle Art (XCX)", | |
| 494 | + "url": "https://www.xenoserieswiki.org/wiki/Battle_Art_(XCX)", | |
| 495 | + "edition": "both" | |
| 496 | + }, | |
| 497 | + { | |
| 498 | + "label": "Xeno Series Wiki — Skill (XCX)", | |
| 499 | + "url": "https://www.xenoserieswiki.org/wiki/Skill_(XCX)", | |
| 500 | + "edition": "both" | |
| 501 | + }, | |
| 502 | + { | |
| 503 | + "label": "Xeno Series Wiki — Sakuraba Industries", | |
| 504 | + "url": "https://www.xenoserieswiki.org/wiki/Sakuraba_Industries", | |
| 505 | + "edition": "both" | |
| 506 | + }, | |
| 507 | + { | |
| 508 | + "label": "Xeno Series Wiki — Grenada Galactic Group", | |
| 509 | + "url": "https://www.xenoserieswiki.org/wiki/Grenada_Galactic_Group", | |
| 510 | + "edition": "both" | |
| 511 | + }, | |
| 512 | + { | |
| 513 | + "label": "Xeno Series Wiki — Armor (XCX)", | |
| 514 | + "url": "https://www.xenoserieswiki.org/wiki/Armor_(XCX)", | |
| 515 | + "edition": "both" | |
| 516 | + } | |
| 517 | + ] | |
| 518 | + }, | |
| 519 | + "Lao": { | |
| 520 | + "role": [ | |
| 521 | + "Ranged Electric/Shock DPS; permanently unavailable after Chapter 9", | |
| 522 | + "DPS électrique/Choc à distance ; indisponible définitivement après le chapitre 9" | |
| 523 | + ], | |
| 524 | + "rationale": [ | |
| 525 | + "Arcing Horn lowers Electric resistance; Trident Buster applies Shock; Conductive Strike and Electric Boost support Electric/Shock damage. Ghost Sniper adds critical/ranged accuracy/TP support. The final two TP Arts are Trident Buster and Ghost Sniper; Afterburner is dropped from Game8’s three-TP candidate list.", | |
| 526 | + "Arcing Horn réduit la résistance électrique ; Trident Buster applique Choc ; Conductive Strike et Electric Boost soutiennent les dégâts Électrique/Choc. Ghost Sniper apporte critiques/précision à distance/soutien PT. Les deux Arts à PT sont Trident Buster et Ghost Sniper ; Afterburner est retiré de la liste Game8 qui en contient trois." | |
| 527 | + ], | |
| 528 | + "arts": [ | |
| 529 | + "Balance Breaker", | |
| 530 | + "Arcing Horn", | |
| 531 | + "Trident Buster", | |
| 532 | + "Overwhelm", | |
| 533 | + "Shrapnel", | |
| 534 | + "Eagle Eye", | |
| 535 | + "Ghost Sniper", | |
| 536 | + "Intercept" | |
| 537 | + ], | |
| 538 | + "skills": [ | |
| 539 | + "Knock 'n' Shock", | |
| 540 | + "Conductive Strike", | |
| 541 | + "Electric Boost" | |
| 542 | + ], | |
| 543 | + "artSubstitutes": [ | |
| 544 | + "First Down", | |
| 545 | + "Sidewinder", | |
| 546 | + "Spiral Horn", | |
| 547 | + "Hair Trigger", | |
| 548 | + "Hawkeye", | |
| 549 | + "Raijin", | |
| 550 | + "Afterburner" | |
| 551 | + ], | |
| 552 | + "skillSubstitutes": [ | |
| 553 | + "Killshot", | |
| 554 | + "Piscinoid Slayer", | |
| 555 | + "Long Shot", | |
| 556 | + "Quick Reload", | |
| 557 | + "TP Overdrive" | |
| 558 | + ], | |
| 559 | + "equipment": { | |
| 560 | + "weapons": [ | |
| 561 | + "Candid & Credible Trigger Sniper Rifle + Bolide Javelin, AM Level 1 after Chapter 5. C&C says its weapons are Electric except Dual Guns and Shield, so both match Lao’s weapon types and Electric build. Before that gate, use Sakuraba Sniper Rifle + Spear series (AM Level 1, physical alternative).", | |
| 562 | + "Candid & Credible, Trigger (fusil de précision) + Bolide (javelot), AM niv. 1 après le chapitre 5. C&C précise que ses armes sont électriques, sauf Dual Guns et Shield ; les deux séries correspondent aux armes et au build électrique de Lao. Avant ce déblocage, utiliser les séries Sakuraba Sniper Rifle + Spear (AM niv. 1, alternative physique)." | |
| 563 | + ], | |
| 564 | + "armor": [ | |
| 565 | + "Candid & Credible Medium Wear: Sights, Encaser, Grip, Distancers, AM Level 1 after the Chapter 5 gate. C&C ground armor trends high-defense. Light Wear at AM Level 2/7,000 R&D trades defense for higher resistance, especially Gravity.", | |
| 566 | + "Armure moyenne Candid & Credible : Sights, Encaser, Grip, Distancers, AM niv. 1 après le chapitre 5. Les armures terrestres C&C tendent vers une défense élevée. L’armure légère AM niv. 2/7 000 points de R&D échange de la défense contre des résistances accrues, surtout Gravité." | |
| 567 | + ], | |
| 568 | + "availability": [ | |
| 569 | + "C&C unlocks after Chapter 5; weapon lines and Medium Wear are AM Level 1. Light Wear needs AM Level 2 and 7,000 R&D. Before Chapter 5, Sakuraba Sniper Rifle/Spear and Medium Wear are available from the initial AM. Lao is permanently unplayable after Chapter 9.", | |
| 570 | + "C&C se débloque après le chapitre 5 ; armes et armure moyenne disponibles à AM niv. 1. L’armure légère exige AM niv. 2 et 7 000 points de R&D. Avant le chapitre 5, les séries Sniper Rifle/Spear et l’armure moyenne Sakuraba sont disponibles chez le fabricant initial. Lao devient définitivement indisponible après le chapitre 9." | |
| 571 | + ] | |
| 572 | + }, | |
| 573 | + "sources": [ | |
| 574 | + { | |
| 575 | + "label": "Xeno Series Wiki — Lao/Gameplay", | |
| 576 | + "url": "https://www.xenoserieswiki.org/wiki/Lao/Gameplay", | |
| 577 | + "edition": "both" | |
| 578 | + }, | |
| 579 | + { | |
| 580 | + "label": "Game8 — Lao Best Build (DE)", | |
| 581 | + "url": "https://game8.co/games/Xenoblade-Chronicles-X/archives/506554", | |
| 582 | + "edition": "DE" | |
| 583 | + }, | |
| 584 | + { | |
| 585 | + "label": "Nintendo Life — Best Combat Builds for All Characters (DE)", | |
| 586 | + "url": "https://www.nintendolife.com/guides/xenoblade-chronicles-x-best-combat-builds-for-all-characters", | |
| 587 | + "edition": "DE" | |
| 588 | + }, | |
| 589 | + { | |
| 590 | + "label": "Reddit — A Guide to Xenoblade X DE Party Member Builds (search-indexed; direct fetch blocked)", | |
| 591 | + "url": "https://www.reddit.com/r/Xenoblade_Chronicles/comments/1jnyxkz/a_guide_to_xenoblade_x_de_party_member_builds/", | |
| 592 | + "edition": "DE" | |
| 593 | + }, | |
| 594 | + { | |
| 595 | + "label": "Xeno Series Wiki — Battle Art (XCX)", | |
| 596 | + "url": "https://www.xenoserieswiki.org/wiki/Battle_Art_(XCX)", | |
| 597 | + "edition": "both" | |
| 598 | + }, | |
| 599 | + { | |
| 600 | + "label": "Xeno Series Wiki — Skill (XCX)", | |
| 601 | + "url": "https://www.xenoserieswiki.org/wiki/Skill_(XCX)", | |
| 602 | + "edition": "both" | |
| 603 | + }, | |
| 604 | + { | |
| 605 | + "label": "Xeno Series Wiki — Sakuraba Industries", | |
| 606 | + "url": "https://www.xenoserieswiki.org/wiki/Sakuraba_Industries", | |
| 607 | + "edition": "both" | |
| 608 | + }, | |
| 609 | + { | |
| 610 | + "label": "Xeno Series Wiki — Candid & Credible", | |
| 611 | + "url": "https://www.xenoserieswiki.org/wiki/Candid_%26_Credible", | |
| 612 | + "edition": "both" | |
| 613 | + }, | |
| 614 | + { | |
| 615 | + "label": "Xeno Series Wiki — Armor (XCX)", | |
| 616 | + "url": "https://www.xenoserieswiki.org/wiki/Armor_(XCX)", | |
| 617 | + "edition": "both" | |
| 618 | + } | |
| 619 | + ] | |
| 620 | + }, | |
| 621 | + "L": { | |
| 622 | + "role": [ | |
| 623 | + "Defensive tank / control-support", | |
| 624 | + "Tank défensif / soutien-contrôle" | |
| 625 | + ], | |
| 626 | + "rationale": [ | |
| 627 | + "Wild Down supplies party Topple; Long Topple extends it. Shield Wall barrier, Astral Protection and Mindstorm protect/heal allies; Shooting Star adds Shock without spending TP. AI fit is steady defense/control, not burst DPS.", | |
| 628 | + "Wild Down apporte Renversement ; Long Topple le prolonge. Shield Wall, Astral Protection et Mindstorm protègent/soignent ; Shooting Star ajoute Shock sans dépenser de PT. Rôle IA : défense/contrôle régulier, pas dégâts explosifs." | |
| 629 | + ], | |
| 630 | + "arts": [ | |
| 631 | + "Wild Down", | |
| 632 | + "Astral Protection", | |
| 633 | + "Mindstorm", | |
| 634 | + "Shield Wall", | |
| 635 | + "Trash Talk", | |
| 636 | + "Stellar Ray", | |
| 637 | + "Shooting Star", | |
| 638 | + "Lightning Cloak" | |
| 639 | + ], | |
| 640 | + "skills": [ | |
| 641 | + "Steel Flesh", | |
| 642 | + "Long Topple", | |
| 643 | + "Shield Screen" | |
| 644 | + ], | |
| 645 | + "artSubstitutes": [ | |
| 646 | + "Wild Smash", | |
| 647 | + "Reality Rift", | |
| 648 | + "Bombardier", | |
| 649 | + "Flame Cloak" | |
| 650 | + ], | |
| 651 | + "skillSubstitutes": [ | |
| 652 | + "Mighty Muscle", | |
| 653 | + "Stand Strong" | |
| 654 | + ], | |
| 655 | + "equipment": { | |
| 656 | + "weapons": [ | |
| 657 | + "Shield: Sakuraba physical Shield Series (Lv.60 320 damage, 165 TP gain) gives greater auto-attack TP than Grenada Paive (320/120). Psycho Launchers: Grenada Psylans beam (Lv.60 32 damage, 1.8 s, 5 ammo, 3 TP gain) pairs with Stellar Ray’s weapon-damage/Beam-Res-Down role. This beam model does not change Shooting Star’s fixed electric damage.", | |
| 658 | + "Bouclier : Shield Series physique Sakuraba (niv. 60 : 320 dégâts, 165 PT) génère plus de PT que Paive Grenada (320/120). Lanceurs psycho : Psylans laser Grenada (niv. 60 : 32 dégâts, 1,8 s, 5 munitions, 3 PT) pour le rôle dégâts d’arme/baisse résistance laser de Stellar Ray. N’altère pas l’électricité fixe de Shooting Star." | |
| 659 | + ], | |
| 660 | + "armor": [ | |
| 661 | + "Orphean Light Wear (Yii/Yimsel/Yiys/Yiym): choose piece-specific Evasion, HP or Max-TP traits for this Astral Protection tank; Light Wear itself does not grant evasion. Representative Lv.55 torso Yimsel has Defense 40 and Gravity +20; C&C Heavy Bulwark has Defense 100, Electric +20, Gravity −15. Weigh those defense/resistance tradeoffs for the encounter; traits are not guaranteed set defaults. [Armor table](https://xenoblade.fandom.com/wiki/Armor).", | |
| 662 | + "Armure légère Orphean Technologies (Yii/Yimsel/Yiys/Yiym) : viser les traits esquive/PV/PT max sur les pièces pour ce tank à Astral Protection ; la catégorie légère ne donne pas d’esquive en soi. Torse Yimsel niv. 55 : Défense 40, Gravité +20 ; Bulwark lourd C&C : Défense 100, Électricité +20, Gravité −15. Adapter défense/résistance à l’ennemi ; traits non garantis. [Table armure](https://xenoblade.fandom.com/wiki/Armor)." | |
| 663 | + ], | |
| 664 | + "availability": [ | |
| 665 | + "Orphean unlocks after Rescue at the Ensconced Citadel; AM level 2 unlocks Light, level 3 Heavy. Early fallback: currently stocked Sakuraba Light armor and legal physical Shield/available launcher until preferred models are available.", | |
| 666 | + "Orphean se débloque après Rescue at the Ensconced Citadel ; niveau fabricant 2 pour léger, 3 pour lourd. Alternative précoce : armure légère Sakuraba en stock et bouclier physique/lanceur disponible." | |
| 667 | + ] | |
| 668 | + }, | |
| 669 | + "sources": [ | |
| 670 | + { | |
| 671 | + "label": "Xeno Series Wiki personal gameplay record (weapon pair, Skill slots, Art/Skill personal ranks)", | |
| 672 | + "url": "https://www.xenoserieswiki.org/wiki/L/Gameplay", | |
| 673 | + "edition": "both" | |
| 674 | + }, | |
| 675 | + { | |
| 676 | + "label": "DE party-member build guide by Stuart98", | |
| 677 | + "url": "https://www.reddit.com/r/Xenoblade_Chronicles/comments/1jnyxkz/a_guide_to_xenoblade_x_de_party_member_builds/", | |
| 678 | + "edition": "DE" | |
| 679 | + }, | |
| 680 | + { | |
| 681 | + "label": "2015 GameFAQs party-member build thread", | |
| 682 | + "url": "https://gamefaqs.gamespot.com/boards/701151-xenoblade-chronicles-x/73179135", | |
| 683 | + "edition": "XCX" | |
| 684 | + }, | |
| 685 | + { | |
| 686 | + "label": "Arms Manufacturer story locks and R&D tier facts", | |
| 687 | + "url": "https://www.xenoserieswiki.org/wiki/Arms_Manufacturer", | |
| 688 | + "edition": "both" | |
| 689 | + }, | |
| 690 | + { | |
| 691 | + "label": "Armor / maker traits and weight details", | |
| 692 | + "url": "https://xenoblade.fandom.com/wiki/Orphean_Technologies", | |
| 693 | + "edition": "both" | |
| 694 | + }, | |
| 695 | + { | |
| 696 | + "label": "Nintendo Life independent role/build excerpt; direct reader returned feed", | |
| 697 | + "url": "https://www.nintendolife.com/guides/xenoblade-chronicles-x-best-combat-builds-for-all-characters", | |
| 698 | + "edition": "XCX" | |
| 699 | + }, | |
| 700 | + { | |
| 701 | + "label": "Shield Arts TP costs and weapon models", | |
| 702 | + "url": "https://xenoblade.fandom.com/wiki/Shield", | |
| 703 | + "edition": "XCX" | |
| 704 | + }, | |
| 705 | + { | |
| 706 | + "label": "Psycho Launchers Arts TP costs and weapon models", | |
| 707 | + "url": "https://xenoblade.fandom.com/wiki/Psycho_Launchers", | |
| 708 | + "edition": "XCX" | |
| 709 | + }, | |
| 710 | + { | |
| 711 | + "label": "Representative Lv.55 torso defense/resistance values by armor manufacturer", | |
| 712 | + "url": "https://xenoblade.fandom.com/wiki/Armor", | |
| 713 | + "edition": "XCX" | |
| 714 | + } | |
| 715 | + ] | |
| 716 | + }, | |
| 717 | + "H.B.": { | |
| 718 | + "role": [ | |
| 719 | + "Tank / party TP battery / Topple control", | |
| 720 | + "Tank / batterie PT du groupe / contrôle Renversement" | |
| 721 | + ], | |
| 722 | + "rationale": [ | |
| 723 | + "Wild Down and Long Topple/Topple Topper form reliable control; taunts and Shield Wall protect the party. Last Stand converts H.B.’s TP into ally TP. Canonical TP spenders: Wild Down and Last Stand only.", | |
| 724 | + "Wild Down et Long Topple/Topple Topper forment un contrôle fiable ; provocations et Shield Wall protègent. Last Stand convertit les PT de H.B. en PT alliés. Seuls Wild Down et Last Stand consomment des PT." | |
| 725 | + ], | |
| 726 | + "arts": [ | |
| 727 | + "Wild Down", | |
| 728 | + "Shield Wall", | |
| 729 | + "Decoy Round", | |
| 730 | + "Last Stand", | |
| 731 | + "Wild Smash", | |
| 732 | + "Trash Talk", | |
| 733 | + "Takedown Shot", | |
| 734 | + "Power Dive" | |
| 735 | + ], | |
| 736 | + "skills": [ | |
| 737 | + "Steel Flesh", | |
| 738 | + "Long Topple", | |
| 739 | + "Topple Topper", | |
| 740 | + "Combat Presence" | |
| 741 | + ], | |
| 742 | + "artSubstitutes": [ | |
| 743 | + "Atomic Hit", | |
| 744 | + "Furious Blast", | |
| 745 | + "Flash Grenade", | |
| 746 | + "Bombardier" | |
| 747 | + ], | |
| 748 | + "skillSubstitutes": [ | |
| 749 | + "Mighty Muscle", | |
| 750 | + "Shield Screen", | |
| 751 | + "Trauma Tension", | |
| 752 | + "Double Spike" | |
| 753 | + ], | |
| 754 | + "equipment": { | |
| 755 | + "weapons": [ | |
| 756 | + "Shield: Candid & Credible Haven II physical, Lv.60 320 damage/3.3 s/200 TP gain, supports TP throughput. Assault Rifle: Sakuraba physical (Lv.60 16 damage/2.7 s/20 ammo/1 TP), so weapon-damage Takedown Shot stays physical. Before C&C unlock use Sakuraba Shield (320/165 TP).", | |
| 757 | + "Bouclier Haven II physique C&C, niv. 60 : 320 dégâts/3,3 s/200 PT, bon débit PT. Fusil d’assaut physique Sakuraba (16/2,7 s/20 munitions/1 PT) pour Takedown Shot. Avant C&C : bouclier Sakuraba (320/165 PT)." | |
| 758 | + ], | |
| 759 | + "armor": [ | |
| 760 | + "Candid & Credible Heavy Wear (Armet/Bulwark/Wrest/Stabilizers): high-defense maker and explicit raw-defense choice for taunting frontline. Representative Lv.55 torso Bulwark has Defense 100, Electric +20, Gravity −15; Light Breaker has Defense 60, Electric +20, Gravity −5. Heavy Wear trades gravity resistance/upgrade flexibility for defense. [Armor table](https://xenoblade.fandom.com/wiki/Armor).", | |
| 761 | + "Armure lourde C&C (Armet/Bulwark/Wrest/Stabilizers) : défense brute pour tank de première ligne. Torse Bulwark niv. 55 : Défense 100, Électricité +20, Gravité −15 ; Breaker léger : Défense 60, Électricité +20, Gravité −5. Lourd échange résistance gravitationnelle/flexibilité contre défense. [Table armure](https://xenoblade.fandom.com/wiki/Armor)." | |
| 762 | + ], | |
| 763 | + "availability": [ | |
| 764 | + "C&C unlocks after Chapter 5; Haven II series is AM level 2, Heavy Wear level 3. Earlier fallback: Sakuraba physical Shield/Assault Rifle and currently available armor weight.", | |
| 765 | + "C&C après chapitre 5 ; Haven II au niveau fabricant 2, armure lourde au niveau 3. Alternative antérieure : bouclier/fusil physiques Sakuraba et poids d’armure disponible." | |
| 766 | + ] | |
| 767 | + }, | |
| 768 | + "sources": [ | |
| 769 | + { | |
| 770 | + "label": "Xeno Series Wiki personal gameplay record (weapon pair, Skill slots, Art/Skill personal ranks)", | |
| 771 | + "url": "https://www.xenoserieswiki.org/wiki/H.B./Gameplay", | |
| 772 | + "edition": "both" | |
| 773 | + }, | |
| 774 | + { | |
| 775 | + "label": "DE party-member build guide by Stuart98", | |
| 776 | + "url": "https://www.reddit.com/r/Xenoblade_Chronicles/comments/1jnyxkz/a_guide_to_xenoblade_x_de_party_member_builds/", | |
| 777 | + "edition": "DE" | |
| 778 | + }, | |
| 779 | + { | |
| 780 | + "label": "2015 GameFAQs party-member build thread", | |
| 781 | + "url": "https://gamefaqs.gamespot.com/boards/701151-xenoblade-chronicles-x/73179135", | |
| 782 | + "edition": "XCX" | |
| 783 | + }, | |
| 784 | + { | |
| 785 | + "label": "Arms Manufacturer story locks and R&D tier facts", | |
| 786 | + "url": "https://www.xenoserieswiki.org/wiki/Arms_Manufacturer", | |
| 787 | + "edition": "both" | |
| 788 | + }, | |
| 789 | + { | |
| 790 | + "label": "Armor / maker traits and weight details", | |
| 791 | + "url": "https://xenoblade.fandom.com/wiki/Candid_%26_Credible", | |
| 792 | + "edition": "both" | |
| 793 | + }, | |
| 794 | + { | |
| 795 | + "label": "Nintendo Life independent role/build excerpt; direct reader returned feed", | |
| 796 | + "url": "https://www.nintendolife.com/guides/xenoblade-chronicles-x-best-combat-builds-for-all-characters", | |
| 797 | + "edition": "XCX" | |
| 798 | + }, | |
| 799 | + { | |
| 800 | + "label": "Shield Arts TP costs and weapon models", | |
| 801 | + "url": "https://xenoblade.fandom.com/wiki/Shield", | |
| 802 | + "edition": "XCX" | |
| 803 | + }, | |
| 804 | + { | |
| 805 | + "label": "Assault Rifle Arts TP costs and weapon models", | |
| 806 | + "url": "https://xenoblade.fandom.com/wiki/Assault_Rifle", | |
| 807 | + "edition": "XCX" | |
| 808 | + }, | |
| 809 | + { | |
| 810 | + "label": "Representative Lv.55 torso defense/resistance values by armor manufacturer", | |
| 811 | + "url": "https://xenoblade.fandom.com/wiki/Armor", | |
| 812 | + "edition": "XCX" | |
| 813 | + } | |
| 814 | + ] | |
| 815 | + }, | |
| 816 | + "Alexa": { | |
| 817 | + "role": [ | |
| 818 | + "Electric control / durable bruiser-support", | |
| 819 | + "Contrôle électrique / combattante de soutien résistante" | |
| 820 | + ], | |
| 821 | + "rationale": [ | |
| 822 | + "Arcing Horn lowers Electric Resistance; Trident Buster inflicts Shock, supported by Electric Boost. Raijin adds healing/reflect, Assault Hammer adds non-TP Topple. Maximum Voltage is legal but its post-Skell-destruction bonus is situational and another TP Art would break the two-Art package.", | |
| 823 | + "Arcing Horn réduit la résistance électrique ; Trident Buster applique Shock, soutenu par Electric Boost. Raijin soigne/réflecte, Assault Hammer renverse sans PT. Maximum Voltage est légal mais son bonus après destruction de Skell est situationnel et dépasserait le plafond PT." | |
| 824 | + ], | |
| 825 | + "arts": [ | |
| 826 | + "Arcing Horn", | |
| 827 | + "Raijin", | |
| 828 | + "Trident Buster", | |
| 829 | + "Assault Hammer", | |
| 830 | + "Power Dive", | |
| 831 | + "Decoy Round", | |
| 832 | + "Furious Blast", | |
| 833 | + "Overwhelm" | |
| 834 | + ], | |
| 835 | + "skills": [ | |
| 836 | + "Fortified Flesh", | |
| 837 | + "Electric Boost", | |
| 838 | + "High Tension" | |
| 839 | + ], | |
| 840 | + "artSubstitutes": [ | |
| 841 | + "Spiral Horn", | |
| 842 | + "Hair Trigger", | |
| 843 | + "Flash Grenade" | |
| 844 | + ], | |
| 845 | + "skillSubstitutes": [ | |
| 846 | + "Steel Flesh", | |
| 847 | + "Quick Reload", | |
| 848 | + "TP Overdrive" | |
| 849 | + ], | |
| 850 | + "equipment": { | |
| 851 | + "weapons": [ | |
| 852 | + "Candid & Credible Bolide Electric Javelin (Lv.60 312 damage/2.5 s/155 TP) and Assailer Electric Assault Rifle (Lv.60 16 damage/2.7 s/20 ammo/1 TP). These attributes support weapon-damage Arts; Arcing Horn, Trident Buster and Maximum Voltage have fixed Art elements.", | |
| 853 | + "Javelin électrique Bolide C&C (niv. 60 : 312 dégâts/2,5 s/155 PT) et fusil électrique Assailer (16/2,7 s/20 munitions/1 PT). Attribut pour Arts à dégâts d’arme ; Arcing Horn, Trident Buster et Maximum Voltage ont un élément fixe." | |
| 854 | + ], | |
| 855 | + "armor": [ | |
| 856 | + "Candid & Credible Light Wear (Screen/Breaker/Ward/Trudgers): Max TP and Electric Res traits exist on relevant slots; representative Lv.55 torso Breaker is Defense 60, Electric +20, Gravity −5. Heavy Bulwark is Defense 100, Electric +20, Gravity −15; choose only if raw defense beats those tradeoffs. Inspect actual item traits. [Armor table](https://xenoblade.fandom.com/wiki/Armor).", | |
| 857 | + "Armure légère C&C (Screen/Breaker/Ward/Trudgers) : traits PT max/résistance électrique sur certains emplacements ; torse Breaker niv. 55 : Défense 60, Électricité +20, Gravité −5. Bulwark lourd : Défense 100, Électricité +20, Gravité −15 ; préférer seulement si défense brute prime. Vérifier les traits. [Table armure](https://xenoblade.fandom.com/wiki/Armor)." | |
| 858 | + ], | |
| 859 | + "availability": [ | |
| 860 | + "C&C unlocks after Chapter 5; Light Wear requires AM level 2, Heavy level 3. Before then use Sakuraba physical weapons/armor; fixed-electric Arts stay electric, weapon-damage Arts inherit physical. Skell mode must not replace ground build.", | |
| 861 | + "C&C après chapitre 5 ; armure légère au niveau 2, lourde au niveau 3. Avant, armes/armure physiques Sakuraba ; Arts électriques fixes inchangés, Arts de dégâts d’arme héritent du physique. Le mode Skell ne remplace pas le build au sol." | |
| 862 | + ] | |
| 863 | + }, | |
| 864 | + "sources": [ | |
| 865 | + { | |
| 866 | + "label": "Xeno Series Wiki personal gameplay record (weapon pair, Skill slots, Art/Skill personal ranks)", | |
| 867 | + "url": "https://www.xenoserieswiki.org/wiki/Alexa/Gameplay", | |
| 868 | + "edition": "both" | |
| 869 | + }, | |
| 870 | + { | |
| 871 | + "label": "DE party-member build guide by Stuart98", | |
| 872 | + "url": "https://www.reddit.com/r/Xenoblade_Chronicles/comments/1jnyxkz/a_guide_to_xenoblade_x_de_party_member_builds/", | |
| 873 | + "edition": "DE" | |
| 874 | + }, | |
| 875 | + { | |
| 876 | + "label": "2015 GameFAQs party-member build thread", | |
| 877 | + "url": "https://gamefaqs.gamespot.com/boards/701151-xenoblade-chronicles-x/73179135", | |
| 878 | + "edition": "XCX" | |
| 879 | + }, | |
| 880 | + { | |
| 881 | + "label": "Arms Manufacturer story locks and R&D tier facts", | |
| 882 | + "url": "https://www.xenoserieswiki.org/wiki/Arms_Manufacturer", | |
| 883 | + "edition": "both" | |
| 884 | + }, | |
| 885 | + { | |
| 886 | + "label": "Armor / maker traits and weight details", | |
| 887 | + "url": "https://xenoblade.fandom.com/wiki/Candid_%26_Credible", | |
| 888 | + "edition": "both" | |
| 889 | + }, | |
| 890 | + { | |
| 891 | + "label": "Assault Rifle Arts TP costs and weapon models", | |
| 892 | + "url": "https://xenoblade.fandom.com/wiki/Assault_Rifle", | |
| 893 | + "edition": "XCX" | |
| 894 | + }, | |
| 895 | + { | |
| 896 | + "label": "Javelin Arts TP costs and weapon models", | |
| 897 | + "url": "https://xenoblade.fandom.com/wiki/Javelin", | |
| 898 | + "edition": "both" | |
| 899 | + }, | |
| 900 | + { | |
| 901 | + "label": "Representative Lv.55 torso defense/resistance values by armor manufacturer", | |
| 902 | + "url": "https://xenoblade.fandom.com/wiki/Armor", | |
| 903 | + "edition": "XCX" | |
| 904 | + } | |
| 905 | + ] | |
| 906 | + }, | |
| 907 | + "Bozé": { | |
| 908 | + "role": [ | |
| 909 | + "Long-range Electric / Shock setup", | |
| 910 | + "Tir à longue portée électrique / Shock" | |
| 911 | + ], | |
| 912 | + "rationale": [ | |
| 913 | + "Arcing Horn lowers Electric Resistance, Trident Buster inflicts Shock; Electric Boost, Conductive Strike and Knock ’n’ Shock support this package. Eagle Eye boosts ranged accuracy/attack. Shock-dependent value falls against resistance/immunity; no evidence supports universal top-tier claims.", | |
| 914 | + "Arcing Horn baisse la résistance électrique, Trident Buster applique Shock ; Electric Boost, Conductive Strike et Knock ’n’ Shock soutiennent le package. Eagle Eye améliore précision/attaque à distance. Valeur Shock réduite contre résistance/immunité ; aucune preuve d’une supériorité universelle." | |
| 915 | + ], | |
| 916 | + "arts": [ | |
| 917 | + "Arcing Horn", | |
| 918 | + "Eagle Eye", | |
| 919 | + "Sidewinder", | |
| 920 | + "Shrapnel", | |
| 921 | + "Trident Buster", | |
| 922 | + "Hair Trigger", | |
| 923 | + "Hawkeye", | |
| 924 | + "Overwhelm" | |
| 925 | + ], | |
| 926 | + "skills": [ | |
| 927 | + "Electric Boost", | |
| 928 | + "Conductive Strike", | |
| 929 | + "Knock 'n' Shock" | |
| 930 | + ], | |
| 931 | + "artSubstitutes": [ | |
| 932 | + "Spiral Horn", | |
| 933 | + "Raijin", | |
| 934 | + "Vortex", | |
| 935 | + "First Down", | |
| 936 | + "Intercept" | |
| 937 | + ], | |
| 938 | + "skillSubstitutes": [ | |
| 939 | + "Master Edge", | |
| 940 | + "Killshot", | |
| 941 | + "Electric Guard", | |
| 942 | + "Quick Reload", | |
| 943 | + "TP Overdrive" | |
| 944 | + ], | |
| 945 | + "equipment": { | |
| 946 | + "weapons": [ | |
| 947 | + "Candid & Credible Bolide Electric Javelin (Lv.60 312 damage/2.5 s/155 TP) + Trigger Electric Sniper Rifle (Lv.60 112 damage/4 s/5 ammo/7 TP). Fixed-electric Arts retain their attribute.", | |
| 948 | + "Javelin électrique Bolide C&C (niv. 60 : 312 dégâts/2,5 s/155 PT) + fusil de précision électrique Trigger (112 dégâts/4 s/5 munitions/7 PT). Arts électriques fixes gardent leur attribut." | |
| 949 | + ], | |
| 950 | + "armor": [ | |
| 951 | + "Candid & Credible Light Wear: target piece-specific Electric Res/Max TP traits; representative Lv.55 torso Breaker has Defense 60, Electric +20, Gravity −5. Heavy Bulwark raises Defense to 100 but Gravity falls to −15. Light does not grant mobility; favor these verified resistances/traits for the encounter rather than assuming a universal best weight. [Armor table](https://xenoblade.fandom.com/wiki/Armor).", | |
| 952 | + "Armure légère C&C : viser les traits résistance électrique/PT max sur certaines pièces ; torse Breaker niv. 55 : Défense 60, Électricité +20, Gravité −5. Bulwark lourd monte à Défense 100 mais descend à Gravité −15. Le léger ne confère pas de mobilité ; comparer ces résistances/traits selon l’ennemi plutôt que supposer un poids idéal. [Table armure](https://xenoblade.fandom.com/wiki/Armor)." | |
| 953 | + ], | |
| 954 | + "availability": [ | |
| 955 | + "C&C unlocks after Chapter 5; Light Wear AM level 2, Heavy level 3. Earlier fallback: Sakuraba physical Javelin/Sniper Rifle; fixed-electric Arts remain electric. Keep fixed build even against Shock-resistant targets.", | |
| 956 | + "C&C après chapitre 5 ; armure légère niveau fabricant 2, lourde 3. Alternative antérieure : Javelin/fusil de précision physiques Sakuraba ; Arts électriques fixes inchangés. Garder le build fixe contre ennemis résistants à Shock." | |
| 957 | + ] | |
| 958 | + }, | |
| 959 | + "sources": [ | |
| 960 | + { | |
| 961 | + "label": "Xeno Series Wiki personal gameplay record (weapon pair, Skill slots, Art/Skill personal ranks)", | |
| 962 | + "url": "https://www.xenoserieswiki.org/wiki/Boz%C3%A9/Gameplay", | |
| 963 | + "edition": "both" | |
| 964 | + }, | |
| 965 | + { | |
| 966 | + "label": "DE party-member build guide by Stuart98", | |
| 967 | + "url": "https://www.reddit.com/r/Xenoblade_Chronicles/comments/1jnyxkz/a_guide_to_xenoblade_x_de_party_member_builds/", | |
| 968 | + "edition": "DE" | |
| 969 | + }, | |
| 970 | + { | |
| 971 | + "label": "2015 GameFAQs party-member build thread", | |
| 972 | + "url": "https://gamefaqs.gamespot.com/boards/701151-xenoblade-chronicles-x/73179135", | |
| 973 | + "edition": "XCX" | |
| 974 | + }, | |
| 975 | + { | |
| 976 | + "label": "Arms Manufacturer story locks and R&D tier facts", | |
| 977 | + "url": "https://www.xenoserieswiki.org/wiki/Arms_Manufacturer", | |
| 978 | + "edition": "both" | |
| 979 | + }, | |
| 980 | + { | |
| 981 | + "label": "Armor / maker traits and weight details", | |
| 982 | + "url": "https://xenoblade.fandom.com/wiki/Candid_%26_Credible", | |
| 983 | + "edition": "both" | |
| 984 | + }, | |
| 985 | + { | |
| 986 | + "label": "Javelin Arts TP costs and weapon models", | |
| 987 | + "url": "https://xenoblade.fandom.com/wiki/Javelin", | |
| 988 | + "edition": "both" | |
| 989 | + }, | |
| 990 | + { | |
| 991 | + "label": "Sniper Rifle Arts TP costs and weapon models", | |
| 992 | + "url": "https://xenoblade.fandom.com/wiki/Sniper_Rifle", | |
| 993 | + "edition": "both" | |
| 994 | + }, | |
| 995 | + { | |
| 996 | + "label": "Representative Lv.55 torso defense/resistance values by armor manufacturer", | |
| 997 | + "url": "https://xenoblade.fandom.com/wiki/Armor", | |
| 998 | + "edition": "XCX" | |
| 999 | + } | |
| 1000 | + ] | |
| 1001 | + }, | |
| 1002 | + "Celica": { | |
| 1003 | + "role": [ | |
| 1004 | + "Ether debuff / Potential Dual Guns DPS with defense", | |
| 1005 | + "Débuff Éther / DPS Potentiel aux Deux armes avec défense" | |
| 1006 | + ], | |
| 1007 | + "rationale": [ | |
| 1008 | + "Black Butterfly and Black Bane are Knife Arts with fixed Ether damage; Black Butterfly applies Ether Res Down, supporting Black Bane’s debuff scaling. Zero Zero/Executioner use weapon damage on Dual Guns; Ghostwalker adds survival. Full Specs and Executioner are the only TP Arts. Absorber Skin supplies non-TP Barrier. Sleep is fragile in party AI [editorial].", | |
| 1009 | + "Black Butterfly et Black Bane sont des Arts Couteau à dégâts Éther fixes ; Black Butterfly baisse résistance Éther et prépare Black Bane. Zero Zero/Executioner utilisent dégâts d’arme aux Deux armes ; Ghostwalker protège. Full Specs et Executioner sont les seuls Arts PT. Absorber Skin apporte Barrière sans PT. Sommeil fragile en IA de groupe [éditorial]." | |
| 1010 | + ], | |
| 1011 | + "arts": [ | |
| 1012 | + "Black Butterfly", | |
| 1013 | + "Black Bane", | |
| 1014 | + "Full Specs", | |
| 1015 | + "Zero Zero", | |
| 1016 | + "Ghostwalker", | |
| 1017 | + "Primer", | |
| 1018 | + "Executioner", | |
| 1019 | + "Absorber Skin" | |
| 1020 | + ], | |
| 1021 | + "skills": [ | |
| 1022 | + "Steady Hand", | |
| 1023 | + "Inner Search", | |
| 1024 | + "Mindscape" | |
| 1025 | + ], | |
| 1026 | + "artSubstitutes": [ | |
| 1027 | + "Sliding Slinger", | |
| 1028 | + "Screamer", | |
| 1029 | + "Violent Streak" | |
| 1030 | + ], | |
| 1031 | + "skillSubstitutes": [ | |
| 1032 | + "Aura Burst", | |
| 1033 | + "Fleet Feet", | |
| 1034 | + "Gentle Approach", | |
| 1035 | + "Feather Touch", | |
| 1036 | + "Red Zone" | |
| 1037 | + ], | |
| 1038 | + "equipment": { | |
| 1039 | + "weapons": [ | |
| 1040 | + "Meredith & Co. Ether Pistolia Dual Guns (Lv.60 24 damage/2.0 s/6 ammo/2 TP) for weapon-damage Zero Zero/Executioner; Ether Pugio Knife (56 damage/1.0 s/60 TP). Critical correction: Black Butterfly is Knife-only, fixed Ether; Ether Dual Guns neither equip it nor boost its listed damage.", | |
| 1041 | + "Deux armes Éther Pistolia Meredith & Co. (niv. 60 : 24 dégâts/2 s/6 munitions/2 PT) pour Zero Zero/Executioner à dégâts d’arme ; couteau Éther Pugio (56 dégâts/1 s/60 PT). Correction : Black Butterfly est Couteau uniquement, Éther fixe ; les Deux armes Éther ne l’équipent ni n’augmentent ses dégâts." | |
| 1042 | + ], | |
| 1043 | + "armor": [ | |
| 1044 | + "Orphean Light Wear: Yii head may have Potential Up/Potential Boost; other slots can supply Max HP/TP, Evasion, Overdrive traits. Representative Lv.55 torso Yimsel has Defense 40 and Gravity +20; C&C Light Breaker has Defense 60, Electric +20 and Gravity −5. Target actual traits by piece; shop stock contains only a subset. [Armor table](https://xenoblade.fandom.com/wiki/Armor).", | |
| 1045 | + "Armure légère Orphean : couvre-chef Yii peut porter Potential Up/Potential Boost ; autres pièces PV/PT max, esquive, traits Overdrive. Torse Yimsel niv. 55 : Défense 40, Gravité +20 ; Breaker C&C léger : Défense 60, Électricité +20, Gravité −5. Vérifier les traits réels ; boutique limitée. [Table armure](https://xenoblade.fandom.com/wiki/Armor)." | |
| 1046 | + ], | |
| 1047 | + "availability": [ | |
| 1048 | + "Meredith unlocks after Chapter 4. Orphean armor requires Rescue at the Ensconced Citadel and AM level 2 Light Wear; C&C unlocks after Chapter 5 and also needs level 2 Light Wear. Earlier fallback: Sakuraba-compatible Dual Guns/Knife and current armor; fixed Ether Arts stay Ether.", | |
| 1049 | + "Meredith après chapitre 4. Armure Orphean après Rescue at the Ensconced Citadel et niveau fabricant 2 (léger) ; C&C après chapitre 5 et niveau 2. Alternative : Deux armes/Couteau Sakuraba et armure actuelle ; Arts Éther fixes inchangés." | |
| 1050 | + ] | |
| 1051 | + }, | |
| 1052 | + "sources": [ | |
| 1053 | + { | |
| 1054 | + "label": "Xeno Series Wiki personal gameplay record (weapon pair, Skill slots, Art/Skill personal ranks)", | |
| 1055 | + "url": "https://www.xenoserieswiki.org/wiki/Celica/Gameplay", | |
| 1056 | + "edition": "both" | |
| 1057 | + }, | |
| 1058 | + { | |
| 1059 | + "label": "DE party-member build guide by Stuart98", | |
| 1060 | + "url": "https://www.reddit.com/r/Xenoblade_Chronicles/comments/1jnyxkz/a_guide_to_xenoblade_x_de_party_member_builds/", | |
| 1061 | + "edition": "DE" | |
| 1062 | + }, | |
| 1063 | + { | |
| 1064 | + "label": "2015 GameFAQs party-member build thread", | |
| 1065 | + "url": "https://gamefaqs.gamespot.com/boards/701151-xenoblade-chronicles-x/73179135", | |
| 1066 | + "edition": "XCX" | |
| 1067 | + }, | |
| 1068 | + { | |
| 1069 | + "label": "Arms Manufacturer story locks and R&D tier facts", | |
| 1070 | + "url": "https://www.xenoserieswiki.org/wiki/Arms_Manufacturer", | |
| 1071 | + "edition": "both" | |
| 1072 | + }, | |
| 1073 | + { | |
| 1074 | + "label": "Armor / maker traits and weight details", | |
| 1075 | + "url": "https://xenoblade.fandom.com/wiki/Orphean_Technologies", | |
| 1076 | + "edition": "both" | |
| 1077 | + }, | |
| 1078 | + { | |
| 1079 | + "label": "Nintendo Life article excerpt says build still coming soon", | |
| 1080 | + "url": "https://www.nintendolife.com/guides/xenoblade-chronicles-x-best-combat-builds-for-all-characters", | |
| 1081 | + "edition": "XCX" | |
| 1082 | + }, | |
| 1083 | + { | |
| 1084 | + "label": "Meredith manufacturer / Ether weapon models", | |
| 1085 | + "url": "https://xenoblade.fandom.com/wiki/Meredith_%26_Co.", | |
| 1086 | + "edition": "XCX" | |
| 1087 | + }, | |
| 1088 | + { | |
| 1089 | + "label": "Dual Guns Arts TP costs and weapon models", | |
| 1090 | + "url": "https://xenoblade.fandom.com/wiki/Dual_Guns", | |
| 1091 | + "edition": "both" | |
| 1092 | + }, | |
| 1093 | + { | |
| 1094 | + "label": "Knife Arts TP costs and weapon models", | |
| 1095 | + "url": "https://xenoblade.fandom.com/wiki/Knife", | |
| 1096 | + "edition": "both" | |
| 1097 | + }, | |
| 1098 | + { | |
| 1099 | + "label": "Representative Lv.55 torso defense/resistance values by armor manufacturer", | |
| 1100 | + "url": "https://xenoblade.fandom.com/wiki/Armor", | |
| 1101 | + "edition": "XCX" | |
| 1102 | + } | |
| 1103 | + ] | |
| 1104 | + }, | |
| 1105 | + "Frye": { | |
| 1106 | + "role": [ | |
| 1107 | + "Thermal ranged mob clearer / aura-assisted TP economy", | |
| 1108 | + "Nettoyeur thermique à distance / économie PT avec aura" | |
| 1109 | + ], | |
| 1110 | + "rationale": [ | |
| 1111 | + "Missile Volley lowers Thermal Res; Thermal Payload adds toppled-target damage. Defensive Stance supplies an Aura so Bullet Twister/Tornado Blade can gain TP; Cool Off consumes an Aura to return TP. DE guide warns Frye is less reliable against bosses and AI/skill fit is imperfect. Two TP Arts only.", | |
| 1112 | + "Missile Volley baisse résistance thermique ; Thermal Payload profite des cibles renversées. Defensive Stance fournit une aura pour Bullet Twister/Tornado Blade ; Cool Off la consomme pour rendre des PT. Guide DE juge Frye moins fiable contre boss et son IA/compétences imparfaites. Deux Arts PT maximum." | |
| 1113 | + ], | |
| 1114 | + "arts": [ | |
| 1115 | + "Missile Volley", | |
| 1116 | + "Bullet Twister", | |
| 1117 | + "Thermal Payload", | |
| 1118 | + "Defensive Stance", | |
| 1119 | + "Bullet Storm", | |
| 1120 | + "Cool Off", | |
| 1121 | + "Burning Slash", | |
| 1122 | + "Tornado Blade" | |
| 1123 | + ], | |
| 1124 | + "skills": [ | |
| 1125 | + "Machine Gunner", | |
| 1126 | + "Trauma Tension", | |
| 1127 | + "Mighty Muscle" | |
| 1128 | + ], | |
| 1129 | + "artSubstitutes": [ | |
| 1130 | + "Rising Blade" | |
| 1131 | + ], | |
| 1132 | + "skillSubstitutes": [ | |
| 1133 | + "Unwavering Courage", | |
| 1134 | + "Iron Knuckle", | |
| 1135 | + "Rising Renewal", | |
| 1136 | + "Weapon Guard", | |
| 1137 | + "Blazing Auto" | |
| 1138 | + ], | |
| 1139 | + "equipment": { | |
| 1140 | + "weapons": [ | |
| 1141 | + "Nopon Commerce Guild Ratatatta Thermal Gatling (Lv.60 20 damage/6.7 s/48 ammo/1 TP) for inherited-weapon Gatling Arts; Six Stars Glaive Thermal Longsword (Lv.60 204 damage/2.0 s/210 TP; Glaive II 216/180 TP) for weapon-damage Tornado Blade. Burning Slash is Longsword-only, fixed Thermal; Gatling attribute cannot affect it.", | |
| 1142 | + "Gatling thermique Ratatatta Nopon Commerce Guild (niv. 60 : 20 dégâts/6,7 s/48 munitions/1 PT) pour Arts Gatling à dégâts d’arme ; épée longue thermique Glaive Six Stars (204 dégâts/2 s/210 PT ; Glaive II 216/180 PT) pour Tornado Blade. Burning Slash est Épée longue uniquement, thermique fixe ; la Gatling ne l’affecte pas." | |
| 1143 | + ], | |
| 1144 | + "armor": [ | |
| 1145 | + "Orphean Light Wear for documented high evasion, matching Frye’s high personal Dodge coefficient and ranged-mob role. Representative Lv.55 torso Yimsel has Defense 40 and Gravity +20; C&C Light Breaker alternative is Defense 60, Electric +20, Gravity −5. Target HP/Evasion/Max-TP by slot; weight is not universal BIS. [Armor table](https://xenoblade.fandom.com/wiki/Armor).", | |
| 1146 | + "Armure légère Orphean pour esquive élevée, cohérente avec Frye à distance. Torse Yimsel niv. 55 : Défense 40, Gravité +20 ; alternative Breaker léger C&C : Défense 60, Électricité +20, Gravité −5. Cibler PV/esquive/PT max ; aucun poids n’est meilleur universel. [Table armure](https://xenoblade.fandom.com/wiki/Armor)." | |
| 1147 | + ], | |
| 1148 | + "availability": [ | |
| 1149 | + "Nopon unlocks after BFFs; Six Stars after A Challenger Approaches. Orphean armor requires Rescue at the Ensconced Citadel and AM level 2 for Light Wear; C&C Chapter 5/AM level 2 is fallback. Earlier weapon fallback: Sakuraba physical Gatling/Longsword; fixed Thermal Arts remain thermal. Lv.60 values are catalogue comparisons, not Frye’s guaranteed story gear.", | |
| 1150 | + "Nopon après BFFs ; Six Stars après A Challenger Approaches. Armure Orphean après Rescue at the Ensconced Citadel et niveau fabricant 2 ; alternative C&C après chapitre 5/niveau 2. Armes physiques Sakuraba avant accès ; Arts thermiques fixes inchangés. Stats niv. 60 de comparaison catalogue, pas équipement d’histoire garanti." | |
| 1151 | + ] | |
| 1152 | + }, | |
| 1153 | + "sources": [ | |
| 1154 | + { | |
| 1155 | + "label": "Xeno Series Wiki personal gameplay record (weapon pair, Skill slots, Art/Skill personal ranks)", | |
| 1156 | + "url": "https://www.xenoserieswiki.org/wiki/Frye/Gameplay", | |
| 1157 | + "edition": "both" | |
| 1158 | + }, | |
| 1159 | + { | |
| 1160 | + "label": "DE party-member build guide by Stuart98", | |
| 1161 | + "url": "https://www.reddit.com/r/Xenoblade_Chronicles/comments/1jnyxkz/a_guide_to_xenoblade_x_de_party_member_builds/", | |
| 1162 | + "edition": "DE" | |
| 1163 | + }, | |
| 1164 | + { | |
| 1165 | + "label": "2015 GameFAQs party-member build thread", | |
| 1166 | + "url": "https://gamefaqs.gamespot.com/boards/701151-xenoblade-chronicles-x/73179135", | |
| 1167 | + "edition": "XCX" | |
| 1168 | + }, | |
| 1169 | + { | |
| 1170 | + "label": "Arms Manufacturer story locks and R&D tier facts", | |
| 1171 | + "url": "https://www.xenoserieswiki.org/wiki/Arms_Manufacturer", | |
| 1172 | + "edition": "both" | |
| 1173 | + }, | |
| 1174 | + { | |
| 1175 | + "label": "Armor / maker traits and weight details", | |
| 1176 | + "url": "https://xenoblade.fandom.com/wiki/Orphean_Technologies", | |
| 1177 | + "edition": "both" | |
| 1178 | + }, | |
| 1179 | + { | |
| 1180 | + "label": "Nintendo Life article excerpt says build still coming soon", | |
| 1181 | + "url": "https://www.nintendolife.com/guides/xenoblade-chronicles-x-best-combat-builds-for-all-characters", | |
| 1182 | + "edition": "XCX" | |
| 1183 | + }, | |
| 1184 | + { | |
| 1185 | + "label": "Gatling Gun Arts TP costs and weapon models", | |
| 1186 | + "url": "https://xenoblade.fandom.com/wiki/Gatling_Gun", | |
| 1187 | + "edition": "both" | |
| 1188 | + }, | |
| 1189 | + { | |
| 1190 | + "label": "Longsword Arts TP costs and weapon models", | |
| 1191 | + "url": "https://xenoblade.fandom.com/wiki/Longsword", | |
| 1192 | + "edition": "both" | |
| 1193 | + }, | |
| 1194 | + { | |
| 1195 | + "label": "Representative Lv.55 torso defense/resistance values by armor manufacturer", | |
| 1196 | + "url": "https://xenoblade.fandom.com/wiki/Armor", | |
| 1197 | + "edition": "XCX" | |
| 1198 | + } | |
| 1199 | + ] | |
| 1200 | + }, | |
| 1201 | + "Ga Jiarg": { | |
| 1202 | + "role": [ | |
| 1203 | + "Editorial AI ground role: debuff-aware melee/Beam striker with Topple and status spread.", | |
| 1204 | + "Rôle éditorial pour l'IA au sol : attaquant mêlée/Beam exploitant les débuffs, Topple et leur propagation." | |
| 1205 | + ], | |
| 1206 | + "rationale": [ | |
| 1207 | + "Exactly two TP spenders: Astrolibrium and Sky Sunder. Starfall Blossom generates TP; Astrolibrium boosts Beam; Subterfuge lowers debuff resistance; Bahamut Wave spreads debuffs; Sky Sunder scales with debuffs. Astral Heal is displaced from Game8's three-TP candidate bar.", | |
| 1208 | + "Deux Arts consomment des PT : Astrolibrium et Sky Sunder. Starfall Blossom génère des PT; Astrolibrium renforce Beam; Subterfuge réduit la résistance aux débuffs; Bahamut Wave les propage; Sky Sunder gagne en dégâts selon les débuffs. Astral Heal sort de la barre Game8 qui dépassait le plafond de trois Arts à PT." | |
| 1209 | + ], | |
| 1210 | + "arts": [ | |
| 1211 | + "Starfall Blossom", | |
| 1212 | + "Starfall Rondo", | |
| 1213 | + "Astrolibrium", | |
| 1214 | + "Sky Sunder", | |
| 1215 | + "Subterfuge", | |
| 1216 | + "Bahamut Wave", | |
| 1217 | + "Gravity Blast", | |
| 1218 | + "Gravity Cloak" | |
| 1219 | + ], | |
| 1220 | + "skills": [ | |
| 1221 | + "Beam Boost", | |
| 1222 | + "Aura Assault", | |
| 1223 | + "Supreme Sword", | |
| 1224 | + "Tactical Analyst" | |
| 1225 | + ], | |
| 1226 | + "artSubstitutes": [ | |
| 1227 | + "Starfall Blade", | |
| 1228 | + "Beam Barrage", | |
| 1229 | + "Myopic Screen", | |
| 1230 | + "Astral Heal", | |
| 1231 | + "Novalibrium", | |
| 1232 | + "Ether Blast", | |
| 1233 | + "Pathogen Blast", | |
| 1234 | + "Galactic Cataclysm" | |
| 1235 | + ], | |
| 1236 | + "skillSubstitutes": [ | |
| 1237 | + "Inner Search", | |
| 1238 | + "Healing Touch", | |
| 1239 | + "Appendage Erosion", | |
| 1240 | + "Fast Forward" | |
| 1241 | + ], | |
| 1242 | + "equipment": { | |
| 1243 | + "weapons": [ | |
| 1244 | + "Keep Ga's Sakuraba Destroyer Raygun, a Beam model at level 40 with 96 attack. His default Six Stars Pulverizing Lightblade II is Thermal, level 40 with 140 attack. For a Beam weapon-attribute Photon Saber Art, use a Beam drop such as Sakuraba Advanced Iron Saber, minimum level 3; it is not guaranteed shop stock. Otherwise keep the legal default. Sky Sunder itself remains Beam because its Art attribute is fixed.", | |
| 1245 | + "Garder le Destroyer Raygun Beam de Sakuraba, niveau 40 et 96 d'attaque. Le Pulverizing Lightblade II Six Stars par défaut est Thermal, niveau 40 et 140 d'attaque. Pour un Art Photon Saber à attribut Beam, utiliser un modèle Beam obtenu en drop, tel que l'Advanced Iron Saber Sakuraba, niveau minimum 3; il n'est pas garanti en boutique. Sinon garder l'arme par défaut légale. Sky Sunder reste Beam car son attribut est fixe." | |
| 1246 | + ], | |
| 1247 | + "armor": [ | |
| 1248 | + "Candid & Credible Light Reginal Breaker at level 55: Potential Up VI, Defense 60, Electric +20, Beam −5, Gravity −5, 360,000 credits. Add Beam Resistance Up if Beam defense matters. Alternative for Beam defense: Grenada Light Combat Norak, level 15, Ranged Attack Up II, Defense 13, Beam +20, Gravity −10, 19,200 credits.", | |
| 1249 | + "Reginal Breaker Light de Candid & Credible au niveau 55 : Potential Up VI, Defense 60, Electric +20, Beam −5, Gravity −5, 360 000 crédits. Ajouter Beam Resistance Up si la défense Beam compte. Alternative défensive : Combat Norak Light de Grenada, niveau 15, Ranged Attack Up II, Defense 13, Beam +20, Gravity −10, 19 200 crédits." | |
| 1250 | + ], | |
| 1251 | + "availability": [ | |
| 1252 | + "Ga's default Destroyer Raygun is already Beam and meets his starting level 40. The default Photon Saber is Thermal. A Beam Saber alternative such as Advanced Iron Saber is a random enemy drop, not guaranteed shop stock; if unavailable, keep the default because Sky Sunder remains Beam. Candid & Credible unlocks after Chapter 5; its Light line needs manufacturer rank 2. Heavy Combat Bulwark is level 15 but requires C&C rank 3. Grenada is available from the start; Light stock needs rank 2.", | |
| 1253 | + "Le Destroyer Raygun Beam par défaut de Ga Jiarg est utilisable dès son niveau 40. Son Photon Saber par défaut est Thermal. L'alternative Beam Advanced Iron Saber est un drop ennemi, pas un stock garanti en boutique; si indisponible, garder l'arme par défaut car Sky Sunder reste Beam. Candid & Credible se débloque après le chapitre 5; sa gamme Light demande le rang fabricant 2. Combat Bulwark Heavy demande le niveau 15 et le rang C&C 3. Grenada est disponible dès le début; sa gamme Light demande le rang 2." | |
| 1254 | + ] | |
| 1255 | + }, | |
| 1256 | + "sources": [ | |
| 1257 | + { | |
| 1258 | + "label": "Game8 Ga Jiarg Best Build", | |
| 1259 | + "url": "https://game8.co/games/Xenoblade-Chronicles-X/archives/513831", | |
| 1260 | + "edition": "DE" | |
| 1261 | + }, | |
| 1262 | + { | |
| 1263 | + "label": "Xeno Series Wiki Ga Jiarg gameplay progression", | |
| 1264 | + "url": "https://www.xenoserieswiki.org/wiki/Ga_Jiarg/Gameplay", | |
| 1265 | + "edition": "DE" | |
| 1266 | + }, | |
| 1267 | + { | |
| 1268 | + "label": "Xeno Series Wiki Arms Manufacturer gates", | |
| 1269 | + "url": "https://www.xenoserieswiki.org/wiki/Arms_Manufacturer", | |
| 1270 | + "edition": "both" | |
| 1271 | + }, | |
| 1272 | + { | |
| 1273 | + "label": "Xeno Series Wiki armor rules", | |
| 1274 | + "url": "https://www.xenoserieswiki.org/wiki/Armor_(XCX)", | |
| 1275 | + "edition": "both" | |
| 1276 | + }, | |
| 1277 | + { | |
| 1278 | + "label": "Game8 Photon Saber catalog", | |
| 1279 | + "url": "https://game8.co/games/Xenoblade-Chronicles-X/archives/504904", | |
| 1280 | + "edition": "DE" | |
| 1281 | + }, | |
| 1282 | + { | |
| 1283 | + "label": "Game8 Raygun catalog", | |
| 1284 | + "url": "https://game8.co/games/Xenoblade-Chronicles-X/archives/504897", | |
| 1285 | + "edition": "DE" | |
| 1286 | + }, | |
| 1287 | + { | |
| 1288 | + "label": "Xeno Series Wiki Destroyer Raygun", | |
| 1289 | + "url": "https://www.xenoserieswiki.org/wiki/Destroyer_Raygun", | |
| 1290 | + "edition": "both" | |
| 1291 | + }, | |
| 1292 | + { | |
| 1293 | + "label": "Xeno Series Wiki Pulverizing Lightblade II", | |
| 1294 | + "url": "https://www.xenoserieswiki.org/wiki/Pulverizing_Lightblade_II", | |
| 1295 | + "edition": "both" | |
| 1296 | + }, | |
| 1297 | + { | |
| 1298 | + "label": "Xeno Series Wiki Advanced Iron Saber", | |
| 1299 | + "url": "https://www.xenoserieswiki.org/wiki/Advanced_Iron_Saber", | |
| 1300 | + "edition": "both" | |
| 1301 | + }, | |
| 1302 | + { | |
| 1303 | + "label": "Game8 Reginal Breaker", | |
| 1304 | + "url": "https://game8.co/games/Xenoblade-Chronicles-X/archives/510343", | |
| 1305 | + "edition": "DE" | |
| 1306 | + }, | |
| 1307 | + { | |
| 1308 | + "label": "Game8 Potential Up", | |
| 1309 | + "url": "https://game8.co/games/Xenoblade-Chronicles-X/archives/505711", | |
| 1310 | + "edition": "DE" | |
| 1311 | + }, | |
| 1312 | + { | |
| 1313 | + "label": "Game8 Combat Bulwark", | |
| 1314 | + "url": "https://game8.co/games/Xenoblade-Chronicles-X/archives/510204", | |
| 1315 | + "edition": "DE" | |
| 1316 | + }, | |
| 1317 | + { | |
| 1318 | + "label": "Game8 Combat Norak", | |
| 1319 | + "url": "https://game8.co/games/Xenoblade-Chronicles-X/archives/510471", | |
| 1320 | + "edition": "DE" | |
| 1321 | + } | |
| 1322 | + ] | |
| 1323 | + }, | |
| 1324 | + "Hope": { | |
| 1325 | + "role": [ | |
| 1326 | + "Editorial AI ground role: ranged support/healer, debuff cleanse, barrier, Virus, party TP.", | |
| 1327 | + "Rôle éditorial pour l'IA au sol : support/soins à distance, dissipation des débuffs, barrière, Virus et PT pour l'équipe." | |
| 1328 | + ], | |
| 1329 | + "rationale": [ | |
| 1330 | + "Exactly two TP spenders: Astral Protection and Energy Source. Repair cleanses and heals; Absorber Skin grants a barrier; Astral Protection adds resistances and healing; Energy Source supplies party TP; Stellar Ray, Shooting Star, Tacit Censure, and Black Butterfly add ranged/debuff utility. Servant Sacrifice is excluded: its Control/Heroic Tale prerequisite cannot be guaranteed under the two-TP progression cap.", | |
| 1331 | + "Deux Arts consomment des PT : Astral Protection et Energy Source. Repair dissipe les débuffs et soigne; Absorber Skin donne une barrière; Astral Protection ajoute résistances et soins; Energy Source fournit des PT à l'équipe; Stellar Ray, Shooting Star, Tacit Censure et Black Butterfly ajoutent dégâts et débuffs à distance. Servant Sacrifice est exclu : son prérequis Control/Heroic Tale ne peut pas être garanti avec le plafond de deux Arts à PT pendant toute la progression." | |
| 1332 | + ], | |
| 1333 | + "arts": [ | |
| 1334 | + "Repair", | |
| 1335 | + "Absorber Skin", | |
| 1336 | + "Stellar Ray", | |
| 1337 | + "Shooting Star", | |
| 1338 | + "Tacit Censure", | |
| 1339 | + "Black Butterfly", | |
| 1340 | + "Astral Protection", | |
| 1341 | + "Energy Source" | |
| 1342 | + ], | |
| 1343 | + "skills": [ | |
| 1344 | + "Inner Search", | |
| 1345 | + "Knight's Soul", | |
| 1346 | + "TP Overdrive" | |
| 1347 | + ], | |
| 1348 | + "artSubstitutes": [ | |
| 1349 | + "Brainjack", | |
| 1350 | + "Full Specs", | |
| 1351 | + "Secondary Speed", | |
| 1352 | + "Dispel", | |
| 1353 | + "Starlight Kick" | |
| 1354 | + ], | |
| 1355 | + "skillSubstitutes": [ | |
| 1356 | + "Buff Heal", | |
| 1357 | + "Well-Weathered", | |
| 1358 | + "Mechanoid Slayer", | |
| 1359 | + "King's Decree", | |
| 1360 | + "Supreme Sword" | |
| 1361 | + ], | |
| 1362 | + "equipment": { | |
| 1363 | + "weapons": [ | |
| 1364 | + "Keep Sakuraba Knife + Psycho Launchers. Hope starts with Chrome Knife and Warrior Launchers, both Physical Sakuraba models. Her selected support/status Arts do not require a matching weapon attribute; preserve native types and upgrade item stats/TP gain.", | |
| 1365 | + "Garder Knife + Psycho Launchers Sakuraba. Hope commence avec Chrome Knife et Warrior Launchers, deux modèles physiques de Sakuraba. Ses Arts de soutien/statut ne demandent pas d'attribut d'arme particulier; conserver les types natifs et améliorer les stats/le gain de PT." | |
| 1366 | + ], | |
| 1367 | + "armor": [ | |
| 1368 | + "Medium torso baseline due to Hope's −20% Max HP. Candid & Credible Forza Encaser at level 45 gives Potential Up V, Defense 67, Electric +20, Beam −5, Gravity −10. Add Max HP Up on another compatible armor piece. Lower-level C&C Heavy Combat Bulwark at level 15 gives Potential Up II and Defense 40; use only as a story fallback, not a universal Heavy recommendation.", | |
| 1369 | + "Base recommandée : torse Medium à cause du −20% de Max HP de Hope. Le Forza Encaser Medium de Candid & Credible, niveau 45, donne Potential Up V, Defense 67, Electric +20, Beam −5, Gravity −10. Ajouter Max HP Up sur une autre pièce compatible. Le Combat Bulwark Heavy C&C, niveau 15, donne Potential Up II et Defense 40; le réserver à une solution de progression, pas à une recommandation Heavy universelle." | |
| 1370 | + ], | |
| 1371 | + "availability": [ | |
| 1372 | + "Candid & Credible unlocks after Chapter 5; Forza Encaser requires level 45 and is Medium Wear. Combat Bulwark requires level 15 and Heavy stock at maker rank 3. Before C&C unlocks, use a level-appropriate Sakuraba Medium torso and a Potential Up or Max HP Up augment. Grenada Light arm pieces can add Max TP Up, but Light stock requires maker rank 2 and is optional because the Skills already support TP.", | |
| 1373 | + "Candid & Credible se débloque après le chapitre 5; Forza Encaser demande le niveau 45 et est Medium. Combat Bulwark demande le niveau 15 et le stock Heavy au rang 3 du fabricant. Avant le déblocage C&C, utiliser un torse Sakuraba Medium adapté au niveau avec un augment Potential Up ou Max HP Up. Les bras Light Grenada peuvent ajouter Max TP Up, mais le stock Light demande le rang 2 et reste facultatif puisque les Skills soutiennent déjà les PT." | |
| 1374 | + ] | |
| 1375 | + }, | |
| 1376 | + "sources": [ | |
| 1377 | + { | |
| 1378 | + "label": "Game8 Hope Best Build", | |
| 1379 | + "url": "https://game8.co/games/Xenoblade-Chronicles-X/archives/507443", | |
| 1380 | + "edition": "DE" | |
| 1381 | + }, | |
| 1382 | + { | |
| 1383 | + "label": "Nintendo Life all-character builds", | |
| 1384 | + "url": "https://www.nintendolife.com/guides/xenoblade-chronicles-x-best-combat-builds-for-all-characters", | |
| 1385 | + "edition": "DE" | |
| 1386 | + }, | |
| 1387 | + { | |
| 1388 | + "label": "Xeno Series Wiki Hope gameplay", | |
| 1389 | + "url": "https://www.xenoserieswiki.org/wiki/Hope/Gameplay", | |
| 1390 | + "edition": "both" | |
| 1391 | + }, | |
| 1392 | + { | |
| 1393 | + "label": "Xeno Series Wiki Chrome Knife", | |
| 1394 | + "url": "https://www.xenoserieswiki.org/wiki/Chrome_Knife", | |
| 1395 | + "edition": "both" | |
| 1396 | + }, | |
| 1397 | + { | |
| 1398 | + "label": "Xeno Series Wiki Warrior Launchers", | |
| 1399 | + "url": "https://www.xenoserieswiki.org/wiki/Warrior_Launchers", | |
| 1400 | + "edition": "both" | |
| 1401 | + }, | |
| 1402 | + { | |
| 1403 | + "label": "Xeno Series Wiki Forza Encaser", | |
| 1404 | + "url": "https://www.xenoserieswiki.org/wiki/Forza_Encaser", | |
| 1405 | + "edition": "both" | |
| 1406 | + }, | |
| 1407 | + { | |
| 1408 | + "label": "Xeno Series Wiki Brainjack", | |
| 1409 | + "url": "https://www.xenoserieswiki.org/wiki/Brainjack", | |
| 1410 | + "edition": "both" | |
| 1411 | + }, | |
| 1412 | + { | |
| 1413 | + "label": "Xeno Series Wiki Servant Sacrifice dependency", | |
| 1414 | + "url": "https://www.xenoserieswiki.org/wiki/Servant_Sacrifice", | |
| 1415 | + "edition": "both" | |
| 1416 | + }, | |
| 1417 | + { | |
| 1418 | + "label": "Game8 Combat Bulwark", | |
| 1419 | + "url": "https://game8.co/games/Xenoblade-Chronicles-X/archives/510204", | |
| 1420 | + "edition": "DE" | |
| 1421 | + }, | |
| 1422 | + { | |
| 1423 | + "label": "Xeno Series Wiki Armor", | |
| 1424 | + "url": "https://www.xenoserieswiki.org/wiki/Armor_(XCX)", | |
| 1425 | + "edition": "both" | |
| 1426 | + }, | |
| 1427 | + { | |
| 1428 | + "label": "Xeno Series Wiki Arms Manufacturer", | |
| 1429 | + "url": "https://www.xenoserieswiki.org/wiki/Arms_Manufacturer", | |
| 1430 | + "edition": "both" | |
| 1431 | + } | |
| 1432 | + ] | |
| 1433 | + }, | |
| 1434 | + "Liesel": { | |
| 1435 | + "role": [ | |
| 1436 | + "Editorial AI ground role: ranged/electric combo striker with Shock, Electric Res Down, and Decoy.", | |
| 1437 | + "Rôle éditorial pour l'IA au sol : attaquante combo à distance/électricité avec Shock, Electric Res Down et Decoy." | |
| 1438 | + ], | |
| 1439 | + "rationale": [ | |
| 1440 | + "Exactly two TP spenders: Trident Buster and Early Bird. Arcing Horn and Trident Buster are fixed Electric Arts. Knock 'n' Shock can inflict Shock with the existing Melee Art Arcing Horn; Conductive Strike then has a Shock provider from its rank-13 unlock, before Trident Buster arrives at rank 15. Trigger Happy supports ranged combos. Effect Charge still has an AI sequencing caveat.", | |
| 1441 | + "Deux Arts consomment des PT : Trident Buster et Early Bird. Arcing Horn et Trident Buster sont des Arts Electric fixes. Knock 'n' Shock peut appliquer Shock avec l'Art mêlée Arcing Horn; Conductive Strike dispose donc d'une source de Shock dès son déblocage au rang 13, avant Trident Buster au rang 15. Trigger Happy soutient les combos à distance. Effect Charge garde une réserve sur le séquençage par l'IA." | |
| 1442 | + ], | |
| 1443 | + "arts": [ | |
| 1444 | + "Spiral Horn", | |
| 1445 | + "Arcing Horn", | |
| 1446 | + "Effect Charge", | |
| 1447 | + "Trident Buster", | |
| 1448 | + "Primer", | |
| 1449 | + "Early Bird", | |
| 1450 | + "Violent Streak", | |
| 1451 | + "Ghostwalker" | |
| 1452 | + ], | |
| 1453 | + "skills": [ | |
| 1454 | + "Knock 'n' Shock", | |
| 1455 | + "Conductive Strike", | |
| 1456 | + "Trigger Happy" | |
| 1457 | + ], | |
| 1458 | + "artSubstitutes": [ | |
| 1459 | + "Sliding Slinger", | |
| 1460 | + "Overwhelm", | |
| 1461 | + "Raijin", | |
| 1462 | + "Speed Demon", | |
| 1463 | + "Executioner", | |
| 1464 | + "Mind Shift", | |
| 1465 | + "Combat Limbo", | |
| 1466 | + "Hair Trigger" | |
| 1467 | + ], | |
| 1468 | + "skillSubstitutes": [ | |
| 1469 | + "Electric Boost", | |
| 1470 | + "Quick Reload" | |
| 1471 | + ], | |
| 1472 | + "equipment": { | |
| 1473 | + "weapons": [ | |
| 1474 | + "Keep Dual Guns + Javelin. Grenada's Warrior Gemels are Beam and its Chrome Parce Javelin is Physical. For an Electric weapon-damage Javelin, switch to Candid & Credible Chrome Bolide, an Electric Javelin with 156 attack at level 20. C&C unlocks after Chapter 5. Before then, Chrome Parce remains legal; Arcing Horn and Trident Buster still deal Electric because their Art attribute is fixed.", | |
| 1475 | + "Garder Dual Guns + Javelin. Les Warrior Gemels Grenada sont Beam et son Javelin Chrome Parce est Physical. Pour un Javelin Electric dont les Arts à dégâts d'arme profitent de cet attribut, passer au Chrome Bolide Electric de Candid & Credible, 156 d'attaque au niveau 20. C&C se débloque après le chapitre 5. Avant, Chrome Parce reste légal; Arcing Horn et Trident Buster restent Electric car leur attribut appartient à l'Art." | |
| 1476 | + ], | |
| 1477 | + "armor": [ | |
| 1478 | + "Grenada Light Combat Norak torso, level 15: Ranged Attack Up II, Defense 13, Beam +20, Gravity −10, three trait upgrades, 19,200 credits. This matches Liesel's +30% ranged attack. Light favors attribute resistance, but has less defense. If Grenada has not reached maker rank 2, use its Medium first-set stock at rank 1 and add Ranged Attack Up in a compatible augment slot.", | |
| 1479 | + "Torse Grenada Light Combat Norak, niveau 15 : Ranged Attack Up II, Defense 13, Beam +20, Gravity −10, trois améliorations de traits, 19 200 crédits. Cela correspond au +30% de ranged attack de Liesel. Light favorise les résistances d'attribut mais offre moins de défense. Si Grenada n'a pas atteint le rang fabricant 2, utiliser son stock Medium initial au rang 1 et ajouter Ranged Attack Up dans un emplacement d'augment compatible." | |
| 1480 | + ], | |
| 1481 | + "availability": [ | |
| 1482 | + "Grenada is one of the initial manufacturers; its Light line needs maker rank 2. Candid & Credible unlocks after Chapter 5; Chrome Bolide is usable from level 20. Before C&C opens, use Grenada Chrome Parce, level 20, Physical, TP Gain 120. Do not describe this fallback as an Electric weapon.", | |
| 1483 | + "Grenada est disponible dès le début; sa gamme Light demande le rang fabricant 2. Candid & Credible se débloque après le chapitre 5; Chrome Bolide est utilisable dès le niveau 20. Avant l'ouverture de C&C, utiliser Grenada Chrome Parce, niveau 20, Physical, TP Gain 120. Ne pas présenter cette solution comme une arme Electric." | |
| 1484 | + ] | |
| 1485 | + }, | |
| 1486 | + "sources": [ | |
| 1487 | + { | |
| 1488 | + "label": "Game8 Liesel Best Build", | |
| 1489 | + "url": "https://game8.co/games/Xenoblade-Chronicles-X/archives/507864", | |
| 1490 | + "edition": "DE" | |
| 1491 | + }, | |
| 1492 | + { | |
| 1493 | + "label": "Nintendo Life all-character builds, Liesel marked Coming soon", | |
| 1494 | + "url": "https://www.nintendolife.com/guides/xenoblade-chronicles-x-best-combat-builds-for-all-characters", | |
| 1495 | + "edition": "DE" | |
| 1496 | + }, | |
| 1497 | + { | |
| 1498 | + "label": "Xeno Series Wiki Liesel gameplay progression", | |
| 1499 | + "url": "https://www.xenoserieswiki.org/wiki/Liesel/Gameplay", | |
| 1500 | + "edition": "DE" | |
| 1501 | + }, | |
| 1502 | + { | |
| 1503 | + "label": "Xeno Series Wiki Warrior Gemels", | |
| 1504 | + "url": "https://www.xenoserieswiki.org/wiki/Warrior_Gemels", | |
| 1505 | + "edition": "both" | |
| 1506 | + }, | |
| 1507 | + { | |
| 1508 | + "label": "Xeno Series Wiki Chrome Parce", | |
| 1509 | + "url": "https://www.xenoserieswiki.org/wiki/Chrome_Parce", | |
| 1510 | + "edition": "both" | |
| 1511 | + }, | |
| 1512 | + { | |
| 1513 | + "label": "Xeno Series Wiki Chrome Bolide", | |
| 1514 | + "url": "https://www.xenoserieswiki.org/wiki/Chrome_Bolide", | |
| 1515 | + "edition": "both" | |
| 1516 | + }, | |
| 1517 | + { | |
| 1518 | + "label": "Xeno Series Wiki Knock 'n' Shock", | |
| 1519 | + "url": "https://www.xenoserieswiki.org/wiki/Knock_%27n%27_Shock", | |
| 1520 | + "edition": "both" | |
| 1521 | + }, | |
| 1522 | + { | |
| 1523 | + "label": "Xeno Series Wiki Conductive Strike", | |
| 1524 | + "url": "https://www.xenoserieswiki.org/wiki/Conductive_Strike", | |
| 1525 | + "edition": "both" | |
| 1526 | + }, | |
| 1527 | + { | |
| 1528 | + "label": "Xeno Series Wiki Quick Reload", | |
| 1529 | + "url": "https://www.xenoserieswiki.org/wiki/Quick_Reload", | |
| 1530 | + "edition": "both" | |
| 1531 | + }, | |
| 1532 | + { | |
| 1533 | + "label": "Game8 Javelin catalog", | |
| 1534 | + "url": "https://game8.co/games/Xenoblade-Chronicles-X/archives/504900", | |
| 1535 | + "edition": "DE" | |
| 1536 | + }, | |
| 1537 | + { | |
| 1538 | + "label": "Game8 Combat Norak", | |
| 1539 | + "url": "https://game8.co/games/Xenoblade-Chronicles-X/archives/510471", | |
| 1540 | + "edition": "DE" | |
| 1541 | + }, | |
| 1542 | + { | |
| 1543 | + "label": "Xeno Series Wiki Arms Manufacturer", | |
| 1544 | + "url": "https://www.xenoserieswiki.org/wiki/Arms_Manufacturer", | |
| 1545 | + "edition": "both" | |
| 1546 | + } | |
| 1547 | + ] | |
| 1548 | + }, | |
| 1549 | + "Murderess": { | |
| 1550 | + "role": [ | |
| 1551 | + "Editorial AI ground role: melee pressure, Stun, and defensive Aura.", | |
| 1552 | + "Rôle éditorial pour l'IA au sol : pression mêlée, Stun et Aura défensive." | |
| 1553 | + ], | |
| 1554 | + "rationale": [ | |
| 1555 | + "Exactly two TP spenders: Astral Protection and Killing Machine. Keep Seventh Edge, Side Slash, Back Slash, Electric Surge, Jetstream, and Stellar Ray as non-TP Arts. Hundred Shells is the guide's third TP Art and is ordered only as a substitute; its rear-position bonus is not assumed reliable for AI.", | |
| 1556 | + "Deux Arts consomment des PT : Astral Protection et Killing Machine. Garder Seventh Edge, Side Slash, Back Slash, Electric Surge, Jetstream et Stellar Ray comme Arts sans coût en PT. Hundred Shells est le troisième Art à PT du guide; il n'est qu'un substitut ordonné, et son bonus arrière n'est pas supposé fiable avec l'IA." | |
| 1557 | + ], | |
| 1558 | + "arts": [ | |
| 1559 | + "Seventh Edge", | |
| 1560 | + "Side Slash", | |
| 1561 | + "Back Slash", | |
| 1562 | + "Electric Surge", | |
| 1563 | + "Jetstream", | |
| 1564 | + "Stellar Ray", | |
| 1565 | + "Astral Protection", | |
| 1566 | + "Killing Machine" | |
| 1567 | + ], | |
| 1568 | + "skills": [ | |
| 1569 | + "Aura Assault", | |
| 1570 | + "High Tension", | |
| 1571 | + "Hellhound" | |
| 1572 | + ], | |
| 1573 | + "artSubstitutes": [ | |
| 1574 | + "Lightning Cloak", | |
| 1575 | + "Shadowrunner", | |
| 1576 | + "Shooting Star", | |
| 1577 | + "Thirsty Edge", | |
| 1578 | + "Gravity Lunge", | |
| 1579 | + "Hundred Shells" | |
| 1580 | + ], | |
| 1581 | + "skillSubstitutes": [ | |
| 1582 | + "Agile Gunslinger", | |
| 1583 | + "Boosted Bullets", | |
| 1584 | + "Mechanoid Slayer", | |
| 1585 | + "Trigger Happy", | |
| 1586 | + "Lifeline" | |
| 1587 | + ], | |
| 1588 | + "equipment": { | |
| 1589 | + "weapons": [ | |
| 1590 | + "Keep Sakuraba Physical Dual Swords + Psycho Launchers. Murderess starts with Chrome Blades and Warrior Launchers, both Sakuraba Physical models. Electric Surge and Jetstream keep their Art damage attribute with those weapons. Upgrade within the native types.", | |
| 1591 | + "Garder Dual Swords Physical + Psycho Launchers Sakuraba. Murderess commence avec Chrome Blades et Warrior Launchers, deux modèles physiques Sakuraba. Electric Surge et Jetstream gardent l'attribut de dégâts propre à l'Art avec ces armes. Améliorer les types natifs." | |
| 1592 | + ], | |
| 1593 | + "armor": [ | |
| 1594 | + "Medium Sakuraba Combat Bodywear at level 15 gives Melee Attack Up II, Defense 28, Physical +10, Gravity −15. Murderess has −5% Max HP, so use Medium as the story baseline. At level 55, Light Sakuraba Reginal Vest gives Melee Attack Up VI, Defense 57, Physical +10, Gravity −10, 360,000 credits; use it when survival is adequate.", | |
| 1595 | + "Le Combat Bodywear Medium Sakuraba au niveau 15 donne Melee Attack Up II, Defense 28, Physical +10, Gravity −15. Murderess a −5% de Max HP; utiliser Medium comme base de progression. Au niveau 55, le Reginal Vest Light Sakuraba donne Melee Attack Up VI, Defense 57, Physical +10, Gravity −10, 360 000 crédits; le choisir si sa survie est suffisante." | |
| 1596 | + ], | |
| 1597 | + "availability": [ | |
| 1598 | + "Sakuraba is available from the start. Combat Bodywear is level 15 and Medium stock is maker rank 1. Reginal Vest is level 55 and Light stock needs maker rank 2. Light trades lower base defense for better attribute resistance; do not choose it solely for the higher trait rank if Murderess is being incapacitated.", | |
| 1599 | + "Sakuraba est disponible dès le début. Combat Bodywear demande le niveau 15 et le stock Medium est au rang fabricant 1. Reginal Vest demande le niveau 55 et le stock Light le rang 2. Light échange une défense de base plus faible contre de meilleures résistances d'attribut; ne pas le choisir uniquement pour son trait supérieur si Murderess est mise hors combat." | |
| 1600 | + ] | |
| 1601 | + }, | |
| 1602 | + "sources": [ | |
| 1603 | + { | |
| 1604 | + "label": "Game8 Murderess Best Build", | |
| 1605 | + "url": "https://game8.co/games/Xenoblade-Chronicles-X/archives/507456", | |
| 1606 | + "edition": "DE" | |
| 1607 | + }, | |
| 1608 | + { | |
| 1609 | + "label": "Nintendo Life all-character builds", | |
| 1610 | + "url": "https://www.nintendolife.com/guides/xenoblade-chronicles-x-best-combat-builds-for-all-characters", | |
| 1611 | + "edition": "DE" | |
| 1612 | + }, | |
| 1613 | + { | |
| 1614 | + "label": "Xeno Series Wiki Murderess gameplay progression", | |
| 1615 | + "url": "https://www.xenoserieswiki.org/wiki/Murderess/Gameplay", | |
| 1616 | + "edition": "both" | |
| 1617 | + }, | |
| 1618 | + { | |
| 1619 | + "label": "Xeno Series Wiki Chrome Blades", | |
| 1620 | + "url": "https://www.xenoserieswiki.org/wiki/Chrome_Blades", | |
| 1621 | + "edition": "both" | |
| 1622 | + }, | |
| 1623 | + { | |
| 1624 | + "label": "Xeno Series Wiki Warrior Launchers", | |
| 1625 | + "url": "https://www.xenoserieswiki.org/wiki/Warrior_Launchers", | |
| 1626 | + "edition": "both" | |
| 1627 | + }, | |
| 1628 | + { | |
| 1629 | + "label": "Game8 Combat Bodywear", | |
| 1630 | + "url": "https://game8.co/games/Xenoblade-Chronicles-X/archives/510709", | |
| 1631 | + "edition": "DE" | |
| 1632 | + }, | |
| 1633 | + { | |
| 1634 | + "label": "Game8 Reginal Vest", | |
| 1635 | + "url": "https://game8.co/games/Xenoblade-Chronicles-X/archives/510523", | |
| 1636 | + "edition": "DE" | |
| 1637 | + }, | |
| 1638 | + { | |
| 1639 | + "label": "Xeno Series Wiki Armor", | |
| 1640 | + "url": "https://www.xenoserieswiki.org/wiki/Armor_(XCX)", | |
| 1641 | + "edition": "both" | |
| 1642 | + } | |
| 1643 | + ] | |
| 1644 | + }, | |
| 1645 | + "Nagi": { | |
| 1646 | + "role": [ | |
| 1647 | + "Editorial AI ground role: durable melee striker with Physical/Thermal setup, one TP finisher, and party TP on Overdrive.", | |
| 1648 | + "Rôle éditorial pour l'IA au sol : attaquant mêlée résistant avec préparation Physical/Thermal, un finisseur à PT et des PT d'équipe en Overdrive." | |
| 1649 | + ], | |
| 1650 | + "rationale": [ | |
| 1651 | + "Exactly two TP spenders: Blossom Dance and Enhanced Stand. This keeps the TP finisher and a healing Aura that supports Yamato Spirit, while dropping guide candidate Incendiary Edge as a third TP Art. Missile Volley and Burning Slash retain Thermal Res Down; Magnum Edge supports the weapon-damage melee chain. Bullet Storm fills the eighth slot without TP cost.", | |
| 1652 | + "Deux Arts consomment des PT : Blossom Dance et Enhanced Stand. La barre garde le finisseur à PT et une Aura de soins qui soutient Yamato Spirit, mais écarte Incendiary Edge, troisième Art à PT du guide. Missile Volley et Burning Slash gardent la séquence Thermal Res Down; Magnum Edge soutient les Arts mêlée à dégâts d'arme. Bullet Storm remplit le huitième emplacement sans consommer de PT." | |
| 1653 | + ], | |
| 1654 | + "arts": [ | |
| 1655 | + "Rising Blade", | |
| 1656 | + "True Stream Edge", | |
| 1657 | + "Blossom Dance", | |
| 1658 | + "Magnum Edge", | |
| 1659 | + "Enhanced Stand", | |
| 1660 | + "Missile Volley", | |
| 1661 | + "Burning Slash", | |
| 1662 | + "Bullet Storm" | |
| 1663 | + ], | |
| 1664 | + "skills": [ | |
| 1665 | + "Steel Flesh", | |
| 1666 | + "Mighty Muscle", | |
| 1667 | + "Yamato Spirit", | |
| 1668 | + "Fortified Flesh", | |
| 1669 | + "Grand Procession" | |
| 1670 | + ], | |
| 1671 | + "artSubstitutes": [ | |
| 1672 | + "Thermal Payload", | |
| 1673 | + "Cool Off", | |
| 1674 | + "Defensive Stance", | |
| 1675 | + "Offensive Stance", | |
| 1676 | + "Samurai Soul", | |
| 1677 | + "Incendiary Edge" | |
| 1678 | + ], | |
| 1679 | + "skillSubstitutes": [ | |
| 1680 | + "Trauma Tension", | |
| 1681 | + "Rising Renewal", | |
| 1682 | + "Machine Gunner" | |
| 1683 | + ], | |
| 1684 | + "equipment": { | |
| 1685 | + "weapons": [ | |
| 1686 | + "Use Physical Longsword + Gatling Gun weapon-damage lines. Sakuraba's Sword and Machine series supply these native types. Nagi starts with Physical Signature Glaive: Fledgling, whose recorded maker is Unknown, and Physical Sakuraba Ophidian Machine. His Thermal Arts already have fixed Thermal damage.", | |
| 1687 | + "Utiliser des lignes d'armes Physical Longsword + Gatling Gun pour les Arts à dégâts d'arme. Les séries Sword et Machine de Sakuraba offrent ces types natifs. Nagi commence avec le Signature Glaive: Fledgling Physical, dont le fabricant est indiqué Unknown, et le Gatling Gun Ophidian Machine Physical de Sakuraba. Ses Arts Thermal ont déjà des dégâts Thermal fixes." | |
| 1688 | + ], | |
| 1689 | + "armor": [ | |
| 1690 | + "Nagi's +25% Max HP and HP Skills support Light armor once gear is strong enough. At level 55, Sakuraba Light Reginal Vest gives Melee Attack Up VI, Defense 57, Physical +10, Gravity −10, 360,000 credits. Story fallback: Medium Combat Bodywear at level 15, Melee Attack Up II, Defense 28, Physical +10, Gravity −15, 21,000 credits.", | |
| 1691 | + "Le +25% de Max HP et les Skills de vie de Nagi permettent l'armure Light lorsque son équipement est assez solide. Au niveau 55, le Reginal Vest Light Sakuraba donne Melee Attack Up VI, Defense 57, Physical +10, Gravity −10, 360 000 crédits. Solution de progression : Combat Bodywear Medium niveau 15, Melee Attack Up II, Defense 28, Physical +10, Gravity −15, 21 000 crédits." | |
| 1692 | + ], | |
| 1693 | + "availability": [ | |
| 1694 | + "Sakuraba is available from the start. Combat Bodywear is level 15 and Medium stock is maker rank 1. Reginal Vest is level 55; Light stock needs maker rank 2. Light has less base defense but better attribute resistance than Heavy. Keep the Physical default Longsword if the maker's Sword stock is unavailable.", | |
| 1695 | + "Sakuraba est disponible dès le début. Combat Bodywear demande le niveau 15 et le stock Medium est au rang fabricant 1. Reginal Vest demande le niveau 55; le stock Light demande le rang 2. Light offre moins de défense de base mais de meilleures résistances d'attribut que Heavy. Garder le Longsword Physical par défaut si la série Sword du fabricant n'est pas disponible." | |
| 1696 | + ] | |
| 1697 | + }, | |
| 1698 | + "sources": [ | |
| 1699 | + { | |
| 1700 | + "label": "Game8 Nagi Best Build", | |
| 1701 | + "url": "https://game8.co/games/Xenoblade-Chronicles-X/archives/513229", | |
| 1702 | + "edition": "DE" | |
| 1703 | + }, | |
| 1704 | + { | |
| 1705 | + "label": "Nintendo Life all-character builds, Nagi marked Coming soon", | |
| 1706 | + "url": "https://www.nintendolife.com/guides/xenoblade-chronicles-x-best-combat-builds-for-all-characters", | |
| 1707 | + "edition": "DE" | |
| 1708 | + }, | |
| 1709 | + { | |
| 1710 | + "label": "Xeno Series Wiki Nagi gameplay progression", | |
| 1711 | + "url": "https://www.xenoserieswiki.org/wiki/Nagi/Gameplay", | |
| 1712 | + "edition": "both" | |
| 1713 | + }, | |
| 1714 | + { | |
| 1715 | + "label": "Xeno Series Wiki Signature Glaive: Fledgling", | |
| 1716 | + "url": "https://www.xenoserieswiki.org/wiki/Signature_Glaive:_Fledgling", | |
| 1717 | + "edition": "both" | |
| 1718 | + }, | |
| 1719 | + { | |
| 1720 | + "label": "Xeno Series Wiki Ophidian Machine", | |
| 1721 | + "url": "https://www.xenoserieswiki.org/wiki/Ophidian_Machine", | |
| 1722 | + "edition": "both" | |
| 1723 | + }, | |
| 1724 | + { | |
| 1725 | + "label": "Game8 Longsword catalog", | |
| 1726 | + "url": "https://game8.co/games/Xenoblade-Chronicles-X/archives/504899", | |
| 1727 | + "edition": "DE" | |
| 1728 | + }, | |
| 1729 | + { | |
| 1730 | + "label": "Game8 Combat Bodywear", | |
| 1731 | + "url": "https://game8.co/games/Xenoblade-Chronicles-X/archives/510709", | |
| 1732 | + "edition": "DE" | |
| 1733 | + }, | |
| 1734 | + { | |
| 1735 | + "label": "Game8 Reginal Vest", | |
| 1736 | + "url": "https://game8.co/games/Xenoblade-Chronicles-X/archives/510523", | |
| 1737 | + "edition": "DE" | |
| 1738 | + }, | |
| 1739 | + { | |
| 1740 | + "label": "Xeno Series Wiki Arms Manufacturer", | |
| 1741 | + "url": "https://www.xenoserieswiki.org/wiki/Arms_Manufacturer", | |
| 1742 | + "edition": "both" | |
| 1743 | + } | |
| 1744 | + ] | |
| 1745 | + }, | |
| 1746 | + "Phog": { | |
| 1747 | + "role": [ | |
| 1748 | + "AI close-range combo attacker with melee-position damage and signature Stun/Launch. Utility via Ghostwalker; one TP burst plus TP aura.", | |
| 1749 | + "Attaquant IA rapproché en combos, dégâts positionnels mêlée et étourdissement/lancement signature. Ghostwalker apporte utilitaire ; burst TP et Aura TP." | |
| 1750 | + ], | |
| 1751 | + "rationale": [ | |
| 1752 | + "AI melee combo DPS; retain physical/stun signature, utility, decoy; avoid competing risky HP-drain Arts.", | |
| 1753 | + "Damage physique en combos pour l’IA ; conserver l’Art signature physique/étourdissement, utilitaire et leurre ; éviter les Arts risqués à drain de PV. Blood Sacrifice génère PT (sans coût PT) mais reste exclu : sacrifier la moitié des PV courants est risqué pour l’IA." | |
| 1754 | + ], | |
| 1755 | + "arts": [ | |
| 1756 | + "Back Slash", | |
| 1757 | + "Sliding Slinger", | |
| 1758 | + "Sky High", | |
| 1759 | + "Side Slash", | |
| 1760 | + "Shadowrunner", | |
| 1761 | + "Primer", | |
| 1762 | + "Ghostwalker", | |
| 1763 | + "Hundred Shells" | |
| 1764 | + ], | |
| 1765 | + "skills": [ | |
| 1766 | + "Background Noise", | |
| 1767 | + "Master Edge", | |
| 1768 | + "Phantom Counter" | |
| 1769 | + ], | |
| 1770 | + "artSubstitutes": [ | |
| 1771 | + "Upper Hand", | |
| 1772 | + "Electric Surge", | |
| 1773 | + "Combat Limbo" | |
| 1774 | + ], | |
| 1775 | + "skillSubstitutes": [ | |
| 1776 | + "Agile Gunslinger", | |
| 1777 | + "Steady Hand", | |
| 1778 | + "Crisis Catalyst" | |
| 1779 | + ], | |
| 1780 | + "equipment": { | |
| 1781 | + "weapons": [ | |
| 1782 | + "Sakuraba Industries Dual Swords (physical Blades line, e.g. Iron Blades) + Physical Dual Guns. Prioritize Ranged Attack/accuracy for ranged physical Sky High; Melee Attack applies to Dual-Sword Side Slash/Back Slash; TP stats for Shadowrunner/Hundred Shells. Candid & Credible is not asserted as a weapon alternative where its line-specific element is uncertain.", | |
| 1783 | + "Dual Swords Sakuraba Industries (série physique Blades, p. ex. Iron Blades) + Dual Guns physiques. Prioriser Attaque à distance/précision pour Sky High physique à distance ; Attaque mêlée vaut pour Side Slash/Back Slash Dual Swords ; bonus PT pour Shadowrunner/Hundred Shells. Candid & Credible n’est pas présenté comme alternative d’arme, attribut par ligne incertain." | |
| 1784 | + ], | |
| 1785 | + "armor": [ | |
| 1786 | + "Sakuraba Medium Wear at AM L1: supports frontline physical role; verified DE Combat Bodywear is Medium, min L15, defense 28, Physical +10, Gravity −15, Melee Attack Up II. Candid & Credible Light is an optional AM L2 set (Screen head Potential Up; arm Max TP/Melee Attack; leg Evasion/Max TP). Heavy Combat Bulwark is optional only for defense, after C&C unlock + AM L3: L15, defense 40, Potential Up II, Electric +20, Beam −5, Gravity −15.", | |
| 1787 | + "Sakuraba Medium Wear AM L1 : soutient front physique ; Combat Bodywear DE vérifié : Medium, niv. min 15, défense 28, Physique +10, Gravité −15, Melee Attack Up II. Candid & Credible Light optionnel AM L2 (Screen tête Potential Up ; bras Max TP/Melee Attack ; jambes Evasion/Max TP). Heavy Combat Bulwark seulement pour défense après déblocage C&C + AM L3 : niv.15, défense 40, Potential Up II, Electric +20, Beam −5, Gravity −15." | |
| 1788 | + ], | |
| 1789 | + "availability": [ | |
| 1790 | + "Sakuraba Medium Wear is AM L1. Sakuraba Light requires AM L2. C&C unlocks after Chapter 5; its Light/Heavy armor require AM L2/L3 respectively. Match elemental resistances on item card.", | |
| 1791 | + "Sakuraba Medium Wear AM L1. Sakuraba Light exige AM L2. C&C se débloque après chapitre 5 ; armures Light/Heavy exigent AM L2/L3. Vérifier résistances élémentaires sur fiche." | |
| 1792 | + ] | |
| 1793 | + }, | |
| 1794 | + "sources": [ | |
| 1795 | + { | |
| 1796 | + "label": "Game8 Phog Best Build; DE, 2025", | |
| 1797 | + "url": "https://game8.co/games/Xenoblade-Chronicles-X/archives/507892", | |
| 1798 | + "edition": "DE" | |
| 1799 | + }, | |
| 1800 | + { | |
| 1801 | + "label": "Game8 Phog Arts, Skills, recruitment; DE, 2025", | |
| 1802 | + "url": "https://game8.co/games/Xenoblade-Chronicles-X/archives/500611", | |
| 1803 | + "edition": "DE" | |
| 1804 | + }, | |
| 1805 | + { | |
| 1806 | + "label": "Sakuraba manufacturer offerings; weapon types/physical stability, armor traits and catalog", | |
| 1807 | + "url": "https://xenoblade.fandom.com/wiki/Sakuraba_Industries", | |
| 1808 | + "edition": "both" | |
| 1809 | + }, | |
| 1810 | + { | |
| 1811 | + "label": "Candid & Credible armor catalog and traits", | |
| 1812 | + "url": "https://xenoblade.fandom.com/wiki/Candid_%26_Credible", | |
| 1813 | + "edition": "both" | |
| 1814 | + }, | |
| 1815 | + { | |
| 1816 | + "label": "Game8 DE weapon catalog: Dual Swords", | |
| 1817 | + "url": "https://game8.co/games/Xenoblade-Chronicles-X/archives/504901", | |
| 1818 | + "edition": "DE" | |
| 1819 | + }, | |
| 1820 | + { | |
| 1821 | + "label": "Game8 DE weapon catalog: Dual Guns", | |
| 1822 | + "url": "https://game8.co/games/Xenoblade-Chronicles-X/archives/504895", | |
| 1823 | + "edition": "DE" | |
| 1824 | + }, | |
| 1825 | + { | |
| 1826 | + "label": "Game8 DE Combat Bulwark item stats and availability", | |
| 1827 | + "url": "https://game8.co/games/Xenoblade-Chronicles-X/archives/510204", | |
| 1828 | + "edition": "DE" | |
| 1829 | + }, | |
| 1830 | + { | |
| 1831 | + "label": "Game8 DE Sky High page: ranged Dual Guns Art and attack scaling", | |
| 1832 | + "url": "https://game8.co/games/Xenoblade-Chronicles-X/archives/506135", | |
| 1833 | + "edition": "DE" | |
| 1834 | + } | |
| 1835 | + ] | |
| 1836 | + }, | |
| 1837 | + "Yelv": { | |
| 1838 | + "role": [ | |
| 1839 | + "Ground Beam-melee DPS with aura, Debuff Res Down and optional Gravity Res. Do not claim Synchrony contributes on foot.", | |
| 1840 | + "DPS sol Beam mêlée avec Aura, baisse résistance aux altérations et résistance gravité optionnelle. Ne pas attribuer effet au sol à Synchrony." | |
| 1841 | + ], | |
| 1842 | + "rationale": [ | |
| 1843 | + "Ground melee Beam damage with debuff and defense utility. Fixed ground Skills exclude Synchrony; Skell package/pilot bonuses stay separate.", | |
| 1844 | + "Dégâts laser au corps-à-corps au sol, avec affaiblissement et utilitaire défensif. Compétences fixes sol excluent Synchrony ; packages/bénéfices Skell restent séparés." | |
| 1845 | + ], | |
| 1846 | + "arts": [ | |
| 1847 | + "Starfall Blade", | |
| 1848 | + "Starfall Rondo", | |
| 1849 | + "Starfall Blossom", | |
| 1850 | + "Astrolibrium", | |
| 1851 | + "Astral Purge", | |
| 1852 | + "Gravity Cloak", | |
| 1853 | + "Subterfuge", | |
| 1854 | + "Galactic Cataclysm" | |
| 1855 | + ], | |
| 1856 | + "skills": [ | |
| 1857 | + "Beam Boost", | |
| 1858 | + "Supreme Sword", | |
| 1859 | + "Secondary Accelerator" | |
| 1860 | + ], | |
| 1861 | + "artSubstitutes": [ | |
| 1862 | + "Beam Barrage", | |
| 1863 | + "Geolibrium", | |
| 1864 | + "Ether Blast", | |
| 1865 | + "Myopic Screen", | |
| 1866 | + "Astral Heal", | |
| 1867 | + "Master Gunner", | |
| 1868 | + "Novalibrium" | |
| 1869 | + ], | |
| 1870 | + "skillSubstitutes": [ | |
| 1871 | + "High Tension", | |
| 1872 | + "Knight's Soul", | |
| 1873 | + "Inner Search" | |
| 1874 | + ], | |
| 1875 | + "equipment": { | |
| 1876 | + "weapons": [ | |
| 1877 | + "Sakuraba Industries Saber series, Beam attribute. Early model: Advanced Iron Saber (Beam, ATK 40; raw item data identifies Sakuraba MakerID 1 and equipment level 3, and Game8 DE lists the model Beam). Later option: Advanced Cermet Saber (Beam, ATK 140, min L53, random enemy drop). The ordinary Iron Saber is disputed: Game8 DE lists Physical while XSW raw data says Beam; do not rely on that ordinary model. Combat Photon Saber is an automatic Beam fallback only when no weapon item is equipped, not inventory gear.", | |
| 1878 | + "Série Saber Sakuraba Industries, attribut Beam. Modèle précoce : Advanced Iron Saber (Beam, ATK 40 ; données brutes: MakerID Sakuraba 1, niveau équipement 3 ; Game8 DE le liste Beam). Option tardive : Advanced Cermet Saber (Beam, ATK 140, niveau min. 53, drop ennemi aléatoire). Iron Saber ordinaire est disputé : liste Game8 DE Physical vs XSW brut Beam ; ne pas s’appuyer sur ce modèle. Combat Photon Saber est un fallback Beam automatique sans item équipé, pas équipement d’inventaire." | |
| 1879 | + ], | |
| 1880 | + "armor": [ | |
| 1881 | + "Sakuraba Medium Wear at AM L1 for early melee baseline; Light Wear at AM L2 offers Melee Attack Up/Max TP arm traits. Slot-name examples: Goggles/Bodywear/Glove/Footwear (Medium), Visor/Vest/Guard/Boots (Light).", | |
| 1882 | + "Sakuraba Medium Wear AM L1 pour base mêlée précoce ; Light Wear AM L2 offre Melee Attack Up/Max TP sur bras. Noms par slot : Goggles/Bodywear/Glove/Footwear (Medium), Visor/Vest/Guard/Boots (Light)." | |
| 1883 | + ], | |
| 1884 | + "availability": [ | |
| 1885 | + "Advanced Iron Saber is listed Beam by DE Game8 and raw XSW, with MakerID 1/AM L1/equipment level 3 in raw record; exact shop/drop acquisition not verified. Advanced Cermet Saber is random enemy drop, min L53. Ordinary Iron Saber attribute conflicts between Game8 DE (Physical) and XSW raw (Beam); do not rely on it. Combat Photon Saber is auto-fallback if no weapon is equipped, not inventory gear.", | |
| 1886 | + "Advanced Iron Saber est listé Beam par Game8 DE et XSW brut ; données brutes MakerID 1/AM L1/niveau équipement 3 ; acquisition boutique/drop exacte non vérifiée. Advanced Cermet Saber est un drop aléatoire, niv. min 53. Attribut de l’Iron Saber ordinaire contradictoire Game8 DE (Physical) / XSW brut (Beam) ; ne pas s’y fier. Combat Photon Saber est fallback automatique sans arme, pas item d’inventaire." | |
| 1887 | + ] | |
| 1888 | + }, | |
| 1889 | + "sources": [ | |
| 1890 | + { | |
| 1891 | + "label": "Game8 Yelv Best Build; DE, 2025", | |
| 1892 | + "url": "https://game8.co/games/Xenoblade-Chronicles-X/archives/507260", | |
| 1893 | + "edition": "DE" | |
| 1894 | + }, | |
| 1895 | + { | |
| 1896 | + "label": "Sakuraba manufacturer offerings; weapon types/physical stability, armor traits", | |
| 1897 | + "url": "https://xenoblade.fandom.com/wiki/Sakuraba_Industries", | |
| 1898 | + "edition": "both" | |
| 1899 | + }, | |
| 1900 | + { | |
| 1901 | + "label": "Candid & Credible armor catalog and traits", | |
| 1902 | + "url": "https://xenoblade.fandom.com/wiki/Candid_%26_Credible", | |
| 1903 | + "edition": "both" | |
| 1904 | + }, | |
| 1905 | + { | |
| 1906 | + "label": "Game8 DE Photon Saber inventory including Beam variants", | |
| 1907 | + "url": "https://game8.co/games/Xenoblade-Chronicles-X/archives/504904", | |
| 1908 | + "edition": "DE" | |
| 1909 | + }, | |
| 1910 | + { | |
| 1911 | + "label": "Game8 DE Advanced Cermet Saber (Sakuraba, Beam, min level 53)", | |
| 1912 | + "url": "https://game8.co/games/Xenoblade-Chronicles-X/archives/512175", | |
| 1913 | + "edition": "DE" | |
| 1914 | + }, | |
| 1915 | + { | |
| 1916 | + "label": "Game8 DE Raygun inventory", | |
| 1917 | + "url": "https://game8.co/games/Xenoblade-Chronicles-X/archives/504897", | |
| 1918 | + "edition": "DE" | |
| 1919 | + }, | |
| 1920 | + { | |
| 1921 | + "label": "Xeno Series Wiki raw Advanced Iron Saber game record", | |
| 1922 | + "url": "https://www.xenoserieswiki.org/w/index.php?title=Advanced_Iron_Saber&action=raw", | |
| 1923 | + "edition": "both" | |
| 1924 | + }, | |
| 1925 | + { | |
| 1926 | + "label": "XSW raw Iron Saber weapon record (Beam; conflicts with DE Game8 list)", | |
| 1927 | + "url": "https://www.xenoserieswiki.org/w/index.php?title=Iron_Saber&action=raw", | |
| 1928 | + "edition": "both" | |
| 1929 | + }, | |
| 1930 | + { | |
| 1931 | + "label": "XSW Photon Saber model/attribute table", | |
| 1932 | + "url": "https://xenoblade.fandom.com/wiki/Photon_Saber", | |
| 1933 | + "edition": "both" | |
| 1934 | + } | |
| 1935 | + ] | |
| 1936 | + }, | |
| 1937 | + "Mia": { | |
| 1938 | + "role": [ | |
| 1939 | + "Ranged ether/gravity debuffer-support; clears party debuffs, boosts Ether resistance, Topples, applies Debuff Res Down, damage while Aura active.", | |
| 1940 | + "Soutien-affaiblissement Éther/Gravité à distance ; purifie les altérations alliées, augmente résistance Éther, renverse, réduit résistances aux altérations, dégâts sous Aura." | |
| 1941 | + ], | |
| 1942 | + "rationale": [ | |
| 1943 | + "Ranged support/debuffer with Topple, enemy debuff-resistance reduction, party cleanse/resistance, and aura-supported damage.", | |
| 1944 | + "Soutien/affaiblissement à distance avec Chute, baisse de résistance aux altérations, purification/résistance d’équipe et dégâts renforcés par Aura." | |
| 1945 | + ], | |
| 1946 | + "arts": [ | |
| 1947 | + "Full Specs", | |
| 1948 | + "Gravity Cloak", | |
| 1949 | + "Subterfuge", | |
| 1950 | + "Gravity Blast", | |
| 1951 | + "Beam Barrage", | |
| 1952 | + "Myopic Screen", | |
| 1953 | + "Clarity Ray", | |
| 1954 | + "Beam Bomber" | |
| 1955 | + ], | |
| 1956 | + "skills": [ | |
| 1957 | + "Tactical Analyst", | |
| 1958 | + "Ether Boost", | |
| 1959 | + "Inner Search" | |
| 1960 | + ], | |
| 1961 | + "artSubstitutes": [ | |
| 1962 | + "Black Butterfly", | |
| 1963 | + "Screamer", | |
| 1964 | + "Pathogen Blast" | |
| 1965 | + ], | |
| 1966 | + "skillSubstitutes": [ | |
| 1967 | + "Resistant Flesh", | |
| 1968 | + "Gravity Boost", | |
| 1969 | + "Beam Boost" | |
| 1970 | + ], | |
| 1971 | + "equipment": { | |
| 1972 | + "weapons": [ | |
| 1973 | + "Meredith & Co. Ether Radius Raygun + Ether Pugio Knife. Matches Raygun/Knife slots and Ether damage/boost rationale; item model/level variants follow player/AM progression. For temporary shortage, use currently available same-type Raygun/Knife, but do not call it an Ether replacement.", | |
| 1974 | + "Raygun Ether Radius + Knife Ether Pugio Meredith & Co. : types Raygun/Knife et justification dégâts/boost Éther ; modèle/variantes de niveau suivent progression joueur/fabricant. En attendant, utiliser Raygun/Knife disponible même type, sans le qualifier d’alternative Éther." | |
| 1975 | + ], | |
| 1976 | + "armor": [ | |
| 1977 | + "Meredith & Co. Medium Wear at AM L1 (Chapter 4 manufacturer unlock); its armor uses Ether tech/resistance. Light Wear at AM L2 adds Potential Up head, Max TP/ranged-attack arm options and Max TP legs; names: Vitra/Corpus/Chiro/Plantars (Medium), Vizard/Vestis/Armilla/Ocreis (Light).", | |
| 1978 | + "Meredith & Co. Medium Wear AM L1 (fabricant débloqué chapitre 4), armure technologie/résistance Éther. Light Wear AM L2 ajoute Potentiel tête, options Max TP/Attaque distance aux bras, Max TP jambes ; noms : Vitra/Corpus/Chiro/Plantars (Medium), Vizard/Vestis/Armilla/Ocreis (Light)." | |
| 1979 | + ], | |
| 1980 | + "availability": [ | |
| 1981 | + "Meredith unlocks Chapter 4; Medium armor AM L1. Meredith Light requires AM L2. C&C optional later: Chapter 5 + Light AM L2. Armor level still must not exceed Mia’s current level.", | |
| 1982 | + "Meredith débloqué chapitre 4 ; armure Medium AM L1. Meredith Light exige AM L2. C&C optionnel ensuite : chapitre 5 + Light AM L2. Niveau armure ne doit pas dépasser niveau actuel de Mia." | |
| 1983 | + ] | |
| 1984 | + }, | |
| 1985 | + "sources": [ | |
| 1986 | + { | |
| 1987 | + "label": "Game8 Mia Best Build; DE, 2025", | |
| 1988 | + "url": "https://game8.co/games/Xenoblade-Chronicles-X/archives/514627", | |
| 1989 | + "edition": "DE" | |
| 1990 | + }, | |
| 1991 | + { | |
| 1992 | + "label": "Nintendo Life character builds (DE article; Mia consensus summary from search results, article full text unavailable to reader)", | |
| 1993 | + "url": "https://www.nintendolife.com/guides/xenoblade-chronicles-x-best-combat-builds-for-all-characters", | |
| 1994 | + "edition": "DE" | |
| 1995 | + }, | |
| 1996 | + { | |
| 1997 | + "label": "Sakuraba manufacturer offerings; weapon types/physical stability and armor traits", | |
| 1998 | + "url": "https://xenoblade.fandom.com/wiki/Sakuraba_Industries", | |
| 1999 | + "edition": "both" | |
| 2000 | + }, | |
| 2001 | + { | |
| 2002 | + "label": "Candid & Credible armor catalog and traits", | |
| 2003 | + "url": "https://xenoblade.fandom.com/wiki/Candid_%26_Credible", | |
| 2004 | + "edition": "both" | |
| 2005 | + }, | |
| 2006 | + { | |
| 2007 | + "label": "Game8 DE Raygun inventory and attribute options", | |
| 2008 | + "url": "https://game8.co/games/Xenoblade-Chronicles-X/archives/504897", | |
| 2009 | + "edition": "DE" | |
| 2010 | + }, | |
| 2011 | + { | |
| 2012 | + "label": "Game8 DE Knife inventory and attribute options", | |
| 2013 | + "url": "https://game8.co/games/Xenoblade-Chronicles-X/archives/504903", | |
| 2014 | + "edition": "DE" | |
| 2015 | + }, | |
| 2016 | + { | |
| 2017 | + "label": "Meredith & Co. Ether weapon program and Chapter 4 unlock", | |
| 2018 | + "url": "https://xenoblade.fandom.com/wiki/Meredith_%26_Co.", | |
| 2019 | + "edition": "both" | |
| 2020 | + }, | |
| 2021 | + { | |
| 2022 | + "label": "Raygun Ether Radius and Knife Ether Pugio model tables", | |
| 2023 | + "url": "https://xenoblade.fandom.com/wiki/Raygun", | |
| 2024 | + "edition": "both" | |
| 2025 | + }, | |
| 2026 | + { | |
| 2027 | + "label": "Game8 DE C&C armor item stats/weight example", | |
| 2028 | + "url": "https://game8.co/games/Xenoblade-Chronicles-X/archives/510204", | |
| 2029 | + "edition": "DE" | |
| 2030 | + } | |
| 2031 | + ] | |
| 2032 | + }, | |
| 2033 | + "Neilnail": { | |
| 2034 | + "role": [ | |
| 2035 | + "AI hybrid frontline: side/rear melee, Ether damage, Stun and increased allied Blaze/Shock damage, sustain aura.", | |
| 2036 | + "Hybride de première ligne IA : mêlée côté/arrière, dégâts Éther, Étourdissement, dégâts Feu/Électrocution alliés accrus, Aura de maintien." | |
| 2037 | + ], | |
| 2038 | + "rationale": [ | |
| 2039 | + "AI frontline Ether hybrid: side/rear damage, team Blaze/Shock amplification and Astral Protection sustain. Inner Search boosts Potential (TP Art damage and Soul Voice healing) without requiring an Aura; omit Aura Assault since it unlocks before the chosen Astral Protection and is conditional on an active Aura, leaving ranks 9–10 inert.", | |
| 2040 | + "Hybride Éther IA : dégâts côté/arrière, amplification alliée Feu/Électrocution et maintien Astral Protection. Inner Search augmente Potentiel (dégâts des Arts PT et soin Soul Voice) sans Aura ; omettre Aura Assault, débloqué avant Astral Protection et conditionnel à Aura active, afin d’éviter des rangs 9–10 inertes." | |
| 2041 | + ], | |
| 2042 | + "arts": [ | |
| 2043 | + "Side Slash", | |
| 2044 | + "Back Slash", | |
| 2045 | + "Electric Surge", | |
| 2046 | + "Jetstream", | |
| 2047 | + "Conduction Rise", | |
| 2048 | + "Shooting Star", | |
| 2049 | + "Astral Protection", | |
| 2050 | + "Hundred Shells" | |
| 2051 | + ], | |
| 2052 | + "skills": [ | |
| 2053 | + "Ether Boost", | |
| 2054 | + "Knight's Soul", | |
| 2055 | + "Supreme Sword", | |
| 2056 | + "Inner Search" | |
| 2057 | + ], | |
| 2058 | + "artSubstitutes": [ | |
| 2059 | + "Shadowrunner", | |
| 2060 | + "Stellar Ray", | |
| 2061 | + "Lightning Cloak", | |
| 2062 | + "Heroic Tale", | |
| 2063 | + "Upper Hand" | |
| 2064 | + ], | |
| 2065 | + "skillSubstitutes": [ | |
| 2066 | + "Fast Forward" | |
| 2067 | + ], | |
| 2068 | + "equipment": { | |
| 2069 | + "weapons": [ | |
| 2070 | + "Meredith & Co. Ether Ruina II Psycho Launchers + Sakuraba physical Dual Swords (e.g. Iron Blades family). Matches Psycho Launchers + Dual Swords and Ether/weapon Arts. Meridian catalog uses Ether technology; actual AM level/weapon stock gates exact series.", | |
| 2071 | + "Psycho Launchers Ether Ruina II Meredith & Co. + Dual Swords physiques Sakuraba (p. ex. série Iron Blades). Correspond aux Psycho Launchers + Dual Swords et Arts Éther/arme. Technologie Meredith à Éther ; niveau AM/stock peut verrouiller série exacte." | |
| 2072 | + ], | |
| 2073 | + "armor": [ | |
| 2074 | + "Meredith & Co. Medium Wear at AM L1; Ether-resistance profile fits Ether frontline. Light at AM L2 supplies Ether Res Up/Max TP/Ranged Attack Boost options; slot names Vitra/Corpus/Chiro/Plantars (Medium), Vizard/Vestis/Armilla/Ocreis (Light).", | |
| 2075 | + "Meredith & Co. Medium Wear AM L1 ; profil résistance Éther convient front Éther. Light AM L2 fournit options Ether Res Up/Max TP/Ranged Attack Boost ; Vitra/Corpus/Chiro/Plantars (Medium), Vizard/Vestis/Armilla/Ocreis (Light)." | |
| 2076 | + ], | |
| 2077 | + "availability": [ | |
| 2078 | + "Meredith unlocks Chapter 4; its Medium armor is AM L1 and Light is L2. C&C is a later alternative (Chapter 5; Light AM L2). Armor level/stock still follow player and AM progression.", | |
| 2079 | + "Meredith débloqué chapitre 4 ; armure Medium AM L1, Light AM L2. C&C est alternative ultérieure (chapitre 5 ; Light AM L2). Niveau/stock selon progression joueur/fabricant." | |
| 2080 | + ] | |
| 2081 | + }, | |
| 2082 | + "sources": [ | |
| 2083 | + { | |
| 2084 | + "label": "Game8 Neilnail Best Build; DE, 2025", | |
| 2085 | + "url": "https://game8.co/games/Xenoblade-Chronicles-X/archives/507640", | |
| 2086 | + "edition": "DE" | |
| 2087 | + }, | |
| 2088 | + { | |
| 2089 | + "label": "Sakuraba manufacturer offerings; weapon type catalog/armor traits", | |
| 2090 | + "url": "https://xenoblade.fandom.com/wiki/Sakuraba_Industries", | |
| 2091 | + "edition": "both" | |
| 2092 | + }, | |
| 2093 | + { | |
| 2094 | + "label": "Candid & Credible Psycho Launchers/Electric weapon and armor catalog", | |
| 2095 | + "url": "https://xenoblade.fandom.com/wiki/Candid_%26_Credible", | |
| 2096 | + "edition": "both" | |
| 2097 | + }, | |
| 2098 | + { | |
| 2099 | + "label": "Game8 DE Psycho Launchers inventory and Arts", | |
| 2100 | + "url": "https://game8.co/games/Xenoblade-Chronicles-X/archives/504898", | |
| 2101 | + "edition": "DE" | |
| 2102 | + }, | |
| 2103 | + { | |
| 2104 | + "label": "Game8 DE Dual Swords inventory", | |
| 2105 | + "url": "https://game8.co/games/Xenoblade-Chronicles-X/archives/504901", | |
| 2106 | + "edition": "DE" | |
| 2107 | + }, | |
| 2108 | + { | |
| 2109 | + "label": "Meredith & Co. Ether weapon program and Chapter 4 unlock", | |
| 2110 | + "url": "https://xenoblade.fandom.com/wiki/Meredith_%26_Co.", | |
| 2111 | + "edition": "both" | |
| 2112 | + }, | |
| 2113 | + { | |
| 2114 | + "label": "Psycho Launcher Ruina II (Meredith) and Ether attribute table", | |
| 2115 | + "url": "https://xenoblade.fandom.com/wiki/Psycho_Launchers", | |
| 2116 | + "edition": "both" | |
| 2117 | + }, | |
| 2118 | + { | |
| 2119 | + "label": "XSW Aura Assault Skill source: requires equipped Aura", | |
| 2120 | + "url": "https://www.xenoserieswiki.org/w/index.php?title=Aura_Assault&action=raw", | |
| 2121 | + "edition": "both" | |
| 2122 | + }, | |
| 2123 | + { | |
| 2124 | + "label": "XSW Inner Search Skill data: Potential improves TP Arts and Soul Voice healing", | |
| 2125 | + "url": "https://www.xenoserieswiki.org/w/index.php?title=Inner_Search&action=raw", | |
| 2126 | + "edition": "both" | |
| 2127 | + }, | |
| 2128 | + { | |
| 2129 | + "label": "Game8 DE Aura Assault conditional Skill guidance", | |
| 2130 | + "url": "https://game8.co/games/Xenoblade-Chronicles-X/archives/503868", | |
| 2131 | + "edition": "DE" | |
| 2132 | + } | |
| 2133 | + ] | |
| 2134 | + }, | |
| 2135 | + "Al": { | |
| 2136 | + "role": [ | |
| 2137 | + "High-risk melee attacker and party support: Howling Soul provides party buffs/revive; no self-sustain, so retain Steel Flesh and healer synergy.", | |
| 2138 | + "Attaquant mêlée à risque et soutien d’équipe : Howling Soul buff/résurrection ; aucune autonomie de soin, conserver Steel Flesh et synergie avec soigneur." | |
| 2139 | + ], | |
| 2140 | + "rationale": [ | |
| 2141 | + "Melee burst/support; Howling Soul team buff/revive, low-HP Hercules Blow with defensive Skill and ranged utility.", | |
| 2142 | + "Burst mêlée/soutien ; buff/résurrection Howling Soul, Hercules Blow à faible PV, compétence défensive et utilitaire à distance." | |
| 2143 | + ], | |
| 2144 | + "arts": [ | |
| 2145 | + "Hawkeye", | |
| 2146 | + "Tornado Blade", | |
| 2147 | + "Offensive Stance", | |
| 2148 | + "Hercules Blow", | |
| 2149 | + "Eagle Eye", | |
| 2150 | + "Sidewinder", | |
| 2151 | + "Intercept", | |
| 2152 | + "Howling Soul" | |
| 2153 | + ], | |
| 2154 | + "skills": [ | |
| 2155 | + "Steel Flesh", | |
| 2156 | + "Mighty Muscle", | |
| 2157 | + "Healing Touch", | |
| 2158 | + "Grand Procession" | |
| 2159 | + ], | |
| 2160 | + "artSubstitutes": [ | |
| 2161 | + "Rising Blade", | |
| 2162 | + "First Down", | |
| 2163 | + "Magnum Edge", | |
| 2164 | + "Burning Slash", | |
| 2165 | + "Shrapnel" | |
| 2166 | + ], | |
| 2167 | + "skillSubstitutes": [ | |
| 2168 | + "Quick Reload", | |
| 2169 | + "Conflagrant Edge", | |
| 2170 | + "Boosted Bullets", | |
| 2171 | + "Dismantler" | |
| 2172 | + ], | |
| 2173 | + "equipment": { | |
| 2174 | + "weapons": [ | |
| 2175 | + "Sakuraba Industries Longsword, verified Iron Sword: Physical, level 1, 48 attack, 2.0 s cooldown, 230 TP gain, shop price 3000. Fits melee Arts and requires no late manufacturer unlock. Sakuraba Sniper Rifle physical line for Eagle Eye/Sidewinder/Intercept; exact model not singled out. Do not recommend unverified Thermal Glaive/Six Stars.", | |
| 2176 | + "Longsword Sakuraba Industries, modèle vérifié Iron Sword : Physical, niveau 1, attaque 48, recharge 2,0 s, gain PT 230, prix boutique 3000. Convient Arts mêlée sans déblocage fabricant tardif. Ligne Sniper Rifle physique Sakuraba pour Eagle Eye/Sidewinder/Intercept ; modèle exact non choisi. Ne pas recommander Glaive thermique/Six Stars non vérifié." | |
| 2177 | + ], | |
| 2178 | + "armor": [ | |
| 2179 | + "Sakuraba Medium Wear at AM L1. Verified DE Combat Bodywear: Medium, min L15, defense 28, Physical +10, Gravity −15, Melee Attack Up II; suits melee damage and physical frontline. Light Wear at AM L2 offers arm Melee Attack Up/Max TP alternatives. C&C Heavy Combat Bulwark is a defensive option only at C&C AM L3: L15, defense 40, Potential Up II, Electric +20, Beam −5, Gravity −15.", | |
| 2180 | + "Sakuraba Medium Wear AM L1. Combat Bodywear DE vérifié : Medium, niv. min 15, défense 28, Physique +10, Gravité −15, Melee Attack Up II ; convient dégâts mêlée/front physique. Light Wear AM L2 offre bras Melee Attack Up/Max TP. C&C Heavy Combat Bulwark option défensive uniquement C&C AM L3 : niv.15, défense 40, Potential Up II, Electric +20, Beam −5, Gravity −15." | |
| 2181 | + ], | |
| 2182 | + "availability": [ | |
| 2183 | + "Iron Sword shop-purchasable min level 1. Sakuraba Medium armor AM L1; Light AM L2. C&C Heavy alternative requires Chapter 5 and AM L3. No Thermal/Six Stars model remains in final recommendation.", | |
| 2184 | + "Iron Sword boutique niveau min 1. Armure Sakuraba Medium AM L1 ; Light AM L2. Alternative C&C Heavy exige chapitre 5 et AM L3. Aucun modèle Thermal/Six Stars dans recommandation finale." | |
| 2185 | + ] | |
| 2186 | + }, | |
| 2187 | + "sources": [ | |
| 2188 | + { | |
| 2189 | + "label": "Game8 Al Best Build; DE, 2025", | |
| 2190 | + "url": "https://game8.co/games/Xenoblade-Chronicles-X/archives/515373", | |
| 2191 | + "edition": "DE" | |
| 2192 | + }, | |
| 2193 | + { | |
| 2194 | + "label": "Sakuraba manufacturer offerings; weapon type catalog/armor traits", | |
| 2195 | + "url": "https://xenoblade.fandom.com/wiki/Sakuraba_Industries", | |
| 2196 | + "edition": "both" | |
| 2197 | + }, | |
| 2198 | + { | |
| 2199 | + "label": "Candid & Credible armor alternative catalog/traits", | |
| 2200 | + "url": "https://xenoblade.fandom.com/wiki/Candid_%26_Credible", | |
| 2201 | + "edition": "both" | |
| 2202 | + }, | |
| 2203 | + { | |
| 2204 | + "label": "Game8 DE Iron Sword (Sakuraba, Physical, min level 1)", | |
| 2205 | + "url": "https://game8.co/games/Xenoblade-Chronicles-X/archives/511408", | |
| 2206 | + "edition": "DE" | |
| 2207 | + }, | |
| 2208 | + { | |
| 2209 | + "label": "Game8 DE Longsword list", | |
| 2210 | + "url": "https://game8.co/games/Xenoblade-Chronicles-X/archives/504899", | |
| 2211 | + "edition": "DE" | |
| 2212 | + }, | |
| 2213 | + { | |
| 2214 | + "label": "Game8 DE Sniper Rifle list", | |
| 2215 | + "url": "https://game8.co/games/Xenoblade-Chronicles-X/archives/504894", | |
| 2216 | + "edition": "DE" | |
| 2217 | + }, | |
| 2218 | + { | |
| 2219 | + "label": "Candid & Credible Heavy Wear armor alternative and stats", | |
| 2220 | + "url": "https://game8.co/games/Xenoblade-Chronicles-X/archives/510204", | |
| 2221 | + "edition": "DE" | |
| 2222 | + } | |
| 2223 | + ] | |
| 2224 | + } | |
| 2225 | +}; | |
| new file mode 100644 | |||
| @@ -0,0 +1,2225 @@ | |||
| 1 | +import type { CuratedCompanionBuild } from "@/src/lib/types"; | ||
| 2 | + | ||
| 3 | +/** | ||
| 4 | + * Curated fixed AI builds (Rickub #1): editorial selections with canonical-first ordered | ||
| 5 | + * substitutes; evidence and per-Art provenance live in research/companion-builds-*.md. | ||
| 6 | + * Cross (player avatar) is intentionally excluded. | ||
| 7 | + */ | ||
| 8 | +export const companionBuilds: Readonly<Record<string, CuratedCompanionBuild>> = { | ||
| 9 | + "Elma": { | ||
| 10 | + "role": [ | ||
| 11 | + "Positional dual-weapon DPS with party Decoy support", | ||
| 12 | + "DPS positionnel à double arme, avec Décoy de groupe" | ||
| 13 | + ], | ||
| 14 | + "rationale": [ | ||
| 15 | + "Keep Primer and Sliding Slinger for TP flow; Violent Streak adds critical-based TP gain. Ghost Factory protects nearby allies; Executioner is ranged TP damage. Side Slash and Shadowstrike retain positional attacks, but AI positioning is unreliable. Ghost Factory and Executioner are the only equipped TP Arts.", | ||
| 16 | + "Garder Primer et Sliding Slinger pour générer des PT ; Violent Streak ajoute le gain de PT sur critique. Ghost Factory protège les alliés proches ; Executioner apporte des dégâts à distance contre des PT. Side Slash et Shadowstrike gardent les attaques positionnelles, mais le placement de l’IA reste peu fiable. Ghost Factory et Executioner sont les deux seuls Arts à PT équipés." | ||
| 17 | + ], | ||
| 18 | + "arts": [ | ||
| 19 | + "Primer", | ||
| 20 | + "Sliding Slinger", | ||
| 21 | + "Shadowstrike", | ||
| 22 | + "Side Slash", | ||
| 23 | + "Violent Streak", | ||
| 24 | + "Electric Surge", | ||
| 25 | + "Ghost Factory", | ||
| 26 | + "Executioner" | ||
| 27 | + ], | ||
| 28 | + "skills": [ | ||
| 29 | + "Agile Gunslinger", | ||
| 30 | + "Steady Hand", | ||
| 31 | + "Background Noise", | ||
| 32 | + "Master Edge" | ||
| 33 | + ], | ||
| 34 | + "artSubstitutes": [ | ||
| 35 | + "Upper Hand", | ||
| 36 | + "Blood Sacrifice", | ||
| 37 | + "Stream Edge", | ||
| 38 | + "Thirsty Edge", | ||
| 39 | + "Hundred Shells" | ||
| 40 | + ], | ||
| 41 | + "skillSubstitutes": [ | ||
| 42 | + "Mortal Enemy", | ||
| 43 | + "Hellhound", | ||
| 44 | + "Crisis Catalyst", | ||
| 45 | + "Phantom Counter" | ||
| 46 | + ], | ||
| 47 | + "equipment": { | ||
| 48 | + "weapons": [ | ||
| 49 | + "Sakuraba Industries Dual Guns Series + Blades Series (Dual Swords), both AM Level 1. Alternative: Grenada Gemels Dual Guns + Ralzes Dual Swords, AM Level 1. Choose weapon attribute and Battle Traits for enemy matchup; no manufacturer grants an Elma-specific bonus.", | ||
| 50 | + "Sakuraba Industries, séries Dual Guns + Blades (épées doubles), AM niv. 1. Alternative : Grenada Gemels (Dual Guns) + Ralzes (épées doubles), AM niv. 1. Choisir l’attribut et les traits selon l’ennemi ; aucun fabricant ne donne de bonus propre à Elma." | ||
| 51 | + ], | ||
| 52 | + "armor": [ | ||
| 53 | + "Candid & Credible Light Wear: Screen, Breaker, Ward, Trudgers. Light trades defense for higher attribute resistance, especially Gravity; C&C ground gear trends high-defense. Editorial DPS choice, not consensus.", | ||
| 54 | + "Armure légère Candid & Credible : Screen, Breaker, Ward, Trudgers. Le type léger sacrifie de la défense pour davantage de résistances, surtout Gravité ; les équipements terrestres C&C tendent vers une défense élevée. Choix éditorial pour un DPS, pas un consensus." | ||
| 55 | + ], | ||
| 56 | + "availability": [ | ||
| 57 | + "C&C unlocks after Chapter 5; Light Wear requires AM Level 2 and 7,000 R&D. Before that use initial Sakuraba or Grenada Medium Wear at AM Level 1; C&C Medium is also AM Level 1 after its story gate.", | ||
| 58 | + "C&C se débloque après le chapitre 5 ; l’armure légère exige AM niv. 2 et 7 000 points de R&D. Avant cela, utiliser l’armure moyenne Sakuraba ou Grenada (fabricants initiaux, AM niv. 1) ; l’armure moyenne C&C est aussi AM niv. 1 après son déblocage scénario." | ||
| 59 | + ] | ||
| 60 | + }, | ||
| 61 | + "sources": [ | ||
| 62 | + { | ||
| 63 | + "label": "Xeno Series Wiki — Elma/Gameplay (XCX)", | ||
| 64 | + "url": "https://www.xenoserieswiki.org/wiki/Elma/Gameplay_(XCX)", | ||
| 65 | + "edition": "both" | ||
| 66 | + }, | ||
| 67 | + { | ||
| 68 | + "label": "Game8 — Elma Best Build (DE)", | ||
| 69 | + "url": "https://game8.co/games/Xenoblade-Chronicles-X/archives/506520", | ||
| 70 | + "edition": "DE" | ||
| 71 | + }, | ||
| 72 | + { | ||
| 73 | + "label": "Nintendo Life — Best Combat Builds for All Characters (DE)", | ||
| 74 | + "url": "https://www.nintendolife.com/guides/xenoblade-chronicles-x-best-combat-builds-for-all-characters", | ||
| 75 | + "edition": "DE" | ||
| 76 | + }, | ||
| 77 | + { | ||
| 78 | + "label": "Reddit — A Guide to Xenoblade X DE Party Member Builds (search-indexed; direct fetch blocked)", | ||
| 79 | + "url": "https://www.reddit.com/r/Xenoblade_Chronicles/comments/1jnyxkz/a_guide_to_xenoblade_x_de_party_member_builds/", | ||
| 80 | + "edition": "DE" | ||
| 81 | + }, | ||
| 82 | + { | ||
| 83 | + "label": "Xeno Series Wiki — Battle Art (XCX)", | ||
| 84 | + "url": "https://www.xenoserieswiki.org/wiki/Battle_Art_(XCX)", | ||
| 85 | + "edition": "both" | ||
| 86 | + }, | ||
| 87 | + { | ||
| 88 | + "label": "Xeno Series Wiki — Skill (XCX)", | ||
| 89 | + "url": "https://www.xenoserieswiki.org/wiki/Skill_(XCX)", | ||
| 90 | + "edition": "both" | ||
| 91 | + }, | ||
| 92 | + { | ||
| 93 | + "label": "Xeno Series Wiki — Sakuraba Industries", | ||
| 94 | + "url": "https://www.xenoserieswiki.org/wiki/Sakuraba_Industries", | ||
| 95 | + "edition": "both" | ||
| 96 | + }, | ||
| 97 | + { | ||
| 98 | + "label": "Xeno Series Wiki — Grenada Galactic Group", | ||
| 99 | + "url": "https://www.xenoserieswiki.org/wiki/Grenada_Galactic_Group", | ||
| 100 | + "edition": "both" | ||
| 101 | + }, | ||
| 102 | + { | ||
| 103 | + "label": "Xeno Series Wiki — Candid & Credible", | ||
| 104 | + "url": "https://www.xenoserieswiki.org/wiki/Candid_%26_Credible", | ||
| 105 | + "edition": "both" | ||
| 106 | + }, | ||
| 107 | + { | ||
| 108 | + "label": "Xeno Series Wiki — Armor (XCX)", | ||
| 109 | + "url": "https://www.xenoserieswiki.org/wiki/Armor_(XCX)", | ||
| 110 | + "edition": "both" | ||
| 111 | + } | ||
| 112 | + ] | ||
| 113 | + }, | ||
| 114 | + "Lin": { | ||
| 115 | + "role": [ | ||
| 116 | + "Shield tank and Topple setup", | ||
| 117 | + "Tank bouclier et spécialiste du Topple" | ||
| 118 | + ], | ||
| 119 | + "rationale": [ | ||
| 120 | + "Wild Down topples; Wild Smash and Drum Roll exploit toppled/melee-combo targets. Trash Talk supports aggro/TP; Shield Wall adds a non-TP barrier and Bullet Storm deals weapon damage, with Flinch against humanoids, without needing an aura. Wild Down and Drum Roll are the only TP Arts. Game8 omitted Drum Roll’s TP marker; XSW marks it (TP).", | ||
| 121 | + "Wild Down renverse l’ennemi ; Wild Smash et Drum Roll exploitent les cibles renversées et les combos au corps-à-corps. Trash Talk soutient l’aggro et les PT ; Shield Wall ajoute une barrière sans coût en PT et Bullet Storm inflige des dégâts d’arme et Flinch aux humanoïdes sans exiger d’aura. Wild Down et Drum Roll sont les deux seuls Arts à PT. Game8 a omis le marqueur PT de Drum Roll ; XSW le marque (TP)." | ||
| 122 | + ], | ||
| 123 | + "arts": [ | ||
| 124 | + "Wild Down", | ||
| 125 | + "Wild Smash", | ||
| 126 | + "Trash Talk", | ||
| 127 | + "Drum Roll", | ||
| 128 | + "Reality Rift", | ||
| 129 | + "Fire Carnival", | ||
| 130 | + "Shield Wall", | ||
| 131 | + "Bullet Storm" | ||
| 132 | + ], | ||
| 133 | + "skills": [ | ||
| 134 | + "Shield Screen", | ||
| 135 | + "Dirty Fighter", | ||
| 136 | + "Stand Strong" | ||
| 137 | + ], | ||
| 138 | + "artSubstitutes": [ | ||
| 139 | + "Flame Cloak", | ||
| 140 | + "Bombardier", | ||
| 141 | + "Supershield", | ||
| 142 | + "Thermal Payload" | ||
| 143 | + ], | ||
| 144 | + "skillSubstitutes": [ | ||
| 145 | + "Steel Flesh", | ||
| 146 | + "Mighty Muscle", | ||
| 147 | + "Dismantler", | ||
| 148 | + "Long Topple" | ||
| 149 | + ], | ||
| 150 | + "equipment": { | ||
| 151 | + "weapons": [ | ||
| 152 | + "Sakuraba Industries Shield Series + Machine Series (Gatling Gun), AM Level 1. Grenada Paive + Repethe (AM Level 1) is an alternative; C&C Haven + Crank (AM Level 1) is available after Chapter 5.", | ||
| 153 | + "Sakuraba Industries, séries Shield + Machine (mitrailleuse Gatling), AM niv. 1. Alternative Grenada Paive + Repethe (AM niv. 1) ; C&C Haven + Crank (AM niv. 1) après le chapitre 5." | ||
| 154 | + ], | ||
| 155 | + "armor": [ | ||
| 156 | + "Candid & Credible Heavy Wear: Armet, Bulwark, Wrest, Stabilizers. Heavy trades resistance for higher defense; C&C ground armor trends high-defense. Use it only when the incoming attribute profile permits.", | ||
| 157 | + "Armure lourde Candid & Credible : Armet, Bulwark, Wrest, Stabilizers. Le type lourd échange des résistances contre plus de défense ; les armures terrestres C&C tendent vers une défense élevée. À choisir seulement si les attributs ennemis le permettent." | ||
| 158 | + ], | ||
| 159 | + "availability": [ | ||
| 160 | + "C&C unlocks after Chapter 5; Heavy Wear requires AM Level 3 and 12,000 R&D. Before then use Sakuraba Medium Wear at AM Level 1, or Sakuraba Heavy after its AM Level 3/5,000 R&D gate. Medium Wear is safer against elemental-heavy encounters.", | ||
| 161 | + "C&C se débloque après le chapitre 5 ; l’armure lourde exige AM niv. 3 et 12 000 points de R&D. Avant cela, utiliser l’armure moyenne Sakuraba AM niv. 1, ou son armure lourde après le palier AM niv. 3/5 000 points. L’armure moyenne convient mieux face à de forts dégâts élémentaires." | ||
| 162 | + ] | ||
| 163 | + }, | ||
| 164 | + "sources": [ | ||
| 165 | + { | ||
| 166 | + "label": "Xeno Series Wiki — Lin/Gameplay", | ||
| 167 | + "url": "https://www.xenoserieswiki.org/wiki/Lin/Gameplay", | ||
| 168 | + "edition": "both" | ||
| 169 | + }, | ||
| 170 | + { | ||
| 171 | + "label": "Game8 — Lin Best Build (DE)", | ||
| 172 | + "url": "https://game8.co/games/Xenoblade-Chronicles-X/archives/506544", | ||
| 173 | + "edition": "DE" | ||
| 174 | + }, | ||
| 175 | + { | ||
| 176 | + "label": "Nintendo Life — Best Combat Builds for All Characters (DE)", | ||
| 177 | + "url": "https://www.nintendolife.com/guides/xenoblade-chronicles-x-best-combat-builds-for-all-characters", | ||
| 178 | + "edition": "DE" | ||
| 179 | + }, | ||
| 180 | + { | ||
| 181 | + "label": "Reddit — A Guide to Xenoblade X DE Party Member Builds (search-indexed; direct fetch blocked)", | ||
| 182 | + "url": "https://www.reddit.com/r/Xenoblade_Chronicles/comments/1jnyxkz/a_guide_to_xenoblade_x_de_party_member_builds/", | ||
| 183 | + "edition": "DE" | ||
| 184 | + }, | ||
| 185 | + { | ||
| 186 | + "label": "Xeno Series Wiki — Battle Art (XCX)", | ||
| 187 | + "url": "https://www.xenoserieswiki.org/wiki/Battle_Art_(XCX)", | ||
| 188 | + "edition": "both" | ||
| 189 | + }, | ||
| 190 | + { | ||
| 191 | + "label": "Xeno Series Wiki — Skill (XCX)", | ||
| 192 | + "url": "https://www.xenoserieswiki.org/wiki/Skill_(XCX)", | ||
| 193 | + "edition": "both" | ||
| 194 | + }, | ||
| 195 | + { | ||
| 196 | + "label": "Xeno Series Wiki — Sakuraba Industries", | ||
| 197 | + "url": "https://www.xenoserieswiki.org/wiki/Sakuraba_Industries", | ||
| 198 | + "edition": "both" | ||
| 199 | + }, | ||
| 200 | + { | ||
| 201 | + "label": "Xeno Series Wiki — Grenada Galactic Group", | ||
| 202 | + "url": "https://www.xenoserieswiki.org/wiki/Grenada_Galactic_Group", | ||
| 203 | + "edition": "both" | ||
| 204 | + }, | ||
| 205 | + { | ||
| 206 | + "label": "Xeno Series Wiki — Candid & Credible", | ||
| 207 | + "url": "https://www.xenoserieswiki.org/wiki/Candid_%26_Credible", | ||
| 208 | + "edition": "both" | ||
| 209 | + }, | ||
| 210 | + { | ||
| 211 | + "label": "Xeno Series Wiki — Armor (XCX)", | ||
| 212 | + "url": "https://www.xenoserieswiki.org/wiki/Armor_(XCX)", | ||
| 213 | + "edition": "both" | ||
| 214 | + }, | ||
| 215 | + { | ||
| 216 | + "label": "Xeno Series Wiki — Cool Off aura prerequisite", | ||
| 217 | + "url": "https://www.xenoserieswiki.org/wiki/Cool_Off_(XCX)", | ||
| 218 | + "edition": "both" | ||
| 219 | + } | ||
| 220 | + ] | ||
| 221 | + }, | ||
| 222 | + "Irina": { | ||
| 223 | + "role": [ | ||
| 224 | + "Healing, TP, barrier and buff support", | ||
| 225 | + "Soutien par soins, PT, barrières et bonus" | ||
| 226 | + ], | ||
| 227 | + "rationale": [ | ||
| 228 | + "Smooth Recovery, Repair and Absorber Skin cover healing, cleanse and Barrier. Last Stand and Energy Source provide team TP/Potential support. Quick Cannon and Flash Grenade retain ranged damage/Blackout; Assault Hammer adds non-TP Topple. Medic Free is removed to keep the strict two-TP limit. This is not the player-style Sleep/Control build. Irina has only three own Skills useful to this support bar without Sleep or Control; leave the fourth slot empty rather than equip an inert Control-specific Skill.", | ||
| 229 | + "Smooth Recovery, Repair et Absorber Skin assurent soins, dissipation et barrière. Last Stand et Energy Source soutiennent les PT/le Potentiel de l’équipe. Quick Cannon et Flash Grenade gardent dégâts à distance et Blackout ; Assault Hammer ajoute Topple sans coût en PT. Medic Free est retiré pour respecter la limite stricte de deux Arts à PT. Ce n’est pas le build Sommeil/Contrôle manuel. Seules trois compétences propres à Irina servent cette barre de soutien sans Sommeil ni Contrôle ; la quatrième place reste vide plutôt que d’équiper une compétence de Contrôle inactive." | ||
| 230 | + ], | ||
| 231 | + "arts": [ | ||
| 232 | + "Smooth Recovery", | ||
| 233 | + "Quick Cannon", | ||
| 234 | + "Repair", | ||
| 235 | + "Assault Hammer", | ||
| 236 | + "Last Stand", | ||
| 237 | + "Energy Source", | ||
| 238 | + "Absorber Skin", | ||
| 239 | + "Flash Grenade" | ||
| 240 | + ], | ||
| 241 | + "skills": [ | ||
| 242 | + "Inner Search", | ||
| 243 | + "Healing Touch", | ||
| 244 | + "High Tension" | ||
| 245 | + ], | ||
| 246 | + "artSubstitutes": [ | ||
| 247 | + "Furious Blast", | ||
| 248 | + "Screamer", | ||
| 249 | + "Medic Free" | ||
| 250 | + ], | ||
| 251 | + "skillSubstitutes": [], | ||
| 252 | + "equipment": { | ||
| 253 | + "weapons": [ | ||
| 254 | + "Sakuraba Industries Assault Series + Knife Series, AM Level 1. Grenada Avagar + Riv (AM Level 1) is a same-type alternative.", | ||
| 255 | + "Sakuraba Industries, séries Assault + Knife, AM niv. 1. Alternative de mêmes types : Grenada Avagar + Riv (AM niv. 1)." | ||
| 256 | + ], | ||
| 257 | + "armor": [ | ||
| 258 | + "Grenada Medium Wear: Spex, Torse, Quantlet, Soales, AM Level 1. Grenada identifies beam-resistant ground armor as a product strength; use item resistances/traits for actual enemy matchup.", | ||
| 259 | + "Armure moyenne Grenada : Spex, Torse, Quantlet, Soales, AM niv. 1. Grenada identifie les armures terrestres résistantes aux lasers comme un point fort ; choisir résistances/traits selon l’ennemi." | ||
| 260 | + ], | ||
| 261 | + "availability": [ | ||
| 262 | + "Grenada is one of the two initial AMs; Medium Wear and weapon lines are AM Level 1. Sakuraba Medium is the initial-maker alternative. C&C Medium is available at AM Level 1 only after Chapter 5.", | ||
| 263 | + "Grenada est l’un des deux fabricants initiaux ; l’armure moyenne et les armes sont disponibles à AM niv. 1. L’armure moyenne Sakuraba est l’alternative initiale. C&C propose l’armure moyenne à AM niv. 1 après le chapitre 5." | ||
| 264 | + ] | ||
| 265 | + }, | ||
| 266 | + "sources": [ | ||
| 267 | + { | ||
| 268 | + "label": "Xeno Series Wiki — Irina/Gameplay", | ||
| 269 | + "url": "https://www.xenoserieswiki.org/wiki/Irina/Gameplay", | ||
| 270 | + "edition": "both" | ||
| 271 | + }, | ||
| 272 | + { | ||
| 273 | + "label": "Game8 — Irina Best Build (DE)", | ||
| 274 | + "url": "https://game8.co/games/Xenoblade-Chronicles-X/archives/506541", | ||
| 275 | + "edition": "DE" | ||
| 276 | + }, | ||
| 277 | + { | ||
| 278 | + "label": "Nintendo Life — Best Combat Builds for All Characters (DE)", | ||
| 279 | + "url": "https://www.nintendolife.com/guides/xenoblade-chronicles-x-best-combat-builds-for-all-characters", | ||
| 280 | + "edition": "DE" | ||
| 281 | + }, | ||
| 282 | + { | ||
| 283 | + "label": "Reddit — A Guide to Xenoblade X DE Party Member Builds (search-indexed; direct fetch blocked)", | ||
| 284 | + "url": "https://www.reddit.com/r/Xenoblade_Chronicles/comments/1jnyxkz/a_guide_to_xenoblade_x_de_party_member_builds/", | ||
| 285 | + "edition": "DE" | ||
| 286 | + }, | ||
| 287 | + { | ||
| 288 | + "label": "Xeno Series Wiki — Battle Art (XCX)", | ||
| 289 | + "url": "https://www.xenoserieswiki.org/wiki/Battle_Art_(XCX)", | ||
| 290 | + "edition": "both" | ||
| 291 | + }, | ||
| 292 | + { | ||
| 293 | + "label": "Xeno Series Wiki — Skill (XCX)", | ||
| 294 | + "url": "https://www.xenoserieswiki.org/wiki/Skill_(XCX)", | ||
| 295 | + "edition": "both" | ||
| 296 | + }, | ||
| 297 | + { | ||
| 298 | + "label": "Xeno Series Wiki — Sakuraba Industries", | ||
| 299 | + "url": "https://www.xenoserieswiki.org/wiki/Sakuraba_Industries", | ||
| 300 | + "edition": "both" | ||
| 301 | + }, | ||
| 302 | + { | ||
| 303 | + "label": "Xeno Series Wiki — Grenada Galactic Group", | ||
| 304 | + "url": "https://www.xenoserieswiki.org/wiki/Grenada_Galactic_Group", | ||
| 305 | + "edition": "both" | ||
| 306 | + }, | ||
| 307 | + { | ||
| 308 | + "label": "Xeno Series Wiki — Candid & Credible", | ||
| 309 | + "url": "https://www.xenoserieswiki.org/wiki/Candid_%26_Credible", | ||
| 310 | + "edition": "both" | ||
| 311 | + }, | ||
| 312 | + { | ||
| 313 | + "label": "Xeno Series Wiki — Armor (XCX)", | ||
| 314 | + "url": "https://www.xenoserieswiki.org/wiki/Armor_(XCX)", | ||
| 315 | + "edition": "both" | ||
| 316 | + }, | ||
| 317 | + { | ||
| 318 | + "label": "Xenoblade Wiki — King's Decree Control-only effect", | ||
| 319 | + "url": "https://xenoblade.fandom.com/wiki/King%27s_Decree", | ||
| 320 | + "edition": "both" | ||
| 321 | + }, | ||
| 322 | + { | ||
| 323 | + "label": "Xenoblade Wiki — Servant Sacrifice Control prerequisite and HP/TP restore", | ||
| 324 | + "url": "https://xenoblade.fandom.com/wiki/Servant_Sacrifice", | ||
| 325 | + "edition": "both" | ||
| 326 | + } | ||
| 327 | + ] | ||
| 328 | + }, | ||
| 329 | + "Gwin": { | ||
| 330 | + "role": [ | ||
| 331 | + "Thermal-leaning ranged/melee hybrid", | ||
| 332 | + "Hybride distance/corps-à-corps orienté thermique" | ||
| 333 | + ], | ||
| 334 | + "rationale": [ | ||
| 335 | + "Use Gwin’s legal Longsword + Assault Rifle Arts. Defensive Stance gives an AI-safe aura; Power Dive grants Supercharge/evasion. Grenade Blitz and Burst Grenade support Thermal damage; Flash Grenade adds Electric damage/Blackout; Takedown Shot adds mechanoid Topple. Defensive Stance and Burst Grenade are the only TP Arts. Published Game8 Gwin Arts are weapon-incompatible, so this build is editorial.", | ||
| 336 | + "Utiliser les Arts légaux de Gwin, épée longue + fusil d’assaut. Defensive Stance apporte une aura défensive adaptée à l’IA ; Power Dive donne Supercharge/évasion. Grenade Blitz et Burst Grenade soutiennent les dégâts thermiques ; Flash Grenade ajoute dégâts électriques/Blackout ; Takedown Shot ajoute Topple contre les méchanoïdes. Defensive Stance et Burst Grenade sont les deux seuls Arts à PT. Les Arts Game8 pour Gwin sont incompatibles avec ses armes ; ce build est éditorial." | ||
| 337 | + ], | ||
| 338 | + "arts": [ | ||
| 339 | + "Defensive Stance", | ||
| 340 | + "Power Dive", | ||
| 341 | + "Furious Blast", | ||
| 342 | + "Magnum Edge", | ||
| 343 | + "Flash Grenade", | ||
| 344 | + "Grenade Blitz", | ||
| 345 | + "Takedown Shot", | ||
| 346 | + "Burst Grenade" | ||
| 347 | + ], | ||
| 348 | + "skills": [ | ||
| 349 | + "Unwavering Courage", | ||
| 350 | + "Flame Trigger", | ||
| 351 | + "Conflagrant Edge" | ||
| 352 | + ], | ||
| 353 | + "artSubstitutes": [ | ||
| 354 | + "Rising Blade", | ||
| 355 | + "Ultraslash", | ||
| 356 | + "Tornado Blade", | ||
| 357 | + "Decoy Round", | ||
| 358 | + "Incendiary Edge", | ||
| 359 | + "Gunforce" | ||
| 360 | + ], | ||
| 361 | + "skillSubstitutes": [ | ||
| 362 | + "Mighty Muscle", | ||
| 363 | + "Auto Melee Boost", | ||
| 364 | + "Healing Aura", | ||
| 365 | + "Weapon Guard", | ||
| 366 | + "Theroid Slayer" | ||
| 367 | + ], | ||
| 368 | + "equipment": { | ||
| 369 | + "weapons": [ | ||
| 370 | + "Sakuraba Industries Assault Series + Sword Series (Longsword), AM Level 1. Grenada Avagar + Slair are same-type AM Level 1 alternatives.", | ||
| 371 | + "Sakuraba Industries, séries Assault + Sword (épée longue), AM niv. 1. Alternatives de mêmes types : Grenada Avagar + Slair, AM niv. 1." | ||
| 372 | + ], | ||
| 373 | + "armor": [ | ||
| 374 | + "Sakuraba Medium Wear: Goggles, Bodywear, Glove, Footwear, AM Level 1. Conservative availability recommendation only; no Medium-specific numeric bonus is asserted.", | ||
| 375 | + "Armure moyenne Sakuraba : Goggles, Bodywear, Glove, Footwear, AM niv. 1. Recommandation prudente de disponibilité ; aucun bonus numérique propre au type moyen n’est affirmé." | ||
| 376 | + ], | ||
| 377 | + "availability": [ | ||
| 378 | + "Sakuraba and Grenada are initial AMs; Medium Wear and weapon lines are AM Level 1. C&C Medium is an alternative after Chapter 5 and AM Level 1, with a high-defense product trend.", | ||
| 379 | + "Sakuraba et Grenada sont initiaux ; armes et armure moyenne disponibles à AM niv. 1. L’armure moyenne C&C est une alternative après le chapitre 5, AM niv. 1, avec une gamme terrestre orientée défense." | ||
| 380 | + ] | ||
| 381 | + }, | ||
| 382 | + "sources": [ | ||
| 383 | + { | ||
| 384 | + "label": "Xeno Series Wiki — Gwin/Gameplay", | ||
| 385 | + "url": "https://www.xenoserieswiki.org/wiki/Gwin/Gameplay", | ||
| 386 | + "edition": "both" | ||
| 387 | + }, | ||
| 388 | + { | ||
| 389 | + "label": "Game8 — Best Builds for All Characters (DE)", | ||
| 390 | + "url": "https://game8.co/games/Xenoblade-Chronicles-X/archives/506659", | ||
| 391 | + "edition": "DE" | ||
| 392 | + }, | ||
| 393 | + { | ||
| 394 | + "label": "Xeno Series Wiki — Battle Art (XCX)", | ||
| 395 | + "url": "https://www.xenoserieswiki.org/wiki/Battle_Art_(XCX)", | ||
| 396 | + "edition": "both" | ||
| 397 | + }, | ||
| 398 | + { | ||
| 399 | + "label": "Xeno Series Wiki — Skill (XCX)", | ||
| 400 | + "url": "https://www.xenoserieswiki.org/wiki/Skill_(XCX)", | ||
| 401 | + "edition": "both" | ||
| 402 | + }, | ||
| 403 | + { | ||
| 404 | + "label": "Xeno Series Wiki — Sakuraba Industries", | ||
| 405 | + "url": "https://www.xenoserieswiki.org/wiki/Sakuraba_Industries", | ||
| 406 | + "edition": "both" | ||
| 407 | + }, | ||
| 408 | + { | ||
| 409 | + "label": "Xeno Series Wiki — Grenada Galactic Group", | ||
| 410 | + "url": "https://www.xenoserieswiki.org/wiki/Grenada_Galactic_Group", | ||
| 411 | + "edition": "both" | ||
| 412 | + }, | ||
| 413 | + { | ||
| 414 | + "label": "Xeno Series Wiki — Candid & Credible", | ||
| 415 | + "url": "https://www.xenoserieswiki.org/wiki/Candid_%26_Credible", | ||
| 416 | + "edition": "both" | ||
| 417 | + }, | ||
| 418 | + { | ||
| 419 | + "label": "Xeno Series Wiki — Armor (XCX)", | ||
| 420 | + "url": "https://www.xenoserieswiki.org/wiki/Armor_(XCX)", | ||
| 421 | + "edition": "both" | ||
| 422 | + } | ||
| 423 | + ] | ||
| 424 | + }, | ||
| 425 | + "Doug": { | ||
| 426 | + "role": [ | ||
| 427 | + "Beam-leaning Photon Saber/Raygun hybrid support", | ||
| 428 | + "Hybride de soutien laser au sabre photonique/pistolet laser" | ||
| 429 | + ], | ||
| 430 | + "rationale": [ | ||
| 431 | + "Keep Doug’s legal Photon Saber + Raygun defaults, then add cleanse, healing and debuff utility. Beam Barrage gains damage with an aura; Geolibrium supplies beam resistance/regeneration; Astral Heal heals. Geolibrium and Astral Heal are the only TP Arts. This is editorial: the published Game8 Doug list uses Longsword/Gatling Arts, not Doug’s weapons.", | ||
| 432 | + "Garder les Arts légaux par défaut de Doug, sabre photonique + pistolet laser, puis ajouter dissipation, soins et affaiblissements. Beam Barrage gagne des dégâts avec une aura ; Geolibrium apporte résistance laser/régénération ; Astral Heal soigne. Geolibrium et Astral Heal sont les deux seuls Arts à PT. Choix éditorial : la liste Game8 publiée utilise des Arts d’épée longue/mitrailleuse, pas les armes de Doug." | ||
| 433 | + ], | ||
| 434 | + "arts": [ | ||
| 435 | + "Starfall Blade", | ||
| 436 | + "Starfall Rondo", | ||
| 437 | + "Beam Barrage", | ||
| 438 | + "Geolibrium", | ||
| 439 | + "Myopic Screen", | ||
| 440 | + "Astral Purge", | ||
| 441 | + "Astral Heal", | ||
| 442 | + "Subterfuge" | ||
| 443 | + ], | ||
| 444 | + "skills": [ | ||
| 445 | + "Inner Search", | ||
| 446 | + "Beam Boost", | ||
| 447 | + "High Tension", | ||
| 448 | + "Aura Assault" | ||
| 449 | + ], | ||
| 450 | + "artSubstitutes": [ | ||
| 451 | + "Phenomenon", | ||
| 452 | + "Pathogen Blast", | ||
| 453 | + "Gravity Blast", | ||
| 454 | + "Ether Blast", | ||
| 455 | + "Novalibrium" | ||
| 456 | + ], | ||
| 457 | + "skillSubstitutes": [ | ||
| 458 | + "Mechanoid Slayer", | ||
| 459 | + "Knight's Soul", | ||
| 460 | + "Supreme Sword" | ||
| 461 | + ], | ||
| 462 | + "equipment": { | ||
| 463 | + "weapons": [ | ||
| 464 | + "Grenada Galactic Group Lastyr Raygun + Fulge Photon Saber, AM Level 1. Grenada’s product portfolio is beam-focused. Sakuraba Raygun + Saber are initial-maker alternatives.", | ||
| 465 | + "Grenada Galactic Group, Lastyr (pistolet laser) + Fulge (sabre photonique), AM niv. 1. Sa gamme est orientée laser. Sakuraba Raygun + Saber sont des alternatives du fabricant initial." | ||
| 466 | + ], | ||
| 467 | + "armor": [ | ||
| 468 | + "Grenada Medium Wear: Spex, Torse, Quantlet, Soales, AM Level 1. Its ground armor trends beam-resistant. Use Light Wear at AM Level 2 if Gravity resistance matters more than defense.", | ||
| 469 | + "Armure moyenne Grenada : Spex, Torse, Quantlet, Soales, AM niv. 1. Ses armures terrestres tendent à résister aux lasers. Choisir l’armure légère AM niv. 2 si la résistance Gravité compte davantage que la défense." | ||
| 470 | + ], | ||
| 471 | + "availability": [ | ||
| 472 | + "Grenada is an initial AM; Raygun/Photon Saber series and Medium Wear are AM Level 1. Light Wear requires AM Level 2 and 2,000 R&D. Sakuraba is the initial-maker alternative; its Medium Wear is AM Level 1.", | ||
| 473 | + "Grenada est un fabricant initial ; séries pistolet laser/sabre photonique et armure moyenne disponibles à AM niv. 1. L’armure légère exige AM niv. 2 et 2 000 points de R&D. Sakuraba est l’alternative initiale ; son armure moyenne est AM niv. 1." | ||
| 474 | + ] | ||
| 475 | + }, | ||
| 476 | + "sources": [ | ||
| 477 | + { | ||
| 478 | + "label": "Xeno Series Wiki — Doug/Gameplay", | ||
| 479 | + "url": "https://www.xenoserieswiki.org/wiki/Doug/Gameplay", | ||
| 480 | + "edition": "both" | ||
| 481 | + }, | ||
| 482 | + { | ||
| 483 | + "label": "Game8 — Doug Best Build (DE; personal ranks and TP recommendations checked against XSW)", | ||
| 484 | + "url": "https://game8.co/games/Xenoblade-Chronicles-X/archives/507626", | ||
| 485 | + "edition": "DE" | ||
| 486 | + }, | ||
| 487 | + { | ||
| 488 | + "label": "Game8 — Best Builds for All Characters (DE)", | ||
| 489 | + "url": "https://game8.co/games/Xenoblade-Chronicles-X/archives/506659", | ||
| 490 | + "edition": "DE" | ||
| 491 | + }, | ||
| 492 | + { | ||
| 493 | + "label": "Xeno Series Wiki — Battle Art (XCX)", | ||
| 494 | + "url": "https://www.xenoserieswiki.org/wiki/Battle_Art_(XCX)", | ||
| 495 | + "edition": "both" | ||
| 496 | + }, | ||
| 497 | + { | ||
| 498 | + "label": "Xeno Series Wiki — Skill (XCX)", | ||
| 499 | + "url": "https://www.xenoserieswiki.org/wiki/Skill_(XCX)", | ||
| 500 | + "edition": "both" | ||
| 501 | + }, | ||
| 502 | + { | ||
| 503 | + "label": "Xeno Series Wiki — Sakuraba Industries", | ||
| 504 | + "url": "https://www.xenoserieswiki.org/wiki/Sakuraba_Industries", | ||
| 505 | + "edition": "both" | ||
| 506 | + }, | ||
| 507 | + { | ||
| 508 | + "label": "Xeno Series Wiki — Grenada Galactic Group", | ||
| 509 | + "url": "https://www.xenoserieswiki.org/wiki/Grenada_Galactic_Group", | ||
| 510 | + "edition": "both" | ||
| 511 | + }, | ||
| 512 | + { | ||
| 513 | + "label": "Xeno Series Wiki — Armor (XCX)", | ||
| 514 | + "url": "https://www.xenoserieswiki.org/wiki/Armor_(XCX)", | ||
| 515 | + "edition": "both" | ||
| 516 | + } | ||
| 517 | + ] | ||
| 518 | + }, | ||
| 519 | + "Lao": { | ||
| 520 | + "role": [ | ||
| 521 | + "Ranged Electric/Shock DPS; permanently unavailable after Chapter 9", | ||
| 522 | + "DPS électrique/Choc à distance ; indisponible définitivement après le chapitre 9" | ||
| 523 | + ], | ||
| 524 | + "rationale": [ | ||
| 525 | + "Arcing Horn lowers Electric resistance; Trident Buster applies Shock; Conductive Strike and Electric Boost support Electric/Shock damage. Ghost Sniper adds critical/ranged accuracy/TP support. The final two TP Arts are Trident Buster and Ghost Sniper; Afterburner is dropped from Game8’s three-TP candidate list.", | ||
| 526 | + "Arcing Horn réduit la résistance électrique ; Trident Buster applique Choc ; Conductive Strike et Electric Boost soutiennent les dégâts Électrique/Choc. Ghost Sniper apporte critiques/précision à distance/soutien PT. Les deux Arts à PT sont Trident Buster et Ghost Sniper ; Afterburner est retiré de la liste Game8 qui en contient trois." | ||
| 527 | + ], | ||
| 528 | + "arts": [ | ||
| 529 | + "Balance Breaker", | ||
| 530 | + "Arcing Horn", | ||
| 531 | + "Trident Buster", | ||
| 532 | + "Overwhelm", | ||
| 533 | + "Shrapnel", | ||
| 534 | + "Eagle Eye", | ||
| 535 | + "Ghost Sniper", | ||
| 536 | + "Intercept" | ||
| 537 | + ], | ||
| 538 | + "skills": [ | ||
| 539 | + "Knock 'n' Shock", | ||
| 540 | + "Conductive Strike", | ||
| 541 | + "Electric Boost" | ||
| 542 | + ], | ||
| 543 | + "artSubstitutes": [ | ||
| 544 | + "First Down", | ||
| 545 | + "Sidewinder", | ||
| 546 | + "Spiral Horn", | ||
| 547 | + "Hair Trigger", | ||
| 548 | + "Hawkeye", | ||
| 549 | + "Raijin", | ||
| 550 | + "Afterburner" | ||
| 551 | + ], | ||
| 552 | + "skillSubstitutes": [ | ||
| 553 | + "Killshot", | ||
| 554 | + "Piscinoid Slayer", | ||
| 555 | + "Long Shot", | ||
| 556 | + "Quick Reload", | ||
| 557 | + "TP Overdrive" | ||
| 558 | + ], | ||
| 559 | + "equipment": { | ||
| 560 | + "weapons": [ | ||
| 561 | + "Candid & Credible Trigger Sniper Rifle + Bolide Javelin, AM Level 1 after Chapter 5. C&C says its weapons are Electric except Dual Guns and Shield, so both match Lao’s weapon types and Electric build. Before that gate, use Sakuraba Sniper Rifle + Spear series (AM Level 1, physical alternative).", | ||
| 562 | + "Candid & Credible, Trigger (fusil de précision) + Bolide (javelot), AM niv. 1 après le chapitre 5. C&C précise que ses armes sont électriques, sauf Dual Guns et Shield ; les deux séries correspondent aux armes et au build électrique de Lao. Avant ce déblocage, utiliser les séries Sakuraba Sniper Rifle + Spear (AM niv. 1, alternative physique)." | ||
| 563 | + ], | ||
| 564 | + "armor": [ | ||
| 565 | + "Candid & Credible Medium Wear: Sights, Encaser, Grip, Distancers, AM Level 1 after the Chapter 5 gate. C&C ground armor trends high-defense. Light Wear at AM Level 2/7,000 R&D trades defense for higher resistance, especially Gravity.", | ||
| 566 | + "Armure moyenne Candid & Credible : Sights, Encaser, Grip, Distancers, AM niv. 1 après le chapitre 5. Les armures terrestres C&C tendent vers une défense élevée. L’armure légère AM niv. 2/7 000 points de R&D échange de la défense contre des résistances accrues, surtout Gravité." | ||
| 567 | + ], | ||
| 568 | + "availability": [ | ||
| 569 | + "C&C unlocks after Chapter 5; weapon lines and Medium Wear are AM Level 1. Light Wear needs AM Level 2 and 7,000 R&D. Before Chapter 5, Sakuraba Sniper Rifle/Spear and Medium Wear are available from the initial AM. Lao is permanently unplayable after Chapter 9.", | ||
| 570 | + "C&C se débloque après le chapitre 5 ; armes et armure moyenne disponibles à AM niv. 1. L’armure légère exige AM niv. 2 et 7 000 points de R&D. Avant le chapitre 5, les séries Sniper Rifle/Spear et l’armure moyenne Sakuraba sont disponibles chez le fabricant initial. Lao devient définitivement indisponible après le chapitre 9." | ||
| 571 | + ] | ||
| 572 | + }, | ||
| 573 | + "sources": [ | ||
| 574 | + { | ||
| 575 | + "label": "Xeno Series Wiki — Lao/Gameplay", | ||
| 576 | + "url": "https://www.xenoserieswiki.org/wiki/Lao/Gameplay", | ||
| 577 | + "edition": "both" | ||
| 578 | + }, | ||
| 579 | + { | ||
| 580 | + "label": "Game8 — Lao Best Build (DE)", | ||
| 581 | + "url": "https://game8.co/games/Xenoblade-Chronicles-X/archives/506554", | ||
| 582 | + "edition": "DE" | ||
| 583 | + }, | ||
| 584 | + { | ||
| 585 | + "label": "Nintendo Life — Best Combat Builds for All Characters (DE)", | ||
| 586 | + "url": "https://www.nintendolife.com/guides/xenoblade-chronicles-x-best-combat-builds-for-all-characters", | ||
| 587 | + "edition": "DE" | ||
| 588 | + }, | ||
| 589 | + { | ||
| 590 | + "label": "Reddit — A Guide to Xenoblade X DE Party Member Builds (search-indexed; direct fetch blocked)", | ||
| 591 | + "url": "https://www.reddit.com/r/Xenoblade_Chronicles/comments/1jnyxkz/a_guide_to_xenoblade_x_de_party_member_builds/", | ||
| 592 | + "edition": "DE" | ||
| 593 | + }, | ||
| 594 | + { | ||
| 595 | + "label": "Xeno Series Wiki — Battle Art (XCX)", | ||
| 596 | + "url": "https://www.xenoserieswiki.org/wiki/Battle_Art_(XCX)", | ||
| 597 | + "edition": "both" | ||
| 598 | + }, | ||
| 599 | + { | ||
| 600 | + "label": "Xeno Series Wiki — Skill (XCX)", | ||
| 601 | + "url": "https://www.xenoserieswiki.org/wiki/Skill_(XCX)", | ||
| 602 | + "edition": "both" | ||
| 603 | + }, | ||
| 604 | + { | ||
| 605 | + "label": "Xeno Series Wiki — Sakuraba Industries", | ||
| 606 | + "url": "https://www.xenoserieswiki.org/wiki/Sakuraba_Industries", | ||
| 607 | + "edition": "both" | ||
| 608 | + }, | ||
| 609 | + { | ||
| 610 | + "label": "Xeno Series Wiki — Candid & Credible", | ||
| 611 | + "url": "https://www.xenoserieswiki.org/wiki/Candid_%26_Credible", | ||
| 612 | + "edition": "both" | ||
| 613 | + }, | ||
| 614 | + { | ||
| 615 | + "label": "Xeno Series Wiki — Armor (XCX)", | ||
| 616 | + "url": "https://www.xenoserieswiki.org/wiki/Armor_(XCX)", | ||
| 617 | + "edition": "both" | ||
| 618 | + } | ||
| 619 | + ] | ||
| 620 | + }, | ||
| 621 | + "L": { | ||
| 622 | + "role": [ | ||
| 623 | + "Defensive tank / control-support", | ||
| 624 | + "Tank défensif / soutien-contrôle" | ||
| 625 | + ], | ||
| 626 | + "rationale": [ | ||
| 627 | + "Wild Down supplies party Topple; Long Topple extends it. Shield Wall barrier, Astral Protection and Mindstorm protect/heal allies; Shooting Star adds Shock without spending TP. AI fit is steady defense/control, not burst DPS.", | ||
| 628 | + "Wild Down apporte Renversement ; Long Topple le prolonge. Shield Wall, Astral Protection et Mindstorm protègent/soignent ; Shooting Star ajoute Shock sans dépenser de PT. Rôle IA : défense/contrôle régulier, pas dégâts explosifs." | ||
| 629 | + ], | ||
| 630 | + "arts": [ | ||
| 631 | + "Wild Down", | ||
| 632 | + "Astral Protection", | ||
| 633 | + "Mindstorm", | ||
| 634 | + "Shield Wall", | ||
| 635 | + "Trash Talk", | ||
| 636 | + "Stellar Ray", | ||
| 637 | + "Shooting Star", | ||
| 638 | + "Lightning Cloak" | ||
| 639 | + ], | ||
| 640 | + "skills": [ | ||
| 641 | + "Steel Flesh", | ||
| 642 | + "Long Topple", | ||
| 643 | + "Shield Screen" | ||
| 644 | + ], | ||
| 645 | + "artSubstitutes": [ | ||
| 646 | + "Wild Smash", | ||
| 647 | + "Reality Rift", | ||
| 648 | + "Bombardier", | ||
| 649 | + "Flame Cloak" | ||
| 650 | + ], | ||
| 651 | + "skillSubstitutes": [ | ||
| 652 | + "Mighty Muscle", | ||
| 653 | + "Stand Strong" | ||
| 654 | + ], | ||
| 655 | + "equipment": { | ||
| 656 | + "weapons": [ | ||
| 657 | + "Shield: Sakuraba physical Shield Series (Lv.60 320 damage, 165 TP gain) gives greater auto-attack TP than Grenada Paive (320/120). Psycho Launchers: Grenada Psylans beam (Lv.60 32 damage, 1.8 s, 5 ammo, 3 TP gain) pairs with Stellar Ray’s weapon-damage/Beam-Res-Down role. This beam model does not change Shooting Star’s fixed electric damage.", | ||
| 658 | + "Bouclier : Shield Series physique Sakuraba (niv. 60 : 320 dégâts, 165 PT) génère plus de PT que Paive Grenada (320/120). Lanceurs psycho : Psylans laser Grenada (niv. 60 : 32 dégâts, 1,8 s, 5 munitions, 3 PT) pour le rôle dégâts d’arme/baisse résistance laser de Stellar Ray. N’altère pas l’électricité fixe de Shooting Star." | ||
| 659 | + ], | ||
| 660 | + "armor": [ | ||
| 661 | + "Orphean Light Wear (Yii/Yimsel/Yiys/Yiym): choose piece-specific Evasion, HP or Max-TP traits for this Astral Protection tank; Light Wear itself does not grant evasion. Representative Lv.55 torso Yimsel has Defense 40 and Gravity +20; C&C Heavy Bulwark has Defense 100, Electric +20, Gravity −15. Weigh those defense/resistance tradeoffs for the encounter; traits are not guaranteed set defaults. [Armor table](https://xenoblade.fandom.com/wiki/Armor).", | ||
| 662 | + "Armure légère Orphean Technologies (Yii/Yimsel/Yiys/Yiym) : viser les traits esquive/PV/PT max sur les pièces pour ce tank à Astral Protection ; la catégorie légère ne donne pas d’esquive en soi. Torse Yimsel niv. 55 : Défense 40, Gravité +20 ; Bulwark lourd C&C : Défense 100, Électricité +20, Gravité −15. Adapter défense/résistance à l’ennemi ; traits non garantis. [Table armure](https://xenoblade.fandom.com/wiki/Armor)." | ||
| 663 | + ], | ||
| 664 | + "availability": [ | ||
| 665 | + "Orphean unlocks after Rescue at the Ensconced Citadel; AM level 2 unlocks Light, level 3 Heavy. Early fallback: currently stocked Sakuraba Light armor and legal physical Shield/available launcher until preferred models are available.", | ||
| 666 | + "Orphean se débloque après Rescue at the Ensconced Citadel ; niveau fabricant 2 pour léger, 3 pour lourd. Alternative précoce : armure légère Sakuraba en stock et bouclier physique/lanceur disponible." | ||
| 667 | + ] | ||
| 668 | + }, | ||
| 669 | + "sources": [ | ||
| 670 | + { | ||
| 671 | + "label": "Xeno Series Wiki personal gameplay record (weapon pair, Skill slots, Art/Skill personal ranks)", | ||
| 672 | + "url": "https://www.xenoserieswiki.org/wiki/L/Gameplay", | ||
| 673 | + "edition": "both" | ||
| 674 | + }, | ||
| 675 | + { | ||
| 676 | + "label": "DE party-member build guide by Stuart98", | ||
| 677 | + "url": "https://www.reddit.com/r/Xenoblade_Chronicles/comments/1jnyxkz/a_guide_to_xenoblade_x_de_party_member_builds/", | ||
| 678 | + "edition": "DE" | ||
| 679 | + }, | ||
| 680 | + { | ||
| 681 | + "label": "2015 GameFAQs party-member build thread", | ||
| 682 | + "url": "https://gamefaqs.gamespot.com/boards/701151-xenoblade-chronicles-x/73179135", | ||
| 683 | + "edition": "XCX" | ||
| 684 | + }, | ||
| 685 | + { | ||
| 686 | + "label": "Arms Manufacturer story locks and R&D tier facts", | ||
| 687 | + "url": "https://www.xenoserieswiki.org/wiki/Arms_Manufacturer", | ||
| 688 | + "edition": "both" | ||
| 689 | + }, | ||
| 690 | + { | ||
| 691 | + "label": "Armor / maker traits and weight details", | ||
| 692 | + "url": "https://xenoblade.fandom.com/wiki/Orphean_Technologies", | ||
| 693 | + "edition": "both" | ||
| 694 | + }, | ||
| 695 | + { | ||
| 696 | + "label": "Nintendo Life independent role/build excerpt; direct reader returned feed", | ||
| 697 | + "url": "https://www.nintendolife.com/guides/xenoblade-chronicles-x-best-combat-builds-for-all-characters", | ||
| 698 | + "edition": "XCX" | ||
| 699 | + }, | ||
| 700 | + { | ||
| 701 | + "label": "Shield Arts TP costs and weapon models", | ||
| 702 | + "url": "https://xenoblade.fandom.com/wiki/Shield", | ||
| 703 | + "edition": "XCX" | ||
| 704 | + }, | ||
| 705 | + { | ||
| 706 | + "label": "Psycho Launchers Arts TP costs and weapon models", | ||
| 707 | + "url": "https://xenoblade.fandom.com/wiki/Psycho_Launchers", | ||
| 708 | + "edition": "XCX" | ||
| 709 | + }, | ||
| 710 | + { | ||
| 711 | + "label": "Representative Lv.55 torso defense/resistance values by armor manufacturer", | ||
| 712 | + "url": "https://xenoblade.fandom.com/wiki/Armor", | ||
| 713 | + "edition": "XCX" | ||
| 714 | + } | ||
| 715 | + ] | ||
| 716 | + }, | ||
| 717 | + "H.B.": { | ||
| 718 | + "role": [ | ||
| 719 | + "Tank / party TP battery / Topple control", | ||
| 720 | + "Tank / batterie PT du groupe / contrôle Renversement" | ||
| 721 | + ], | ||
| 722 | + "rationale": [ | ||
| 723 | + "Wild Down and Long Topple/Topple Topper form reliable control; taunts and Shield Wall protect the party. Last Stand converts H.B.’s TP into ally TP. Canonical TP spenders: Wild Down and Last Stand only.", | ||
| 724 | + "Wild Down et Long Topple/Topple Topper forment un contrôle fiable ; provocations et Shield Wall protègent. Last Stand convertit les PT de H.B. en PT alliés. Seuls Wild Down et Last Stand consomment des PT." | ||
| 725 | + ], | ||
| 726 | + "arts": [ | ||
| 727 | + "Wild Down", | ||
| 728 | + "Shield Wall", | ||
| 729 | + "Decoy Round", | ||
| 730 | + "Last Stand", | ||
| 731 | + "Wild Smash", | ||
| 732 | + "Trash Talk", | ||
| 733 | + "Takedown Shot", | ||
| 734 | + "Power Dive" | ||
| 735 | + ], | ||
| 736 | + "skills": [ | ||
| 737 | + "Steel Flesh", | ||
| 738 | + "Long Topple", | ||
| 739 | + "Topple Topper", | ||
| 740 | + "Combat Presence" | ||
| 741 | + ], | ||
| 742 | + "artSubstitutes": [ | ||
| 743 | + "Atomic Hit", | ||
| 744 | + "Furious Blast", | ||
| 745 | + "Flash Grenade", | ||
| 746 | + "Bombardier" | ||
| 747 | + ], | ||
| 748 | + "skillSubstitutes": [ | ||
| 749 | + "Mighty Muscle", | ||
| 750 | + "Shield Screen", | ||
| 751 | + "Trauma Tension", | ||
| 752 | + "Double Spike" | ||
| 753 | + ], | ||
| 754 | + "equipment": { | ||
| 755 | + "weapons": [ | ||
| 756 | + "Shield: Candid & Credible Haven II physical, Lv.60 320 damage/3.3 s/200 TP gain, supports TP throughput. Assault Rifle: Sakuraba physical (Lv.60 16 damage/2.7 s/20 ammo/1 TP), so weapon-damage Takedown Shot stays physical. Before C&C unlock use Sakuraba Shield (320/165 TP).", | ||
| 757 | + "Bouclier Haven II physique C&C, niv. 60 : 320 dégâts/3,3 s/200 PT, bon débit PT. Fusil d’assaut physique Sakuraba (16/2,7 s/20 munitions/1 PT) pour Takedown Shot. Avant C&C : bouclier Sakuraba (320/165 PT)." | ||
| 758 | + ], | ||
| 759 | + "armor": [ | ||
| 760 | + "Candid & Credible Heavy Wear (Armet/Bulwark/Wrest/Stabilizers): high-defense maker and explicit raw-defense choice for taunting frontline. Representative Lv.55 torso Bulwark has Defense 100, Electric +20, Gravity −15; Light Breaker has Defense 60, Electric +20, Gravity −5. Heavy Wear trades gravity resistance/upgrade flexibility for defense. [Armor table](https://xenoblade.fandom.com/wiki/Armor).", | ||
| 761 | + "Armure lourde C&C (Armet/Bulwark/Wrest/Stabilizers) : défense brute pour tank de première ligne. Torse Bulwark niv. 55 : Défense 100, Électricité +20, Gravité −15 ; Breaker léger : Défense 60, Électricité +20, Gravité −5. Lourd échange résistance gravitationnelle/flexibilité contre défense. [Table armure](https://xenoblade.fandom.com/wiki/Armor)." | ||
| 762 | + ], | ||
| 763 | + "availability": [ | ||
| 764 | + "C&C unlocks after Chapter 5; Haven II series is AM level 2, Heavy Wear level 3. Earlier fallback: Sakuraba physical Shield/Assault Rifle and currently available armor weight.", | ||
| 765 | + "C&C après chapitre 5 ; Haven II au niveau fabricant 2, armure lourde au niveau 3. Alternative antérieure : bouclier/fusil physiques Sakuraba et poids d’armure disponible." | ||
| 766 | + ] | ||
| 767 | + }, | ||
| 768 | + "sources": [ | ||
| 769 | + { | ||
| 770 | + "label": "Xeno Series Wiki personal gameplay record (weapon pair, Skill slots, Art/Skill personal ranks)", | ||
| 771 | + "url": "https://www.xenoserieswiki.org/wiki/H.B./Gameplay", | ||
| 772 | + "edition": "both" | ||
| 773 | + }, | ||
| 774 | + { | ||
| 775 | + "label": "DE party-member build guide by Stuart98", | ||
| 776 | + "url": "https://www.reddit.com/r/Xenoblade_Chronicles/comments/1jnyxkz/a_guide_to_xenoblade_x_de_party_member_builds/", | ||
| 777 | + "edition": "DE" | ||
| 778 | + }, | ||
| 779 | + { | ||
| 780 | + "label": "2015 GameFAQs party-member build thread", | ||
| 781 | + "url": "https://gamefaqs.gamespot.com/boards/701151-xenoblade-chronicles-x/73179135", | ||
| 782 | + "edition": "XCX" | ||
| 783 | + }, | ||
| 784 | + { | ||
| 785 | + "label": "Arms Manufacturer story locks and R&D tier facts", | ||
| 786 | + "url": "https://www.xenoserieswiki.org/wiki/Arms_Manufacturer", | ||
| 787 | + "edition": "both" | ||
| 788 | + }, | ||
| 789 | + { | ||
| 790 | + "label": "Armor / maker traits and weight details", | ||
| 791 | + "url": "https://xenoblade.fandom.com/wiki/Candid_%26_Credible", | ||
| 792 | + "edition": "both" | ||
| 793 | + }, | ||
| 794 | + { | ||
| 795 | + "label": "Nintendo Life independent role/build excerpt; direct reader returned feed", | ||
| 796 | + "url": "https://www.nintendolife.com/guides/xenoblade-chronicles-x-best-combat-builds-for-all-characters", | ||
| 797 | + "edition": "XCX" | ||
| 798 | + }, | ||
| 799 | + { | ||
| 800 | + "label": "Shield Arts TP costs and weapon models", | ||
| 801 | + "url": "https://xenoblade.fandom.com/wiki/Shield", | ||
| 802 | + "edition": "XCX" | ||
| 803 | + }, | ||
| 804 | + { | ||
| 805 | + "label": "Assault Rifle Arts TP costs and weapon models", | ||
| 806 | + "url": "https://xenoblade.fandom.com/wiki/Assault_Rifle", | ||
| 807 | + "edition": "XCX" | ||
| 808 | + }, | ||
| 809 | + { | ||
| 810 | + "label": "Representative Lv.55 torso defense/resistance values by armor manufacturer", | ||
| 811 | + "url": "https://xenoblade.fandom.com/wiki/Armor", | ||
| 812 | + "edition": "XCX" | ||
| 813 | + } | ||
| 814 | + ] | ||
| 815 | + }, | ||
| 816 | + "Alexa": { | ||
| 817 | + "role": [ | ||
| 818 | + "Electric control / durable bruiser-support", | ||
| 819 | + "Contrôle électrique / combattante de soutien résistante" | ||
| 820 | + ], | ||
| 821 | + "rationale": [ | ||
| 822 | + "Arcing Horn lowers Electric Resistance; Trident Buster inflicts Shock, supported by Electric Boost. Raijin adds healing/reflect, Assault Hammer adds non-TP Topple. Maximum Voltage is legal but its post-Skell-destruction bonus is situational and another TP Art would break the two-Art package.", | ||
| 823 | + "Arcing Horn réduit la résistance électrique ; Trident Buster applique Shock, soutenu par Electric Boost. Raijin soigne/réflecte, Assault Hammer renverse sans PT. Maximum Voltage est légal mais son bonus après destruction de Skell est situationnel et dépasserait le plafond PT." | ||
| 824 | + ], | ||
| 825 | + "arts": [ | ||
| 826 | + "Arcing Horn", | ||
| 827 | + "Raijin", | ||
| 828 | + "Trident Buster", | ||
| 829 | + "Assault Hammer", | ||
| 830 | + "Power Dive", | ||
| 831 | + "Decoy Round", | ||
| 832 | + "Furious Blast", | ||
| 833 | + "Overwhelm" | ||
| 834 | + ], | ||
| 835 | + "skills": [ | ||
| 836 | + "Fortified Flesh", | ||
| 837 | + "Electric Boost", | ||
| 838 | + "High Tension" | ||
| 839 | + ], | ||
| 840 | + "artSubstitutes": [ | ||
| 841 | + "Spiral Horn", | ||
| 842 | + "Hair Trigger", | ||
| 843 | + "Flash Grenade" | ||
| 844 | + ], | ||
| 845 | + "skillSubstitutes": [ | ||
| 846 | + "Steel Flesh", | ||
| 847 | + "Quick Reload", | ||
| 848 | + "TP Overdrive" | ||
| 849 | + ], | ||
| 850 | + "equipment": { | ||
| 851 | + "weapons": [ | ||
| 852 | + "Candid & Credible Bolide Electric Javelin (Lv.60 312 damage/2.5 s/155 TP) and Assailer Electric Assault Rifle (Lv.60 16 damage/2.7 s/20 ammo/1 TP). These attributes support weapon-damage Arts; Arcing Horn, Trident Buster and Maximum Voltage have fixed Art elements.", | ||
| 853 | + "Javelin électrique Bolide C&C (niv. 60 : 312 dégâts/2,5 s/155 PT) et fusil électrique Assailer (16/2,7 s/20 munitions/1 PT). Attribut pour Arts à dégâts d’arme ; Arcing Horn, Trident Buster et Maximum Voltage ont un élément fixe." | ||
| 854 | + ], | ||
| 855 | + "armor": [ | ||
| 856 | + "Candid & Credible Light Wear (Screen/Breaker/Ward/Trudgers): Max TP and Electric Res traits exist on relevant slots; representative Lv.55 torso Breaker is Defense 60, Electric +20, Gravity −5. Heavy Bulwark is Defense 100, Electric +20, Gravity −15; choose only if raw defense beats those tradeoffs. Inspect actual item traits. [Armor table](https://xenoblade.fandom.com/wiki/Armor).", | ||
| 857 | + "Armure légère C&C (Screen/Breaker/Ward/Trudgers) : traits PT max/résistance électrique sur certains emplacements ; torse Breaker niv. 55 : Défense 60, Électricité +20, Gravité −5. Bulwark lourd : Défense 100, Électricité +20, Gravité −15 ; préférer seulement si défense brute prime. Vérifier les traits. [Table armure](https://xenoblade.fandom.com/wiki/Armor)." | ||
| 858 | + ], | ||
| 859 | + "availability": [ | ||
| 860 | + "C&C unlocks after Chapter 5; Light Wear requires AM level 2, Heavy level 3. Before then use Sakuraba physical weapons/armor; fixed-electric Arts stay electric, weapon-damage Arts inherit physical. Skell mode must not replace ground build.", | ||
| 861 | + "C&C après chapitre 5 ; armure légère au niveau 2, lourde au niveau 3. Avant, armes/armure physiques Sakuraba ; Arts électriques fixes inchangés, Arts de dégâts d’arme héritent du physique. Le mode Skell ne remplace pas le build au sol." | ||
| 862 | + ] | ||
| 863 | + }, | ||
| 864 | + "sources": [ | ||
| 865 | + { | ||
| 866 | + "label": "Xeno Series Wiki personal gameplay record (weapon pair, Skill slots, Art/Skill personal ranks)", | ||
| 867 | + "url": "https://www.xenoserieswiki.org/wiki/Alexa/Gameplay", | ||
| 868 | + "edition": "both" | ||
| 869 | + }, | ||
| 870 | + { | ||
| 871 | + "label": "DE party-member build guide by Stuart98", | ||
| 872 | + "url": "https://www.reddit.com/r/Xenoblade_Chronicles/comments/1jnyxkz/a_guide_to_xenoblade_x_de_party_member_builds/", | ||
| 873 | + "edition": "DE" | ||
| 874 | + }, | ||
| 875 | + { | ||
| 876 | + "label": "2015 GameFAQs party-member build thread", | ||
| 877 | + "url": "https://gamefaqs.gamespot.com/boards/701151-xenoblade-chronicles-x/73179135", | ||
| 878 | + "edition": "XCX" | ||
| 879 | + }, | ||
| 880 | + { | ||
| 881 | + "label": "Arms Manufacturer story locks and R&D tier facts", | ||
| 882 | + "url": "https://www.xenoserieswiki.org/wiki/Arms_Manufacturer", | ||
| 883 | + "edition": "both" | ||
| 884 | + }, | ||
| 885 | + { | ||
| 886 | + "label": "Armor / maker traits and weight details", | ||
| 887 | + "url": "https://xenoblade.fandom.com/wiki/Candid_%26_Credible", | ||
| 888 | + "edition": "both" | ||
| 889 | + }, | ||
| 890 | + { | ||
| 891 | + "label": "Assault Rifle Arts TP costs and weapon models", | ||
| 892 | + "url": "https://xenoblade.fandom.com/wiki/Assault_Rifle", | ||
| 893 | + "edition": "XCX" | ||
| 894 | + }, | ||
| 895 | + { | ||
| 896 | + "label": "Javelin Arts TP costs and weapon models", | ||
| 897 | + "url": "https://xenoblade.fandom.com/wiki/Javelin", | ||
| 898 | + "edition": "both" | ||
| 899 | + }, | ||
| 900 | + { | ||
| 901 | + "label": "Representative Lv.55 torso defense/resistance values by armor manufacturer", | ||
| 902 | + "url": "https://xenoblade.fandom.com/wiki/Armor", | ||
| 903 | + "edition": "XCX" | ||
| 904 | + } | ||
| 905 | + ] | ||
| 906 | + }, | ||
| 907 | + "Bozé": { | ||
| 908 | + "role": [ | ||
| 909 | + "Long-range Electric / Shock setup", | ||
| 910 | + "Tir à longue portée électrique / Shock" | ||
| 911 | + ], | ||
| 912 | + "rationale": [ | ||
| 913 | + "Arcing Horn lowers Electric Resistance, Trident Buster inflicts Shock; Electric Boost, Conductive Strike and Knock ’n’ Shock support this package. Eagle Eye boosts ranged accuracy/attack. Shock-dependent value falls against resistance/immunity; no evidence supports universal top-tier claims.", | ||
| 914 | + "Arcing Horn baisse la résistance électrique, Trident Buster applique Shock ; Electric Boost, Conductive Strike et Knock ’n’ Shock soutiennent le package. Eagle Eye améliore précision/attaque à distance. Valeur Shock réduite contre résistance/immunité ; aucune preuve d’une supériorité universelle." | ||
| 915 | + ], | ||
| 916 | + "arts": [ | ||
| 917 | + "Arcing Horn", | ||
| 918 | + "Eagle Eye", | ||
| 919 | + "Sidewinder", | ||
| 920 | + "Shrapnel", | ||
| 921 | + "Trident Buster", | ||
| 922 | + "Hair Trigger", | ||
| 923 | + "Hawkeye", | ||
| 924 | + "Overwhelm" | ||
| 925 | + ], | ||
| 926 | + "skills": [ | ||
| 927 | + "Electric Boost", | ||
| 928 | + "Conductive Strike", | ||
| 929 | + "Knock 'n' Shock" | ||
| 930 | + ], | ||
| 931 | + "artSubstitutes": [ | ||
| 932 | + "Spiral Horn", | ||
| 933 | + "Raijin", | ||
| 934 | + "Vortex", | ||
| 935 | + "First Down", | ||
| 936 | + "Intercept" | ||
| 937 | + ], | ||
| 938 | + "skillSubstitutes": [ | ||
| 939 | + "Master Edge", | ||
| 940 | + "Killshot", | ||
| 941 | + "Electric Guard", | ||
| 942 | + "Quick Reload", | ||
| 943 | + "TP Overdrive" | ||
| 944 | + ], | ||
| 945 | + "equipment": { | ||
| 946 | + "weapons": [ | ||
| 947 | + "Candid & Credible Bolide Electric Javelin (Lv.60 312 damage/2.5 s/155 TP) + Trigger Electric Sniper Rifle (Lv.60 112 damage/4 s/5 ammo/7 TP). Fixed-electric Arts retain their attribute.", | ||
| 948 | + "Javelin électrique Bolide C&C (niv. 60 : 312 dégâts/2,5 s/155 PT) + fusil de précision électrique Trigger (112 dégâts/4 s/5 munitions/7 PT). Arts électriques fixes gardent leur attribut." | ||
| 949 | + ], | ||
| 950 | + "armor": [ | ||
| 951 | + "Candid & Credible Light Wear: target piece-specific Electric Res/Max TP traits; representative Lv.55 torso Breaker has Defense 60, Electric +20, Gravity −5. Heavy Bulwark raises Defense to 100 but Gravity falls to −15. Light does not grant mobility; favor these verified resistances/traits for the encounter rather than assuming a universal best weight. [Armor table](https://xenoblade.fandom.com/wiki/Armor).", | ||
| 952 | + "Armure légère C&C : viser les traits résistance électrique/PT max sur certaines pièces ; torse Breaker niv. 55 : Défense 60, Électricité +20, Gravité −5. Bulwark lourd monte à Défense 100 mais descend à Gravité −15. Le léger ne confère pas de mobilité ; comparer ces résistances/traits selon l’ennemi plutôt que supposer un poids idéal. [Table armure](https://xenoblade.fandom.com/wiki/Armor)." | ||
| 953 | + ], | ||
| 954 | + "availability": [ | ||
| 955 | + "C&C unlocks after Chapter 5; Light Wear AM level 2, Heavy level 3. Earlier fallback: Sakuraba physical Javelin/Sniper Rifle; fixed-electric Arts remain electric. Keep fixed build even against Shock-resistant targets.", | ||
| 956 | + "C&C après chapitre 5 ; armure légère niveau fabricant 2, lourde 3. Alternative antérieure : Javelin/fusil de précision physiques Sakuraba ; Arts électriques fixes inchangés. Garder le build fixe contre ennemis résistants à Shock." | ||
| 957 | + ] | ||
| 958 | + }, | ||
| 959 | + "sources": [ | ||
| 960 | + { | ||
| 961 | + "label": "Xeno Series Wiki personal gameplay record (weapon pair, Skill slots, Art/Skill personal ranks)", | ||
| 962 | + "url": "https://www.xenoserieswiki.org/wiki/Boz%C3%A9/Gameplay", | ||
| 963 | + "edition": "both" | ||
| 964 | + }, | ||
| 965 | + { | ||
| 966 | + "label": "DE party-member build guide by Stuart98", | ||
| 967 | + "url": "https://www.reddit.com/r/Xenoblade_Chronicles/comments/1jnyxkz/a_guide_to_xenoblade_x_de_party_member_builds/", | ||
| 968 | + "edition": "DE" | ||
| 969 | + }, | ||
| 970 | + { | ||
| 971 | + "label": "2015 GameFAQs party-member build thread", | ||
| 972 | + "url": "https://gamefaqs.gamespot.com/boards/701151-xenoblade-chronicles-x/73179135", | ||
| 973 | + "edition": "XCX" | ||
| 974 | + }, | ||
| 975 | + { | ||
| 976 | + "label": "Arms Manufacturer story locks and R&D tier facts", | ||
| 977 | + "url": "https://www.xenoserieswiki.org/wiki/Arms_Manufacturer", | ||
| 978 | + "edition": "both" | ||
| 979 | + }, | ||
| 980 | + { | ||
| 981 | + "label": "Armor / maker traits and weight details", | ||
| 982 | + "url": "https://xenoblade.fandom.com/wiki/Candid_%26_Credible", | ||
| 983 | + "edition": "both" | ||
| 984 | + }, | ||
| 985 | + { | ||
| 986 | + "label": "Javelin Arts TP costs and weapon models", | ||
| 987 | + "url": "https://xenoblade.fandom.com/wiki/Javelin", | ||
| 988 | + "edition": "both" | ||
| 989 | + }, | ||
| 990 | + { | ||
| 991 | + "label": "Sniper Rifle Arts TP costs and weapon models", | ||
| 992 | + "url": "https://xenoblade.fandom.com/wiki/Sniper_Rifle", | ||
| 993 | + "edition": "both" | ||
| 994 | + }, | ||
| 995 | + { | ||
| 996 | + "label": "Representative Lv.55 torso defense/resistance values by armor manufacturer", | ||
| 997 | + "url": "https://xenoblade.fandom.com/wiki/Armor", | ||
| 998 | + "edition": "XCX" | ||
| 999 | + } | ||
| 1000 | + ] | ||
| 1001 | + }, | ||
| 1002 | + "Celica": { | ||
| 1003 | + "role": [ | ||
| 1004 | + "Ether debuff / Potential Dual Guns DPS with defense", | ||
| 1005 | + "Débuff Éther / DPS Potentiel aux Deux armes avec défense" | ||
| 1006 | + ], | ||
| 1007 | + "rationale": [ | ||
| 1008 | + "Black Butterfly and Black Bane are Knife Arts with fixed Ether damage; Black Butterfly applies Ether Res Down, supporting Black Bane’s debuff scaling. Zero Zero/Executioner use weapon damage on Dual Guns; Ghostwalker adds survival. Full Specs and Executioner are the only TP Arts. Absorber Skin supplies non-TP Barrier. Sleep is fragile in party AI [editorial].", | ||
| 1009 | + "Black Butterfly et Black Bane sont des Arts Couteau à dégâts Éther fixes ; Black Butterfly baisse résistance Éther et prépare Black Bane. Zero Zero/Executioner utilisent dégâts d’arme aux Deux armes ; Ghostwalker protège. Full Specs et Executioner sont les seuls Arts PT. Absorber Skin apporte Barrière sans PT. Sommeil fragile en IA de groupe [éditorial]." | ||
| 1010 | + ], | ||
| 1011 | + "arts": [ | ||
| 1012 | + "Black Butterfly", | ||
| 1013 | + "Black Bane", | ||
| 1014 | + "Full Specs", | ||
| 1015 | + "Zero Zero", | ||
| 1016 | + "Ghostwalker", | ||
| 1017 | + "Primer", | ||
| 1018 | + "Executioner", | ||
| 1019 | + "Absorber Skin" | ||
| 1020 | + ], | ||
| 1021 | + "skills": [ | ||
| 1022 | + "Steady Hand", | ||
| 1023 | + "Inner Search", | ||
| 1024 | + "Mindscape" | ||
| 1025 | + ], | ||
| 1026 | + "artSubstitutes": [ | ||
| 1027 | + "Sliding Slinger", | ||
| 1028 | + "Screamer", | ||
| 1029 | + "Violent Streak" | ||
| 1030 | + ], | ||
| 1031 | + "skillSubstitutes": [ | ||
| 1032 | + "Aura Burst", | ||
| 1033 | + "Fleet Feet", | ||
| 1034 | + "Gentle Approach", | ||
| 1035 | + "Feather Touch", | ||
| 1036 | + "Red Zone" | ||
| 1037 | + ], | ||
| 1038 | + "equipment": { | ||
| 1039 | + "weapons": [ | ||
| 1040 | + "Meredith & Co. Ether Pistolia Dual Guns (Lv.60 24 damage/2.0 s/6 ammo/2 TP) for weapon-damage Zero Zero/Executioner; Ether Pugio Knife (56 damage/1.0 s/60 TP). Critical correction: Black Butterfly is Knife-only, fixed Ether; Ether Dual Guns neither equip it nor boost its listed damage.", | ||
| 1041 | + "Deux armes Éther Pistolia Meredith & Co. (niv. 60 : 24 dégâts/2 s/6 munitions/2 PT) pour Zero Zero/Executioner à dégâts d’arme ; couteau Éther Pugio (56 dégâts/1 s/60 PT). Correction : Black Butterfly est Couteau uniquement, Éther fixe ; les Deux armes Éther ne l’équipent ni n’augmentent ses dégâts." | ||
| 1042 | + ], | ||
| 1043 | + "armor": [ | ||
| 1044 | + "Orphean Light Wear: Yii head may have Potential Up/Potential Boost; other slots can supply Max HP/TP, Evasion, Overdrive traits. Representative Lv.55 torso Yimsel has Defense 40 and Gravity +20; C&C Light Breaker has Defense 60, Electric +20 and Gravity −5. Target actual traits by piece; shop stock contains only a subset. [Armor table](https://xenoblade.fandom.com/wiki/Armor).", | ||
| 1045 | + "Armure légère Orphean : couvre-chef Yii peut porter Potential Up/Potential Boost ; autres pièces PV/PT max, esquive, traits Overdrive. Torse Yimsel niv. 55 : Défense 40, Gravité +20 ; Breaker C&C léger : Défense 60, Électricité +20, Gravité −5. Vérifier les traits réels ; boutique limitée. [Table armure](https://xenoblade.fandom.com/wiki/Armor)." | ||
| 1046 | + ], | ||
| 1047 | + "availability": [ | ||
| 1048 | + "Meredith unlocks after Chapter 4. Orphean armor requires Rescue at the Ensconced Citadel and AM level 2 Light Wear; C&C unlocks after Chapter 5 and also needs level 2 Light Wear. Earlier fallback: Sakuraba-compatible Dual Guns/Knife and current armor; fixed Ether Arts stay Ether.", | ||
| 1049 | + "Meredith après chapitre 4. Armure Orphean après Rescue at the Ensconced Citadel et niveau fabricant 2 (léger) ; C&C après chapitre 5 et niveau 2. Alternative : Deux armes/Couteau Sakuraba et armure actuelle ; Arts Éther fixes inchangés." | ||
| 1050 | + ] | ||
| 1051 | + }, | ||
| 1052 | + "sources": [ | ||
| 1053 | + { | ||
| 1054 | + "label": "Xeno Series Wiki personal gameplay record (weapon pair, Skill slots, Art/Skill personal ranks)", | ||
| 1055 | + "url": "https://www.xenoserieswiki.org/wiki/Celica/Gameplay", | ||
| 1056 | + "edition": "both" | ||
| 1057 | + }, | ||
| 1058 | + { | ||
| 1059 | + "label": "DE party-member build guide by Stuart98", | ||
| 1060 | + "url": "https://www.reddit.com/r/Xenoblade_Chronicles/comments/1jnyxkz/a_guide_to_xenoblade_x_de_party_member_builds/", | ||
| 1061 | + "edition": "DE" | ||
| 1062 | + }, | ||
| 1063 | + { | ||
| 1064 | + "label": "2015 GameFAQs party-member build thread", | ||
| 1065 | + "url": "https://gamefaqs.gamespot.com/boards/701151-xenoblade-chronicles-x/73179135", | ||
| 1066 | + "edition": "XCX" | ||
| 1067 | + }, | ||
| 1068 | + { | ||
| 1069 | + "label": "Arms Manufacturer story locks and R&D tier facts", | ||
| 1070 | + "url": "https://www.xenoserieswiki.org/wiki/Arms_Manufacturer", | ||
| 1071 | + "edition": "both" | ||
| 1072 | + }, | ||
| 1073 | + { | ||
| 1074 | + "label": "Armor / maker traits and weight details", | ||
| 1075 | + "url": "https://xenoblade.fandom.com/wiki/Orphean_Technologies", | ||
| 1076 | + "edition": "both" | ||
| 1077 | + }, | ||
| 1078 | + { | ||
| 1079 | + "label": "Nintendo Life article excerpt says build still coming soon", | ||
| 1080 | + "url": "https://www.nintendolife.com/guides/xenoblade-chronicles-x-best-combat-builds-for-all-characters", | ||
| 1081 | + "edition": "XCX" | ||
| 1082 | + }, | ||
| 1083 | + { | ||
| 1084 | + "label": "Meredith manufacturer / Ether weapon models", | ||
| 1085 | + "url": "https://xenoblade.fandom.com/wiki/Meredith_%26_Co.", | ||
| 1086 | + "edition": "XCX" | ||
| 1087 | + }, | ||
| 1088 | + { | ||
| 1089 | + "label": "Dual Guns Arts TP costs and weapon models", | ||
| 1090 | + "url": "https://xenoblade.fandom.com/wiki/Dual_Guns", | ||
| 1091 | + "edition": "both" | ||
| 1092 | + }, | ||
| 1093 | + { | ||
| 1094 | + "label": "Knife Arts TP costs and weapon models", | ||
| 1095 | + "url": "https://xenoblade.fandom.com/wiki/Knife", | ||
| 1096 | + "edition": "both" | ||
| 1097 | + }, | ||
| 1098 | + { | ||
| 1099 | + "label": "Representative Lv.55 torso defense/resistance values by armor manufacturer", | ||
| 1100 | + "url": "https://xenoblade.fandom.com/wiki/Armor", | ||
| 1101 | + "edition": "XCX" | ||
| 1102 | + } | ||
| 1103 | + ] | ||
| 1104 | + }, | ||
| 1105 | + "Frye": { | ||
| 1106 | + "role": [ | ||
| 1107 | + "Thermal ranged mob clearer / aura-assisted TP economy", | ||
| 1108 | + "Nettoyeur thermique à distance / économie PT avec aura" | ||
| 1109 | + ], | ||
| 1110 | + "rationale": [ | ||
| 1111 | + "Missile Volley lowers Thermal Res; Thermal Payload adds toppled-target damage. Defensive Stance supplies an Aura so Bullet Twister/Tornado Blade can gain TP; Cool Off consumes an Aura to return TP. DE guide warns Frye is less reliable against bosses and AI/skill fit is imperfect. Two TP Arts only.", | ||
| 1112 | + "Missile Volley baisse résistance thermique ; Thermal Payload profite des cibles renversées. Defensive Stance fournit une aura pour Bullet Twister/Tornado Blade ; Cool Off la consomme pour rendre des PT. Guide DE juge Frye moins fiable contre boss et son IA/compétences imparfaites. Deux Arts PT maximum." | ||
| 1113 | + ], | ||
| 1114 | + "arts": [ | ||
| 1115 | + "Missile Volley", | ||
| 1116 | + "Bullet Twister", | ||
| 1117 | + "Thermal Payload", | ||
| 1118 | + "Defensive Stance", | ||
| 1119 | + "Bullet Storm", | ||
| 1120 | + "Cool Off", | ||
| 1121 | + "Burning Slash", | ||
| 1122 | + "Tornado Blade" | ||
| 1123 | + ], | ||
| 1124 | + "skills": [ | ||
| 1125 | + "Machine Gunner", | ||
| 1126 | + "Trauma Tension", | ||
| 1127 | + "Mighty Muscle" | ||
| 1128 | + ], | ||
| 1129 | + "artSubstitutes": [ | ||
| 1130 | + "Rising Blade" | ||
| 1131 | + ], | ||
| 1132 | + "skillSubstitutes": [ | ||
| 1133 | + "Unwavering Courage", | ||
| 1134 | + "Iron Knuckle", | ||
| 1135 | + "Rising Renewal", | ||
| 1136 | + "Weapon Guard", | ||
| 1137 | + "Blazing Auto" | ||
| 1138 | + ], | ||
| 1139 | + "equipment": { | ||
| 1140 | + "weapons": [ | ||
| 1141 | + "Nopon Commerce Guild Ratatatta Thermal Gatling (Lv.60 20 damage/6.7 s/48 ammo/1 TP) for inherited-weapon Gatling Arts; Six Stars Glaive Thermal Longsword (Lv.60 204 damage/2.0 s/210 TP; Glaive II 216/180 TP) for weapon-damage Tornado Blade. Burning Slash is Longsword-only, fixed Thermal; Gatling attribute cannot affect it.", | ||
| 1142 | + "Gatling thermique Ratatatta Nopon Commerce Guild (niv. 60 : 20 dégâts/6,7 s/48 munitions/1 PT) pour Arts Gatling à dégâts d’arme ; épée longue thermique Glaive Six Stars (204 dégâts/2 s/210 PT ; Glaive II 216/180 PT) pour Tornado Blade. Burning Slash est Épée longue uniquement, thermique fixe ; la Gatling ne l’affecte pas." | ||
| 1143 | + ], | ||
| 1144 | + "armor": [ | ||
| 1145 | + "Orphean Light Wear for documented high evasion, matching Frye’s high personal Dodge coefficient and ranged-mob role. Representative Lv.55 torso Yimsel has Defense 40 and Gravity +20; C&C Light Breaker alternative is Defense 60, Electric +20, Gravity −5. Target HP/Evasion/Max-TP by slot; weight is not universal BIS. [Armor table](https://xenoblade.fandom.com/wiki/Armor).", | ||
| 1146 | + "Armure légère Orphean pour esquive élevée, cohérente avec Frye à distance. Torse Yimsel niv. 55 : Défense 40, Gravité +20 ; alternative Breaker léger C&C : Défense 60, Électricité +20, Gravité −5. Cibler PV/esquive/PT max ; aucun poids n’est meilleur universel. [Table armure](https://xenoblade.fandom.com/wiki/Armor)." | ||
| 1147 | + ], | ||
| 1148 | + "availability": [ | ||
| 1149 | + "Nopon unlocks after BFFs; Six Stars after A Challenger Approaches. Orphean armor requires Rescue at the Ensconced Citadel and AM level 2 for Light Wear; C&C Chapter 5/AM level 2 is fallback. Earlier weapon fallback: Sakuraba physical Gatling/Longsword; fixed Thermal Arts remain thermal. Lv.60 values are catalogue comparisons, not Frye’s guaranteed story gear.", | ||
| 1150 | + "Nopon après BFFs ; Six Stars après A Challenger Approaches. Armure Orphean après Rescue at the Ensconced Citadel et niveau fabricant 2 ; alternative C&C après chapitre 5/niveau 2. Armes physiques Sakuraba avant accès ; Arts thermiques fixes inchangés. Stats niv. 60 de comparaison catalogue, pas équipement d’histoire garanti." | ||
| 1151 | + ] | ||
| 1152 | + }, | ||
| 1153 | + "sources": [ | ||
| 1154 | + { | ||
| 1155 | + "label": "Xeno Series Wiki personal gameplay record (weapon pair, Skill slots, Art/Skill personal ranks)", | ||
| 1156 | + "url": "https://www.xenoserieswiki.org/wiki/Frye/Gameplay", | ||
| 1157 | + "edition": "both" | ||
| 1158 | + }, | ||
| 1159 | + { | ||
| 1160 | + "label": "DE party-member build guide by Stuart98", | ||
| 1161 | + "url": "https://www.reddit.com/r/Xenoblade_Chronicles/comments/1jnyxkz/a_guide_to_xenoblade_x_de_party_member_builds/", | ||
| 1162 | + "edition": "DE" | ||
| 1163 | + }, | ||
| 1164 | + { | ||
| 1165 | + "label": "2015 GameFAQs party-member build thread", | ||
| 1166 | + "url": "https://gamefaqs.gamespot.com/boards/701151-xenoblade-chronicles-x/73179135", | ||
| 1167 | + "edition": "XCX" | ||
| 1168 | + }, | ||
| 1169 | + { | ||
| 1170 | + "label": "Arms Manufacturer story locks and R&D tier facts", | ||
| 1171 | + "url": "https://www.xenoserieswiki.org/wiki/Arms_Manufacturer", | ||
| 1172 | + "edition": "both" | ||
| 1173 | + }, | ||
| 1174 | + { | ||
| 1175 | + "label": "Armor / maker traits and weight details", | ||
| 1176 | + "url": "https://xenoblade.fandom.com/wiki/Orphean_Technologies", | ||
| 1177 | + "edition": "both" | ||
| 1178 | + }, | ||
| 1179 | + { | ||
| 1180 | + "label": "Nintendo Life article excerpt says build still coming soon", | ||
| 1181 | + "url": "https://www.nintendolife.com/guides/xenoblade-chronicles-x-best-combat-builds-for-all-characters", | ||
| 1182 | + "edition": "XCX" | ||
| 1183 | + }, | ||
| 1184 | + { | ||
| 1185 | + "label": "Gatling Gun Arts TP costs and weapon models", | ||
| 1186 | + "url": "https://xenoblade.fandom.com/wiki/Gatling_Gun", | ||
| 1187 | + "edition": "both" | ||
| 1188 | + }, | ||
| 1189 | + { | ||
| 1190 | + "label": "Longsword Arts TP costs and weapon models", | ||
| 1191 | + "url": "https://xenoblade.fandom.com/wiki/Longsword", | ||
| 1192 | + "edition": "both" | ||
| 1193 | + }, | ||
| 1194 | + { | ||
| 1195 | + "label": "Representative Lv.55 torso defense/resistance values by armor manufacturer", | ||
| 1196 | + "url": "https://xenoblade.fandom.com/wiki/Armor", | ||
| 1197 | + "edition": "XCX" | ||
| 1198 | + } | ||
| 1199 | + ] | ||
| 1200 | + }, | ||
| 1201 | + "Ga Jiarg": { | ||
| 1202 | + "role": [ | ||
| 1203 | + "Editorial AI ground role: debuff-aware melee/Beam striker with Topple and status spread.", | ||
| 1204 | + "Rôle éditorial pour l'IA au sol : attaquant mêlée/Beam exploitant les débuffs, Topple et leur propagation." | ||
| 1205 | + ], | ||
| 1206 | + "rationale": [ | ||
| 1207 | + "Exactly two TP spenders: Astrolibrium and Sky Sunder. Starfall Blossom generates TP; Astrolibrium boosts Beam; Subterfuge lowers debuff resistance; Bahamut Wave spreads debuffs; Sky Sunder scales with debuffs. Astral Heal is displaced from Game8's three-TP candidate bar.", | ||
| 1208 | + "Deux Arts consomment des PT : Astrolibrium et Sky Sunder. Starfall Blossom génère des PT; Astrolibrium renforce Beam; Subterfuge réduit la résistance aux débuffs; Bahamut Wave les propage; Sky Sunder gagne en dégâts selon les débuffs. Astral Heal sort de la barre Game8 qui dépassait le plafond de trois Arts à PT." | ||
| 1209 | + ], | ||
| 1210 | + "arts": [ | ||
| 1211 | + "Starfall Blossom", | ||
| 1212 | + "Starfall Rondo", | ||
| 1213 | + "Astrolibrium", | ||
| 1214 | + "Sky Sunder", | ||
| 1215 | + "Subterfuge", | ||
| 1216 | + "Bahamut Wave", | ||
| 1217 | + "Gravity Blast", | ||
| 1218 | + "Gravity Cloak" | ||
| 1219 | + ], | ||
| 1220 | + "skills": [ | ||
| 1221 | + "Beam Boost", | ||
| 1222 | + "Aura Assault", | ||
| 1223 | + "Supreme Sword", | ||
| 1224 | + "Tactical Analyst" | ||
| 1225 | + ], | ||
| 1226 | + "artSubstitutes": [ | ||
| 1227 | + "Starfall Blade", | ||
| 1228 | + "Beam Barrage", | ||
| 1229 | + "Myopic Screen", | ||
| 1230 | + "Astral Heal", | ||
| 1231 | + "Novalibrium", | ||
| 1232 | + "Ether Blast", | ||
| 1233 | + "Pathogen Blast", | ||
| 1234 | + "Galactic Cataclysm" | ||
| 1235 | + ], | ||
| 1236 | + "skillSubstitutes": [ | ||
| 1237 | + "Inner Search", | ||
| 1238 | + "Healing Touch", | ||
| 1239 | + "Appendage Erosion", | ||
| 1240 | + "Fast Forward" | ||
| 1241 | + ], | ||
| 1242 | + "equipment": { | ||
| 1243 | + "weapons": [ | ||
| 1244 | + "Keep Ga's Sakuraba Destroyer Raygun, a Beam model at level 40 with 96 attack. His default Six Stars Pulverizing Lightblade II is Thermal, level 40 with 140 attack. For a Beam weapon-attribute Photon Saber Art, use a Beam drop such as Sakuraba Advanced Iron Saber, minimum level 3; it is not guaranteed shop stock. Otherwise keep the legal default. Sky Sunder itself remains Beam because its Art attribute is fixed.", | ||
| 1245 | + "Garder le Destroyer Raygun Beam de Sakuraba, niveau 40 et 96 d'attaque. Le Pulverizing Lightblade II Six Stars par défaut est Thermal, niveau 40 et 140 d'attaque. Pour un Art Photon Saber à attribut Beam, utiliser un modèle Beam obtenu en drop, tel que l'Advanced Iron Saber Sakuraba, niveau minimum 3; il n'est pas garanti en boutique. Sinon garder l'arme par défaut légale. Sky Sunder reste Beam car son attribut est fixe." | ||
| 1246 | + ], | ||
| 1247 | + "armor": [ | ||
| 1248 | + "Candid & Credible Light Reginal Breaker at level 55: Potential Up VI, Defense 60, Electric +20, Beam −5, Gravity −5, 360,000 credits. Add Beam Resistance Up if Beam defense matters. Alternative for Beam defense: Grenada Light Combat Norak, level 15, Ranged Attack Up II, Defense 13, Beam +20, Gravity −10, 19,200 credits.", | ||
| 1249 | + "Reginal Breaker Light de Candid & Credible au niveau 55 : Potential Up VI, Defense 60, Electric +20, Beam −5, Gravity −5, 360 000 crédits. Ajouter Beam Resistance Up si la défense Beam compte. Alternative défensive : Combat Norak Light de Grenada, niveau 15, Ranged Attack Up II, Defense 13, Beam +20, Gravity −10, 19 200 crédits." | ||
| 1250 | + ], | ||
| 1251 | + "availability": [ | ||
| 1252 | + "Ga's default Destroyer Raygun is already Beam and meets his starting level 40. The default Photon Saber is Thermal. A Beam Saber alternative such as Advanced Iron Saber is a random enemy drop, not guaranteed shop stock; if unavailable, keep the default because Sky Sunder remains Beam. Candid & Credible unlocks after Chapter 5; its Light line needs manufacturer rank 2. Heavy Combat Bulwark is level 15 but requires C&C rank 3. Grenada is available from the start; Light stock needs rank 2.", | ||
| 1253 | + "Le Destroyer Raygun Beam par défaut de Ga Jiarg est utilisable dès son niveau 40. Son Photon Saber par défaut est Thermal. L'alternative Beam Advanced Iron Saber est un drop ennemi, pas un stock garanti en boutique; si indisponible, garder l'arme par défaut car Sky Sunder reste Beam. Candid & Credible se débloque après le chapitre 5; sa gamme Light demande le rang fabricant 2. Combat Bulwark Heavy demande le niveau 15 et le rang C&C 3. Grenada est disponible dès le début; sa gamme Light demande le rang 2." | ||
| 1254 | + ] | ||
| 1255 | + }, | ||
| 1256 | + "sources": [ | ||
| 1257 | + { | ||
| 1258 | + "label": "Game8 Ga Jiarg Best Build", | ||
| 1259 | + "url": "https://game8.co/games/Xenoblade-Chronicles-X/archives/513831", | ||
| 1260 | + "edition": "DE" | ||
| 1261 | + }, | ||
| 1262 | + { | ||
| 1263 | + "label": "Xeno Series Wiki Ga Jiarg gameplay progression", | ||
| 1264 | + "url": "https://www.xenoserieswiki.org/wiki/Ga_Jiarg/Gameplay", | ||
| 1265 | + "edition": "DE" | ||
| 1266 | + }, | ||
| 1267 | + { | ||
| 1268 | + "label": "Xeno Series Wiki Arms Manufacturer gates", | ||
| 1269 | + "url": "https://www.xenoserieswiki.org/wiki/Arms_Manufacturer", | ||
| 1270 | + "edition": "both" | ||
| 1271 | + }, | ||
| 1272 | + { | ||
| 1273 | + "label": "Xeno Series Wiki armor rules", | ||
| 1274 | + "url": "https://www.xenoserieswiki.org/wiki/Armor_(XCX)", | ||
| 1275 | + "edition": "both" | ||
| 1276 | + }, | ||
| 1277 | + { | ||
| 1278 | + "label": "Game8 Photon Saber catalog", | ||
| 1279 | + "url": "https://game8.co/games/Xenoblade-Chronicles-X/archives/504904", | ||
| 1280 | + "edition": "DE" | ||
| 1281 | + }, | ||
| 1282 | + { | ||
| 1283 | + "label": "Game8 Raygun catalog", | ||
| 1284 | + "url": "https://game8.co/games/Xenoblade-Chronicles-X/archives/504897", | ||
| 1285 | + "edition": "DE" | ||
| 1286 | + }, | ||
| 1287 | + { | ||
| 1288 | + "label": "Xeno Series Wiki Destroyer Raygun", | ||
| 1289 | + "url": "https://www.xenoserieswiki.org/wiki/Destroyer_Raygun", | ||
| 1290 | + "edition": "both" | ||
| 1291 | + }, | ||
| 1292 | + { | ||
| 1293 | + "label": "Xeno Series Wiki Pulverizing Lightblade II", | ||
| 1294 | + "url": "https://www.xenoserieswiki.org/wiki/Pulverizing_Lightblade_II", | ||
| 1295 | + "edition": "both" | ||
| 1296 | + }, | ||
| 1297 | + { | ||
| 1298 | + "label": "Xeno Series Wiki Advanced Iron Saber", | ||
| 1299 | + "url": "https://www.xenoserieswiki.org/wiki/Advanced_Iron_Saber", | ||
| 1300 | + "edition": "both" | ||
| 1301 | + }, | ||
| 1302 | + { | ||
| 1303 | + "label": "Game8 Reginal Breaker", | ||
| 1304 | + "url": "https://game8.co/games/Xenoblade-Chronicles-X/archives/510343", | ||
| 1305 | + "edition": "DE" | ||
| 1306 | + }, | ||
| 1307 | + { | ||
| 1308 | + "label": "Game8 Potential Up", | ||
| 1309 | + "url": "https://game8.co/games/Xenoblade-Chronicles-X/archives/505711", | ||
| 1310 | + "edition": "DE" | ||
| 1311 | + }, | ||
| 1312 | + { | ||
| 1313 | + "label": "Game8 Combat Bulwark", | ||
| 1314 | + "url": "https://game8.co/games/Xenoblade-Chronicles-X/archives/510204", | ||
| 1315 | + "edition": "DE" | ||
| 1316 | + }, | ||
| 1317 | + { | ||
| 1318 | + "label": "Game8 Combat Norak", | ||
| 1319 | + "url": "https://game8.co/games/Xenoblade-Chronicles-X/archives/510471", | ||
| 1320 | + "edition": "DE" | ||
| 1321 | + } | ||
| 1322 | + ] | ||
| 1323 | + }, | ||
| 1324 | + "Hope": { | ||
| 1325 | + "role": [ | ||
| 1326 | + "Editorial AI ground role: ranged support/healer, debuff cleanse, barrier, Virus, party TP.", | ||
| 1327 | + "Rôle éditorial pour l'IA au sol : support/soins à distance, dissipation des débuffs, barrière, Virus et PT pour l'équipe." | ||
| 1328 | + ], | ||
| 1329 | + "rationale": [ | ||
| 1330 | + "Exactly two TP spenders: Astral Protection and Energy Source. Repair cleanses and heals; Absorber Skin grants a barrier; Astral Protection adds resistances and healing; Energy Source supplies party TP; Stellar Ray, Shooting Star, Tacit Censure, and Black Butterfly add ranged/debuff utility. Servant Sacrifice is excluded: its Control/Heroic Tale prerequisite cannot be guaranteed under the two-TP progression cap.", | ||
| 1331 | + "Deux Arts consomment des PT : Astral Protection et Energy Source. Repair dissipe les débuffs et soigne; Absorber Skin donne une barrière; Astral Protection ajoute résistances et soins; Energy Source fournit des PT à l'équipe; Stellar Ray, Shooting Star, Tacit Censure et Black Butterfly ajoutent dégâts et débuffs à distance. Servant Sacrifice est exclu : son prérequis Control/Heroic Tale ne peut pas être garanti avec le plafond de deux Arts à PT pendant toute la progression." | ||
| 1332 | + ], | ||
| 1333 | + "arts": [ | ||
| 1334 | + "Repair", | ||
| 1335 | + "Absorber Skin", | ||
| 1336 | + "Stellar Ray", | ||
| 1337 | + "Shooting Star", | ||
| 1338 | + "Tacit Censure", | ||
| 1339 | + "Black Butterfly", | ||
| 1340 | + "Astral Protection", | ||
| 1341 | + "Energy Source" | ||
| 1342 | + ], | ||
| 1343 | + "skills": [ | ||
| 1344 | + "Inner Search", | ||
| 1345 | + "Knight's Soul", | ||
| 1346 | + "TP Overdrive" | ||
| 1347 | + ], | ||
| 1348 | + "artSubstitutes": [ | ||
| 1349 | + "Brainjack", | ||
| 1350 | + "Full Specs", | ||
| 1351 | + "Secondary Speed", | ||
| 1352 | + "Dispel", | ||
| 1353 | + "Starlight Kick" | ||
| 1354 | + ], | ||
| 1355 | + "skillSubstitutes": [ | ||
| 1356 | + "Buff Heal", | ||
| 1357 | + "Well-Weathered", | ||
| 1358 | + "Mechanoid Slayer", | ||
| 1359 | + "King's Decree", | ||
| 1360 | + "Supreme Sword" | ||
| 1361 | + ], | ||
| 1362 | + "equipment": { | ||
| 1363 | + "weapons": [ | ||
| 1364 | + "Keep Sakuraba Knife + Psycho Launchers. Hope starts with Chrome Knife and Warrior Launchers, both Physical Sakuraba models. Her selected support/status Arts do not require a matching weapon attribute; preserve native types and upgrade item stats/TP gain.", | ||
| 1365 | + "Garder Knife + Psycho Launchers Sakuraba. Hope commence avec Chrome Knife et Warrior Launchers, deux modèles physiques de Sakuraba. Ses Arts de soutien/statut ne demandent pas d'attribut d'arme particulier; conserver les types natifs et améliorer les stats/le gain de PT." | ||
| 1366 | + ], | ||
| 1367 | + "armor": [ | ||
| 1368 | + "Medium torso baseline due to Hope's −20% Max HP. Candid & Credible Forza Encaser at level 45 gives Potential Up V, Defense 67, Electric +20, Beam −5, Gravity −10. Add Max HP Up on another compatible armor piece. Lower-level C&C Heavy Combat Bulwark at level 15 gives Potential Up II and Defense 40; use only as a story fallback, not a universal Heavy recommendation.", | ||
| 1369 | + "Base recommandée : torse Medium à cause du −20% de Max HP de Hope. Le Forza Encaser Medium de Candid & Credible, niveau 45, donne Potential Up V, Defense 67, Electric +20, Beam −5, Gravity −10. Ajouter Max HP Up sur une autre pièce compatible. Le Combat Bulwark Heavy C&C, niveau 15, donne Potential Up II et Defense 40; le réserver à une solution de progression, pas à une recommandation Heavy universelle." | ||
| 1370 | + ], | ||
| 1371 | + "availability": [ | ||
| 1372 | + "Candid & Credible unlocks after Chapter 5; Forza Encaser requires level 45 and is Medium Wear. Combat Bulwark requires level 15 and Heavy stock at maker rank 3. Before C&C unlocks, use a level-appropriate Sakuraba Medium torso and a Potential Up or Max HP Up augment. Grenada Light arm pieces can add Max TP Up, but Light stock requires maker rank 2 and is optional because the Skills already support TP.", | ||
| 1373 | + "Candid & Credible se débloque après le chapitre 5; Forza Encaser demande le niveau 45 et est Medium. Combat Bulwark demande le niveau 15 et le stock Heavy au rang 3 du fabricant. Avant le déblocage C&C, utiliser un torse Sakuraba Medium adapté au niveau avec un augment Potential Up ou Max HP Up. Les bras Light Grenada peuvent ajouter Max TP Up, mais le stock Light demande le rang 2 et reste facultatif puisque les Skills soutiennent déjà les PT." | ||
| 1374 | + ] | ||
| 1375 | + }, | ||
| 1376 | + "sources": [ | ||
| 1377 | + { | ||
| 1378 | + "label": "Game8 Hope Best Build", | ||
| 1379 | + "url": "https://game8.co/games/Xenoblade-Chronicles-X/archives/507443", | ||
| 1380 | + "edition": "DE" | ||
| 1381 | + }, | ||
| 1382 | + { | ||
| 1383 | + "label": "Nintendo Life all-character builds", | ||
| 1384 | + "url": "https://www.nintendolife.com/guides/xenoblade-chronicles-x-best-combat-builds-for-all-characters", | ||
| 1385 | + "edition": "DE" | ||
| 1386 | + }, | ||
| 1387 | + { | ||
| 1388 | + "label": "Xeno Series Wiki Hope gameplay", | ||
| 1389 | + "url": "https://www.xenoserieswiki.org/wiki/Hope/Gameplay", | ||
| 1390 | + "edition": "both" | ||
| 1391 | + }, | ||
| 1392 | + { | ||
| 1393 | + "label": "Xeno Series Wiki Chrome Knife", | ||
| 1394 | + "url": "https://www.xenoserieswiki.org/wiki/Chrome_Knife", | ||
| 1395 | + "edition": "both" | ||
| 1396 | + }, | ||
| 1397 | + { | ||
| 1398 | + "label": "Xeno Series Wiki Warrior Launchers", | ||
| 1399 | + "url": "https://www.xenoserieswiki.org/wiki/Warrior_Launchers", | ||
| 1400 | + "edition": "both" | ||
| 1401 | + }, | ||
| 1402 | + { | ||
| 1403 | + "label": "Xeno Series Wiki Forza Encaser", | ||
| 1404 | + "url": "https://www.xenoserieswiki.org/wiki/Forza_Encaser", | ||
| 1405 | + "edition": "both" | ||
| 1406 | + }, | ||
| 1407 | + { | ||
| 1408 | + "label": "Xeno Series Wiki Brainjack", | ||
| 1409 | + "url": "https://www.xenoserieswiki.org/wiki/Brainjack", | ||
| 1410 | + "edition": "both" | ||
| 1411 | + }, | ||
| 1412 | + { | ||
| 1413 | + "label": "Xeno Series Wiki Servant Sacrifice dependency", | ||
| 1414 | + "url": "https://www.xenoserieswiki.org/wiki/Servant_Sacrifice", | ||
| 1415 | + "edition": "both" | ||
| 1416 | + }, | ||
| 1417 | + { | ||
| 1418 | + "label": "Game8 Combat Bulwark", | ||
| 1419 | + "url": "https://game8.co/games/Xenoblade-Chronicles-X/archives/510204", | ||
| 1420 | + "edition": "DE" | ||
| 1421 | + }, | ||
| 1422 | + { | ||
| 1423 | + "label": "Xeno Series Wiki Armor", | ||
| 1424 | + "url": "https://www.xenoserieswiki.org/wiki/Armor_(XCX)", | ||
| 1425 | + "edition": "both" | ||
| 1426 | + }, | ||
| 1427 | + { | ||
| 1428 | + "label": "Xeno Series Wiki Arms Manufacturer", | ||
| 1429 | + "url": "https://www.xenoserieswiki.org/wiki/Arms_Manufacturer", | ||
| 1430 | + "edition": "both" | ||
| 1431 | + } | ||
| 1432 | + ] | ||
| 1433 | + }, | ||
| 1434 | + "Liesel": { | ||
| 1435 | + "role": [ | ||
| 1436 | + "Editorial AI ground role: ranged/electric combo striker with Shock, Electric Res Down, and Decoy.", | ||
| 1437 | + "Rôle éditorial pour l'IA au sol : attaquante combo à distance/électricité avec Shock, Electric Res Down et Decoy." | ||
| 1438 | + ], | ||
| 1439 | + "rationale": [ | ||
| 1440 | + "Exactly two TP spenders: Trident Buster and Early Bird. Arcing Horn and Trident Buster are fixed Electric Arts. Knock 'n' Shock can inflict Shock with the existing Melee Art Arcing Horn; Conductive Strike then has a Shock provider from its rank-13 unlock, before Trident Buster arrives at rank 15. Trigger Happy supports ranged combos. Effect Charge still has an AI sequencing caveat.", | ||
| 1441 | + "Deux Arts consomment des PT : Trident Buster et Early Bird. Arcing Horn et Trident Buster sont des Arts Electric fixes. Knock 'n' Shock peut appliquer Shock avec l'Art mêlée Arcing Horn; Conductive Strike dispose donc d'une source de Shock dès son déblocage au rang 13, avant Trident Buster au rang 15. Trigger Happy soutient les combos à distance. Effect Charge garde une réserve sur le séquençage par l'IA." | ||
| 1442 | + ], | ||
| 1443 | + "arts": [ | ||
| 1444 | + "Spiral Horn", | ||
| 1445 | + "Arcing Horn", | ||
| 1446 | + "Effect Charge", | ||
| 1447 | + "Trident Buster", | ||
| 1448 | + "Primer", | ||
| 1449 | + "Early Bird", | ||
| 1450 | + "Violent Streak", | ||
| 1451 | + "Ghostwalker" | ||
| 1452 | + ], | ||
| 1453 | + "skills": [ | ||
| 1454 | + "Knock 'n' Shock", | ||
| 1455 | + "Conductive Strike", | ||
| 1456 | + "Trigger Happy" | ||
| 1457 | + ], | ||
| 1458 | + "artSubstitutes": [ | ||
| 1459 | + "Sliding Slinger", | ||
| 1460 | + "Overwhelm", | ||
| 1461 | + "Raijin", | ||
| 1462 | + "Speed Demon", | ||
| 1463 | + "Executioner", | ||
| 1464 | + "Mind Shift", | ||
| 1465 | + "Combat Limbo", | ||
| 1466 | + "Hair Trigger" | ||
| 1467 | + ], | ||
| 1468 | + "skillSubstitutes": [ | ||
| 1469 | + "Electric Boost", | ||
| 1470 | + "Quick Reload" | ||
| 1471 | + ], | ||
| 1472 | + "equipment": { | ||
| 1473 | + "weapons": [ | ||
| 1474 | + "Keep Dual Guns + Javelin. Grenada's Warrior Gemels are Beam and its Chrome Parce Javelin is Physical. For an Electric weapon-damage Javelin, switch to Candid & Credible Chrome Bolide, an Electric Javelin with 156 attack at level 20. C&C unlocks after Chapter 5. Before then, Chrome Parce remains legal; Arcing Horn and Trident Buster still deal Electric because their Art attribute is fixed.", | ||
| 1475 | + "Garder Dual Guns + Javelin. Les Warrior Gemels Grenada sont Beam et son Javelin Chrome Parce est Physical. Pour un Javelin Electric dont les Arts à dégâts d'arme profitent de cet attribut, passer au Chrome Bolide Electric de Candid & Credible, 156 d'attaque au niveau 20. C&C se débloque après le chapitre 5. Avant, Chrome Parce reste légal; Arcing Horn et Trident Buster restent Electric car leur attribut appartient à l'Art." | ||
| 1476 | + ], | ||
| 1477 | + "armor": [ | ||
| 1478 | + "Grenada Light Combat Norak torso, level 15: Ranged Attack Up II, Defense 13, Beam +20, Gravity −10, three trait upgrades, 19,200 credits. This matches Liesel's +30% ranged attack. Light favors attribute resistance, but has less defense. If Grenada has not reached maker rank 2, use its Medium first-set stock at rank 1 and add Ranged Attack Up in a compatible augment slot.", | ||
| 1479 | + "Torse Grenada Light Combat Norak, niveau 15 : Ranged Attack Up II, Defense 13, Beam +20, Gravity −10, trois améliorations de traits, 19 200 crédits. Cela correspond au +30% de ranged attack de Liesel. Light favorise les résistances d'attribut mais offre moins de défense. Si Grenada n'a pas atteint le rang fabricant 2, utiliser son stock Medium initial au rang 1 et ajouter Ranged Attack Up dans un emplacement d'augment compatible." | ||
| 1480 | + ], | ||
| 1481 | + "availability": [ | ||
| 1482 | + "Grenada is one of the initial manufacturers; its Light line needs maker rank 2. Candid & Credible unlocks after Chapter 5; Chrome Bolide is usable from level 20. Before C&C opens, use Grenada Chrome Parce, level 20, Physical, TP Gain 120. Do not describe this fallback as an Electric weapon.", | ||
| 1483 | + "Grenada est disponible dès le début; sa gamme Light demande le rang fabricant 2. Candid & Credible se débloque après le chapitre 5; Chrome Bolide est utilisable dès le niveau 20. Avant l'ouverture de C&C, utiliser Grenada Chrome Parce, niveau 20, Physical, TP Gain 120. Ne pas présenter cette solution comme une arme Electric." | ||
| 1484 | + ] | ||
| 1485 | + }, | ||
| 1486 | + "sources": [ | ||
| 1487 | + { | ||
| 1488 | + "label": "Game8 Liesel Best Build", | ||
| 1489 | + "url": "https://game8.co/games/Xenoblade-Chronicles-X/archives/507864", | ||
| 1490 | + "edition": "DE" | ||
| 1491 | + }, | ||
| 1492 | + { | ||
| 1493 | + "label": "Nintendo Life all-character builds, Liesel marked Coming soon", | ||
| 1494 | + "url": "https://www.nintendolife.com/guides/xenoblade-chronicles-x-best-combat-builds-for-all-characters", | ||
| 1495 | + "edition": "DE" | ||
| 1496 | + }, | ||
| 1497 | + { | ||
| 1498 | + "label": "Xeno Series Wiki Liesel gameplay progression", | ||
| 1499 | + "url": "https://www.xenoserieswiki.org/wiki/Liesel/Gameplay", | ||
| 1500 | + "edition": "DE" | ||
| 1501 | + }, | ||
| 1502 | + { | ||
| 1503 | + "label": "Xeno Series Wiki Warrior Gemels", | ||
| 1504 | + "url": "https://www.xenoserieswiki.org/wiki/Warrior_Gemels", | ||
| 1505 | + "edition": "both" | ||
| 1506 | + }, | ||
| 1507 | + { | ||
| 1508 | + "label": "Xeno Series Wiki Chrome Parce", | ||
| 1509 | + "url": "https://www.xenoserieswiki.org/wiki/Chrome_Parce", | ||
| 1510 | + "edition": "both" | ||
| 1511 | + }, | ||
| 1512 | + { | ||
| 1513 | + "label": "Xeno Series Wiki Chrome Bolide", | ||
| 1514 | + "url": "https://www.xenoserieswiki.org/wiki/Chrome_Bolide", | ||
| 1515 | + "edition": "both" | ||
| 1516 | + }, | ||
| 1517 | + { | ||
| 1518 | + "label": "Xeno Series Wiki Knock 'n' Shock", | ||
| 1519 | + "url": "https://www.xenoserieswiki.org/wiki/Knock_%27n%27_Shock", | ||
| 1520 | + "edition": "both" | ||
| 1521 | + }, | ||
| 1522 | + { | ||
| 1523 | + "label": "Xeno Series Wiki Conductive Strike", | ||
| 1524 | + "url": "https://www.xenoserieswiki.org/wiki/Conductive_Strike", | ||
| 1525 | + "edition": "both" | ||
| 1526 | + }, | ||
| 1527 | + { | ||
| 1528 | + "label": "Xeno Series Wiki Quick Reload", | ||
| 1529 | + "url": "https://www.xenoserieswiki.org/wiki/Quick_Reload", | ||
| 1530 | + "edition": "both" | ||
| 1531 | + }, | ||
| 1532 | + { | ||
| 1533 | + "label": "Game8 Javelin catalog", | ||
| 1534 | + "url": "https://game8.co/games/Xenoblade-Chronicles-X/archives/504900", | ||
| 1535 | + "edition": "DE" | ||
| 1536 | + }, | ||
| 1537 | + { | ||
| 1538 | + "label": "Game8 Combat Norak", | ||
| 1539 | + "url": "https://game8.co/games/Xenoblade-Chronicles-X/archives/510471", | ||
| 1540 | + "edition": "DE" | ||
| 1541 | + }, | ||
| 1542 | + { | ||
| 1543 | + "label": "Xeno Series Wiki Arms Manufacturer", | ||
| 1544 | + "url": "https://www.xenoserieswiki.org/wiki/Arms_Manufacturer", | ||
| 1545 | + "edition": "both" | ||
| 1546 | + } | ||
| 1547 | + ] | ||
| 1548 | + }, | ||
| 1549 | + "Murderess": { | ||
| 1550 | + "role": [ | ||
| 1551 | + "Editorial AI ground role: melee pressure, Stun, and defensive Aura.", | ||
| 1552 | + "Rôle éditorial pour l'IA au sol : pression mêlée, Stun et Aura défensive." | ||
| 1553 | + ], | ||
| 1554 | + "rationale": [ | ||
| 1555 | + "Exactly two TP spenders: Astral Protection and Killing Machine. Keep Seventh Edge, Side Slash, Back Slash, Electric Surge, Jetstream, and Stellar Ray as non-TP Arts. Hundred Shells is the guide's third TP Art and is ordered only as a substitute; its rear-position bonus is not assumed reliable for AI.", | ||
| 1556 | + "Deux Arts consomment des PT : Astral Protection et Killing Machine. Garder Seventh Edge, Side Slash, Back Slash, Electric Surge, Jetstream et Stellar Ray comme Arts sans coût en PT. Hundred Shells est le troisième Art à PT du guide; il n'est qu'un substitut ordonné, et son bonus arrière n'est pas supposé fiable avec l'IA." | ||
| 1557 | + ], | ||
| 1558 | + "arts": [ | ||
| 1559 | + "Seventh Edge", | ||
| 1560 | + "Side Slash", | ||
| 1561 | + "Back Slash", | ||
| 1562 | + "Electric Surge", | ||
| 1563 | + "Jetstream", | ||
| 1564 | + "Stellar Ray", | ||
| 1565 | + "Astral Protection", | ||
| 1566 | + "Killing Machine" | ||
| 1567 | + ], | ||
| 1568 | + "skills": [ | ||
| 1569 | + "Aura Assault", | ||
| 1570 | + "High Tension", | ||
| 1571 | + "Hellhound" | ||
| 1572 | + ], | ||
| 1573 | + "artSubstitutes": [ | ||
| 1574 | + "Lightning Cloak", | ||
| 1575 | + "Shadowrunner", | ||
| 1576 | + "Shooting Star", | ||
| 1577 | + "Thirsty Edge", | ||
| 1578 | + "Gravity Lunge", | ||
| 1579 | + "Hundred Shells" | ||
| 1580 | + ], | ||
| 1581 | + "skillSubstitutes": [ | ||
| 1582 | + "Agile Gunslinger", | ||
| 1583 | + "Boosted Bullets", | ||
| 1584 | + "Mechanoid Slayer", | ||
| 1585 | + "Trigger Happy", | ||
| 1586 | + "Lifeline" | ||
| 1587 | + ], | ||
| 1588 | + "equipment": { | ||
| 1589 | + "weapons": [ | ||
| 1590 | + "Keep Sakuraba Physical Dual Swords + Psycho Launchers. Murderess starts with Chrome Blades and Warrior Launchers, both Sakuraba Physical models. Electric Surge and Jetstream keep their Art damage attribute with those weapons. Upgrade within the native types.", | ||
| 1591 | + "Garder Dual Swords Physical + Psycho Launchers Sakuraba. Murderess commence avec Chrome Blades et Warrior Launchers, deux modèles physiques Sakuraba. Electric Surge et Jetstream gardent l'attribut de dégâts propre à l'Art avec ces armes. Améliorer les types natifs." | ||
| 1592 | + ], | ||
| 1593 | + "armor": [ | ||
| 1594 | + "Medium Sakuraba Combat Bodywear at level 15 gives Melee Attack Up II, Defense 28, Physical +10, Gravity −15. Murderess has −5% Max HP, so use Medium as the story baseline. At level 55, Light Sakuraba Reginal Vest gives Melee Attack Up VI, Defense 57, Physical +10, Gravity −10, 360,000 credits; use it when survival is adequate.", | ||
| 1595 | + "Le Combat Bodywear Medium Sakuraba au niveau 15 donne Melee Attack Up II, Defense 28, Physical +10, Gravity −15. Murderess a −5% de Max HP; utiliser Medium comme base de progression. Au niveau 55, le Reginal Vest Light Sakuraba donne Melee Attack Up VI, Defense 57, Physical +10, Gravity −10, 360 000 crédits; le choisir si sa survie est suffisante." | ||
| 1596 | + ], | ||
| 1597 | + "availability": [ | ||
| 1598 | + "Sakuraba is available from the start. Combat Bodywear is level 15 and Medium stock is maker rank 1. Reginal Vest is level 55 and Light stock needs maker rank 2. Light trades lower base defense for better attribute resistance; do not choose it solely for the higher trait rank if Murderess is being incapacitated.", | ||
| 1599 | + "Sakuraba est disponible dès le début. Combat Bodywear demande le niveau 15 et le stock Medium est au rang fabricant 1. Reginal Vest demande le niveau 55 et le stock Light le rang 2. Light échange une défense de base plus faible contre de meilleures résistances d'attribut; ne pas le choisir uniquement pour son trait supérieur si Murderess est mise hors combat." | ||
| 1600 | + ] | ||
| 1601 | + }, | ||
| 1602 | + "sources": [ | ||
| 1603 | + { | ||
| 1604 | + "label": "Game8 Murderess Best Build", | ||
| 1605 | + "url": "https://game8.co/games/Xenoblade-Chronicles-X/archives/507456", | ||
| 1606 | + "edition": "DE" | ||
| 1607 | + }, | ||
| 1608 | + { | ||
| 1609 | + "label": "Nintendo Life all-character builds", | ||
| 1610 | + "url": "https://www.nintendolife.com/guides/xenoblade-chronicles-x-best-combat-builds-for-all-characters", | ||
| 1611 | + "edition": "DE" | ||
| 1612 | + }, | ||
| 1613 | + { | ||
| 1614 | + "label": "Xeno Series Wiki Murderess gameplay progression", | ||
| 1615 | + "url": "https://www.xenoserieswiki.org/wiki/Murderess/Gameplay", | ||
| 1616 | + "edition": "both" | ||
| 1617 | + }, | ||
| 1618 | + { | ||
| 1619 | + "label": "Xeno Series Wiki Chrome Blades", | ||
| 1620 | + "url": "https://www.xenoserieswiki.org/wiki/Chrome_Blades", | ||
| 1621 | + "edition": "both" | ||
| 1622 | + }, | ||
| 1623 | + { | ||
| 1624 | + "label": "Xeno Series Wiki Warrior Launchers", | ||
| 1625 | + "url": "https://www.xenoserieswiki.org/wiki/Warrior_Launchers", | ||
| 1626 | + "edition": "both" | ||
| 1627 | + }, | ||
| 1628 | + { | ||
| 1629 | + "label": "Game8 Combat Bodywear", | ||
| 1630 | + "url": "https://game8.co/games/Xenoblade-Chronicles-X/archives/510709", | ||
| 1631 | + "edition": "DE" | ||
| 1632 | + }, | ||
| 1633 | + { | ||
| 1634 | + "label": "Game8 Reginal Vest", | ||
| 1635 | + "url": "https://game8.co/games/Xenoblade-Chronicles-X/archives/510523", | ||
| 1636 | + "edition": "DE" | ||
| 1637 | + }, | ||
| 1638 | + { | ||
| 1639 | + "label": "Xeno Series Wiki Armor", | ||
| 1640 | + "url": "https://www.xenoserieswiki.org/wiki/Armor_(XCX)", | ||
| 1641 | + "edition": "both" | ||
| 1642 | + } | ||
| 1643 | + ] | ||
| 1644 | + }, | ||
| 1645 | + "Nagi": { | ||
| 1646 | + "role": [ | ||
| 1647 | + "Editorial AI ground role: durable melee striker with Physical/Thermal setup, one TP finisher, and party TP on Overdrive.", | ||
| 1648 | + "Rôle éditorial pour l'IA au sol : attaquant mêlée résistant avec préparation Physical/Thermal, un finisseur à PT et des PT d'équipe en Overdrive." | ||
| 1649 | + ], | ||
| 1650 | + "rationale": [ | ||
| 1651 | + "Exactly two TP spenders: Blossom Dance and Enhanced Stand. This keeps the TP finisher and a healing Aura that supports Yamato Spirit, while dropping guide candidate Incendiary Edge as a third TP Art. Missile Volley and Burning Slash retain Thermal Res Down; Magnum Edge supports the weapon-damage melee chain. Bullet Storm fills the eighth slot without TP cost.", | ||
| 1652 | + "Deux Arts consomment des PT : Blossom Dance et Enhanced Stand. La barre garde le finisseur à PT et une Aura de soins qui soutient Yamato Spirit, mais écarte Incendiary Edge, troisième Art à PT du guide. Missile Volley et Burning Slash gardent la séquence Thermal Res Down; Magnum Edge soutient les Arts mêlée à dégâts d'arme. Bullet Storm remplit le huitième emplacement sans consommer de PT." | ||
| 1653 | + ], | ||
| 1654 | + "arts": [ | ||
| 1655 | + "Rising Blade", | ||
| 1656 | + "True Stream Edge", | ||
| 1657 | + "Blossom Dance", | ||
| 1658 | + "Magnum Edge", | ||
| 1659 | + "Enhanced Stand", | ||
| 1660 | + "Missile Volley", | ||
| 1661 | + "Burning Slash", | ||
| 1662 | + "Bullet Storm" | ||
| 1663 | + ], | ||
| 1664 | + "skills": [ | ||
| 1665 | + "Steel Flesh", | ||
| 1666 | + "Mighty Muscle", | ||
| 1667 | + "Yamato Spirit", | ||
| 1668 | + "Fortified Flesh", | ||
| 1669 | + "Grand Procession" | ||
| 1670 | + ], | ||
| 1671 | + "artSubstitutes": [ | ||
| 1672 | + "Thermal Payload", | ||
| 1673 | + "Cool Off", | ||
| 1674 | + "Defensive Stance", | ||
| 1675 | + "Offensive Stance", | ||
| 1676 | + "Samurai Soul", | ||
| 1677 | + "Incendiary Edge" | ||
| 1678 | + ], | ||
| 1679 | + "skillSubstitutes": [ | ||
| 1680 | + "Trauma Tension", | ||
| 1681 | + "Rising Renewal", | ||
| 1682 | + "Machine Gunner" | ||
| 1683 | + ], | ||
| 1684 | + "equipment": { | ||
| 1685 | + "weapons": [ | ||
| 1686 | + "Use Physical Longsword + Gatling Gun weapon-damage lines. Sakuraba's Sword and Machine series supply these native types. Nagi starts with Physical Signature Glaive: Fledgling, whose recorded maker is Unknown, and Physical Sakuraba Ophidian Machine. His Thermal Arts already have fixed Thermal damage.", | ||
| 1687 | + "Utiliser des lignes d'armes Physical Longsword + Gatling Gun pour les Arts à dégâts d'arme. Les séries Sword et Machine de Sakuraba offrent ces types natifs. Nagi commence avec le Signature Glaive: Fledgling Physical, dont le fabricant est indiqué Unknown, et le Gatling Gun Ophidian Machine Physical de Sakuraba. Ses Arts Thermal ont déjà des dégâts Thermal fixes." | ||
| 1688 | + ], | ||
| 1689 | + "armor": [ | ||
| 1690 | + "Nagi's +25% Max HP and HP Skills support Light armor once gear is strong enough. At level 55, Sakuraba Light Reginal Vest gives Melee Attack Up VI, Defense 57, Physical +10, Gravity −10, 360,000 credits. Story fallback: Medium Combat Bodywear at level 15, Melee Attack Up II, Defense 28, Physical +10, Gravity −15, 21,000 credits.", | ||
| 1691 | + "Le +25% de Max HP et les Skills de vie de Nagi permettent l'armure Light lorsque son équipement est assez solide. Au niveau 55, le Reginal Vest Light Sakuraba donne Melee Attack Up VI, Defense 57, Physical +10, Gravity −10, 360 000 crédits. Solution de progression : Combat Bodywear Medium niveau 15, Melee Attack Up II, Defense 28, Physical +10, Gravity −15, 21 000 crédits." | ||
| 1692 | + ], | ||
| 1693 | + "availability": [ | ||
| 1694 | + "Sakuraba is available from the start. Combat Bodywear is level 15 and Medium stock is maker rank 1. Reginal Vest is level 55; Light stock needs maker rank 2. Light has less base defense but better attribute resistance than Heavy. Keep the Physical default Longsword if the maker's Sword stock is unavailable.", | ||
| 1695 | + "Sakuraba est disponible dès le début. Combat Bodywear demande le niveau 15 et le stock Medium est au rang fabricant 1. Reginal Vest demande le niveau 55; le stock Light demande le rang 2. Light offre moins de défense de base mais de meilleures résistances d'attribut que Heavy. Garder le Longsword Physical par défaut si la série Sword du fabricant n'est pas disponible." | ||
| 1696 | + ] | ||
| 1697 | + }, | ||
| 1698 | + "sources": [ | ||
| 1699 | + { | ||
| 1700 | + "label": "Game8 Nagi Best Build", | ||
| 1701 | + "url": "https://game8.co/games/Xenoblade-Chronicles-X/archives/513229", | ||
| 1702 | + "edition": "DE" | ||
| 1703 | + }, | ||
| 1704 | + { | ||
| 1705 | + "label": "Nintendo Life all-character builds, Nagi marked Coming soon", | ||
| 1706 | + "url": "https://www.nintendolife.com/guides/xenoblade-chronicles-x-best-combat-builds-for-all-characters", | ||
| 1707 | + "edition": "DE" | ||
| 1708 | + }, | ||
| 1709 | + { | ||
| 1710 | + "label": "Xeno Series Wiki Nagi gameplay progression", | ||
| 1711 | + "url": "https://www.xenoserieswiki.org/wiki/Nagi/Gameplay", | ||
| 1712 | + "edition": "both" | ||
| 1713 | + }, | ||
| 1714 | + { | ||
| 1715 | + "label": "Xeno Series Wiki Signature Glaive: Fledgling", | ||
| 1716 | + "url": "https://www.xenoserieswiki.org/wiki/Signature_Glaive:_Fledgling", | ||
| 1717 | + "edition": "both" | ||
| 1718 | + }, | ||
| 1719 | + { | ||
| 1720 | + "label": "Xeno Series Wiki Ophidian Machine", | ||
| 1721 | + "url": "https://www.xenoserieswiki.org/wiki/Ophidian_Machine", | ||
| 1722 | + "edition": "both" | ||
| 1723 | + }, | ||
| 1724 | + { | ||
| 1725 | + "label": "Game8 Longsword catalog", | ||
| 1726 | + "url": "https://game8.co/games/Xenoblade-Chronicles-X/archives/504899", | ||
| 1727 | + "edition": "DE" | ||
| 1728 | + }, | ||
| 1729 | + { | ||
| 1730 | + "label": "Game8 Combat Bodywear", | ||
| 1731 | + "url": "https://game8.co/games/Xenoblade-Chronicles-X/archives/510709", | ||
| 1732 | + "edition": "DE" | ||
| 1733 | + }, | ||
| 1734 | + { | ||
| 1735 | + "label": "Game8 Reginal Vest", | ||
| 1736 | + "url": "https://game8.co/games/Xenoblade-Chronicles-X/archives/510523", | ||
| 1737 | + "edition": "DE" | ||
| 1738 | + }, | ||
| 1739 | + { | ||
| 1740 | + "label": "Xeno Series Wiki Arms Manufacturer", | ||
| 1741 | + "url": "https://www.xenoserieswiki.org/wiki/Arms_Manufacturer", | ||
| 1742 | + "edition": "both" | ||
| 1743 | + } | ||
| 1744 | + ] | ||
| 1745 | + }, | ||
| 1746 | + "Phog": { | ||
| 1747 | + "role": [ | ||
| 1748 | + "AI close-range combo attacker with melee-position damage and signature Stun/Launch. Utility via Ghostwalker; one TP burst plus TP aura.", | ||
| 1749 | + "Attaquant IA rapproché en combos, dégâts positionnels mêlée et étourdissement/lancement signature. Ghostwalker apporte utilitaire ; burst TP et Aura TP." | ||
| 1750 | + ], | ||
| 1751 | + "rationale": [ | ||
| 1752 | + "AI melee combo DPS; retain physical/stun signature, utility, decoy; avoid competing risky HP-drain Arts.", | ||
| 1753 | + "Damage physique en combos pour l’IA ; conserver l’Art signature physique/étourdissement, utilitaire et leurre ; éviter les Arts risqués à drain de PV. Blood Sacrifice génère PT (sans coût PT) mais reste exclu : sacrifier la moitié des PV courants est risqué pour l’IA." | ||
| 1754 | + ], | ||
| 1755 | + "arts": [ | ||
| 1756 | + "Back Slash", | ||
| 1757 | + "Sliding Slinger", | ||
| 1758 | + "Sky High", | ||
| 1759 | + "Side Slash", | ||
| 1760 | + "Shadowrunner", | ||
| 1761 | + "Primer", | ||
| 1762 | + "Ghostwalker", | ||
| 1763 | + "Hundred Shells" | ||
| 1764 | + ], | ||
| 1765 | + "skills": [ | ||
| 1766 | + "Background Noise", | ||
| 1767 | + "Master Edge", | ||
| 1768 | + "Phantom Counter" | ||
| 1769 | + ], | ||
| 1770 | + "artSubstitutes": [ | ||
| 1771 | + "Upper Hand", | ||
| 1772 | + "Electric Surge", | ||
| 1773 | + "Combat Limbo" | ||
| 1774 | + ], | ||
| 1775 | + "skillSubstitutes": [ | ||
| 1776 | + "Agile Gunslinger", | ||
| 1777 | + "Steady Hand", | ||
| 1778 | + "Crisis Catalyst" | ||
| 1779 | + ], | ||
| 1780 | + "equipment": { | ||
| 1781 | + "weapons": [ | ||
| 1782 | + "Sakuraba Industries Dual Swords (physical Blades line, e.g. Iron Blades) + Physical Dual Guns. Prioritize Ranged Attack/accuracy for ranged physical Sky High; Melee Attack applies to Dual-Sword Side Slash/Back Slash; TP stats for Shadowrunner/Hundred Shells. Candid & Credible is not asserted as a weapon alternative where its line-specific element is uncertain.", | ||
| 1783 | + "Dual Swords Sakuraba Industries (série physique Blades, p. ex. Iron Blades) + Dual Guns physiques. Prioriser Attaque à distance/précision pour Sky High physique à distance ; Attaque mêlée vaut pour Side Slash/Back Slash Dual Swords ; bonus PT pour Shadowrunner/Hundred Shells. Candid & Credible n’est pas présenté comme alternative d’arme, attribut par ligne incertain." | ||
| 1784 | + ], | ||
| 1785 | + "armor": [ | ||
| 1786 | + "Sakuraba Medium Wear at AM L1: supports frontline physical role; verified DE Combat Bodywear is Medium, min L15, defense 28, Physical +10, Gravity −15, Melee Attack Up II. Candid & Credible Light is an optional AM L2 set (Screen head Potential Up; arm Max TP/Melee Attack; leg Evasion/Max TP). Heavy Combat Bulwark is optional only for defense, after C&C unlock + AM L3: L15, defense 40, Potential Up II, Electric +20, Beam −5, Gravity −15.", | ||
| 1787 | + "Sakuraba Medium Wear AM L1 : soutient front physique ; Combat Bodywear DE vérifié : Medium, niv. min 15, défense 28, Physique +10, Gravité −15, Melee Attack Up II. Candid & Credible Light optionnel AM L2 (Screen tête Potential Up ; bras Max TP/Melee Attack ; jambes Evasion/Max TP). Heavy Combat Bulwark seulement pour défense après déblocage C&C + AM L3 : niv.15, défense 40, Potential Up II, Electric +20, Beam −5, Gravity −15." | ||
| 1788 | + ], | ||
| 1789 | + "availability": [ | ||
| 1790 | + "Sakuraba Medium Wear is AM L1. Sakuraba Light requires AM L2. C&C unlocks after Chapter 5; its Light/Heavy armor require AM L2/L3 respectively. Match elemental resistances on item card.", | ||
| 1791 | + "Sakuraba Medium Wear AM L1. Sakuraba Light exige AM L2. C&C se débloque après chapitre 5 ; armures Light/Heavy exigent AM L2/L3. Vérifier résistances élémentaires sur fiche." | ||
| 1792 | + ] | ||
| 1793 | + }, | ||
| 1794 | + "sources": [ | ||
| 1795 | + { | ||
| 1796 | + "label": "Game8 Phog Best Build; DE, 2025", | ||
| 1797 | + "url": "https://game8.co/games/Xenoblade-Chronicles-X/archives/507892", | ||
| 1798 | + "edition": "DE" | ||
| 1799 | + }, | ||
| 1800 | + { | ||
| 1801 | + "label": "Game8 Phog Arts, Skills, recruitment; DE, 2025", | ||
| 1802 | + "url": "https://game8.co/games/Xenoblade-Chronicles-X/archives/500611", | ||
| 1803 | + "edition": "DE" | ||
| 1804 | + }, | ||
| 1805 | + { | ||
| 1806 | + "label": "Sakuraba manufacturer offerings; weapon types/physical stability, armor traits and catalog", | ||
| 1807 | + "url": "https://xenoblade.fandom.com/wiki/Sakuraba_Industries", | ||
| 1808 | + "edition": "both" | ||
| 1809 | + }, | ||
| 1810 | + { | ||
| 1811 | + "label": "Candid & Credible armor catalog and traits", | ||
| 1812 | + "url": "https://xenoblade.fandom.com/wiki/Candid_%26_Credible", | ||
| 1813 | + "edition": "both" | ||
| 1814 | + }, | ||
| 1815 | + { | ||
| 1816 | + "label": "Game8 DE weapon catalog: Dual Swords", | ||
| 1817 | + "url": "https://game8.co/games/Xenoblade-Chronicles-X/archives/504901", | ||
| 1818 | + "edition": "DE" | ||
| 1819 | + }, | ||
| 1820 | + { | ||
| 1821 | + "label": "Game8 DE weapon catalog: Dual Guns", | ||
| 1822 | + "url": "https://game8.co/games/Xenoblade-Chronicles-X/archives/504895", | ||
| 1823 | + "edition": "DE" | ||
| 1824 | + }, | ||
| 1825 | + { | ||
| 1826 | + "label": "Game8 DE Combat Bulwark item stats and availability", | ||
| 1827 | + "url": "https://game8.co/games/Xenoblade-Chronicles-X/archives/510204", | ||
| 1828 | + "edition": "DE" | ||
| 1829 | + }, | ||
| 1830 | + { | ||
| 1831 | + "label": "Game8 DE Sky High page: ranged Dual Guns Art and attack scaling", | ||
| 1832 | + "url": "https://game8.co/games/Xenoblade-Chronicles-X/archives/506135", | ||
| 1833 | + "edition": "DE" | ||
| 1834 | + } | ||
| 1835 | + ] | ||
| 1836 | + }, | ||
| 1837 | + "Yelv": { | ||
| 1838 | + "role": [ | ||
| 1839 | + "Ground Beam-melee DPS with aura, Debuff Res Down and optional Gravity Res. Do not claim Synchrony contributes on foot.", | ||
| 1840 | + "DPS sol Beam mêlée avec Aura, baisse résistance aux altérations et résistance gravité optionnelle. Ne pas attribuer effet au sol à Synchrony." | ||
| 1841 | + ], | ||
| 1842 | + "rationale": [ | ||
| 1843 | + "Ground melee Beam damage with debuff and defense utility. Fixed ground Skills exclude Synchrony; Skell package/pilot bonuses stay separate.", | ||
| 1844 | + "Dégâts laser au corps-à-corps au sol, avec affaiblissement et utilitaire défensif. Compétences fixes sol excluent Synchrony ; packages/bénéfices Skell restent séparés." | ||
| 1845 | + ], | ||
| 1846 | + "arts": [ | ||
| 1847 | + "Starfall Blade", | ||
| 1848 | + "Starfall Rondo", | ||
| 1849 | + "Starfall Blossom", | ||
| 1850 | + "Astrolibrium", | ||
| 1851 | + "Astral Purge", | ||
| 1852 | + "Gravity Cloak", | ||
| 1853 | + "Subterfuge", | ||
| 1854 | + "Galactic Cataclysm" | ||
| 1855 | + ], | ||
| 1856 | + "skills": [ | ||
| 1857 | + "Beam Boost", | ||
| 1858 | + "Supreme Sword", | ||
| 1859 | + "Secondary Accelerator" | ||
| 1860 | + ], | ||
| 1861 | + "artSubstitutes": [ | ||
| 1862 | + "Beam Barrage", | ||
| 1863 | + "Geolibrium", | ||
| 1864 | + "Ether Blast", | ||
| 1865 | + "Myopic Screen", | ||
| 1866 | + "Astral Heal", | ||
| 1867 | + "Master Gunner", | ||
| 1868 | + "Novalibrium" | ||
| 1869 | + ], | ||
| 1870 | + "skillSubstitutes": [ | ||
| 1871 | + "High Tension", | ||
| 1872 | + "Knight's Soul", | ||
| 1873 | + "Inner Search" | ||
| 1874 | + ], | ||
| 1875 | + "equipment": { | ||
| 1876 | + "weapons": [ | ||
| 1877 | + "Sakuraba Industries Saber series, Beam attribute. Early model: Advanced Iron Saber (Beam, ATK 40; raw item data identifies Sakuraba MakerID 1 and equipment level 3, and Game8 DE lists the model Beam). Later option: Advanced Cermet Saber (Beam, ATK 140, min L53, random enemy drop). The ordinary Iron Saber is disputed: Game8 DE lists Physical while XSW raw data says Beam; do not rely on that ordinary model. Combat Photon Saber is an automatic Beam fallback only when no weapon item is equipped, not inventory gear.", | ||
| 1878 | + "Série Saber Sakuraba Industries, attribut Beam. Modèle précoce : Advanced Iron Saber (Beam, ATK 40 ; données brutes: MakerID Sakuraba 1, niveau équipement 3 ; Game8 DE le liste Beam). Option tardive : Advanced Cermet Saber (Beam, ATK 140, niveau min. 53, drop ennemi aléatoire). Iron Saber ordinaire est disputé : liste Game8 DE Physical vs XSW brut Beam ; ne pas s’appuyer sur ce modèle. Combat Photon Saber est un fallback Beam automatique sans item équipé, pas équipement d’inventaire." | ||
| 1879 | + ], | ||
| 1880 | + "armor": [ | ||
| 1881 | + "Sakuraba Medium Wear at AM L1 for early melee baseline; Light Wear at AM L2 offers Melee Attack Up/Max TP arm traits. Slot-name examples: Goggles/Bodywear/Glove/Footwear (Medium), Visor/Vest/Guard/Boots (Light).", | ||
| 1882 | + "Sakuraba Medium Wear AM L1 pour base mêlée précoce ; Light Wear AM L2 offre Melee Attack Up/Max TP sur bras. Noms par slot : Goggles/Bodywear/Glove/Footwear (Medium), Visor/Vest/Guard/Boots (Light)." | ||
| 1883 | + ], | ||
| 1884 | + "availability": [ | ||
| 1885 | + "Advanced Iron Saber is listed Beam by DE Game8 and raw XSW, with MakerID 1/AM L1/equipment level 3 in raw record; exact shop/drop acquisition not verified. Advanced Cermet Saber is random enemy drop, min L53. Ordinary Iron Saber attribute conflicts between Game8 DE (Physical) and XSW raw (Beam); do not rely on it. Combat Photon Saber is auto-fallback if no weapon is equipped, not inventory gear.", | ||
| 1886 | + "Advanced Iron Saber est listé Beam par Game8 DE et XSW brut ; données brutes MakerID 1/AM L1/niveau équipement 3 ; acquisition boutique/drop exacte non vérifiée. Advanced Cermet Saber est un drop aléatoire, niv. min 53. Attribut de l’Iron Saber ordinaire contradictoire Game8 DE (Physical) / XSW brut (Beam) ; ne pas s’y fier. Combat Photon Saber est fallback automatique sans arme, pas item d’inventaire." | ||
| 1887 | + ] | ||
| 1888 | + }, | ||
| 1889 | + "sources": [ | ||
| 1890 | + { | ||
| 1891 | + "label": "Game8 Yelv Best Build; DE, 2025", | ||
| 1892 | + "url": "https://game8.co/games/Xenoblade-Chronicles-X/archives/507260", | ||
| 1893 | + "edition": "DE" | ||
| 1894 | + }, | ||
| 1895 | + { | ||
| 1896 | + "label": "Sakuraba manufacturer offerings; weapon types/physical stability, armor traits", | ||
| 1897 | + "url": "https://xenoblade.fandom.com/wiki/Sakuraba_Industries", | ||
| 1898 | + "edition": "both" | ||
| 1899 | + }, | ||
| 1900 | + { | ||
| 1901 | + "label": "Candid & Credible armor catalog and traits", | ||
| 1902 | + "url": "https://xenoblade.fandom.com/wiki/Candid_%26_Credible", | ||
| 1903 | + "edition": "both" | ||
| 1904 | + }, | ||
| 1905 | + { | ||
| 1906 | + "label": "Game8 DE Photon Saber inventory including Beam variants", | ||
| 1907 | + "url": "https://game8.co/games/Xenoblade-Chronicles-X/archives/504904", | ||
| 1908 | + "edition": "DE" | ||
| 1909 | + }, | ||
| 1910 | + { | ||
| 1911 | + "label": "Game8 DE Advanced Cermet Saber (Sakuraba, Beam, min level 53)", | ||
| 1912 | + "url": "https://game8.co/games/Xenoblade-Chronicles-X/archives/512175", | ||
| 1913 | + "edition": "DE" | ||
| 1914 | + }, | ||
| 1915 | + { | ||
| 1916 | + "label": "Game8 DE Raygun inventory", | ||
| 1917 | + "url": "https://game8.co/games/Xenoblade-Chronicles-X/archives/504897", | ||
| 1918 | + "edition": "DE" | ||
| 1919 | + }, | ||
| 1920 | + { | ||
| 1921 | + "label": "Xeno Series Wiki raw Advanced Iron Saber game record", | ||
| 1922 | + "url": "https://www.xenoserieswiki.org/w/index.php?title=Advanced_Iron_Saber&action=raw", | ||
| 1923 | + "edition": "both" | ||
| 1924 | + }, | ||
| 1925 | + { | ||
| 1926 | + "label": "XSW raw Iron Saber weapon record (Beam; conflicts with DE Game8 list)", | ||
| 1927 | + "url": "https://www.xenoserieswiki.org/w/index.php?title=Iron_Saber&action=raw", | ||
| 1928 | + "edition": "both" | ||
| 1929 | + }, | ||
| 1930 | + { | ||
| 1931 | + "label": "XSW Photon Saber model/attribute table", | ||
| 1932 | + "url": "https://xenoblade.fandom.com/wiki/Photon_Saber", | ||
| 1933 | + "edition": "both" | ||
| 1934 | + } | ||
| 1935 | + ] | ||
| 1936 | + }, | ||
| 1937 | + "Mia": { | ||
| 1938 | + "role": [ | ||
| 1939 | + "Ranged ether/gravity debuffer-support; clears party debuffs, boosts Ether resistance, Topples, applies Debuff Res Down, damage while Aura active.", | ||
| 1940 | + "Soutien-affaiblissement Éther/Gravité à distance ; purifie les altérations alliées, augmente résistance Éther, renverse, réduit résistances aux altérations, dégâts sous Aura." | ||
| 1941 | + ], | ||
| 1942 | + "rationale": [ | ||
| 1943 | + "Ranged support/debuffer with Topple, enemy debuff-resistance reduction, party cleanse/resistance, and aura-supported damage.", | ||
| 1944 | + "Soutien/affaiblissement à distance avec Chute, baisse de résistance aux altérations, purification/résistance d’équipe et dégâts renforcés par Aura." | ||
| 1945 | + ], | ||
| 1946 | + "arts": [ | ||
| 1947 | + "Full Specs", | ||
| 1948 | + "Gravity Cloak", | ||
| 1949 | + "Subterfuge", | ||
| 1950 | + "Gravity Blast", | ||
| 1951 | + "Beam Barrage", | ||
| 1952 | + "Myopic Screen", | ||
| 1953 | + "Clarity Ray", | ||
| 1954 | + "Beam Bomber" | ||
| 1955 | + ], | ||
| 1956 | + "skills": [ | ||
| 1957 | + "Tactical Analyst", | ||
| 1958 | + "Ether Boost", | ||
| 1959 | + "Inner Search" | ||
| 1960 | + ], | ||
| 1961 | + "artSubstitutes": [ | ||
| 1962 | + "Black Butterfly", | ||
| 1963 | + "Screamer", | ||
| 1964 | + "Pathogen Blast" | ||
| 1965 | + ], | ||
| 1966 | + "skillSubstitutes": [ | ||
| 1967 | + "Resistant Flesh", | ||
| 1968 | + "Gravity Boost", | ||
| 1969 | + "Beam Boost" | ||
| 1970 | + ], | ||
| 1971 | + "equipment": { | ||
| 1972 | + "weapons": [ | ||
| 1973 | + "Meredith & Co. Ether Radius Raygun + Ether Pugio Knife. Matches Raygun/Knife slots and Ether damage/boost rationale; item model/level variants follow player/AM progression. For temporary shortage, use currently available same-type Raygun/Knife, but do not call it an Ether replacement.", | ||
| 1974 | + "Raygun Ether Radius + Knife Ether Pugio Meredith & Co. : types Raygun/Knife et justification dégâts/boost Éther ; modèle/variantes de niveau suivent progression joueur/fabricant. En attendant, utiliser Raygun/Knife disponible même type, sans le qualifier d’alternative Éther." | ||
| 1975 | + ], | ||
| 1976 | + "armor": [ | ||
| 1977 | + "Meredith & Co. Medium Wear at AM L1 (Chapter 4 manufacturer unlock); its armor uses Ether tech/resistance. Light Wear at AM L2 adds Potential Up head, Max TP/ranged-attack arm options and Max TP legs; names: Vitra/Corpus/Chiro/Plantars (Medium), Vizard/Vestis/Armilla/Ocreis (Light).", | ||
| 1978 | + "Meredith & Co. Medium Wear AM L1 (fabricant débloqué chapitre 4), armure technologie/résistance Éther. Light Wear AM L2 ajoute Potentiel tête, options Max TP/Attaque distance aux bras, Max TP jambes ; noms : Vitra/Corpus/Chiro/Plantars (Medium), Vizard/Vestis/Armilla/Ocreis (Light)." | ||
| 1979 | + ], | ||
| 1980 | + "availability": [ | ||
| 1981 | + "Meredith unlocks Chapter 4; Medium armor AM L1. Meredith Light requires AM L2. C&C optional later: Chapter 5 + Light AM L2. Armor level still must not exceed Mia’s current level.", | ||
| 1982 | + "Meredith débloqué chapitre 4 ; armure Medium AM L1. Meredith Light exige AM L2. C&C optionnel ensuite : chapitre 5 + Light AM L2. Niveau armure ne doit pas dépasser niveau actuel de Mia." | ||
| 1983 | + ] | ||
| 1984 | + }, | ||
| 1985 | + "sources": [ | ||
| 1986 | + { | ||
| 1987 | + "label": "Game8 Mia Best Build; DE, 2025", | ||
| 1988 | + "url": "https://game8.co/games/Xenoblade-Chronicles-X/archives/514627", | ||
| 1989 | + "edition": "DE" | ||
| 1990 | + }, | ||
| 1991 | + { | ||
| 1992 | + "label": "Nintendo Life character builds (DE article; Mia consensus summary from search results, article full text unavailable to reader)", | ||
| 1993 | + "url": "https://www.nintendolife.com/guides/xenoblade-chronicles-x-best-combat-builds-for-all-characters", | ||
| 1994 | + "edition": "DE" | ||
| 1995 | + }, | ||
| 1996 | + { | ||
| 1997 | + "label": "Sakuraba manufacturer offerings; weapon types/physical stability and armor traits", | ||
| 1998 | + "url": "https://xenoblade.fandom.com/wiki/Sakuraba_Industries", | ||
| 1999 | + "edition": "both" | ||
| 2000 | + }, | ||
| 2001 | + { | ||
| 2002 | + "label": "Candid & Credible armor catalog and traits", | ||
| 2003 | + "url": "https://xenoblade.fandom.com/wiki/Candid_%26_Credible", | ||
| 2004 | + "edition": "both" | ||
| 2005 | + }, | ||
| 2006 | + { | ||
| 2007 | + "label": "Game8 DE Raygun inventory and attribute options", | ||
| 2008 | + "url": "https://game8.co/games/Xenoblade-Chronicles-X/archives/504897", | ||
| 2009 | + "edition": "DE" | ||
| 2010 | + }, | ||
| 2011 | + { | ||
| 2012 | + "label": "Game8 DE Knife inventory and attribute options", | ||
| 2013 | + "url": "https://game8.co/games/Xenoblade-Chronicles-X/archives/504903", | ||
| 2014 | + "edition": "DE" | ||
| 2015 | + }, | ||
| 2016 | + { | ||
| 2017 | + "label": "Meredith & Co. Ether weapon program and Chapter 4 unlock", | ||
| 2018 | + "url": "https://xenoblade.fandom.com/wiki/Meredith_%26_Co.", | ||
| 2019 | + "edition": "both" | ||
| 2020 | + }, | ||
| 2021 | + { | ||
| 2022 | + "label": "Raygun Ether Radius and Knife Ether Pugio model tables", | ||
| 2023 | + "url": "https://xenoblade.fandom.com/wiki/Raygun", | ||
| 2024 | + "edition": "both" | ||
| 2025 | + }, | ||
| 2026 | + { | ||
| 2027 | + "label": "Game8 DE C&C armor item stats/weight example", | ||
| 2028 | + "url": "https://game8.co/games/Xenoblade-Chronicles-X/archives/510204", | ||
| 2029 | + "edition": "DE" | ||
| 2030 | + } | ||
| 2031 | + ] | ||
| 2032 | + }, | ||
| 2033 | + "Neilnail": { | ||
| 2034 | + "role": [ | ||
| 2035 | + "AI hybrid frontline: side/rear melee, Ether damage, Stun and increased allied Blaze/Shock damage, sustain aura.", | ||
| 2036 | + "Hybride de première ligne IA : mêlée côté/arrière, dégâts Éther, Étourdissement, dégâts Feu/Électrocution alliés accrus, Aura de maintien." | ||
| 2037 | + ], | ||
| 2038 | + "rationale": [ | ||
| 2039 | + "AI frontline Ether hybrid: side/rear damage, team Blaze/Shock amplification and Astral Protection sustain. Inner Search boosts Potential (TP Art damage and Soul Voice healing) without requiring an Aura; omit Aura Assault since it unlocks before the chosen Astral Protection and is conditional on an active Aura, leaving ranks 9–10 inert.", | ||
| 2040 | + "Hybride Éther IA : dégâts côté/arrière, amplification alliée Feu/Électrocution et maintien Astral Protection. Inner Search augmente Potentiel (dégâts des Arts PT et soin Soul Voice) sans Aura ; omettre Aura Assault, débloqué avant Astral Protection et conditionnel à Aura active, afin d’éviter des rangs 9–10 inertes." | ||
| 2041 | + ], | ||
| 2042 | + "arts": [ | ||
| 2043 | + "Side Slash", | ||
| 2044 | + "Back Slash", | ||
| 2045 | + "Electric Surge", | ||
| 2046 | + "Jetstream", | ||
| 2047 | + "Conduction Rise", | ||
| 2048 | + "Shooting Star", | ||
| 2049 | + "Astral Protection", | ||
| 2050 | + "Hundred Shells" | ||
| 2051 | + ], | ||
| 2052 | + "skills": [ | ||
| 2053 | + "Ether Boost", | ||
| 2054 | + "Knight's Soul", | ||
| 2055 | + "Supreme Sword", | ||
| 2056 | + "Inner Search" | ||
| 2057 | + ], | ||
| 2058 | + "artSubstitutes": [ | ||
| 2059 | + "Shadowrunner", | ||
| 2060 | + "Stellar Ray", | ||
| 2061 | + "Lightning Cloak", | ||
| 2062 | + "Heroic Tale", | ||
| 2063 | + "Upper Hand" | ||
| 2064 | + ], | ||
| 2065 | + "skillSubstitutes": [ | ||
| 2066 | + "Fast Forward" | ||
| 2067 | + ], | ||
| 2068 | + "equipment": { | ||
| 2069 | + "weapons": [ | ||
| 2070 | + "Meredith & Co. Ether Ruina II Psycho Launchers + Sakuraba physical Dual Swords (e.g. Iron Blades family). Matches Psycho Launchers + Dual Swords and Ether/weapon Arts. Meridian catalog uses Ether technology; actual AM level/weapon stock gates exact series.", | ||
| 2071 | + "Psycho Launchers Ether Ruina II Meredith & Co. + Dual Swords physiques Sakuraba (p. ex. série Iron Blades). Correspond aux Psycho Launchers + Dual Swords et Arts Éther/arme. Technologie Meredith à Éther ; niveau AM/stock peut verrouiller série exacte." | ||
| 2072 | + ], | ||
| 2073 | + "armor": [ | ||
| 2074 | + "Meredith & Co. Medium Wear at AM L1; Ether-resistance profile fits Ether frontline. Light at AM L2 supplies Ether Res Up/Max TP/Ranged Attack Boost options; slot names Vitra/Corpus/Chiro/Plantars (Medium), Vizard/Vestis/Armilla/Ocreis (Light).", | ||
| 2075 | + "Meredith & Co. Medium Wear AM L1 ; profil résistance Éther convient front Éther. Light AM L2 fournit options Ether Res Up/Max TP/Ranged Attack Boost ; Vitra/Corpus/Chiro/Plantars (Medium), Vizard/Vestis/Armilla/Ocreis (Light)." | ||
| 2076 | + ], | ||
| 2077 | + "availability": [ | ||
| 2078 | + "Meredith unlocks Chapter 4; its Medium armor is AM L1 and Light is L2. C&C is a later alternative (Chapter 5; Light AM L2). Armor level/stock still follow player and AM progression.", | ||
| 2079 | + "Meredith débloqué chapitre 4 ; armure Medium AM L1, Light AM L2. C&C est alternative ultérieure (chapitre 5 ; Light AM L2). Niveau/stock selon progression joueur/fabricant." | ||
| 2080 | + ] | ||
| 2081 | + }, | ||
| 2082 | + "sources": [ | ||
| 2083 | + { | ||
| 2084 | + "label": "Game8 Neilnail Best Build; DE, 2025", | ||
| 2085 | + "url": "https://game8.co/games/Xenoblade-Chronicles-X/archives/507640", | ||
| 2086 | + "edition": "DE" | ||
| 2087 | + }, | ||
| 2088 | + { | ||
| 2089 | + "label": "Sakuraba manufacturer offerings; weapon type catalog/armor traits", | ||
| 2090 | + "url": "https://xenoblade.fandom.com/wiki/Sakuraba_Industries", | ||
| 2091 | + "edition": "both" | ||
| 2092 | + }, | ||
| 2093 | + { | ||
| 2094 | + "label": "Candid & Credible Psycho Launchers/Electric weapon and armor catalog", | ||
| 2095 | + "url": "https://xenoblade.fandom.com/wiki/Candid_%26_Credible", | ||
| 2096 | + "edition": "both" | ||
| 2097 | + }, | ||
| 2098 | + { | ||
| 2099 | + "label": "Game8 DE Psycho Launchers inventory and Arts", | ||
| 2100 | + "url": "https://game8.co/games/Xenoblade-Chronicles-X/archives/504898", | ||
| 2101 | + "edition": "DE" | ||
| 2102 | + }, | ||
| 2103 | + { | ||
| 2104 | + "label": "Game8 DE Dual Swords inventory", | ||
| 2105 | + "url": "https://game8.co/games/Xenoblade-Chronicles-X/archives/504901", | ||
| 2106 | + "edition": "DE" | ||
| 2107 | + }, | ||
| 2108 | + { | ||
| 2109 | + "label": "Meredith & Co. Ether weapon program and Chapter 4 unlock", | ||
| 2110 | + "url": "https://xenoblade.fandom.com/wiki/Meredith_%26_Co.", | ||
| 2111 | + "edition": "both" | ||
| 2112 | + }, | ||
| 2113 | + { | ||
| 2114 | + "label": "Psycho Launcher Ruina II (Meredith) and Ether attribute table", | ||
| 2115 | + "url": "https://xenoblade.fandom.com/wiki/Psycho_Launchers", | ||
| 2116 | + "edition": "both" | ||
| 2117 | + }, | ||
| 2118 | + { | ||
| 2119 | + "label": "XSW Aura Assault Skill source: requires equipped Aura", | ||
| 2120 | + "url": "https://www.xenoserieswiki.org/w/index.php?title=Aura_Assault&action=raw", | ||
| 2121 | + "edition": "both" | ||
| 2122 | + }, | ||
| 2123 | + { | ||
| 2124 | + "label": "XSW Inner Search Skill data: Potential improves TP Arts and Soul Voice healing", | ||
| 2125 | + "url": "https://www.xenoserieswiki.org/w/index.php?title=Inner_Search&action=raw", | ||
| 2126 | + "edition": "both" | ||
| 2127 | + }, | ||
| 2128 | + { | ||
| 2129 | + "label": "Game8 DE Aura Assault conditional Skill guidance", | ||
| 2130 | + "url": "https://game8.co/games/Xenoblade-Chronicles-X/archives/503868", | ||
| 2131 | + "edition": "DE" | ||
| 2132 | + } | ||
| 2133 | + ] | ||
| 2134 | + }, | ||
| 2135 | + "Al": { | ||
| 2136 | + "role": [ | ||
| 2137 | + "High-risk melee attacker and party support: Howling Soul provides party buffs/revive; no self-sustain, so retain Steel Flesh and healer synergy.", | ||
| 2138 | + "Attaquant mêlée à risque et soutien d’équipe : Howling Soul buff/résurrection ; aucune autonomie de soin, conserver Steel Flesh et synergie avec soigneur." | ||
| 2139 | + ], | ||
| 2140 | + "rationale": [ | ||
| 2141 | + "Melee burst/support; Howling Soul team buff/revive, low-HP Hercules Blow with defensive Skill and ranged utility.", | ||
| 2142 | + "Burst mêlée/soutien ; buff/résurrection Howling Soul, Hercules Blow à faible PV, compétence défensive et utilitaire à distance." | ||
| 2143 | + ], | ||
| 2144 | + "arts": [ | ||
| 2145 | + "Hawkeye", | ||
| 2146 | + "Tornado Blade", | ||
| 2147 | + "Offensive Stance", | ||
| 2148 | + "Hercules Blow", | ||
| 2149 | + "Eagle Eye", | ||
| 2150 | + "Sidewinder", | ||
| 2151 | + "Intercept", | ||
| 2152 | + "Howling Soul" | ||
| 2153 | + ], | ||
| 2154 | + "skills": [ | ||
| 2155 | + "Steel Flesh", | ||
| 2156 | + "Mighty Muscle", | ||
| 2157 | + "Healing Touch", | ||
| 2158 | + "Grand Procession" | ||
| 2159 | + ], | ||
| 2160 | + "artSubstitutes": [ | ||
| 2161 | + "Rising Blade", | ||
| 2162 | + "First Down", | ||
| 2163 | + "Magnum Edge", | ||
| 2164 | + "Burning Slash", | ||
| 2165 | + "Shrapnel" | ||
| 2166 | + ], | ||
| 2167 | + "skillSubstitutes": [ | ||
| 2168 | + "Quick Reload", | ||
| 2169 | + "Conflagrant Edge", | ||
| 2170 | + "Boosted Bullets", | ||
| 2171 | + "Dismantler" | ||
| 2172 | + ], | ||
| 2173 | + "equipment": { | ||
| 2174 | + "weapons": [ | ||
| 2175 | + "Sakuraba Industries Longsword, verified Iron Sword: Physical, level 1, 48 attack, 2.0 s cooldown, 230 TP gain, shop price 3000. Fits melee Arts and requires no late manufacturer unlock. Sakuraba Sniper Rifle physical line for Eagle Eye/Sidewinder/Intercept; exact model not singled out. Do not recommend unverified Thermal Glaive/Six Stars.", | ||
| 2176 | + "Longsword Sakuraba Industries, modèle vérifié Iron Sword : Physical, niveau 1, attaque 48, recharge 2,0 s, gain PT 230, prix boutique 3000. Convient Arts mêlée sans déblocage fabricant tardif. Ligne Sniper Rifle physique Sakuraba pour Eagle Eye/Sidewinder/Intercept ; modèle exact non choisi. Ne pas recommander Glaive thermique/Six Stars non vérifié." | ||
| 2177 | + ], | ||
| 2178 | + "armor": [ | ||
| 2179 | + "Sakuraba Medium Wear at AM L1. Verified DE Combat Bodywear: Medium, min L15, defense 28, Physical +10, Gravity −15, Melee Attack Up II; suits melee damage and physical frontline. Light Wear at AM L2 offers arm Melee Attack Up/Max TP alternatives. C&C Heavy Combat Bulwark is a defensive option only at C&C AM L3: L15, defense 40, Potential Up II, Electric +20, Beam −5, Gravity −15.", | ||
| 2180 | + "Sakuraba Medium Wear AM L1. Combat Bodywear DE vérifié : Medium, niv. min 15, défense 28, Physique +10, Gravité −15, Melee Attack Up II ; convient dégâts mêlée/front physique. Light Wear AM L2 offre bras Melee Attack Up/Max TP. C&C Heavy Combat Bulwark option défensive uniquement C&C AM L3 : niv.15, défense 40, Potential Up II, Electric +20, Beam −5, Gravity −15." | ||
| 2181 | + ], | ||
| 2182 | + "availability": [ | ||
| 2183 | + "Iron Sword shop-purchasable min level 1. Sakuraba Medium armor AM L1; Light AM L2. C&C Heavy alternative requires Chapter 5 and AM L3. No Thermal/Six Stars model remains in final recommendation.", | ||
| 2184 | + "Iron Sword boutique niveau min 1. Armure Sakuraba Medium AM L1 ; Light AM L2. Alternative C&C Heavy exige chapitre 5 et AM L3. Aucun modèle Thermal/Six Stars dans recommandation finale." | ||
| 2185 | + ] | ||
| 2186 | + }, | ||
| 2187 | + "sources": [ | ||
| 2188 | + { | ||
| 2189 | + "label": "Game8 Al Best Build; DE, 2025", | ||
| 2190 | + "url": "https://game8.co/games/Xenoblade-Chronicles-X/archives/515373", | ||
| 2191 | + "edition": "DE" | ||
| 2192 | + }, | ||
| 2193 | + { | ||
| 2194 | + "label": "Sakuraba manufacturer offerings; weapon type catalog/armor traits", | ||
| 2195 | + "url": "https://xenoblade.fandom.com/wiki/Sakuraba_Industries", | ||
| 2196 | + "edition": "both" | ||
| 2197 | + }, | ||
| 2198 | + { | ||
| 2199 | + "label": "Candid & Credible armor alternative catalog/traits", | ||
| 2200 | + "url": "https://xenoblade.fandom.com/wiki/Candid_%26_Credible", | ||
| 2201 | + "edition": "both" | ||
| 2202 | + }, | ||
| 2203 | + { | ||
| 2204 | + "label": "Game8 DE Iron Sword (Sakuraba, Physical, min level 1)", | ||
| 2205 | + "url": "https://game8.co/games/Xenoblade-Chronicles-X/archives/511408", | ||
| 2206 | + "edition": "DE" | ||
| 2207 | + }, | ||
| 2208 | + { | ||
| 2209 | + "label": "Game8 DE Longsword list", | ||
| 2210 | + "url": "https://game8.co/games/Xenoblade-Chronicles-X/archives/504899", | ||
| 2211 | + "edition": "DE" | ||
| 2212 | + }, | ||
| 2213 | + { | ||
| 2214 | + "label": "Game8 DE Sniper Rifle list", | ||
| 2215 | + "url": "https://game8.co/games/Xenoblade-Chronicles-X/archives/504894", | ||
| 2216 | + "edition": "DE" | ||
| 2217 | + }, | ||
| 2218 | + { | ||
| 2219 | + "label": "Candid & Credible Heavy Wear armor alternative and stats", | ||
| 2220 | + "url": "https://game8.co/games/Xenoblade-Chronicles-X/archives/510204", | ||
| 2221 | + "edition": "DE" | ||
| 2222 | + } | ||
| 2223 | + ] | ||
| 2224 | + } | ||
| 2225 | +}; | ||
modified
src/data/i18n.ts +26 -2 | @@ -68,6 +68,14 @@ export interface Copy { | ||
| 68 | 68 | amRecommended: string; |
| 69 | 69 | recommendedUpgrade: string; |
| 70 | 70 | planReasons: string; |
| 71 | + researchedBuild: string; | |
| 72 | + curatedRationale: string; | |
| 73 | + curatedEquipment: string; | |
| 74 | + equipmentWeapons: string; | |
| 75 | + equipmentArmor: string; | |
| 76 | + equipmentAvailability: string; | |
| 77 | + progressionSubstitutes: string; | |
| 78 | + curatedSources: string; | |
| 71 | 79 | skellSection: string; |
| 72 | 80 | skellFrame: string; |
| 73 | 81 | skellAlternatives: string; |
| @@ -155,6 +163,14 @@ export const copy: Record<Lang, Copy> = { | ||
| 155 | 163 | amRecommended: "RECOMMENDED AM", |
| 156 | 164 | recommendedUpgrade: "Recommended BP upgrade level (canonical max: 5) — heuristic from selection priority and squad level", |
| 157 | 165 | planReasons: "PLAN REASONS", |
| 166 | + researchedBuild: "RESEARCHED BUILD", | |
| 167 | + curatedRationale: "Build rationale", | |
| 168 | + curatedEquipment: "Researched equipment advice", | |
| 169 | + equipmentWeapons: "Arms manufacturers", | |
| 170 | + equipmentArmor: "Armor", | |
| 171 | + equipmentAvailability: "Availability & alternatives", | |
| 172 | + progressionSubstitutes: "Progression substitutes", | |
| 173 | + curatedSources: "Sources", | |
| 158 | 174 | skellSection: "SKELL", |
| 159 | 175 | skellFrame: "FRAME", |
| 160 | 176 | skellAlternatives: "Alternatives", |
| @@ -167,7 +183,7 @@ export const copy: Record<Lang, Copy> = { | ||
| 167 | 183 | skellNoLicense: "No frame is recommended without the Skell License.", |
| 168 | 184 | skellLowLevel: "No frame is recommended before pilot level 20.", |
| 169 | 185 | methodTitle: "Scope and method", |
| 170 | - methodBody: "Contextual scores enforce level, rank, weapon, and slot constraints before comparing role balance, offense, safety, progression, Skell aptitude, and a moderate community prior. Results are explainable progression-safe recommendations—not universal clear guarantees. Signature Arts appear only when enabled and always show a regular-Art fallback; equipment advice names AMs, stats, traits, and augment families without inventing owned gear.", | |
| 186 | + methodBody: "Contextual scores enforce level, rank, weapon, and slot constraints before comparing teams. Companion scores use their equipped, fixed builds, with ordered progression substitutes and at most two TP-consuming Arts. Cross's Signature Arts require the unlock option and show a regular-Art fallback. Equipment advice includes sources and availability limits; editorial choices are not universal best builds.", | |
| 171 | 187 | footerTagline: "© 2026 BLADE Team Architect. Unofficial fan project, not affiliated with, endorsed by, or sponsored by Nintendo or MONOLITHSOFT. Xenoblade Chronicles and related names, characters, and assets belong to their respective rights holders.", |
| 172 | 188 | rankDown: "Decrease rank", |
| 173 | 189 | rankUp: "Increase rank", |
| @@ -240,6 +256,14 @@ export const copy: Record<Lang, Copy> = { | ||
| 240 | 256 | amRecommended: "AM RECOMMANDÉ", |
| 241 | 257 | recommendedUpgrade: "Niveau d'amélioration BP recommandé (maximum canonique : 5) — heuristique selon la priorité du plan et le niveau d'escouade", |
| 242 | 258 | planReasons: "RAISONS DU PLAN", |
| 259 | + researchedBuild: "BUILD DOCUMENTÉ", | |
| 260 | + curatedRationale: "Justification du build", | |
| 261 | + curatedEquipment: "Conseils d'équipement documentés", | |
| 262 | + equipmentWeapons: "Fabricants d'armes", | |
| 263 | + equipmentArmor: "Armure", | |
| 264 | + equipmentAvailability: "Disponibilité et alternatives", | |
| 265 | + progressionSubstitutes: "Substituts de progression", | |
| 266 | + curatedSources: "Sources", | |
| 243 | 267 | skellSection: "SKELL", |
| 244 | 268 | skellFrame: "CHÂSSIS", |
| 245 | 269 | skellAlternatives: "Alternatives", |
| @@ -252,7 +276,7 @@ export const copy: Record<Lang, Copy> = { | ||
| 252 | 276 | skellNoLicense: "Aucun châssis n’est recommandé sans la Licence Skell.", |
| 253 | 277 | skellLowLevel: "Aucun châssis n’est recommandé avant le niveau de pilote 20.", |
| 254 | 278 | methodTitle: "Portée et méthode", |
| 255 | - methodBody: "Les scores contextuels appliquent d'abord les contraintes de niveau, rang, armes et slots, puis comparent équilibre des rôles, offense, sécurité, progression, aptitude Skell et un a priori communautaire modéré. Ce sont des recommandations explicables et sûres pour la progression, pas des garanties universelles. Les Arts signature n'apparaissent que si activés et affichent toujours un Art régulier de remplacement ; les conseils d'équipement nomment AM, stats, traits et familles d'augments sans inventer l'inventaire possédé.", | |
| 279 | + methodBody: "Les scores contextuels respectent les contraintes de niveau, rang, armes et emplacements avant de comparer les équipes. Les compagnons sont évalués sur leur build fixe équipé, avec des remplacements de progression ordonnés et au plus deux Arts consommant des PT. Les Arts signature de Cross nécessitent l'option de déblocage et indiquent un Art régulier de remplacement. Les conseils d'équipement précisent leurs sources et leurs limites de disponibilité ; les choix éditoriaux ne sont pas des builds universellement optimaux.", | |
| 256 | 280 | footerTagline: "© 2026 BLADE Team Architect. Projet de fans non officiel, sans affiliation, approbation ni parrainage de Nintendo ou MONOLITHSOFT. Xenoblade Chronicles ainsi que les noms, personnages et éléments associés appartiennent à leurs ayants droit respectifs.", |
| 257 | 281 | rankDown: "Diminuer le rang", |
| 258 | 282 | rankUp: "Augmenter le rang", |
| @@ -68,6 +68,14 @@ export interface Copy { | |||
| 68 | amRecommended: string; | 68 | amRecommended: string; |
| 69 | recommendedUpgrade: string; | 69 | recommendedUpgrade: string; |
| 70 | planReasons: string; | 70 | planReasons: string; |
| 71 | + researchedBuild: string; | ||
| 72 | + curatedRationale: string; | ||
| 73 | + curatedEquipment: string; | ||
| 74 | + equipmentWeapons: string; | ||
| 75 | + equipmentArmor: string; | ||
| 76 | + equipmentAvailability: string; | ||
| 77 | + progressionSubstitutes: string; | ||
| 78 | + curatedSources: string; | ||
| 71 | skellSection: string; | 79 | skellSection: string; |
| 72 | skellFrame: string; | 80 | skellFrame: string; |
| 73 | skellAlternatives: string; | 81 | skellAlternatives: string; |
| @@ -155,6 +163,14 @@ export const copy: Record<Lang, Copy> = { | |||
| 155 | amRecommended: "RECOMMENDED AM", | 163 | amRecommended: "RECOMMENDED AM", |
| 156 | recommendedUpgrade: "Recommended BP upgrade level (canonical max: 5) — heuristic from selection priority and squad level", | 164 | recommendedUpgrade: "Recommended BP upgrade level (canonical max: 5) — heuristic from selection priority and squad level", |
| 157 | planReasons: "PLAN REASONS", | 165 | planReasons: "PLAN REASONS", |
| 166 | + researchedBuild: "RESEARCHED BUILD", | ||
| 167 | + curatedRationale: "Build rationale", | ||
| 168 | + curatedEquipment: "Researched equipment advice", | ||
| 169 | + equipmentWeapons: "Arms manufacturers", | ||
| 170 | + equipmentArmor: "Armor", | ||
| 171 | + equipmentAvailability: "Availability & alternatives", | ||
| 172 | + progressionSubstitutes: "Progression substitutes", | ||
| 173 | + curatedSources: "Sources", | ||
| 158 | skellSection: "SKELL", | 174 | skellSection: "SKELL", |
| 159 | skellFrame: "FRAME", | 175 | skellFrame: "FRAME", |
| 160 | skellAlternatives: "Alternatives", | 176 | skellAlternatives: "Alternatives", |
| @@ -167,7 +183,7 @@ export const copy: Record<Lang, Copy> = { | |||
| 167 | skellNoLicense: "No frame is recommended without the Skell License.", | 183 | skellNoLicense: "No frame is recommended without the Skell License.", |
| 168 | skellLowLevel: "No frame is recommended before pilot level 20.", | 184 | skellLowLevel: "No frame is recommended before pilot level 20.", |
| 169 | methodTitle: "Scope and method", | 185 | methodTitle: "Scope and method", |
| 170 | - methodBody: "Contextual scores enforce level, rank, weapon, and slot constraints before comparing role balance, offense, safety, progression, Skell aptitude, and a moderate community prior. Results are explainable progression-safe recommendations—not universal clear guarantees. Signature Arts appear only when enabled and always show a regular-Art fallback; equipment advice names AMs, stats, traits, and augment families without inventing owned gear.", | 186 | + methodBody: "Contextual scores enforce level, rank, weapon, and slot constraints before comparing teams. Companion scores use their equipped, fixed builds, with ordered progression substitutes and at most two TP-consuming Arts. Cross's Signature Arts require the unlock option and show a regular-Art fallback. Equipment advice includes sources and availability limits; editorial choices are not universal best builds.", |
| 171 | footerTagline: "© 2026 BLADE Team Architect. Unofficial fan project, not affiliated with, endorsed by, or sponsored by Nintendo or MONOLITHSOFT. Xenoblade Chronicles and related names, characters, and assets belong to their respective rights holders.", | 187 | footerTagline: "© 2026 BLADE Team Architect. Unofficial fan project, not affiliated with, endorsed by, or sponsored by Nintendo or MONOLITHSOFT. Xenoblade Chronicles and related names, characters, and assets belong to their respective rights holders.", |
| 172 | rankDown: "Decrease rank", | 188 | rankDown: "Decrease rank", |
| 173 | rankUp: "Increase rank", | 189 | rankUp: "Increase rank", |
| @@ -240,6 +256,14 @@ export const copy: Record<Lang, Copy> = { | |||
| 240 | amRecommended: "AM RECOMMANDÉ", | 256 | amRecommended: "AM RECOMMANDÉ", |
| 241 | recommendedUpgrade: "Niveau d'amélioration BP recommandé (maximum canonique : 5) — heuristique selon la priorité du plan et le niveau d'escouade", | 257 | recommendedUpgrade: "Niveau d'amélioration BP recommandé (maximum canonique : 5) — heuristique selon la priorité du plan et le niveau d'escouade", |
| 242 | planReasons: "RAISONS DU PLAN", | 258 | planReasons: "RAISONS DU PLAN", |
| 259 | + researchedBuild: "BUILD DOCUMENTÉ", | ||
| 260 | + curatedRationale: "Justification du build", | ||
| 261 | + curatedEquipment: "Conseils d'équipement documentés", | ||
| 262 | + equipmentWeapons: "Fabricants d'armes", | ||
| 263 | + equipmentArmor: "Armure", | ||
| 264 | + equipmentAvailability: "Disponibilité et alternatives", | ||
| 265 | + progressionSubstitutes: "Substituts de progression", | ||
| 266 | + curatedSources: "Sources", | ||
| 243 | skellSection: "SKELL", | 267 | skellSection: "SKELL", |
| 244 | skellFrame: "CHÂSSIS", | 268 | skellFrame: "CHÂSSIS", |
| 245 | skellAlternatives: "Alternatives", | 269 | skellAlternatives: "Alternatives", |
| @@ -252,7 +276,7 @@ export const copy: Record<Lang, Copy> = { | |||
| 252 | skellNoLicense: "Aucun châssis n’est recommandé sans la Licence Skell.", | 276 | skellNoLicense: "Aucun châssis n’est recommandé sans la Licence Skell.", |
| 253 | skellLowLevel: "Aucun châssis n’est recommandé avant le niveau de pilote 20.", | 277 | skellLowLevel: "Aucun châssis n’est recommandé avant le niveau de pilote 20.", |
| 254 | methodTitle: "Portée et méthode", | 278 | methodTitle: "Portée et méthode", |
| 255 | - methodBody: "Les scores contextuels appliquent d'abord les contraintes de niveau, rang, armes et slots, puis comparent équilibre des rôles, offense, sécurité, progression, aptitude Skell et un a priori communautaire modéré. Ce sont des recommandations explicables et sûres pour la progression, pas des garanties universelles. Les Arts signature n'apparaissent que si activés et affichent toujours un Art régulier de remplacement ; les conseils d'équipement nomment AM, stats, traits et familles d'augments sans inventer l'inventaire possédé.", | 279 | + methodBody: "Les scores contextuels respectent les contraintes de niveau, rang, armes et emplacements avant de comparer les équipes. Les compagnons sont évalués sur leur build fixe équipé, avec des remplacements de progression ordonnés et au plus deux Arts consommant des PT. Les Arts signature de Cross nécessitent l'option de déblocage et indiquent un Art régulier de remplacement. Les conseils d'équipement précisent leurs sources et leurs limites de disponibilité ; les choix éditoriaux ne sont pas des builds universellement optimaux.", |
| 256 | footerTagline: "© 2026 BLADE Team Architect. Projet de fans non officiel, sans affiliation, approbation ni parrainage de Nintendo ou MONOLITHSOFT. Xenoblade Chronicles ainsi que les noms, personnages et éléments associés appartiennent à leurs ayants droit respectifs.", | 280 | footerTagline: "© 2026 BLADE Team Architect. Projet de fans non officiel, sans affiliation, approbation ni parrainage de Nintendo ou MONOLITHSOFT. Xenoblade Chronicles ainsi que les noms, personnages et éléments associés appartiennent à leurs ayants droit respectifs.", |
| 257 | rankDown: "Diminuer le rang", | 281 | rankDown: "Diminuer le rang", |
| 258 | rankUp: "Augmenter le rang", | 282 | rankUp: "Augmenter le rang", |
modified
src/lib/contextualEngine.test.ts +15 -84 | @@ -8,7 +8,7 @@ import { | ||
| 8 | 8 | recommendContextualSkellLoadout, |
| 9 | 9 | recommendContextualTeams, |
| 10 | 10 | } from "@/src/lib/contextualEngine"; |
| 11 | -import { classRanksForActiveClass, editClassRank } from "@/src/lib/engine"; | |
| 11 | +import { classRanksForActiveClass, editClassRank, planCompanion } from "@/src/lib/engine"; | |
| 12 | 12 | import type { |
| 13 | 13 | ClassRanks, |
| 14 | 14 | CombatMode, |
| @@ -58,13 +58,11 @@ function essentialRoleCoverage( | ||
| 58 | 58 | selectedName, |
| 59 | 59 | effectiveLevel, |
| 60 | 60 | 20, |
| 61 | - combatMode, | |
| 62 | 61 | ).roles; |
| 63 | 62 | const replacement = evaluateCompanionContext( |
| 64 | 63 | replacementName, |
| 65 | 64 | effectiveLevel, |
| 66 | 65 | 20, |
| 67 | - combatMode, | |
| 68 | 66 | ).roles; |
| 69 | 67 | const keys = combatMode === "skell" |
| 70 | 68 | ? [...REPLACEMENT_ROLE_KEYS, "skell" as const] |
| @@ -224,39 +222,7 @@ test("a primary slot alternative maximizes the mono-substitution team score", () | ||
| 224 | 222 | assert.equal(primary.team.slots[slotIndex].alternativeName, scored[0]?.name); |
| 225 | 223 | }); |
| 226 | 224 | |
| 227 | -test("guide consensus softly breaks a mechanically near-tied primary team", () => { | |
| 228 | - const activeClassId = "galactic-knight"; | |
| 229 | - const result = recommendContextualTeams(request({ | |
| 230 | - activeClassId, | |
| 231 | - avatarLevel: 30, | |
| 232 | - classRanks: ranksFor(activeClassId), | |
| 233 | - })); | |
| 234 | - | |
| 235 | - assert.equal(result.kind, "success"); | |
| 236 | - if (result.kind !== "success") return; | |
| 237 | - assert.ok(result.recommendations[0].team.names.includes("Irina")); | |
| 238 | - assert.ok(result.recommendations[0].team.names.includes("H.B.")); | |
| 239 | - assert.ok(result.recommendations[0].score.community >= 9); | |
| 240 | -}); | |
| 241 | 225 | |
| 242 | -test("Skell specialists omit alternatives when no credible pilot remains", () => { | |
| 243 | - const activeClassId = "mastermind"; | |
| 244 | - const result = recommendContextualTeams(request({ | |
| 245 | - activeClassId, | |
| 246 | - avatarLevel: 30, | |
| 247 | - classRanks: ranksFor(activeClassId), | |
| 248 | - combatMode: "skell", | |
| 249 | - })); | |
| 250 | - | |
| 251 | - assert.equal(result.kind, "success"); | |
| 252 | - if (result.kind !== "success") return; | |
| 253 | - const primary = result.recommendations[0]; | |
| 254 | - for (const name of ["Alexa", "Yelv"]) { | |
| 255 | - const slotIndex = primary.team.names.indexOf(name); | |
| 256 | - assert.notEqual(slotIndex, -1); | |
| 257 | - assert.equal(primary.team.slots[slotIndex].alternativeName, undefined); | |
| 258 | - } | |
| 259 | -}); | |
| 260 | 226 | |
| 261 | 227 | test("visible contextual scores retain spread below the ten-point ceiling", () => { |
| 262 | 228 | const result = recommendContextualTeams(request()); |
| @@ -350,8 +316,8 @@ test("manual companions remain fixed in every contextual alternative", () => { | ||
| 350 | 316 | }); |
| 351 | 317 | |
| 352 | 318 | test("slot rank changes the companion's contextual progression and role profile", () => { |
| 353 | - const lowRank = evaluateCompanionContext("Irina", 50, 3, "general"); | |
| 354 | - const maxRank = evaluateCompanionContext("Irina", 50, 20, "general"); | |
| 319 | + const lowRank = evaluateCompanionContext("Irina", 50, 3); | |
| 320 | + const maxRank = evaluateCompanionContext("Irina", 50, 20); | |
| 355 | 321 | |
| 356 | 322 | assert.ok(lowRank.progression < maxRank.progression); |
| 357 | 323 | assert.ok(lowRank.roles.support < maxRank.roles.support); |
| @@ -468,25 +434,11 @@ test("independent weapon overrides rebuild Cross and contextual recommendations" | ||
| 468 | 434 | assert.deepEqual(result.recommendations[0].roster[0].weapons, mixed.weapons); |
| 469 | 435 | }); |
| 470 | 436 | |
| 471 | -test("General exposes Skell aptitude and Skell mode equips relevant Skills", () => { | |
| 472 | - const generalYelv = evaluateCompanionContext("Yelv", 50, 20, "general"); | |
| 473 | - const skellYelv = evaluateCompanionContext("Yelv", 50, 20, "skell"); | |
| 474 | - assert.ok(generalYelv.roles.skell > 0); | |
| 475 | - assert.equal(generalYelv.roles.skell, skellYelv.roles.skell); | |
| 476 | - | |
| 477 | - const result = recommendContextualTeams(request({ combatMode: "skell" })); | |
| 478 | - assert.equal(result.kind, "success"); | |
| 479 | - if (result.kind !== "success") return; | |
| 480 | - | |
| 481 | - const primary = result.recommendations[0]; | |
| 482 | - assert.ok( | |
| 483 | - primary.team.names.some((name) => name === "Alexa" || name === "Yelv"), | |
| 484 | - ); | |
| 485 | - assert.ok(primary.score.skell > 0); | |
| 486 | - const skellPilots = primary.roster.filter((member) => | |
| 487 | - member.skills.some((skill) => skill.name === "Synchrony" || skill.name === "Stellar Entry"), | |
| 488 | - ); | |
| 489 | - assert.ok(skellPilots.length > 0); | |
| 437 | +test("Skell aptitude only reflects equipped pilot Skills, not unlocked reserves", () => { | |
| 438 | + const yelv = planCompanion("Yelv", 50, 20); | |
| 439 | + assert.ok(!yelv.skills.some((skill) => skill.name === "Synchrony")); | |
| 440 | + const profile = evaluateCompanionContext("Yelv", 50, 20); | |
| 441 | + assert.equal(profile.roles.skell, 0); | |
| 490 | 442 | }); |
| 491 | 443 | |
| 492 | 444 | test("General mode keeps Skell aptitude as a minor tie-breaker", () => { |
| @@ -532,36 +484,15 @@ test("licensed General teams retain baseline Skell utility without pilot Skills" | ||
| 532 | 484 | assert.equal(withoutLicense.recommendations[0].score.skell, 0); |
| 533 | 485 | }); |
| 534 | 486 | |
| 535 | -test("General Skell score has no aptitude dead zone above the licensed baseline", () => { | |
| 536 | - const baseline = recommendContextualTeams(request({ | |
| 537 | - slots: ["H.B.", "Irina", "Lin"], | |
| 538 | - hasSkellLicense: true, | |
| 539 | - })); | |
| 540 | - const stellarEntry = recommendContextualTeams(request({ | |
| 541 | - slots: ["H.B.", "Irina", "Doug"], | |
| 542 | - hasSkellLicense: true, | |
| 543 | - })); | |
| 544 | - const synchrony = recommendContextualTeams(request({ | |
| 545 | - slots: ["H.B.", "Irina", "Alexa"], | |
| 487 | +test("Skell teams without equipped pilot Skills retain only licensed baseline", () => { | |
| 488 | + const result = recommendContextualTeams(request({ | |
| 489 | + slots: ["Yelv", "Lin", "Irina"], | |
| 490 | + combatMode: "skell", | |
| 546 | 491 | hasSkellLicense: true, |
| 547 | 492 | })); |
| 548 | - | |
| 549 | - assert.equal(baseline.kind, "success"); | |
| 550 | - assert.equal(stellarEntry.kind, "success"); | |
| 551 | - assert.equal(synchrony.kind, "success"); | |
| 552 | - if ( | |
| 553 | - baseline.kind !== "success" | |
| 554 | - || stellarEntry.kind !== "success" | |
| 555 | - || synchrony.kind !== "success" | |
| 556 | - ) return; | |
| 557 | - | |
| 558 | - const baselineScore = baseline.recommendations[0].score.skell; | |
| 559 | - const stellarEntryScore = stellarEntry.recommendations[0].score.skell; | |
| 560 | - const synchronyScore = synchrony.recommendations[0].score.skell; | |
| 561 | - assert.equal(baselineScore, 1); | |
| 562 | - assert.ok(stellarEntryScore > baselineScore); | |
| 563 | - assert.ok(synchronyScore > stellarEntryScore); | |
| 564 | - assert.ok(synchronyScore > 5); | |
| 493 | + assert.equal(result.kind, "success"); | |
| 494 | + if (result.kind !== "success") return; | |
| 495 | + assert.equal(result.recommendations[0].score.skell, 1); | |
| 565 | 496 | }); |
| 566 | 497 | |
| 567 | 498 | test("contextual Skill upgrade recommendations never exceed level 5", () => { |
| @@ -8,7 +8,7 @@ import { | |||
| 8 | recommendContextualSkellLoadout, | 8 | recommendContextualSkellLoadout, |
| 9 | recommendContextualTeams, | 9 | recommendContextualTeams, |
| 10 | } from "@/src/lib/contextualEngine"; | 10 | } from "@/src/lib/contextualEngine"; |
| 11 | -import { classRanksForActiveClass, editClassRank } from "@/src/lib/engine"; | 11 | +import { classRanksForActiveClass, editClassRank, planCompanion } from "@/src/lib/engine"; |
| 12 | import type { | 12 | import type { |
| 13 | ClassRanks, | 13 | ClassRanks, |
| 14 | CombatMode, | 14 | CombatMode, |
| @@ -58,13 +58,11 @@ function essentialRoleCoverage( | |||
| 58 | selectedName, | 58 | selectedName, |
| 59 | effectiveLevel, | 59 | effectiveLevel, |
| 60 | 20, | 60 | 20, |
| 61 | - combatMode, | ||
| 62 | ).roles; | 61 | ).roles; |
| 63 | const replacement = evaluateCompanionContext( | 62 | const replacement = evaluateCompanionContext( |
| 64 | replacementName, | 63 | replacementName, |
| 65 | effectiveLevel, | 64 | effectiveLevel, |
| 66 | 20, | 65 | 20, |
| 67 | - combatMode, | ||
| 68 | ).roles; | 66 | ).roles; |
| 69 | const keys = combatMode === "skell" | 67 | const keys = combatMode === "skell" |
| 70 | ? [...REPLACEMENT_ROLE_KEYS, "skell" as const] | 68 | ? [...REPLACEMENT_ROLE_KEYS, "skell" as const] |
| @@ -224,39 +222,7 @@ test("a primary slot alternative maximizes the mono-substitution team score", () | |||
| 224 | assert.equal(primary.team.slots[slotIndex].alternativeName, scored[0]?.name); | 222 | assert.equal(primary.team.slots[slotIndex].alternativeName, scored[0]?.name); |
| 225 | }); | 223 | }); |
| 226 | 224 | ||
| 227 | -test("guide consensus softly breaks a mechanically near-tied primary team", () => { | ||
| 228 | - const activeClassId = "galactic-knight"; | ||
| 229 | - const result = recommendContextualTeams(request({ | ||
| 230 | - activeClassId, | ||
| 231 | - avatarLevel: 30, | ||
| 232 | - classRanks: ranksFor(activeClassId), | ||
| 233 | - })); | ||
| 234 | - | ||
| 235 | - assert.equal(result.kind, "success"); | ||
| 236 | - if (result.kind !== "success") return; | ||
| 237 | - assert.ok(result.recommendations[0].team.names.includes("Irina")); | ||
| 238 | - assert.ok(result.recommendations[0].team.names.includes("H.B.")); | ||
| 239 | - assert.ok(result.recommendations[0].score.community >= 9); | ||
| 240 | -}); | ||
| 241 | 225 | ||
| 242 | -test("Skell specialists omit alternatives when no credible pilot remains", () => { | ||
| 243 | - const activeClassId = "mastermind"; | ||
| 244 | - const result = recommendContextualTeams(request({ | ||
| 245 | - activeClassId, | ||
| 246 | - avatarLevel: 30, | ||
| 247 | - classRanks: ranksFor(activeClassId), | ||
| 248 | - combatMode: "skell", | ||
| 249 | - })); | ||
| 250 | - | ||
| 251 | - assert.equal(result.kind, "success"); | ||
| 252 | - if (result.kind !== "success") return; | ||
| 253 | - const primary = result.recommendations[0]; | ||
| 254 | - for (const name of ["Alexa", "Yelv"]) { | ||
| 255 | - const slotIndex = primary.team.names.indexOf(name); | ||
| 256 | - assert.notEqual(slotIndex, -1); | ||
| 257 | - assert.equal(primary.team.slots[slotIndex].alternativeName, undefined); | ||
| 258 | - } | ||
| 259 | -}); | ||
| 260 | 226 | ||
| 261 | test("visible contextual scores retain spread below the ten-point ceiling", () => { | 227 | test("visible contextual scores retain spread below the ten-point ceiling", () => { |
| 262 | const result = recommendContextualTeams(request()); | 228 | const result = recommendContextualTeams(request()); |
| @@ -350,8 +316,8 @@ test("manual companions remain fixed in every contextual alternative", () => { | |||
| 350 | }); | 316 | }); |
| 351 | 317 | ||
| 352 | test("slot rank changes the companion's contextual progression and role profile", () => { | 318 | test("slot rank changes the companion's contextual progression and role profile", () => { |
| 353 | - const lowRank = evaluateCompanionContext("Irina", 50, 3, "general"); | 319 | + const lowRank = evaluateCompanionContext("Irina", 50, 3); |
| 354 | - const maxRank = evaluateCompanionContext("Irina", 50, 20, "general"); | 320 | + const maxRank = evaluateCompanionContext("Irina", 50, 20); |
| 355 | 321 | ||
| 356 | assert.ok(lowRank.progression < maxRank.progression); | 322 | assert.ok(lowRank.progression < maxRank.progression); |
| 357 | assert.ok(lowRank.roles.support < maxRank.roles.support); | 323 | assert.ok(lowRank.roles.support < maxRank.roles.support); |
| @@ -468,25 +434,11 @@ test("independent weapon overrides rebuild Cross and contextual recommendations" | |||
| 468 | assert.deepEqual(result.recommendations[0].roster[0].weapons, mixed.weapons); | 434 | assert.deepEqual(result.recommendations[0].roster[0].weapons, mixed.weapons); |
| 469 | }); | 435 | }); |
| 470 | 436 | ||
| 471 | -test("General exposes Skell aptitude and Skell mode equips relevant Skills", () => { | 437 | +test("Skell aptitude only reflects equipped pilot Skills, not unlocked reserves", () => { |
| 472 | - const generalYelv = evaluateCompanionContext("Yelv", 50, 20, "general"); | 438 | + const yelv = planCompanion("Yelv", 50, 20); |
| 473 | - const skellYelv = evaluateCompanionContext("Yelv", 50, 20, "skell"); | 439 | + assert.ok(!yelv.skills.some((skill) => skill.name === "Synchrony")); |
| 474 | - assert.ok(generalYelv.roles.skell > 0); | 440 | + const profile = evaluateCompanionContext("Yelv", 50, 20); |
| 475 | - assert.equal(generalYelv.roles.skell, skellYelv.roles.skell); | 441 | + assert.equal(profile.roles.skell, 0); |
| 476 | - | ||
| 477 | - const result = recommendContextualTeams(request({ combatMode: "skell" })); | ||
| 478 | - assert.equal(result.kind, "success"); | ||
| 479 | - if (result.kind !== "success") return; | ||
| 480 | - | ||
| 481 | - const primary = result.recommendations[0]; | ||
| 482 | - assert.ok( | ||
| 483 | - primary.team.names.some((name) => name === "Alexa" || name === "Yelv"), | ||
| 484 | - ); | ||
| 485 | - assert.ok(primary.score.skell > 0); | ||
| 486 | - const skellPilots = primary.roster.filter((member) => | ||
| 487 | - member.skills.some((skill) => skill.name === "Synchrony" || skill.name === "Stellar Entry"), | ||
| 488 | - ); | ||
| 489 | - assert.ok(skellPilots.length > 0); | ||
| 490 | }); | 442 | }); |
| 491 | 443 | ||
| 492 | test("General mode keeps Skell aptitude as a minor tie-breaker", () => { | 444 | test("General mode keeps Skell aptitude as a minor tie-breaker", () => { |
| @@ -532,36 +484,15 @@ test("licensed General teams retain baseline Skell utility without pilot Skills" | |||
| 532 | assert.equal(withoutLicense.recommendations[0].score.skell, 0); | 484 | assert.equal(withoutLicense.recommendations[0].score.skell, 0); |
| 533 | }); | 485 | }); |
| 534 | 486 | ||
| 535 | -test("General Skell score has no aptitude dead zone above the licensed baseline", () => { | 487 | +test("Skell teams without equipped pilot Skills retain only licensed baseline", () => { |
| 536 | - const baseline = recommendContextualTeams(request({ | 488 | + const result = recommendContextualTeams(request({ |
| 537 | - slots: ["H.B.", "Irina", "Lin"], | 489 | + slots: ["Yelv", "Lin", "Irina"], |
| 538 | - hasSkellLicense: true, | 490 | + combatMode: "skell", |
| 539 | - })); | ||
| 540 | - const stellarEntry = recommendContextualTeams(request({ | ||
| 541 | - slots: ["H.B.", "Irina", "Doug"], | ||
| 542 | - hasSkellLicense: true, | ||
| 543 | - })); | ||
| 544 | - const synchrony = recommendContextualTeams(request({ | ||
| 545 | - slots: ["H.B.", "Irina", "Alexa"], | ||
| 546 | hasSkellLicense: true, | 491 | hasSkellLicense: true, |
| 547 | })); | 492 | })); |
| 548 | - | 493 | + assert.equal(result.kind, "success"); |
| 549 | - assert.equal(baseline.kind, "success"); | 494 | + if (result.kind !== "success") return; |
| 550 | - assert.equal(stellarEntry.kind, "success"); | 495 | + assert.equal(result.recommendations[0].score.skell, 1); |
| 551 | - assert.equal(synchrony.kind, "success"); | ||
| 552 | - if ( | ||
| 553 | - baseline.kind !== "success" | ||
| 554 | - || stellarEntry.kind !== "success" | ||
| 555 | - || synchrony.kind !== "success" | ||
| 556 | - ) return; | ||
| 557 | - | ||
| 558 | - const baselineScore = baseline.recommendations[0].score.skell; | ||
| 559 | - const stellarEntryScore = stellarEntry.recommendations[0].score.skell; | ||
| 560 | - const synchronyScore = synchrony.recommendations[0].score.skell; | ||
| 561 | - assert.equal(baselineScore, 1); | ||
| 562 | - assert.ok(stellarEntryScore > baselineScore); | ||
| 563 | - assert.ok(synchronyScore > stellarEntryScore); | ||
| 564 | - assert.ok(synchronyScore > 5); | ||
| 565 | }); | 496 | }); |
| 566 | 497 | ||
| 567 | test("contextual Skill upgrade recommendations never exceed level 5", () => { | 498 | test("contextual Skill upgrade recommendations never exceed level 5", () => { |
modified
src/lib/contextualEngine.ts +4 -95 | @@ -397,105 +397,20 @@ function companionProgression(plan: CompanionPlan): number { | ||
| 397 | 397 | return (artFill + skillFill) / 2; |
| 398 | 398 | } |
| 399 | 399 | |
| 400 | -function firstSourceUrl(citation: string): string { | |
| 401 | - const match = citation.match(/https?:\/\/[^\s)]+/); | |
| 402 | - return match?.[0] ?? citation; | |
| 403 | -} | |
| 404 | - | |
| 405 | -function planCompanionForMode( | |
| 406 | - name: string, | |
| 407 | - effectiveLevel: number, | |
| 408 | - personalRank: number, | |
| 409 | - combatMode: CombatMode, | |
| 410 | - lang: Lang, | |
| 411 | -): CompanionPlan { | |
| 412 | - const plan = planCompanion(name, effectiveLevel, personalRank, lang); | |
| 413 | - if (combatMode !== "skell") return plan; | |
| 414 | - const companion = companionByName.get(name); | |
| 415 | - if (!companion) return plan; | |
| 416 | - const selectedByName = new Map(plan.skills.map((skill) => [skill.name, skill])); | |
| 417 | - const skellSkills = companion.skills | |
| 418 | - .filter((skill) => | |
| 419 | - skill.rank <= plan.personalRank && (skillRoleSignals[skill.name]?.skell ?? 0) > 0, | |
| 420 | - ) | |
| 421 | - .sort((left, right) => | |
| 422 | - (skillRoleSignals[right.name]?.skell ?? 0) | |
| 423 | - - (skillRoleSignals[left.name]?.skell ?? 0) | |
| 424 | - || left.rank - right.rank, | |
| 425 | - ) | |
| 426 | - .map((skill): SkillSelection => | |
| 427 | - selectedByName.get(skill.name) ?? { | |
| 428 | - name: skill.name, | |
| 429 | - unlockRank: skill.rank, | |
| 430 | - recommendedLevel: 1, | |
| 431 | - source: { | |
| 432 | - kind: "companion", | |
| 433 | - id: companion.name, | |
| 434 | - url: firstSourceUrl(companion.source), | |
| 435 | - citation: companion.source, | |
| 436 | - }, | |
| 437 | - reason: translated( | |
| 438 | - lang, | |
| 439 | - "Equipped because this Skill is active in Skell combat", | |
| 440 | - "Équipé car ce Skill est actif en combat Skell", | |
| 441 | - ), | |
| 442 | - } | |
| 443 | - ); | |
| 444 | - if (skellSkills.length === 0) return plan; | |
| 445 | - const seen = new Set<string>(); | |
| 446 | - const skills = [...skellSkills, ...plan.skills] | |
| 447 | - .filter((skill) => { | |
| 448 | - if (seen.has(skill.name)) return false; | |
| 449 | - seen.add(skill.name); | |
| 450 | - return true; | |
| 451 | - }) | |
| 452 | - .slice(0, plan.skillSlots) | |
| 453 | - .map((skill, index) => ({ | |
| 454 | - ...skill, | |
| 455 | - recommendedLevel: preferredUpgradeLevel(index, effectiveLevel), | |
| 456 | - })); | |
| 457 | - return { | |
| 458 | - ...plan, | |
| 459 | - skills, | |
| 460 | - planReasons: [ | |
| 461 | - ...plan.planReasons, | |
| 462 | - translated( | |
| 463 | - lang, | |
| 464 | - "Skell-active Skills replace ground-only preferences in Skell mode", | |
| 465 | - "Les Skills actifs en Skell remplacent les préférences terrestres en mode Skell", | |
| 466 | - ), | |
| 467 | - ], | |
| 468 | - }; | |
| 469 | -} | |
| 470 | 400 | |
| 471 | 401 | export function evaluateCompanionContext( |
| 472 | 402 | name: string, |
| 473 | 403 | effectiveLevel: number, |
| 474 | 404 | personalRank: number, |
| 475 | - combatMode: CombatMode, | |
| 476 | 405 | ): CompanionContextEvaluation { |
| 477 | - const plan = planCompanionForMode( | |
| 478 | - name, | |
| 479 | - effectiveLevel, | |
| 480 | - personalRank, | |
| 481 | - combatMode, | |
| 482 | - "en", | |
| 483 | - ); | |
| 406 | + const plan = planCompanion(name, effectiveLevel, personalRank, "en"); | |
| 484 | 407 | const progression = companionProgression(plan); |
| 485 | 408 | const roles = rolesFromSelections( |
| 486 | 409 | plan.capabilities, |
| 487 | - plan.potentialArts, | |
| 410 | + plan.arts, | |
| 488 | 411 | plan.skills, |
| 489 | 412 | progression, |
| 490 | 413 | ); |
| 491 | - const companion = companionByName.get(name); | |
| 492 | - const availableSkellAptitude = (companion?.skills ?? []) | |
| 493 | - .filter((skill) => skill.rank <= plan.personalRank) | |
| 494 | - .reduce( | |
| 495 | - (total, skill) => total + (skillRoleSignals[skill.name]?.skell ?? 0), | |
| 496 | - 0, | |
| 497 | - ); | |
| 498 | - if (combatMode === "general") roles.skell = availableSkellAptitude; | |
| 499 | 414 | return { |
| 500 | 415 | name, |
| 501 | 416 | personalRank: plan.personalRank, |
| @@ -664,6 +579,7 @@ function buildRoster( | ||
| 664 | 579 | strategy: plan.strategy, |
| 665 | 580 | dominantAttribute: buildStrategies[plan.strategy].dominantAttribute, |
| 666 | 581 | note: plan.note, |
| 582 | + curatedBuild: plan.curatedBuild, | |
| 667 | 583 | planReasons: plan.planReasons, |
| 668 | 584 | source: plan.source, |
| 669 | 585 | }); |
| @@ -938,13 +854,7 @@ export function recommendContextualTeams( | ||
| 938 | 854 | const key = `${slotIndex}:${name}`; |
| 939 | 855 | let plan = planCache.get(key); |
| 940 | 856 | if (!plan) { |
| 941 | - plan = planCompanionForMode( | |
| 942 | - name, | |
| 943 | - level, | |
| 944 | - request.personalRanks[slotIndex], | |
| 945 | - request.combatMode, | |
| 946 | - lang, | |
| 947 | - ); | |
| 857 | + plan = planCompanion(name, level, request.personalRanks[slotIndex], lang); | |
| 948 | 858 | planCache.set(key, plan); |
| 949 | 859 | } |
| 950 | 860 | return plan; |
| @@ -960,7 +870,6 @@ export function recommendContextualTeams( | ||
| 960 | 870 | name, |
| 961 | 871 | level, |
| 962 | 872 | request.personalRanks[slotIndex], |
| 963 | - request.combatMode, | |
| 964 | 873 | ); |
| 965 | 874 | profileCache.set(key, profile); |
| 966 | 875 | } |
| @@ -397,105 +397,20 @@ function companionProgression(plan: CompanionPlan): number { | |||
| 397 | return (artFill + skillFill) / 2; | 397 | return (artFill + skillFill) / 2; |
| 398 | } | 398 | } |
| 399 | 399 | ||
| 400 | -function firstSourceUrl(citation: string): string { | ||
| 401 | - const match = citation.match(/https?:\/\/[^\s)]+/); | ||
| 402 | - return match?.[0] ?? citation; | ||
| 403 | -} | ||
| 404 | - | ||
| 405 | -function planCompanionForMode( | ||
| 406 | - name: string, | ||
| 407 | - effectiveLevel: number, | ||
| 408 | - personalRank: number, | ||
| 409 | - combatMode: CombatMode, | ||
| 410 | - lang: Lang, | ||
| 411 | -): CompanionPlan { | ||
| 412 | - const plan = planCompanion(name, effectiveLevel, personalRank, lang); | ||
| 413 | - if (combatMode !== "skell") return plan; | ||
| 414 | - const companion = companionByName.get(name); | ||
| 415 | - if (!companion) return plan; | ||
| 416 | - const selectedByName = new Map(plan.skills.map((skill) => [skill.name, skill])); | ||
| 417 | - const skellSkills = companion.skills | ||
| 418 | - .filter((skill) => | ||
| 419 | - skill.rank <= plan.personalRank && (skillRoleSignals[skill.name]?.skell ?? 0) > 0, | ||
| 420 | - ) | ||
| 421 | - .sort((left, right) => | ||
| 422 | - (skillRoleSignals[right.name]?.skell ?? 0) | ||
| 423 | - - (skillRoleSignals[left.name]?.skell ?? 0) | ||
| 424 | - || left.rank - right.rank, | ||
| 425 | - ) | ||
| 426 | - .map((skill): SkillSelection => | ||
| 427 | - selectedByName.get(skill.name) ?? { | ||
| 428 | - name: skill.name, | ||
| 429 | - unlockRank: skill.rank, | ||
| 430 | - recommendedLevel: 1, | ||
| 431 | - source: { | ||
| 432 | - kind: "companion", | ||
| 433 | - id: companion.name, | ||
| 434 | - url: firstSourceUrl(companion.source), | ||
| 435 | - citation: companion.source, | ||
| 436 | - }, | ||
| 437 | - reason: translated( | ||
| 438 | - lang, | ||
| 439 | - "Equipped because this Skill is active in Skell combat", | ||
| 440 | - "Équipé car ce Skill est actif en combat Skell", | ||
| 441 | - ), | ||
| 442 | - } | ||
| 443 | - ); | ||
| 444 | - if (skellSkills.length === 0) return plan; | ||
| 445 | - const seen = new Set<string>(); | ||
| 446 | - const skills = [...skellSkills, ...plan.skills] | ||
| 447 | - .filter((skill) => { | ||
| 448 | - if (seen.has(skill.name)) return false; | ||
| 449 | - seen.add(skill.name); | ||
| 450 | - return true; | ||
| 451 | - }) | ||
| 452 | - .slice(0, plan.skillSlots) | ||
| 453 | - .map((skill, index) => ({ | ||
| 454 | - ...skill, | ||
| 455 | - recommendedLevel: preferredUpgradeLevel(index, effectiveLevel), | ||
| 456 | - })); | ||
| 457 | - return { | ||
| 458 | - ...plan, | ||
| 459 | - skills, | ||
| 460 | - planReasons: [ | ||
| 461 | - ...plan.planReasons, | ||
| 462 | - translated( | ||
| 463 | - lang, | ||
| 464 | - "Skell-active Skills replace ground-only preferences in Skell mode", | ||
| 465 | - "Les Skills actifs en Skell remplacent les préférences terrestres en mode Skell", | ||
| 466 | - ), | ||
| 467 | - ], | ||
| 468 | - }; | ||
| 469 | -} | ||
| 470 | 400 | ||
| 471 | export function evaluateCompanionContext( | 401 | export function evaluateCompanionContext( |
| 472 | name: string, | 402 | name: string, |
| 473 | effectiveLevel: number, | 403 | effectiveLevel: number, |
| 474 | personalRank: number, | 404 | personalRank: number, |
| 475 | - combatMode: CombatMode, | ||
| 476 | ): CompanionContextEvaluation { | 405 | ): CompanionContextEvaluation { |
| 477 | - const plan = planCompanionForMode( | 406 | + const plan = planCompanion(name, effectiveLevel, personalRank, "en"); |
| 478 | - name, | ||
| 479 | - effectiveLevel, | ||
| 480 | - personalRank, | ||
| 481 | - combatMode, | ||
| 482 | - "en", | ||
| 483 | - ); | ||
| 484 | const progression = companionProgression(plan); | 407 | const progression = companionProgression(plan); |
| 485 | const roles = rolesFromSelections( | 408 | const roles = rolesFromSelections( |
| 486 | plan.capabilities, | 409 | plan.capabilities, |
| 487 | - plan.potentialArts, | 410 | + plan.arts, |
| 488 | plan.skills, | 411 | plan.skills, |
| 489 | progression, | 412 | progression, |
| 490 | ); | 413 | ); |
| 491 | - const companion = companionByName.get(name); | ||
| 492 | - const availableSkellAptitude = (companion?.skills ?? []) | ||
| 493 | - .filter((skill) => skill.rank <= plan.personalRank) | ||
| 494 | - .reduce( | ||
| 495 | - (total, skill) => total + (skillRoleSignals[skill.name]?.skell ?? 0), | ||
| 496 | - 0, | ||
| 497 | - ); | ||
| 498 | - if (combatMode === "general") roles.skell = availableSkellAptitude; | ||
| 499 | return { | 414 | return { |
| 500 | name, | 415 | name, |
| 501 | personalRank: plan.personalRank, | 416 | personalRank: plan.personalRank, |
| @@ -664,6 +579,7 @@ function buildRoster( | |||
| 664 | strategy: plan.strategy, | 579 | strategy: plan.strategy, |
| 665 | dominantAttribute: buildStrategies[plan.strategy].dominantAttribute, | 580 | dominantAttribute: buildStrategies[plan.strategy].dominantAttribute, |
| 666 | note: plan.note, | 581 | note: plan.note, |
| 582 | + curatedBuild: plan.curatedBuild, | ||
| 667 | planReasons: plan.planReasons, | 583 | planReasons: plan.planReasons, |
| 668 | source: plan.source, | 584 | source: plan.source, |
| 669 | }); | 585 | }); |
| @@ -938,13 +854,7 @@ export function recommendContextualTeams( | |||
| 938 | const key = `${slotIndex}:${name}`; | 854 | const key = `${slotIndex}:${name}`; |
| 939 | let plan = planCache.get(key); | 855 | let plan = planCache.get(key); |
| 940 | if (!plan) { | 856 | if (!plan) { |
| 941 | - plan = planCompanionForMode( | 857 | + plan = planCompanion(name, level, request.personalRanks[slotIndex], lang); |
| 942 | - name, | ||
| 943 | - level, | ||
| 944 | - request.personalRanks[slotIndex], | ||
| 945 | - request.combatMode, | ||
| 946 | - lang, | ||
| 947 | - ); | ||
| 948 | planCache.set(key, plan); | 858 | planCache.set(key, plan); |
| 949 | } | 859 | } |
| 950 | return plan; | 860 | return plan; |
| @@ -960,7 +870,6 @@ export function recommendContextualTeams( | |||
| 960 | name, | 870 | name, |
| 961 | level, | 871 | level, |
| 962 | request.personalRanks[slotIndex], | 872 | request.personalRanks[slotIndex], |
| 963 | - request.combatMode, | ||
| 964 | ); | 873 | ); |
| 965 | profileCache.set(key, profile); | 874 | profileCache.set(key, profile); |
| 966 | } | 875 | } |
modified
src/lib/engine.test.ts +9 -9 | @@ -207,17 +207,17 @@ test("mixed team selection preserves manual slots and fills only AUTO slots", () | ||
| 207 | 207 | test("companion loadout follows personal rank and fixed slot cap", () => { |
| 208 | 208 | const lin = planCompanion("Lin", 20, 3); |
| 209 | 209 | |
| 210 | - assert.deepEqual(lin.arts.map((art) => art.name), [ | |
| 211 | - "Wild Down", | |
| 212 | - "Wild Smash", | |
| 213 | - "Flame Cloak", | |
| 214 | - "Fire Carnival", | |
| 215 | - ]); | |
| 210 | + const learned = companions.find((companion) => companion.name === "Lin")!.arts; | |
| 211 | + assert.ok(lin.arts.length > 0 && lin.arts.length <= 8); | |
| 212 | + assert.ok(lin.arts.every((art) => | |
| 213 | + learned.some((fact) => fact.name === art.name && fact.rank <= lin.personalRank) | |
| 214 | + && (art.weapon === lin.weapons.ranged || art.weapon === lin.weapons.melee))); | |
| 216 | 215 | assert.equal(lin.skills.length, 0); |
| 217 | 216 | assert.equal(lin.skillSlots, 3); |
| 217 | + assert.ok(planCompanion("Lin", 20, 20).skills.length > lin.skills.length); | |
| 218 | 218 | }); |
| 219 | 219 | |
| 220 | -test("avatar and companion loadouts respect the TP budget", () => { | |
| 220 | +test("Cross retains its three-TP policy while companions never exceed two", () => { | |
| 221 | 221 | const plan = planAvatar("galactic-knight", { "galactic-knight": 10 }, undefined, "en", 50); |
| 222 | 222 | const galacticTpArts = plan.arts.filter((art) => tpCostingArtNames[art.name]); |
| 223 | 223 | assert.ok( |
| @@ -230,8 +230,8 @@ test("avatar and companion loadouts respect the TP budget", () => { | ||
| 230 | 230 | const doug = planCompanion("Doug", 20, 50); |
| 231 | 231 | const dougTpArts = doug.arts.filter((art) => tpCostingArtNames[art.name]); |
| 232 | 232 | assert.ok( |
| 233 | - dougTpArts.length <= 3, | |
| 234 | - `expected <=3 TP-costing Arts, got ${dougTpArts.length}: ${dougTpArts.map((art) => art.name).join(", ")}`, | |
| 233 | + dougTpArts.length <= 2, | |
| 234 | + `expected <=2 TP-costing Arts, got ${dougTpArts.length}: ${dougTpArts.map((art) => art.name).join(", ")}`, | |
| 235 | 235 | ); |
| 236 | 236 | }); |
| 237 | 237 | |
| @@ -207,17 +207,17 @@ test("mixed team selection preserves manual slots and fills only AUTO slots", () | |||
| 207 | test("companion loadout follows personal rank and fixed slot cap", () => { | 207 | test("companion loadout follows personal rank and fixed slot cap", () => { |
| 208 | const lin = planCompanion("Lin", 20, 3); | 208 | const lin = planCompanion("Lin", 20, 3); |
| 209 | 209 | ||
| 210 | - assert.deepEqual(lin.arts.map((art) => art.name), [ | 210 | + const learned = companions.find((companion) => companion.name === "Lin")!.arts; |
| 211 | - "Wild Down", | 211 | + assert.ok(lin.arts.length > 0 && lin.arts.length <= 8); |
| 212 | - "Wild Smash", | 212 | + assert.ok(lin.arts.every((art) => |
| 213 | - "Flame Cloak", | 213 | + learned.some((fact) => fact.name === art.name && fact.rank <= lin.personalRank) |
| 214 | - "Fire Carnival", | 214 | + && (art.weapon === lin.weapons.ranged || art.weapon === lin.weapons.melee))); |
| 215 | - ]); | ||
| 216 | assert.equal(lin.skills.length, 0); | 215 | assert.equal(lin.skills.length, 0); |
| 217 | assert.equal(lin.skillSlots, 3); | 216 | assert.equal(lin.skillSlots, 3); |
| 217 | + assert.ok(planCompanion("Lin", 20, 20).skills.length > lin.skills.length); | ||
| 218 | }); | 218 | }); |
| 219 | 219 | ||
| 220 | -test("avatar and companion loadouts respect the TP budget", () => { | 220 | +test("Cross retains its three-TP policy while companions never exceed two", () => { |
| 221 | const plan = planAvatar("galactic-knight", { "galactic-knight": 10 }, undefined, "en", 50); | 221 | const plan = planAvatar("galactic-knight", { "galactic-knight": 10 }, undefined, "en", 50); |
| 222 | const galacticTpArts = plan.arts.filter((art) => tpCostingArtNames[art.name]); | 222 | const galacticTpArts = plan.arts.filter((art) => tpCostingArtNames[art.name]); |
| 223 | assert.ok( | 223 | assert.ok( |
| @@ -230,8 +230,8 @@ test("avatar and companion loadouts respect the TP budget", () => { | |||
| 230 | const doug = planCompanion("Doug", 20, 50); | 230 | const doug = planCompanion("Doug", 20, 50); |
| 231 | const dougTpArts = doug.arts.filter((art) => tpCostingArtNames[art.name]); | 231 | const dougTpArts = doug.arts.filter((art) => tpCostingArtNames[art.name]); |
| 232 | assert.ok( | 232 | assert.ok( |
| 233 | - dougTpArts.length <= 3, | 233 | + dougTpArts.length <= 2, |
| 234 | - `expected <=3 TP-costing Arts, got ${dougTpArts.length}: ${dougTpArts.map((art) => art.name).join(", ")}`, | 234 | + `expected <=2 TP-costing Arts, got ${dougTpArts.length}: ${dougTpArts.map((art) => art.name).join(", ")}`, |
| 235 | ); | 235 | ); |
| 236 | }); | 236 | }); |
| 237 | 237 | ||
modified
src/lib/engine.ts +146 -79 | @@ -1,6 +1,7 @@ | ||
| 1 | 1 | import { buildStrategies, classStrategy, companionSelectionPriority } from "@/src/data/builds"; |
| 2 | 2 | import { classes } from "@/src/data/classes"; |
| 3 | 3 | import { companionByName, companions } from "@/src/data/companions"; |
| 4 | +import { companionBuilds } from "@/src/data/companionBuilds"; | |
| 4 | 5 | import { classProgression, classProgressionById } from "@/src/data/progression"; |
| 5 | 6 | import artEffectsData from "@/research/art-effects.json"; |
| 6 | 7 | import { |
| @@ -22,6 +23,8 @@ import type { | ||
| 22 | 23 | ClassEntry, |
| 23 | 24 | ClassRanks, |
| 24 | 25 | CompanionPlan, |
| 26 | + CuratedCompanionBuild, | |
| 27 | + CompanionUnlockFact, | |
| 25 | 28 | Lang, |
| 26 | 29 | LocalizedText, |
| 27 | 30 | RosterMember, |
| @@ -558,83 +561,150 @@ export function planAvatar( | ||
| 558 | 561 | }; |
| 559 | 562 | } |
| 560 | 563 | |
| 561 | -function selectCompanionArts( | |
| 562 | - companion: (typeof companions)[number], | |
| 563 | - personalRank: number, | |
| 564 | - lang: Lang, | |
| 565 | - level: number, | |
| 566 | -): { arts: ArtSelection[]; potentialArts: ArtSelection[]; trimmedTpArts: number } { | |
| 567 | - const strategy = buildStrategies[companion.strategy]; | |
| 568 | - const ranked = companion.arts | |
| 569 | - .filter((art) => art.rank <= personalRank) | |
| 570 | - .slice() | |
| 571 | - .sort((left, right) => | |
| 572 | - preferenceIndex(left.name, companion.defaultArts) | |
| 573 | - - preferenceIndex(right.name, companion.defaultArts) | |
| 574 | - || preferenceIndex(left.name, strategy.preferredArts) | |
| 575 | - - preferenceIndex(right.name, strategy.preferredArts) | |
| 576 | - || compareText(left.name, right.name) | |
| 577 | - || left.rank - right.rank); | |
| 578 | - const toSelection = (art: (typeof companion.arts)[number], index: number): ArtSelection => { | |
| 579 | - const defaultAt = preferenceIndex(art.name, companion.defaultArts); | |
| 580 | - const preferredAt = preferenceIndex(art.name, strategy.preferredArts); | |
| 581 | - return { | |
| 582 | - name: art.name, | |
| 583 | - unlockRank: art.rank, | |
| 584 | - recommendedLevel: recommendedUpgradeLevel(index, level), | |
| 585 | - source: { | |
| 586 | - kind: "companion", | |
| 587 | - id: companion.name, | |
| 588 | - url: firstSourceUrl(companion.source), | |
| 589 | - citation: companion.source, | |
| 590 | - }, | |
| 591 | - reason: defaultAt < companion.defaultArts.length | |
| 592 | - ? translated(lang, `Canonical default Art #${defaultAt + 1}`, `Art par défaut canonique n°${defaultAt + 1}`) | |
| 593 | - : preferredAt < strategy.preferredArts.length | |
| 594 | - ? translated(lang, `Strategy preference #${preferredAt + 1}`, `Préférence stratégique n°${preferredAt + 1}`) | |
| 595 | - : translated(lang, `Unlocked at personal rank ${art.rank}`, `Débloqué au rang personnel ${art.rank}`), | |
| 596 | - }; | |
| 564 | +type CuratedChoice = { name: string; rank: number; replaces?: string }; | |
| 565 | + | |
| 566 | +function selectCuratedChoices( | |
| 567 | + canonical: readonly string[], | |
| 568 | + substitutes: readonly string[], | |
| 569 | + facts: readonly CompanionUnlockFact[], | |
| 570 | + rank: number, | |
| 571 | + limit: number, | |
| 572 | + costOf: (name: string) => number, | |
| 573 | +): { choices: CuratedChoice[]; unavailable: { name: string; rank: number; replacement?: string }[] } { | |
| 574 | + if (canonical.length > limit) throw new Error("Curated build exceeds available ability slots"); | |
| 575 | + const selected = new Set<string>(); | |
| 576 | + const choices: Array<CuratedChoice | undefined> = new Array(canonical.length); | |
| 577 | + const unavailable: { name: string; rank: number; replacement?: string }[] = []; | |
| 578 | + let spent = 0; | |
| 579 | + const trySelect = (name: string, replaces?: string): CuratedChoice | undefined => { | |
| 580 | + const fact = facts.find((entry) => entry.name === name); | |
| 581 | + if (!fact) throw new Error(`Curated ability ${name} is absent from companion unlocks`); | |
| 582 | + if (fact.rank > rank || selected.has(name)) return undefined; | |
| 583 | + const cost = costOf(name); | |
| 584 | + if (spent + cost > 2) return undefined; | |
| 585 | + spent += cost; | |
| 586 | + selected.add(name); | |
| 587 | + return { name, rank: fact.rank, replaces }; | |
| 597 | 588 | }; |
| 598 | - const { selected, trimmedTpArts } = applyTpArtBudget(ranked, (art) => art.name); | |
| 599 | - return { | |
| 600 | - arts: selected.map(toSelection), | |
| 601 | - potentialArts: ranked.slice(0, 8).map(toSelection), | |
| 602 | - trimmedTpArts, | |
| 589 | + | |
| 590 | + for (let index = 0; index < canonical.length; index += 1) { | |
| 591 | + choices[index] = trySelect(canonical[index]); | |
| 592 | + } | |
| 593 | + let substituteIndex = 0; | |
| 594 | + const nextSubstitute = (replaces?: string): CuratedChoice | undefined => { | |
| 595 | + while (substituteIndex < substitutes.length) { | |
| 596 | + const choice = trySelect(substitutes[substituteIndex], replaces); | |
| 597 | + substituteIndex += 1; | |
| 598 | + if (choice) return choice; | |
| 599 | + } | |
| 600 | + return undefined; | |
| 603 | 601 | }; |
| 602 | + for (let index = 0; index < choices.length; index += 1) { | |
| 603 | + if (choices[index]) continue; | |
| 604 | + const name = canonical[index]; | |
| 605 | + const fact = facts.find((entry) => entry.name === name); | |
| 606 | + if (!fact) throw new Error(`Curated ability ${name} is absent from companion unlocks`); | |
| 607 | + const replacement = nextSubstitute(name); | |
| 608 | + choices[index] = replacement; | |
| 609 | + unavailable.push({ name, rank: fact.rank, replacement: replacement?.name }); | |
| 610 | + } | |
| 611 | + const result = choices.filter((choice): choice is CuratedChoice => choice !== undefined); | |
| 612 | + while (result.length < limit) { | |
| 613 | + const filler = nextSubstitute(); | |
| 614 | + if (!filler) break; | |
| 615 | + result.push(filler); | |
| 616 | + } | |
| 617 | + return { choices: result, unavailable }; | |
| 604 | 618 | } |
| 605 | 619 | |
| 606 | -function selectCompanionSkills( | |
| 620 | +const companionArtEffects = new Map( | |
| 621 | + (artEffectsData.arts as { name: string; weapon: string; url: string; effects: { tp: boolean } }[]) | |
| 622 | + .map((art) => [art.name, art]), | |
| 623 | +); | |
| 624 | + | |
| 625 | +function companionArtCost(name: string, companion: (typeof companions)[number]): number { | |
| 626 | + const art = companionArtEffects.get(name); | |
| 627 | + if (!art) throw new Error(`Missing verified Art facts for ${name}`); | |
| 628 | + if (art.weapon !== companion.ranged && art.weapon !== companion.melee) { | |
| 629 | + throw new Error(`${companion.name} cannot equip ${name} (${art.weapon})`); | |
| 630 | + } | |
| 631 | + return art.effects.tp ? 1 : 0; | |
| 632 | +} | |
| 633 | + | |
| 634 | +function companionProgressionReasons( | |
| 635 | + lang: Lang, | |
| 636 | + unavailable: readonly { name: string; rank: number; replacement?: string }[], | |
| 637 | + personalRank: number, | |
| 638 | +): string[] { | |
| 639 | + return unavailable.map(({ name, rank, replacement }) => translated( | |
| 640 | + lang, | |
| 641 | + `${name} ${rank > personalRank ? `unlocks at personal rank ${rank}` : "exceeds the two-TP Art limit"}; ${replacement ? `${replacement} equipped instead` : "no legal progression substitute available"}`, | |
| 642 | + `${name} ${rank > personalRank ? `se débloque au rang personnel ${rank}` : "dépasse la limite de deux Arts à PT"} ; ${replacement ? `${replacement} équipé à la place` : "aucun substitut de progression légal disponible"}`, | |
| 643 | + )); | |
| 644 | +} | |
| 645 | + | |
| 646 | +function selectCompanionArts( | |
| 607 | 647 | companion: (typeof companions)[number], |
| 648 | + build: CuratedCompanionBuild, | |
| 608 | 649 | personalRank: number, |
| 609 | 650 | lang: Lang, |
| 610 | 651 | level: number, |
| 611 | -): SkillSelection[] { | |
| 612 | - const preferences = buildStrategies[companion.strategy].preferredSkills; | |
| 613 | - return companion.skills | |
| 614 | - .filter((skill) => skill.rank <= personalRank) | |
| 615 | - .slice() | |
| 616 | - .sort((left, right) => | |
| 617 | - preferenceIndex(left.name, preferences) - preferenceIndex(right.name, preferences) | |
| 618 | - || compareText(left.name, right.name) | |
| 619 | - || left.rank - right.rank) | |
| 620 | - .slice(0, companion.skillSlots) | |
| 621 | - .map((skill, index) => { | |
| 622 | - const preferredAt = preferenceIndex(skill.name, preferences); | |
| 652 | +): { arts: ArtSelection[]; reasons: string[] } { | |
| 653 | + const { choices, unavailable } = selectCuratedChoices( | |
| 654 | + build.arts, build.artSubstitutes, companion.arts, personalRank, 8, | |
| 655 | + (name) => companionArtCost(name, companion), | |
| 656 | + ); | |
| 657 | + return { | |
| 658 | + arts: choices.map(({ name, rank, replaces }, index): ArtSelection => { | |
| 659 | + const effect = companionArtEffects.get(name)!; | |
| 623 | 660 | return { |
| 624 | - name: skill.name, | |
| 625 | - unlockRank: skill.rank, | |
| 661 | + name, | |
| 662 | + weapon: effect.weapon, | |
| 663 | + unlockRank: rank, | |
| 626 | 664 | recommendedLevel: recommendedUpgradeLevel(index, level), |
| 627 | 665 | source: { |
| 628 | 666 | kind: "companion", |
| 629 | 667 | id: companion.name, |
| 630 | - url: firstSourceUrl(companion.source), | |
| 668 | + url: effect.url, | |
| 631 | 669 | citation: companion.source, |
| 632 | 670 | }, |
| 633 | - reason: preferredAt < preferences.length | |
| 634 | - ? translated(lang, `Strategy preference #${preferredAt + 1}`, `Préférence stratégique n°${preferredAt + 1}`) | |
| 635 | - : translated(lang, `Unlocked at personal rank ${skill.rank}`, `Débloqué au rang personnel ${skill.rank}`), | |
| 671 | + reason: replaces | |
| 672 | + ? translated(lang, `Progression substitute for ${replaces}`, `Substitut de progression pour ${replaces}`) | |
| 673 | + : translated(lang, "Character-specific curated Art", "Art choisi pour ce personnage"), | |
| 636 | 674 | }; |
| 637 | - }); | |
| 675 | + }), | |
| 676 | + reasons: companionProgressionReasons(lang, unavailable, personalRank), | |
| 677 | + }; | |
| 678 | +} | |
| 679 | + | |
| 680 | +function selectCompanionSkills( | |
| 681 | + companion: (typeof companions)[number], | |
| 682 | + build: CuratedCompanionBuild, | |
| 683 | + personalRank: number, | |
| 684 | + lang: Lang, | |
| 685 | + level: number, | |
| 686 | +): { skills: SkillSelection[]; reasons: string[] } { | |
| 687 | + const { choices, unavailable } = selectCuratedChoices( | |
| 688 | + build.skills, build.skillSubstitutes, companion.skills, personalRank, | |
| 689 | + companion.skillSlots, () => 0, | |
| 690 | + ); | |
| 691 | + return { | |
| 692 | + skills: choices.map(({ name, rank, replaces }, index): SkillSelection => ({ | |
| 693 | + name, | |
| 694 | + unlockRank: rank, | |
| 695 | + recommendedLevel: recommendedUpgradeLevel(index, level), | |
| 696 | + source: { | |
| 697 | + kind: "companion", | |
| 698 | + id: companion.name, | |
| 699 | + url: firstSourceUrl(companion.source), | |
| 700 | + citation: companion.source, | |
| 701 | + }, | |
| 702 | + reason: replaces | |
| 703 | + ? translated(lang, `Progression substitute for ${replaces}`, `Substitut de progression pour ${replaces}`) | |
| 704 | + : translated(lang, "Character-specific curated Skill", "Skill choisi pour ce personnage"), | |
| 705 | + })), | |
| 706 | + reasons: companionProgressionReasons(lang, unavailable, personalRank), | |
| 707 | + }; | |
| 638 | 708 | } |
| 639 | 709 | |
| 640 | 710 | /** Plans only the named companion's canonical personal kit. */ |
| @@ -652,8 +722,14 @@ export function planCompanion( | ||
| 652 | 722 | clampRank(personalClassRank, companion.maxRank), |
| 653 | 723 | ); |
| 654 | 724 | const level = clampLevel(effectiveLevel); |
| 655 | - const { arts, potentialArts, trimmedTpArts } = selectCompanionArts(companion, personalRank, lang, level); | |
| 656 | - const skills = selectCompanionSkills(companion, personalRank, lang, level); | |
| 725 | + const curatedBuild = companionBuilds[companion.name]; | |
| 726 | + if (!curatedBuild) throw new Error(`Missing curated build for ${companion.name}`); | |
| 727 | + const { arts, reasons: artReasons } = selectCompanionArts( | |
| 728 | + companion, curatedBuild, personalRank, lang, level, | |
| 729 | + ); | |
| 730 | + const { skills, reasons: skillReasons } = selectCompanionSkills( | |
| 731 | + companion, curatedBuild, personalRank, lang, level, | |
| 732 | + ); | |
| 657 | 733 | return { |
| 658 | 734 | name: companion.name, |
| 659 | 735 | className: companion.className, |
| @@ -663,29 +739,19 @@ export function planCompanion( | ||
| 663 | 739 | strategy: companion.strategy, |
| 664 | 740 | capabilities: { ...companion.capabilities }, |
| 665 | 741 | arts, |
| 666 | - potentialArts, | |
| 667 | 742 | skills, |
| 743 | + curatedBuild, | |
| 668 | 744 | skillSlots: companion.skillSlots, |
| 669 | - note: buildStrategies[companion.strategy].role, | |
| 745 | + note: curatedBuild.role, | |
| 670 | 746 | source: companion.source, |
| 671 | 747 | planReasons: [ |
| 672 | 748 | translated( |
| 673 | 749 | lang, |
| 674 | - `Personal rank ${personalRank}: ${arts.length} learned Arts and ${skills.length}/${companion.skillSlots} Skills`, | |
| 675 | - `Rang personnel ${personalRank} : ${arts.length} Arts appris et ${skills.length}/${companion.skillSlots} Skills`, | |
| 676 | - ), | |
| 677 | - ...(trimmedTpArts > 0 | |
| 678 | - ? [translated( | |
| 679 | - lang, | |
| 680 | - `${trimmedTpArts} TP-cost Arts set aside to preserve the TP economy (max ${TP_ART_BUDGET} per build)`, | |
| 681 | - `${trimmedTpArts} Arts à PT écartés pour préserver l'économie de PT (max ${TP_ART_BUDGET} par build)`, | |
| 682 | - )] | |
| 683 | - : []), | |
| 684 | - translated( | |
| 685 | - lang, | |
| 686 | - "Canonical default Arts precede strategy preferences", | |
| 687 | - "Les Arts par défaut canoniques priment sur les préférences stratégiques", | |
| 750 | + `Personal rank ${personalRank}: ${arts.length} equipped Arts and ${skills.length}/${companion.skillSlots} Skills (max 2 TP Arts)`, | |
| 751 | + `Rang personnel ${personalRank} : ${arts.length} Arts équipés et ${skills.length}/${companion.skillSlots} Skills (max 2 Arts à PT)`, | |
| 688 | 752 | ), |
| 753 | + ...artReasons, | |
| 754 | + ...skillReasons, | |
| 689 | 755 | ], |
| 690 | 756 | }; |
| 691 | 757 | } |
| @@ -910,6 +976,7 @@ export function buildRoster( | ||
| 910 | 976 | strategy: companion.strategy, |
| 911 | 977 | dominantAttribute: buildStrategies[companion.strategy].dominantAttribute, |
| 912 | 978 | note: companion.note, |
| 979 | + curatedBuild: companion.curatedBuild, | |
| 913 | 980 | planReasons: companion.planReasons, |
| 914 | 981 | source: companion.source, |
| 915 | 982 | }); |
| @@ -1,6 +1,7 @@ | |||
| 1 | import { buildStrategies, classStrategy, companionSelectionPriority } from "@/src/data/builds"; | 1 | import { buildStrategies, classStrategy, companionSelectionPriority } from "@/src/data/builds"; |
| 2 | import { classes } from "@/src/data/classes"; | 2 | import { classes } from "@/src/data/classes"; |
| 3 | import { companionByName, companions } from "@/src/data/companions"; | 3 | import { companionByName, companions } from "@/src/data/companions"; |
| 4 | +import { companionBuilds } from "@/src/data/companionBuilds"; | ||
| 4 | import { classProgression, classProgressionById } from "@/src/data/progression"; | 5 | import { classProgression, classProgressionById } from "@/src/data/progression"; |
| 5 | import artEffectsData from "@/research/art-effects.json"; | 6 | import artEffectsData from "@/research/art-effects.json"; |
| 6 | import { | 7 | import { |
| @@ -22,6 +23,8 @@ import type { | |||
| 22 | ClassEntry, | 23 | ClassEntry, |
| 23 | ClassRanks, | 24 | ClassRanks, |
| 24 | CompanionPlan, | 25 | CompanionPlan, |
| 26 | + CuratedCompanionBuild, | ||
| 27 | + CompanionUnlockFact, | ||
| 25 | Lang, | 28 | Lang, |
| 26 | LocalizedText, | 29 | LocalizedText, |
| 27 | RosterMember, | 30 | RosterMember, |
| @@ -558,83 +561,150 @@ export function planAvatar( | |||
| 558 | }; | 561 | }; |
| 559 | } | 562 | } |
| 560 | 563 | ||
| 561 | -function selectCompanionArts( | 564 | +type CuratedChoice = { name: string; rank: number; replaces?: string }; |
| 562 | - companion: (typeof companions)[number], | 565 | + |
| 563 | - personalRank: number, | 566 | +function selectCuratedChoices( |
| 564 | - lang: Lang, | 567 | + canonical: readonly string[], |
| 565 | - level: number, | 568 | + substitutes: readonly string[], |
| 566 | -): { arts: ArtSelection[]; potentialArts: ArtSelection[]; trimmedTpArts: number } { | 569 | + facts: readonly CompanionUnlockFact[], |
| 567 | - const strategy = buildStrategies[companion.strategy]; | 570 | + rank: number, |
| 568 | - const ranked = companion.arts | 571 | + limit: number, |
| 569 | - .filter((art) => art.rank <= personalRank) | 572 | + costOf: (name: string) => number, |
| 570 | - .slice() | 573 | +): { choices: CuratedChoice[]; unavailable: { name: string; rank: number; replacement?: string }[] } { |
| 571 | - .sort((left, right) => | 574 | + if (canonical.length > limit) throw new Error("Curated build exceeds available ability slots"); |
| 572 | - preferenceIndex(left.name, companion.defaultArts) | 575 | + const selected = new Set<string>(); |
| 573 | - - preferenceIndex(right.name, companion.defaultArts) | 576 | + const choices: Array<CuratedChoice | undefined> = new Array(canonical.length); |
| 574 | - || preferenceIndex(left.name, strategy.preferredArts) | 577 | + const unavailable: { name: string; rank: number; replacement?: string }[] = []; |
| 575 | - - preferenceIndex(right.name, strategy.preferredArts) | 578 | + let spent = 0; |
| 576 | - || compareText(left.name, right.name) | 579 | + const trySelect = (name: string, replaces?: string): CuratedChoice | undefined => { |
| 577 | - || left.rank - right.rank); | 580 | + const fact = facts.find((entry) => entry.name === name); |
| 578 | - const toSelection = (art: (typeof companion.arts)[number], index: number): ArtSelection => { | 581 | + if (!fact) throw new Error(`Curated ability ${name} is absent from companion unlocks`); |
| 579 | - const defaultAt = preferenceIndex(art.name, companion.defaultArts); | 582 | + if (fact.rank > rank || selected.has(name)) return undefined; |
| 580 | - const preferredAt = preferenceIndex(art.name, strategy.preferredArts); | 583 | + const cost = costOf(name); |
| 581 | - return { | 584 | + if (spent + cost > 2) return undefined; |
| 582 | - name: art.name, | 585 | + spent += cost; |
| 583 | - unlockRank: art.rank, | 586 | + selected.add(name); |
| 584 | - recommendedLevel: recommendedUpgradeLevel(index, level), | 587 | + return { name, rank: fact.rank, replaces }; |
| 585 | - source: { | ||
| 586 | - kind: "companion", | ||
| 587 | - id: companion.name, | ||
| 588 | - url: firstSourceUrl(companion.source), | ||
| 589 | - citation: companion.source, | ||
| 590 | - }, | ||
| 591 | - reason: defaultAt < companion.defaultArts.length | ||
| 592 | - ? translated(lang, `Canonical default Art #${defaultAt + 1}`, `Art par défaut canonique n°${defaultAt + 1}`) | ||
| 593 | - : preferredAt < strategy.preferredArts.length | ||
| 594 | - ? translated(lang, `Strategy preference #${preferredAt + 1}`, `Préférence stratégique n°${preferredAt + 1}`) | ||
| 595 | - : translated(lang, `Unlocked at personal rank ${art.rank}`, `Débloqué au rang personnel ${art.rank}`), | ||
| 596 | - }; | ||
| 597 | }; | 588 | }; |
| 598 | - const { selected, trimmedTpArts } = applyTpArtBudget(ranked, (art) => art.name); | 589 | + |
| 599 | - return { | 590 | + for (let index = 0; index < canonical.length; index += 1) { |
| 600 | - arts: selected.map(toSelection), | 591 | + choices[index] = trySelect(canonical[index]); |
| 601 | - potentialArts: ranked.slice(0, 8).map(toSelection), | 592 | + } |
| 602 | - trimmedTpArts, | 593 | + let substituteIndex = 0; |
| 594 | + const nextSubstitute = (replaces?: string): CuratedChoice | undefined => { | ||
| 595 | + while (substituteIndex < substitutes.length) { | ||
| 596 | + const choice = trySelect(substitutes[substituteIndex], replaces); | ||
| 597 | + substituteIndex += 1; | ||
| 598 | + if (choice) return choice; | ||
| 599 | + } | ||
| 600 | + return undefined; | ||
| 603 | }; | 601 | }; |
| 602 | + for (let index = 0; index < choices.length; index += 1) { | ||
| 603 | + if (choices[index]) continue; | ||
| 604 | + const name = canonical[index]; | ||
| 605 | + const fact = facts.find((entry) => entry.name === name); | ||
| 606 | + if (!fact) throw new Error(`Curated ability ${name} is absent from companion unlocks`); | ||
| 607 | + const replacement = nextSubstitute(name); | ||
| 608 | + choices[index] = replacement; | ||
| 609 | + unavailable.push({ name, rank: fact.rank, replacement: replacement?.name }); | ||
| 610 | + } | ||
| 611 | + const result = choices.filter((choice): choice is CuratedChoice => choice !== undefined); | ||
| 612 | + while (result.length < limit) { | ||
| 613 | + const filler = nextSubstitute(); | ||
| 614 | + if (!filler) break; | ||
| 615 | + result.push(filler); | ||
| 616 | + } | ||
| 617 | + return { choices: result, unavailable }; | ||
| 604 | } | 618 | } |
| 605 | 619 | ||
| 606 | -function selectCompanionSkills( | 620 | +const companionArtEffects = new Map( |
| 621 | + (artEffectsData.arts as { name: string; weapon: string; url: string; effects: { tp: boolean } }[]) | ||
| 622 | + .map((art) => [art.name, art]), | ||
| 623 | +); | ||
| 624 | + | ||
| 625 | +function companionArtCost(name: string, companion: (typeof companions)[number]): number { | ||
| 626 | + const art = companionArtEffects.get(name); | ||
| 627 | + if (!art) throw new Error(`Missing verified Art facts for ${name}`); | ||
| 628 | + if (art.weapon !== companion.ranged && art.weapon !== companion.melee) { | ||
| 629 | + throw new Error(`${companion.name} cannot equip ${name} (${art.weapon})`); | ||
| 630 | + } | ||
| 631 | + return art.effects.tp ? 1 : 0; | ||
| 632 | +} | ||
| 633 | + | ||
| 634 | +function companionProgressionReasons( | ||
| 635 | + lang: Lang, | ||
| 636 | + unavailable: readonly { name: string; rank: number; replacement?: string }[], | ||
| 637 | + personalRank: number, | ||
| 638 | +): string[] { | ||
| 639 | + return unavailable.map(({ name, rank, replacement }) => translated( | ||
| 640 | + lang, | ||
| 641 | + `${name} ${rank > personalRank ? `unlocks at personal rank ${rank}` : "exceeds the two-TP Art limit"}; ${replacement ? `${replacement} equipped instead` : "no legal progression substitute available"}`, | ||
| 642 | + `${name} ${rank > personalRank ? `se débloque au rang personnel ${rank}` : "dépasse la limite de deux Arts à PT"} ; ${replacement ? `${replacement} équipé à la place` : "aucun substitut de progression légal disponible"}`, | ||
| 643 | + )); | ||
| 644 | +} | ||
| 645 | + | ||
| 646 | +function selectCompanionArts( | ||
| 607 | companion: (typeof companions)[number], | 647 | companion: (typeof companions)[number], |
| 648 | + build: CuratedCompanionBuild, | ||
| 608 | personalRank: number, | 649 | personalRank: number, |
| 609 | lang: Lang, | 650 | lang: Lang, |
| 610 | level: number, | 651 | level: number, |
| 611 | -): SkillSelection[] { | 652 | +): { arts: ArtSelection[]; reasons: string[] } { |
| 612 | - const preferences = buildStrategies[companion.strategy].preferredSkills; | 653 | + const { choices, unavailable } = selectCuratedChoices( |
| 613 | - return companion.skills | 654 | + build.arts, build.artSubstitutes, companion.arts, personalRank, 8, |
| 614 | - .filter((skill) => skill.rank <= personalRank) | 655 | + (name) => companionArtCost(name, companion), |
| 615 | - .slice() | 656 | + ); |
| 616 | - .sort((left, right) => | 657 | + return { |
| 617 | - preferenceIndex(left.name, preferences) - preferenceIndex(right.name, preferences) | 658 | + arts: choices.map(({ name, rank, replaces }, index): ArtSelection => { |
| 618 | - || compareText(left.name, right.name) | 659 | + const effect = companionArtEffects.get(name)!; |
| 619 | - || left.rank - right.rank) | ||
| 620 | - .slice(0, companion.skillSlots) | ||
| 621 | - .map((skill, index) => { | ||
| 622 | - const preferredAt = preferenceIndex(skill.name, preferences); | ||
| 623 | return { | 660 | return { |
| 624 | - name: skill.name, | 661 | + name, |
| 625 | - unlockRank: skill.rank, | 662 | + weapon: effect.weapon, |
| 663 | + unlockRank: rank, | ||
| 626 | recommendedLevel: recommendedUpgradeLevel(index, level), | 664 | recommendedLevel: recommendedUpgradeLevel(index, level), |
| 627 | source: { | 665 | source: { |
| 628 | kind: "companion", | 666 | kind: "companion", |
| 629 | id: companion.name, | 667 | id: companion.name, |
| 630 | - url: firstSourceUrl(companion.source), | 668 | + url: effect.url, |
| 631 | citation: companion.source, | 669 | citation: companion.source, |
| 632 | }, | 670 | }, |
| 633 | - reason: preferredAt < preferences.length | 671 | + reason: replaces |
| 634 | - ? translated(lang, `Strategy preference #${preferredAt + 1}`, `Préférence stratégique n°${preferredAt + 1}`) | 672 | + ? translated(lang, `Progression substitute for ${replaces}`, `Substitut de progression pour ${replaces}`) |
| 635 | - : translated(lang, `Unlocked at personal rank ${skill.rank}`, `Débloqué au rang personnel ${skill.rank}`), | 673 | + : translated(lang, "Character-specific curated Art", "Art choisi pour ce personnage"), |
| 636 | }; | 674 | }; |
| 637 | - }); | 675 | + }), |
| 676 | + reasons: companionProgressionReasons(lang, unavailable, personalRank), | ||
| 677 | + }; | ||
| 678 | +} | ||
| 679 | + | ||
| 680 | +function selectCompanionSkills( | ||
| 681 | + companion: (typeof companions)[number], | ||
| 682 | + build: CuratedCompanionBuild, | ||
| 683 | + personalRank: number, | ||
| 684 | + lang: Lang, | ||
| 685 | + level: number, | ||
| 686 | +): { skills: SkillSelection[]; reasons: string[] } { | ||
| 687 | + const { choices, unavailable } = selectCuratedChoices( | ||
| 688 | + build.skills, build.skillSubstitutes, companion.skills, personalRank, | ||
| 689 | + companion.skillSlots, () => 0, | ||
| 690 | + ); | ||
| 691 | + return { | ||
| 692 | + skills: choices.map(({ name, rank, replaces }, index): SkillSelection => ({ | ||
| 693 | + name, | ||
| 694 | + unlockRank: rank, | ||
| 695 | + recommendedLevel: recommendedUpgradeLevel(index, level), | ||
| 696 | + source: { | ||
| 697 | + kind: "companion", | ||
| 698 | + id: companion.name, | ||
| 699 | + url: firstSourceUrl(companion.source), | ||
| 700 | + citation: companion.source, | ||
| 701 | + }, | ||
| 702 | + reason: replaces | ||
| 703 | + ? translated(lang, `Progression substitute for ${replaces}`, `Substitut de progression pour ${replaces}`) | ||
| 704 | + : translated(lang, "Character-specific curated Skill", "Skill choisi pour ce personnage"), | ||
| 705 | + })), | ||
| 706 | + reasons: companionProgressionReasons(lang, unavailable, personalRank), | ||
| 707 | + }; | ||
| 638 | } | 708 | } |
| 639 | 709 | ||
| 640 | /** Plans only the named companion's canonical personal kit. */ | 710 | /** Plans only the named companion's canonical personal kit. */ |
| @@ -652,8 +722,14 @@ export function planCompanion( | |||
| 652 | clampRank(personalClassRank, companion.maxRank), | 722 | clampRank(personalClassRank, companion.maxRank), |
| 653 | ); | 723 | ); |
| 654 | const level = clampLevel(effectiveLevel); | 724 | const level = clampLevel(effectiveLevel); |
| 655 | - const { arts, potentialArts, trimmedTpArts } = selectCompanionArts(companion, personalRank, lang, level); | 725 | + const curatedBuild = companionBuilds[companion.name]; |
| 656 | - const skills = selectCompanionSkills(companion, personalRank, lang, level); | 726 | + if (!curatedBuild) throw new Error(`Missing curated build for ${companion.name}`); |
| 727 | + const { arts, reasons: artReasons } = selectCompanionArts( | ||
| 728 | + companion, curatedBuild, personalRank, lang, level, | ||
| 729 | + ); | ||
| 730 | + const { skills, reasons: skillReasons } = selectCompanionSkills( | ||
| 731 | + companion, curatedBuild, personalRank, lang, level, | ||
| 732 | + ); | ||
| 657 | return { | 733 | return { |
| 658 | name: companion.name, | 734 | name: companion.name, |
| 659 | className: companion.className, | 735 | className: companion.className, |
| @@ -663,29 +739,19 @@ export function planCompanion( | |||
| 663 | strategy: companion.strategy, | 739 | strategy: companion.strategy, |
| 664 | capabilities: { ...companion.capabilities }, | 740 | capabilities: { ...companion.capabilities }, |
| 665 | arts, | 741 | arts, |
| 666 | - potentialArts, | ||
| 667 | skills, | 742 | skills, |
| 743 | + curatedBuild, | ||
| 668 | skillSlots: companion.skillSlots, | 744 | skillSlots: companion.skillSlots, |
| 669 | - note: buildStrategies[companion.strategy].role, | 745 | + note: curatedBuild.role, |
| 670 | source: companion.source, | 746 | source: companion.source, |
| 671 | planReasons: [ | 747 | planReasons: [ |
| 672 | translated( | 748 | translated( |
| 673 | lang, | 749 | lang, |
| 674 | - `Personal rank ${personalRank}: ${arts.length} learned Arts and ${skills.length}/${companion.skillSlots} Skills`, | 750 | + `Personal rank ${personalRank}: ${arts.length} equipped Arts and ${skills.length}/${companion.skillSlots} Skills (max 2 TP Arts)`, |
| 675 | - `Rang personnel ${personalRank} : ${arts.length} Arts appris et ${skills.length}/${companion.skillSlots} Skills`, | 751 | + `Rang personnel ${personalRank} : ${arts.length} Arts équipés et ${skills.length}/${companion.skillSlots} Skills (max 2 Arts à PT)`, |
| 676 | - ), | ||
| 677 | - ...(trimmedTpArts > 0 | ||
| 678 | - ? [translated( | ||
| 679 | - lang, | ||
| 680 | - `${trimmedTpArts} TP-cost Arts set aside to preserve the TP economy (max ${TP_ART_BUDGET} per build)`, | ||
| 681 | - `${trimmedTpArts} Arts à PT écartés pour préserver l'économie de PT (max ${TP_ART_BUDGET} par build)`, | ||
| 682 | - )] | ||
| 683 | - : []), | ||
| 684 | - translated( | ||
| 685 | - lang, | ||
| 686 | - "Canonical default Arts precede strategy preferences", | ||
| 687 | - "Les Arts par défaut canoniques priment sur les préférences stratégiques", | ||
| 688 | ), | 752 | ), |
| 753 | + ...artReasons, | ||
| 754 | + ...skillReasons, | ||
| 689 | ], | 755 | ], |
| 690 | }; | 756 | }; |
| 691 | } | 757 | } |
| @@ -910,6 +976,7 @@ export function buildRoster( | |||
| 910 | strategy: companion.strategy, | 976 | strategy: companion.strategy, |
| 911 | dominantAttribute: buildStrategies[companion.strategy].dominantAttribute, | 977 | dominantAttribute: buildStrategies[companion.strategy].dominantAttribute, |
| 912 | note: companion.note, | 978 | note: companion.note, |
| 979 | + curatedBuild: companion.curatedBuild, | ||
| 913 | planReasons: companion.planReasons, | 980 | planReasons: companion.planReasons, |
| 914 | source: companion.source, | 981 | source: companion.source, |
| 915 | }); | 982 | }); |
added
src/lib/fixedCompanionBuilds.test.ts +557 -0 | new file mode 100644 | ||
| @@ -0,0 +1,557 @@ | ||
| 1 | +import assert from "node:assert/strict"; | |
| 2 | +import test from "node:test"; | |
| 3 | +import artEffectsData from "@/research/art-effects.json"; | |
| 4 | +import { companionByName, companions } from "@/src/data/companions"; | |
| 5 | +import { recommendContextualTeams } from "@/src/lib/contextualEngine"; | |
| 6 | +import { | |
| 7 | + classRanksForActiveClass, | |
| 8 | + editClassRank, | |
| 9 | + planCompanion, | |
| 10 | +} from "@/src/lib/engine"; | |
| 11 | +import type { | |
| 12 | + CompanionPlan, | |
| 13 | + ContextualRecommendationRequest, | |
| 14 | + ContextualTeamRecommendation, | |
| 15 | + CuratedCompanionBuild, | |
| 16 | + RosterMember, | |
| 17 | +} from "@/src/lib/types"; | |
| 18 | + | |
| 19 | +/** | |
| 20 | + * Fixed companion contract: emitted legal kits, progression precedence, | |
| 21 | + * companion-only TP cap and invariance through both public planning paths. | |
| 22 | + */ | |
| 23 | + | |
| 24 | +const tpCostingArtNames: Record<string, true> = {}; | |
| 25 | +/** Verified per-Art weapon from the research fact table (issue #1 requires it on every selection). */ | |
| 26 | +const weaponByArtName: Record<string, string> = {}; | |
| 27 | +for (const art of artEffectsData.arts as { | |
| 28 | + name: string; | |
| 29 | + weapon: string; | |
| 30 | + effects: { tp: boolean }; | |
| 31 | +}[]) { | |
| 32 | + if (art.effects.tp) tpCostingArtNames[art.name] = true; | |
| 33 | + weaponByArtName[art.name] = art.weapon; | |
| 34 | +} | |
| 35 | + | |
| 36 | +type CompanionFact = (typeof companions)[number]; | |
| 37 | +type Kit = { arts: string[]; skills: string[] }; | |
| 38 | + | |
| 39 | +function kitOf(member: Pick<RosterMember, "arts" | "skills">): Kit { | |
| 40 | + return { | |
| 41 | + arts: member.arts.map((art) => art.name), | |
| 42 | + skills: member.skills.map((skill) => skill.name), | |
| 43 | + }; | |
| 44 | +} | |
| 45 | + | |
| 46 | +/** Every rank at or around an unlock boundary, plus out-of-range clamps. */ | |
| 47 | +function rankSamples(companion: CompanionFact): number[] { | |
| 48 | + const ranks = new Set<number>([0, companion.startRank, companion.maxRank, 99]); | |
| 49 | + for (const art of companion.arts) { | |
| 50 | + ranks.add(art.rank); | |
| 51 | + ranks.add(Math.max(0, art.rank - 1)); | |
| 52 | + } | |
| 53 | + for (const skill of companion.skills) { | |
| 54 | + ranks.add(skill.rank); | |
| 55 | + ranks.add(Math.max(0, skill.rank - 1)); | |
| 56 | + } | |
| 57 | + return [...ranks].sort((left, right) => left - right); | |
| 58 | +} | |
| 59 | + | |
| 60 | +function expectedPersonalRank(companion: CompanionFact, requested: number): number { | |
| 61 | + if (!Number.isFinite(requested)) return companion.startRank; | |
| 62 | + return Math.max( | |
| 63 | + companion.startRank, | |
| 64 | + Math.min(companion.maxRank, Math.trunc(requested)), | |
| 65 | + ); | |
| 66 | +} | |
| 67 | + | |
| 68 | +function assertLegalKit( | |
| 69 | + plan: CompanionPlan, | |
| 70 | + companion: CompanionFact, | |
| 71 | + context: string, | |
| 72 | +): void { | |
| 73 | + assert.equal(plan.name, companion.name, `${context}: wrong companion`); | |
| 74 | + const artNames = plan.arts.map((art) => art.name); | |
| 75 | + const skillNames = plan.skills.map((skill) => skill.name); | |
| 76 | + assert.equal( | |
| 77 | + new Set(artNames).size, | |
| 78 | + artNames.length, | |
| 79 | + `${context}: duplicate Arts (${artNames.join(", ")})`, | |
| 80 | + ); | |
| 81 | + assert.equal( | |
| 82 | + new Set(skillNames).size, | |
| 83 | + skillNames.length, | |
| 84 | + `${context}: duplicate Skills (${skillNames.join(", ")})`, | |
| 85 | + ); | |
| 86 | + assert.ok(artNames.length >= 1, `${context}: expected at least one Art`); | |
| 87 | + assert.ok( | |
| 88 | + artNames.length <= 8, | |
| 89 | + `${context}: ${artNames.length} Arts exceeds the eight-slot limit`, | |
| 90 | + ); | |
| 91 | + assert.ok( | |
| 92 | + skillNames.length <= plan.skillSlots, | |
| 93 | + `${context}: ${skillNames.length} Skills exceeds the ${plan.skillSlots}-slot limit`, | |
| 94 | + ); | |
| 95 | + assert.equal( | |
| 96 | + plan.skillSlots, | |
| 97 | + companion.skillSlots, | |
| 98 | + `${context}: wrong Skill slot count`, | |
| 99 | + ); | |
| 100 | + for (const art of plan.arts) { | |
| 101 | + const fact = companion.arts.find((entry) => entry.name === art.name); | |
| 102 | + assert.ok(fact, `${context}: Art "${art.name}" is not in ${companion.name}'s kit`); | |
| 103 | + assert.equal( | |
| 104 | + art.unlockRank, | |
| 105 | + fact.rank, | |
| 106 | + `${context}: Art "${art.name}" reports wrong unlock rank`, | |
| 107 | + ); | |
| 108 | + assert.ok( | |
| 109 | + fact.rank <= plan.personalRank, | |
| 110 | + `${context}: Art "${art.name}" unlocks at rank ${fact.rank}, above personal rank ${plan.personalRank}`, | |
| 111 | + ); | |
| 112 | + assert.ok( | |
| 113 | + art.recommendedLevel >= 1 && art.recommendedLevel <= 5, | |
| 114 | + `${context}: Art "${art.name}" recommends upgrade level ${art.recommendedLevel} outside 1..5`, | |
| 115 | + ); | |
| 116 | + assert.ok( | |
| 117 | + weaponByArtName[art.name] !== undefined, | |
| 118 | + `${context}: Art "${art.name}" has no weapon record in the research fact table`, | |
| 119 | + ); | |
| 120 | + assert.ok( | |
| 121 | + art.weapon === weaponByArtName[art.name], | |
| 122 | + `${context}: Art "${art.name}" claims weapon "${art.weapon}" but the research fact table verifies "${weaponByArtName[art.name]}"`, | |
| 123 | + ); | |
| 124 | + assert.ok( | |
| 125 | + art.weapon === companion.ranged || art.weapon === companion.melee, | |
| 126 | + `${context}: Art "${art.name}" claims weapon "${art.weapon}" outside ${companion.name}'s ${companion.ranged}/${companion.melee}`, | |
| 127 | + ); | |
| 128 | + } | |
| 129 | + for (const skill of plan.skills) { | |
| 130 | + const fact = companion.skills.find((entry) => entry.name === skill.name); | |
| 131 | + assert.ok(fact, `${context}: Skill "${skill.name}" is not in ${companion.name}'s kit`); | |
| 132 | + assert.equal( | |
| 133 | + skill.unlockRank, | |
| 134 | + fact.rank, | |
| 135 | + `${context}: Skill "${skill.name}" reports wrong unlock rank`, | |
| 136 | + ); | |
| 137 | + assert.ok( | |
| 138 | + fact.rank <= plan.personalRank, | |
| 139 | + `${context}: Skill "${skill.name}" unlocks at rank ${fact.rank}, above personal rank ${plan.personalRank}`, | |
| 140 | + ); | |
| 141 | + assert.ok( | |
| 142 | + skill.recommendedLevel >= 1 && skill.recommendedLevel <= 5, | |
| 143 | + `${context}: Skill "${skill.name}" recommends upgrade level ${skill.recommendedLevel} outside 1..5`, | |
| 144 | + ); | |
| 145 | + } | |
| 146 | +} | |
| 147 | + | |
| 148 | +function requestFor( | |
| 149 | + overrides: Partial<ContextualRecommendationRequest> = {}, | |
| 150 | +): ContextualRecommendationRequest { | |
| 151 | + return { | |
| 152 | + slots: ["Doug", "", ""], | |
| 153 | + activeClassId: "duelist", | |
| 154 | + avatarLevel: 30, | |
| 155 | + classRanks: editClassRank(classRanksForActiveClass("duelist", {}), "duelist", 10), | |
| 156 | + personalRanks: [20, 20, 20], | |
| 157 | + combatMode: "general", | |
| 158 | + hasSkellLicense: false, | |
| 159 | + postgameFrames: false, | |
| 160 | + assumeSpecialUnlocks: false, | |
| 161 | + lang: "en", | |
| 162 | + ...overrides, | |
| 163 | + }; | |
| 164 | +} | |
| 165 | + | |
| 166 | +function recommendationsOrThrow( | |
| 167 | + request: ContextualRecommendationRequest, | |
| 168 | + context: string, | |
| 169 | +): readonly ContextualTeamRecommendation[] { | |
| 170 | + const result = recommendContextualTeams(request); | |
| 171 | + assert.equal(result.kind, "success", `${context}: recommendations became infeasible`); | |
| 172 | + if (result.kind !== "success") return []; | |
| 173 | + return result.recommendations; | |
| 174 | +} | |
| 175 | + | |
| 176 | +function kitsByCompanion( | |
| 177 | + request: ContextualRecommendationRequest, | |
| 178 | + context: string, | |
| 179 | +): Map<string, Kit> { | |
| 180 | + const kits = new Map<string, Kit>(); | |
| 181 | + for (const recommendation of recommendationsOrThrow(request, context)) { | |
| 182 | + for (const member of recommendation.roster) { | |
| 183 | + if (member.kind !== "companion") continue; | |
| 184 | + const kit = kitOf(member); | |
| 185 | + const seen = kits.get(member.name); | |
| 186 | + assert.deepEqual( | |
| 187 | + seen ?? kit, | |
| 188 | + kit, | |
| 189 | + `${context}: ${member.name} received different kits across variants/placements`, | |
| 190 | + ); | |
| 191 | + kits.set(member.name, kit); | |
| 192 | + } | |
| 193 | + } | |
| 194 | + return kits; | |
| 195 | +} | |
| 196 | + | |
| 197 | +test("the companion roster covers the 22 non-Cross characters exactly once", () => { | |
| 198 | + const names = companions.map((companion) => companion.name); | |
| 199 | + assert.equal(companions.length, 22, "the roster must cover all 22 non-Cross characters"); | |
| 200 | + assert.equal(new Set(names).size, 22, "companion names must be unique"); | |
| 201 | + assert.ok(!names.includes("Cross"), "Cross must not be part of the companion roster"); | |
| 202 | + for (const name of names) { | |
| 203 | + assert.ok(companionByName.get(name), `companionByName must index ${name}`); | |
| 204 | + } | |
| 205 | +}); | |
| 206 | + | |
| 207 | +test("every companion plan selects only legal, unlocked, unique Arts and Skills", () => { | |
| 208 | + for (const companion of companions) { | |
| 209 | + for (const level of [1, 30, 60, 99]) { | |
| 210 | + for (const requestedRank of rankSamples(companion)) { | |
| 211 | + const context = `${companion.name} level ${level} requested rank ${requestedRank}`; | |
| 212 | + const plan = planCompanion(companion.name, level, requestedRank); | |
| 213 | + assert.equal( | |
| 214 | + plan.personalRank, | |
| 215 | + expectedPersonalRank(companion, requestedRank), | |
| 216 | + `${context}: personal rank is not clamped to the companion's own progression`, | |
| 217 | + ); | |
| 218 | + assertLegalKit(plan, companion, context); | |
| 219 | + } | |
| 220 | + } | |
| 221 | + } | |
| 222 | +}); | |
| 223 | + | |
| 224 | +test("companion loadouts keep at most two TP-consuming Arts", () => { | |
| 225 | + for (const companion of companions) { | |
| 226 | + for (const requestedRank of [companion.startRank, 10, companion.maxRank, 99]) { | |
| 227 | + const plan = planCompanion(companion.name, 30, requestedRank); | |
| 228 | + const tpArts = plan.arts.filter((art) => tpCostingArtNames[art.name]); | |
| 229 | + assert.ok( | |
| 230 | + tpArts.length <= 2, | |
| 231 | + `${companion.name} at personal rank ${plan.personalRank} carries ${tpArts.length} TP-costing Arts (strict max 2): ${tpArts.map((art) => art.name).join(", ")}`, | |
| 232 | + ); | |
| 233 | + } | |
| 234 | + } | |
| 235 | +}); | |
| 236 | + | |
| 237 | +test("Celica fills unlocked progression slots with useful non-TP Arts", () => { | |
| 238 | + const rankSix = planCompanion("Celica", 30, 6).arts.map((art) => art.name); | |
| 239 | + const rankTen = planCompanion("Celica", 30, 10).arts.map((art) => art.name); | |
| 240 | + assert.ok(rankSix.includes("Violent Streak")); | |
| 241 | + assert.equal(rankSix.length, 7); | |
| 242 | + assert.ok(rankTen.includes("Violent Streak")); | |
| 243 | + assert.equal(rankTen.length, 8); | |
| 244 | +}); | |
| 245 | + | |
| 246 | +test("Al includes his unlocked physical-resistance Art in the early bar", () => { | |
| 247 | + const arts = planCompanion("Al", 50, 3).arts.map((art) => art.name); | |
| 248 | + assert.equal(arts.length, 4); | |
| 249 | + assert.ok(arts.includes("Magnum Edge")); | |
| 250 | +}); | |
| 251 | + | |
| 252 | +test("Skell mode keeps the canonical ground Skills instead of substituting them", () => { | |
| 253 | + const ground = kitsByCompanion( | |
| 254 | + requestFor({ combatMode: "general" }), | |
| 255 | + "general mode", | |
| 256 | + ); | |
| 257 | + const skell = kitsByCompanion(requestFor({ combatMode: "skell" }), "skell mode"); | |
| 258 | + assert.ok(ground.has("Doug"), "Doug must appear in the general-mode roster"); | |
| 259 | + assert.ok(skell.has("Doug"), "Doug must appear in the skell-mode roster"); | |
| 260 | + for (const [name, kit] of ground) { | |
| 261 | + const skellKit = skell.get(name); | |
| 262 | + // Team composition may legitimately differ across modes; kits may not. | |
| 263 | + if (!skellKit) continue; | |
| 264 | + assert.deepEqual( | |
| 265 | + skellKit.skills, | |
| 266 | + kit.skills, | |
| 267 | + `${name}: Skell mode must not substitute canonical ground Skills`, | |
| 268 | + ); | |
| 269 | + assert.deepEqual( | |
| 270 | + skellKit.arts, | |
| 271 | + kit.arts, | |
| 272 | + `${name}: Skell mode must not change the Arts loadout`, | |
| 273 | + ); | |
| 274 | + const companion = companionByName.get(name); | |
| 275 | + assert.ok(companion, `unknown roster companion ${name}`); | |
| 276 | + for (const skillName of skellKit.skills) { | |
| 277 | + const fact = companion.skills.find((entry) => entry.name === skillName); | |
| 278 | + assert.ok( | |
| 279 | + fact && fact.rank <= 20, | |
| 280 | + `${name}: Skill "${skillName}" equipped in Skell mode is illegal at personal rank 20`, | |
| 281 | + ); | |
| 282 | + } | |
| 283 | + } | |
| 284 | +}); | |
| 285 | + | |
| 286 | +test("companion kits stay fixed across Cross classes, ranks, weapons, teammates and placements", () => { | |
| 287 | + const configurations: ContextualRecommendationRequest[] = [ | |
| 288 | + requestFor(), | |
| 289 | + requestFor({ | |
| 290 | + activeClassId: "galactic-knight", | |
| 291 | + classRanks: editClassRank( | |
| 292 | + classRanksForActiveClass("galactic-knight", {}), | |
| 293 | + "galactic-knight", | |
| 294 | + 10, | |
| 295 | + ), | |
| 296 | + }), | |
| 297 | + requestFor({ | |
| 298 | + classRanks: editClassRank(classRanksForActiveClass("duelist", {}), "duelist", 5), | |
| 299 | + }), | |
| 300 | + requestFor({ | |
| 301 | + activeClassId: "galactic-knight", | |
| 302 | + // Tier-4 mastery on BOTH branches: galactic-knight active (beam Arts) | |
| 303 | + // plus full-metal-jaguar rank 10 so the Photon Saber override is legal. | |
| 304 | + classRanks: editClassRank( | |
| 305 | + editClassRank( | |
| 306 | + classRanksForActiveClass("galactic-knight", {}), | |
| 307 | + "galactic-knight", | |
| 308 | + 10, | |
| 309 | + ), | |
| 310 | + "full-metal-jaguar", | |
| 311 | + 10, | |
| 312 | + ), | |
| 313 | + avatarLevel: 60, | |
| 314 | + weaponOverrides: { ranged: "Dual Guns", melee: "Photon Saber" }, | |
| 315 | + }), | |
| 316 | + requestFor({ avatarLevel: 50 }), | |
| 317 | + requestFor({ slots: ["", "Doug", ""] }), | |
| 318 | + requestFor({ slots: ["", "", "Doug"] }), | |
| 319 | + requestFor({ slots: ["", "", ""] }), | |
| 320 | + ]; | |
| 321 | + const kits = new Map<string, Kit>(); | |
| 322 | + for (const [index, request] of configurations.entries()) { | |
| 323 | + for (const [name, kit] of kitsByCompanion(request, `configuration #${index + 1}`)) { | |
| 324 | + const seen = kits.get(name); | |
| 325 | + assert.deepEqual( | |
| 326 | + seen ?? kit, | |
| 327 | + kit, | |
| 328 | + `${name}: kit changed when the Cross configuration, teammates or placement changed`, | |
| 329 | + ); | |
| 330 | + kits.set(name, kit); | |
| 331 | + } | |
| 332 | + } | |
| 333 | + assert.ok(kits.has("Doug"), "Doug must appear in at least one roster"); | |
| 334 | + for (const [name, kit] of kits) { | |
| 335 | + const direct = planCompanion(name, 30, 20); | |
| 336 | + assert.deepEqual( | |
| 337 | + kit.arts, | |
| 338 | + direct.arts.map((art) => art.name), | |
| 339 | + `${name}: roster Arts must match the direct companion planner`, | |
| 340 | + ); | |
| 341 | + assert.deepEqual( | |
| 342 | + kit.skills, | |
| 343 | + direct.skills.map((skill) => skill.name), | |
| 344 | + `${name}: roster Skills must match the direct companion planner`, | |
| 345 | + ); | |
| 346 | + } | |
| 347 | +}); | |
| 348 | + | |
| 349 | +test("companion planning is deterministic and clamps out-of-range ranks", () => { | |
| 350 | + for (const companion of companions) { | |
| 351 | + const canonical = planCompanion(companion.name, 30, companion.maxRank); | |
| 352 | + assert.deepEqual( | |
| 353 | + planCompanion(companion.name, 30, companion.maxRank), | |
| 354 | + canonical, | |
| 355 | + `${companion.name}: repeated planning at equal progression differs`, | |
| 356 | + ); | |
| 357 | + const above = planCompanion(companion.name, 30, 99); | |
| 358 | + assert.equal(above.personalRank, companion.maxRank); | |
| 359 | + assert.deepEqual( | |
| 360 | + above.arts.map((art) => art.name), | |
| 361 | + canonical.arts.map((art) => art.name), | |
| 362 | + `${companion.name}: ranks above maxRank must not change the Arts`, | |
| 363 | + ); | |
| 364 | + const below = planCompanion(companion.name, 30, 0); | |
| 365 | + assert.equal(below.personalRank, companion.startRank); | |
| 366 | + assert.deepEqual( | |
| 367 | + below.arts.map((art) => art.name), | |
| 368 | + planCompanion(companion.name, 30, companion.startRank).arts.map((art) => art.name), | |
| 369 | + `${companion.name}: ranks below startRank must not change the Arts`, | |
| 370 | + ); | |
| 371 | + } | |
| 372 | +}); | |
| 373 | + | |
| 374 | +test("language only changes presentation, never the loadout", () => { | |
| 375 | + for (const companion of companions) { | |
| 376 | + const english = planCompanion(companion.name, 30, companion.maxRank, "en"); | |
| 377 | + const french = planCompanion(companion.name, 30, companion.maxRank, "fr"); | |
| 378 | + assert.deepEqual( | |
| 379 | + french.arts.map((art) => art.name), | |
| 380 | + english.arts.map((art) => art.name), | |
| 381 | + `${companion.name}: Arts changed between languages`, | |
| 382 | + ); | |
| 383 | + assert.deepEqual( | |
| 384 | + french.skills.map((skill) => skill.name), | |
| 385 | + english.skills.map((skill) => skill.name), | |
| 386 | + `${companion.name}: Skills changed between languages`, | |
| 387 | + ); | |
| 388 | + } | |
| 389 | +}); | |
| 390 | + | |
| 391 | +test("every companion exposes a curated fixed build with sourced equipment advice", () => { | |
| 392 | + for (const companion of companions) { | |
| 393 | + const plan = planCompanion(companion.name, 30, companion.maxRank); | |
| 394 | + const curated: CuratedCompanionBuild = plan.curatedBuild; | |
| 395 | + assert.ok( | |
| 396 | + curated.arts.length >= 1, | |
| 397 | + `${companion.name}: curated build lists no Arts`, | |
| 398 | + ); | |
| 399 | + assert.equal( | |
| 400 | + new Set(curated.arts).size, | |
| 401 | + curated.arts.length, | |
| 402 | + `${companion.name}: curated Arts contain duplicates`, | |
| 403 | + ); | |
| 404 | + assert.equal( | |
| 405 | + new Set(curated.skills).size, | |
| 406 | + curated.skills.length, | |
| 407 | + `${companion.name}: curated Skills contain duplicates`, | |
| 408 | + ); | |
| 409 | + const curatedTpArts = curated.arts.filter( | |
| 410 | + (art) => tpCostingArtNames[art], | |
| 411 | + ); | |
| 412 | + assert.ok( | |
| 413 | + curatedTpArts.length <= 2, | |
| 414 | + `${companion.name}: curated build lists ${curatedTpArts.length} TP-costing Arts (max 2): ${curatedTpArts.join(", ")}`, | |
| 415 | + ); | |
| 416 | + const artUniverse = new Set([...curated.arts, ...curated.artSubstitutes]); | |
| 417 | + for (const art of plan.arts) { | |
| 418 | + assert.ok( | |
| 419 | + artUniverse.has(art.name), | |
| 420 | + `${companion.name}: equipped Art "${art.name}" is outside the curated build and its substitutes`, | |
| 421 | + ); | |
| 422 | + } | |
| 423 | + const skillUniverse = new Set([ | |
| 424 | + ...curated.skills, | |
| 425 | + ...curated.skillSubstitutes, | |
| 426 | + ]); | |
| 427 | + for (const skill of plan.skills) { | |
| 428 | + assert.ok( | |
| 429 | + skillUniverse.has(skill.name), | |
| 430 | + `${companion.name}: equipped Skill "${skill.name}" is outside the curated build and its substitutes`, | |
| 431 | + ); | |
| 432 | + } | |
| 433 | + for (const key of ["role", "rationale"] as const) { | |
| 434 | + const text = curated[key]; | |
| 435 | + assert.ok( | |
| 436 | + text.length === 2 && text.every((part) => part.length > 0), | |
| 437 | + `${companion.name}: curated ${key} must be present in English and French`, | |
| 438 | + ); | |
| 439 | + } | |
| 440 | + for (const key of ["weapons", "armor", "availability"] as const) { | |
| 441 | + const text = curated.equipment[key]; | |
| 442 | + assert.ok( | |
| 443 | + text.length === 2 && text.every((part) => part.length > 0), | |
| 444 | + `${companion.name}: curated equipment ${key} must be present in English and French`, | |
| 445 | + ); | |
| 446 | + } | |
| 447 | + assert.ok( | |
| 448 | + curated.sources.length >= 1, | |
| 449 | + `${companion.name}: curated build cites no sources`, | |
| 450 | + ); | |
| 451 | + for (const source of curated.sources) { | |
| 452 | + assert.ok( | |
| 453 | + /^https?:\/\//.test(source.url), | |
| 454 | + `${companion.name}: source "${source.label}" has no URL`, | |
| 455 | + ); | |
| 456 | + assert.ok( | |
| 457 | + source.edition === "DE" || source.edition === "XCX" || source.edition === "both", | |
| 458 | + `${companion.name}: source "${source.label}" must declare its game edition`, | |
| 459 | + ); | |
| 460 | + } | |
| 461 | + } | |
| 462 | +}); | |
| 463 | + | |
| 464 | +test("companion kits change only when a progression rank unlocks something", () => { | |
| 465 | + for (const companion of companions) { | |
| 466 | + const unlockRanks = new Set<number>([ | |
| 467 | + ...companion.arts.map((art) => art.rank), | |
| 468 | + ...companion.skills.map((skill) => skill.rank), | |
| 469 | + ]); | |
| 470 | + for (let rank = companion.startRank; rank < companion.maxRank; rank += 1) { | |
| 471 | + if (unlockRanks.has(rank + 1)) continue; | |
| 472 | + const before = planCompanion(companion.name, 30, rank); | |
| 473 | + const after = planCompanion(companion.name, 30, rank + 1); | |
| 474 | + assert.deepEqual( | |
| 475 | + after.arts.map((art) => art.name), | |
| 476 | + before.arts.map((art) => art.name), | |
| 477 | + `${companion.name}: Arts changed between ranks ${rank} and ${rank + 1} although nothing unlocks there`, | |
| 478 | + ); | |
| 479 | + assert.deepEqual( | |
| 480 | + after.skills.map((skill) => skill.name), | |
| 481 | + before.skills.map((skill) => skill.name), | |
| 482 | + `${companion.name}: Skills changed between ranks ${rank} and ${rank + 1} although nothing unlocks there`, | |
| 483 | + ); | |
| 484 | + } | |
| 485 | + } | |
| 486 | +}); | |
| 487 | + | |
| 488 | +test("curated canonical Arts take precedence over substitutes once they unlock", () => { | |
| 489 | + let assertedBoundaries = 0; | |
| 490 | + for (const companion of companions) { | |
| 491 | + const plan = planCompanion(companion.name, 30, companion.maxRank); | |
| 492 | + const curated: CuratedCompanionBuild = plan.curatedBuild; | |
| 493 | + /** Canonical Art -> unlock rank, proving every curated canonical is a real fact. */ | |
| 494 | + const unlockRankByCanonical = new Map<string, number>(); | |
| 495 | + for (const name of curated.arts) { | |
| 496 | + const fact = companion.arts.find((art) => art.name === name); | |
| 497 | + assert.ok( | |
| 498 | + fact !== undefined, | |
| 499 | + `${companion.name}: curated canonical Art "${name}" is not an unlockable Art of the character`, | |
| 500 | + ); | |
| 501 | + unlockRankByCanonical.set(name, fact.rank); | |
| 502 | + } | |
| 503 | + // Substitutes stay legal Arts of the character's own weapon families. | |
| 504 | + for (const name of curated.artSubstitutes) { | |
| 505 | + const weapon = weaponByArtName[name]; | |
| 506 | + assert.ok( | |
| 507 | + weapon !== undefined, | |
| 508 | + `${companion.name}: substitute Art "${name}" is missing from the research fact table`, | |
| 509 | + ); | |
| 510 | + assert.ok( | |
| 511 | + weapon === companion.ranged || weapon === companion.melee, | |
| 512 | + `${companion.name}: substitute Art "${name}" needs ${weapon}, outside ${companion.name}'s ${companion.ranged}/${companion.melee}`, | |
| 513 | + ); | |
| 514 | + } | |
| 515 | + for (const [art, rank] of unlockRankByCanonical) { | |
| 516 | + if (rank <= companion.startRank) continue; | |
| 517 | + // With more canonical Arts unlocked than loadout slots, some omission | |
| 518 | + // is unavoidable and no precedence claim is possible for a specific Art. | |
| 519 | + const canonicalsAvailable = [...unlockRankByCanonical.values()].filter( | |
| 520 | + (unlockRank) => unlockRank <= rank, | |
| 521 | + ).length; | |
| 522 | + if (canonicalsAvailable > 8) continue; | |
| 523 | + const after = planCompanion(companion.name, 30, rank).arts.map( | |
| 524 | + (selection) => selection.name, | |
| 525 | + ); | |
| 526 | + const canonicalTpArts = after.filter((name) => { | |
| 527 | + const canonicalRank = unlockRankByCanonical.get(name); | |
| 528 | + return tpCostingArtNames[name] && canonicalRank !== undefined && canonicalRank <= rank; | |
| 529 | + }); | |
| 530 | + // Two canonical TP Arts already reserve the TP budget: the freshly | |
| 531 | + // unlocked TP Art may legitimately stay out in favour of non-TP filler. | |
| 532 | + const tpBudgetReserved = | |
| 533 | + Boolean(tpCostingArtNames[art]) && | |
| 534 | + canonicalTpArts.length >= 2 && | |
| 535 | + !after.includes(art); | |
| 536 | + if (tpBudgetReserved) continue; | |
| 537 | + assert.ok( | |
| 538 | + after.includes(art), | |
| 539 | + `${companion.name}: canonical "${art}" unlocks at rank ${rank} but the plan still serves substitutes`, | |
| 540 | + ); | |
| 541 | + assertedBoundaries += 1; | |
| 542 | + } | |
| 543 | + } | |
| 544 | + assert.ok( | |
| 545 | + assertedBoundaries >= 1, | |
| 546 | + "no companion exercised a canonical unlock boundary; the precedence contract is untested", | |
| 547 | + ); | |
| 548 | +}); | |
| 549 | + | |
| 550 | +test("Phog replaces his first progression filler with Side Slash at rank 5", () => { | |
| 551 | + const before = planCompanion("Phog", 30, 4); | |
| 552 | + const after = planCompanion("Phog", 30, 5); | |
| 553 | + assert.equal(before.arts[3]?.name, "Upper Hand"); | |
| 554 | + assert.equal(after.arts[3]?.name, "Side Slash"); | |
| 555 | + assert.equal(planCompanion("Phog", 30, 10).skills[0]?.name, "Agile Gunslinger"); | |
| 556 | + assert.equal(planCompanion("Phog", 30, 11).skills[0]?.name, "Background Noise"); | |
| 557 | +}); | |
| new file mode 100644 | |||
| @@ -0,0 +1,557 @@ | |||
| 1 | +import assert from "node:assert/strict"; | ||
| 2 | +import test from "node:test"; | ||
| 3 | +import artEffectsData from "@/research/art-effects.json"; | ||
| 4 | +import { companionByName, companions } from "@/src/data/companions"; | ||
| 5 | +import { recommendContextualTeams } from "@/src/lib/contextualEngine"; | ||
| 6 | +import { | ||
| 7 | + classRanksForActiveClass, | ||
| 8 | + editClassRank, | ||
| 9 | + planCompanion, | ||
| 10 | +} from "@/src/lib/engine"; | ||
| 11 | +import type { | ||
| 12 | + CompanionPlan, | ||
| 13 | + ContextualRecommendationRequest, | ||
| 14 | + ContextualTeamRecommendation, | ||
| 15 | + CuratedCompanionBuild, | ||
| 16 | + RosterMember, | ||
| 17 | +} from "@/src/lib/types"; | ||
| 18 | + | ||
| 19 | +/** | ||
| 20 | + * Fixed companion contract: emitted legal kits, progression precedence, | ||
| 21 | + * companion-only TP cap and invariance through both public planning paths. | ||
| 22 | + */ | ||
| 23 | + | ||
| 24 | +const tpCostingArtNames: Record<string, true> = {}; | ||
| 25 | +/** Verified per-Art weapon from the research fact table (issue #1 requires it on every selection). */ | ||
| 26 | +const weaponByArtName: Record<string, string> = {}; | ||
| 27 | +for (const art of artEffectsData.arts as { | ||
| 28 | + name: string; | ||
| 29 | + weapon: string; | ||
| 30 | + effects: { tp: boolean }; | ||
| 31 | +}[]) { | ||
| 32 | + if (art.effects.tp) tpCostingArtNames[art.name] = true; | ||
| 33 | + weaponByArtName[art.name] = art.weapon; | ||
| 34 | +} | ||
| 35 | + | ||
| 36 | +type CompanionFact = (typeof companions)[number]; | ||
| 37 | +type Kit = { arts: string[]; skills: string[] }; | ||
| 38 | + | ||
| 39 | +function kitOf(member: Pick<RosterMember, "arts" | "skills">): Kit { | ||
| 40 | + return { | ||
| 41 | + arts: member.arts.map((art) => art.name), | ||
| 42 | + skills: member.skills.map((skill) => skill.name), | ||
| 43 | + }; | ||
| 44 | +} | ||
| 45 | + | ||
| 46 | +/** Every rank at or around an unlock boundary, plus out-of-range clamps. */ | ||
| 47 | +function rankSamples(companion: CompanionFact): number[] { | ||
| 48 | + const ranks = new Set<number>([0, companion.startRank, companion.maxRank, 99]); | ||
| 49 | + for (const art of companion.arts) { | ||
| 50 | + ranks.add(art.rank); | ||
| 51 | + ranks.add(Math.max(0, art.rank - 1)); | ||
| 52 | + } | ||
| 53 | + for (const skill of companion.skills) { | ||
| 54 | + ranks.add(skill.rank); | ||
| 55 | + ranks.add(Math.max(0, skill.rank - 1)); | ||
| 56 | + } | ||
| 57 | + return [...ranks].sort((left, right) => left - right); | ||
| 58 | +} | ||
| 59 | + | ||
| 60 | +function expectedPersonalRank(companion: CompanionFact, requested: number): number { | ||
| 61 | + if (!Number.isFinite(requested)) return companion.startRank; | ||
| 62 | + return Math.max( | ||
| 63 | + companion.startRank, | ||
| 64 | + Math.min(companion.maxRank, Math.trunc(requested)), | ||
| 65 | + ); | ||
| 66 | +} | ||
| 67 | + | ||
| 68 | +function assertLegalKit( | ||
| 69 | + plan: CompanionPlan, | ||
| 70 | + companion: CompanionFact, | ||
| 71 | + context: string, | ||
| 72 | +): void { | ||
| 73 | + assert.equal(plan.name, companion.name, `${context}: wrong companion`); | ||
| 74 | + const artNames = plan.arts.map((art) => art.name); | ||
| 75 | + const skillNames = plan.skills.map((skill) => skill.name); | ||
| 76 | + assert.equal( | ||
| 77 | + new Set(artNames).size, | ||
| 78 | + artNames.length, | ||
| 79 | + `${context}: duplicate Arts (${artNames.join(", ")})`, | ||
| 80 | + ); | ||
| 81 | + assert.equal( | ||
| 82 | + new Set(skillNames).size, | ||
| 83 | + skillNames.length, | ||
| 84 | + `${context}: duplicate Skills (${skillNames.join(", ")})`, | ||
| 85 | + ); | ||
| 86 | + assert.ok(artNames.length >= 1, `${context}: expected at least one Art`); | ||
| 87 | + assert.ok( | ||
| 88 | + artNames.length <= 8, | ||
| 89 | + `${context}: ${artNames.length} Arts exceeds the eight-slot limit`, | ||
| 90 | + ); | ||
| 91 | + assert.ok( | ||
| 92 | + skillNames.length <= plan.skillSlots, | ||
| 93 | + `${context}: ${skillNames.length} Skills exceeds the ${plan.skillSlots}-slot limit`, | ||
| 94 | + ); | ||
| 95 | + assert.equal( | ||
| 96 | + plan.skillSlots, | ||
| 97 | + companion.skillSlots, | ||
| 98 | + `${context}: wrong Skill slot count`, | ||
| 99 | + ); | ||
| 100 | + for (const art of plan.arts) { | ||
| 101 | + const fact = companion.arts.find((entry) => entry.name === art.name); | ||
| 102 | + assert.ok(fact, `${context}: Art "${art.name}" is not in ${companion.name}'s kit`); | ||
| 103 | + assert.equal( | ||
| 104 | + art.unlockRank, | ||
| 105 | + fact.rank, | ||
| 106 | + `${context}: Art "${art.name}" reports wrong unlock rank`, | ||
| 107 | + ); | ||
| 108 | + assert.ok( | ||
| 109 | + fact.rank <= plan.personalRank, | ||
| 110 | + `${context}: Art "${art.name}" unlocks at rank ${fact.rank}, above personal rank ${plan.personalRank}`, | ||
| 111 | + ); | ||
| 112 | + assert.ok( | ||
| 113 | + art.recommendedLevel >= 1 && art.recommendedLevel <= 5, | ||
| 114 | + `${context}: Art "${art.name}" recommends upgrade level ${art.recommendedLevel} outside 1..5`, | ||
| 115 | + ); | ||
| 116 | + assert.ok( | ||
| 117 | + weaponByArtName[art.name] !== undefined, | ||
| 118 | + `${context}: Art "${art.name}" has no weapon record in the research fact table`, | ||
| 119 | + ); | ||
| 120 | + assert.ok( | ||
| 121 | + art.weapon === weaponByArtName[art.name], | ||
| 122 | + `${context}: Art "${art.name}" claims weapon "${art.weapon}" but the research fact table verifies "${weaponByArtName[art.name]}"`, | ||
| 123 | + ); | ||
| 124 | + assert.ok( | ||
| 125 | + art.weapon === companion.ranged || art.weapon === companion.melee, | ||
| 126 | + `${context}: Art "${art.name}" claims weapon "${art.weapon}" outside ${companion.name}'s ${companion.ranged}/${companion.melee}`, | ||
| 127 | + ); | ||
| 128 | + } | ||
| 129 | + for (const skill of plan.skills) { | ||
| 130 | + const fact = companion.skills.find((entry) => entry.name === skill.name); | ||
| 131 | + assert.ok(fact, `${context}: Skill "${skill.name}" is not in ${companion.name}'s kit`); | ||
| 132 | + assert.equal( | ||
| 133 | + skill.unlockRank, | ||
| 134 | + fact.rank, | ||
| 135 | + `${context}: Skill "${skill.name}" reports wrong unlock rank`, | ||
| 136 | + ); | ||
| 137 | + assert.ok( | ||
| 138 | + fact.rank <= plan.personalRank, | ||
| 139 | + `${context}: Skill "${skill.name}" unlocks at rank ${fact.rank}, above personal rank ${plan.personalRank}`, | ||
| 140 | + ); | ||
| 141 | + assert.ok( | ||
| 142 | + skill.recommendedLevel >= 1 && skill.recommendedLevel <= 5, | ||
| 143 | + `${context}: Skill "${skill.name}" recommends upgrade level ${skill.recommendedLevel} outside 1..5`, | ||
| 144 | + ); | ||
| 145 | + } | ||
| 146 | +} | ||
| 147 | + | ||
| 148 | +function requestFor( | ||
| 149 | + overrides: Partial<ContextualRecommendationRequest> = {}, | ||
| 150 | +): ContextualRecommendationRequest { | ||
| 151 | + return { | ||
| 152 | + slots: ["Doug", "", ""], | ||
| 153 | + activeClassId: "duelist", | ||
| 154 | + avatarLevel: 30, | ||
| 155 | + classRanks: editClassRank(classRanksForActiveClass("duelist", {}), "duelist", 10), | ||
| 156 | + personalRanks: [20, 20, 20], | ||
| 157 | + combatMode: "general", | ||
| 158 | + hasSkellLicense: false, | ||
| 159 | + postgameFrames: false, | ||
| 160 | + assumeSpecialUnlocks: false, | ||
| 161 | + lang: "en", | ||
| 162 | + ...overrides, | ||
| 163 | + }; | ||
| 164 | +} | ||
| 165 | + | ||
| 166 | +function recommendationsOrThrow( | ||
| 167 | + request: ContextualRecommendationRequest, | ||
| 168 | + context: string, | ||
| 169 | +): readonly ContextualTeamRecommendation[] { | ||
| 170 | + const result = recommendContextualTeams(request); | ||
| 171 | + assert.equal(result.kind, "success", `${context}: recommendations became infeasible`); | ||
| 172 | + if (result.kind !== "success") return []; | ||
| 173 | + return result.recommendations; | ||
| 174 | +} | ||
| 175 | + | ||
| 176 | +function kitsByCompanion( | ||
| 177 | + request: ContextualRecommendationRequest, | ||
| 178 | + context: string, | ||
| 179 | +): Map<string, Kit> { | ||
| 180 | + const kits = new Map<string, Kit>(); | ||
| 181 | + for (const recommendation of recommendationsOrThrow(request, context)) { | ||
| 182 | + for (const member of recommendation.roster) { | ||
| 183 | + if (member.kind !== "companion") continue; | ||
| 184 | + const kit = kitOf(member); | ||
| 185 | + const seen = kits.get(member.name); | ||
| 186 | + assert.deepEqual( | ||
| 187 | + seen ?? kit, | ||
| 188 | + kit, | ||
| 189 | + `${context}: ${member.name} received different kits across variants/placements`, | ||
| 190 | + ); | ||
| 191 | + kits.set(member.name, kit); | ||
| 192 | + } | ||
| 193 | + } | ||
| 194 | + return kits; | ||
| 195 | +} | ||
| 196 | + | ||
| 197 | +test("the companion roster covers the 22 non-Cross characters exactly once", () => { | ||
| 198 | + const names = companions.map((companion) => companion.name); | ||
| 199 | + assert.equal(companions.length, 22, "the roster must cover all 22 non-Cross characters"); | ||
| 200 | + assert.equal(new Set(names).size, 22, "companion names must be unique"); | ||
| 201 | + assert.ok(!names.includes("Cross"), "Cross must not be part of the companion roster"); | ||
| 202 | + for (const name of names) { | ||
| 203 | + assert.ok(companionByName.get(name), `companionByName must index ${name}`); | ||
| 204 | + } | ||
| 205 | +}); | ||
| 206 | + | ||
| 207 | +test("every companion plan selects only legal, unlocked, unique Arts and Skills", () => { | ||
| 208 | + for (const companion of companions) { | ||
| 209 | + for (const level of [1, 30, 60, 99]) { | ||
| 210 | + for (const requestedRank of rankSamples(companion)) { | ||
| 211 | + const context = `${companion.name} level ${level} requested rank ${requestedRank}`; | ||
| 212 | + const plan = planCompanion(companion.name, level, requestedRank); | ||
| 213 | + assert.equal( | ||
| 214 | + plan.personalRank, | ||
| 215 | + expectedPersonalRank(companion, requestedRank), | ||
| 216 | + `${context}: personal rank is not clamped to the companion's own progression`, | ||
| 217 | + ); | ||
| 218 | + assertLegalKit(plan, companion, context); | ||
| 219 | + } | ||
| 220 | + } | ||
| 221 | + } | ||
| 222 | +}); | ||
| 223 | + | ||
| 224 | +test("companion loadouts keep at most two TP-consuming Arts", () => { | ||
| 225 | + for (const companion of companions) { | ||
| 226 | + for (const requestedRank of [companion.startRank, 10, companion.maxRank, 99]) { | ||
| 227 | + const plan = planCompanion(companion.name, 30, requestedRank); | ||
| 228 | + const tpArts = plan.arts.filter((art) => tpCostingArtNames[art.name]); | ||
| 229 | + assert.ok( | ||
| 230 | + tpArts.length <= 2, | ||
| 231 | + `${companion.name} at personal rank ${plan.personalRank} carries ${tpArts.length} TP-costing Arts (strict max 2): ${tpArts.map((art) => art.name).join(", ")}`, | ||
| 232 | + ); | ||
| 233 | + } | ||
| 234 | + } | ||
| 235 | +}); | ||
| 236 | + | ||
| 237 | +test("Celica fills unlocked progression slots with useful non-TP Arts", () => { | ||
| 238 | + const rankSix = planCompanion("Celica", 30, 6).arts.map((art) => art.name); | ||
| 239 | + const rankTen = planCompanion("Celica", 30, 10).arts.map((art) => art.name); | ||
| 240 | + assert.ok(rankSix.includes("Violent Streak")); | ||
| 241 | + assert.equal(rankSix.length, 7); | ||
| 242 | + assert.ok(rankTen.includes("Violent Streak")); | ||
| 243 | + assert.equal(rankTen.length, 8); | ||
| 244 | +}); | ||
| 245 | + | ||
| 246 | +test("Al includes his unlocked physical-resistance Art in the early bar", () => { | ||
| 247 | + const arts = planCompanion("Al", 50, 3).arts.map((art) => art.name); | ||
| 248 | + assert.equal(arts.length, 4); | ||
| 249 | + assert.ok(arts.includes("Magnum Edge")); | ||
| 250 | +}); | ||
| 251 | + | ||
| 252 | +test("Skell mode keeps the canonical ground Skills instead of substituting them", () => { | ||
| 253 | + const ground = kitsByCompanion( | ||
| 254 | + requestFor({ combatMode: "general" }), | ||
| 255 | + "general mode", | ||
| 256 | + ); | ||
| 257 | + const skell = kitsByCompanion(requestFor({ combatMode: "skell" }), "skell mode"); | ||
| 258 | + assert.ok(ground.has("Doug"), "Doug must appear in the general-mode roster"); | ||
| 259 | + assert.ok(skell.has("Doug"), "Doug must appear in the skell-mode roster"); | ||
| 260 | + for (const [name, kit] of ground) { | ||
| 261 | + const skellKit = skell.get(name); | ||
| 262 | + // Team composition may legitimately differ across modes; kits may not. | ||
| 263 | + if (!skellKit) continue; | ||
| 264 | + assert.deepEqual( | ||
| 265 | + skellKit.skills, | ||
| 266 | + kit.skills, | ||
| 267 | + `${name}: Skell mode must not substitute canonical ground Skills`, | ||
| 268 | + ); | ||
| 269 | + assert.deepEqual( | ||
| 270 | + skellKit.arts, | ||
| 271 | + kit.arts, | ||
| 272 | + `${name}: Skell mode must not change the Arts loadout`, | ||
| 273 | + ); | ||
| 274 | + const companion = companionByName.get(name); | ||
| 275 | + assert.ok(companion, `unknown roster companion ${name}`); | ||
| 276 | + for (const skillName of skellKit.skills) { | ||
| 277 | + const fact = companion.skills.find((entry) => entry.name === skillName); | ||
| 278 | + assert.ok( | ||
| 279 | + fact && fact.rank <= 20, | ||
| 280 | + `${name}: Skill "${skillName}" equipped in Skell mode is illegal at personal rank 20`, | ||
| 281 | + ); | ||
| 282 | + } | ||
| 283 | + } | ||
| 284 | +}); | ||
| 285 | + | ||
| 286 | +test("companion kits stay fixed across Cross classes, ranks, weapons, teammates and placements", () => { | ||
| 287 | + const configurations: ContextualRecommendationRequest[] = [ | ||
| 288 | + requestFor(), | ||
| 289 | + requestFor({ | ||
| 290 | + activeClassId: "galactic-knight", | ||
| 291 | + classRanks: editClassRank( | ||
| 292 | + classRanksForActiveClass("galactic-knight", {}), | ||
| 293 | + "galactic-knight", | ||
| 294 | + 10, | ||
| 295 | + ), | ||
| 296 | + }), | ||
| 297 | + requestFor({ | ||
| 298 | + classRanks: editClassRank(classRanksForActiveClass("duelist", {}), "duelist", 5), | ||
| 299 | + }), | ||
| 300 | + requestFor({ | ||
| 301 | + activeClassId: "galactic-knight", | ||
| 302 | + // Tier-4 mastery on BOTH branches: galactic-knight active (beam Arts) | ||
| 303 | + // plus full-metal-jaguar rank 10 so the Photon Saber override is legal. | ||
| 304 | + classRanks: editClassRank( | ||
| 305 | + editClassRank( | ||
| 306 | + classRanksForActiveClass("galactic-knight", {}), | ||
| 307 | + "galactic-knight", | ||
| 308 | + 10, | ||
| 309 | + ), | ||
| 310 | + "full-metal-jaguar", | ||
| 311 | + 10, | ||
| 312 | + ), | ||
| 313 | + avatarLevel: 60, | ||
| 314 | + weaponOverrides: { ranged: "Dual Guns", melee: "Photon Saber" }, | ||
| 315 | + }), | ||
| 316 | + requestFor({ avatarLevel: 50 }), | ||
| 317 | + requestFor({ slots: ["", "Doug", ""] }), | ||
| 318 | + requestFor({ slots: ["", "", "Doug"] }), | ||
| 319 | + requestFor({ slots: ["", "", ""] }), | ||
| 320 | + ]; | ||
| 321 | + const kits = new Map<string, Kit>(); | ||
| 322 | + for (const [index, request] of configurations.entries()) { | ||
| 323 | + for (const [name, kit] of kitsByCompanion(request, `configuration #${index + 1}`)) { | ||
| 324 | + const seen = kits.get(name); | ||
| 325 | + assert.deepEqual( | ||
| 326 | + seen ?? kit, | ||
| 327 | + kit, | ||
| 328 | + `${name}: kit changed when the Cross configuration, teammates or placement changed`, | ||
| 329 | + ); | ||
| 330 | + kits.set(name, kit); | ||
| 331 | + } | ||
| 332 | + } | ||
| 333 | + assert.ok(kits.has("Doug"), "Doug must appear in at least one roster"); | ||
| 334 | + for (const [name, kit] of kits) { | ||
| 335 | + const direct = planCompanion(name, 30, 20); | ||
| 336 | + assert.deepEqual( | ||
| 337 | + kit.arts, | ||
| 338 | + direct.arts.map((art) => art.name), | ||
| 339 | + `${name}: roster Arts must match the direct companion planner`, | ||
| 340 | + ); | ||
| 341 | + assert.deepEqual( | ||
| 342 | + kit.skills, | ||
| 343 | + direct.skills.map((skill) => skill.name), | ||
| 344 | + `${name}: roster Skills must match the direct companion planner`, | ||
| 345 | + ); | ||
| 346 | + } | ||
| 347 | +}); | ||
| 348 | + | ||
| 349 | +test("companion planning is deterministic and clamps out-of-range ranks", () => { | ||
| 350 | + for (const companion of companions) { | ||
| 351 | + const canonical = planCompanion(companion.name, 30, companion.maxRank); | ||
| 352 | + assert.deepEqual( | ||
| 353 | + planCompanion(companion.name, 30, companion.maxRank), | ||
| 354 | + canonical, | ||
| 355 | + `${companion.name}: repeated planning at equal progression differs`, | ||
| 356 | + ); | ||
| 357 | + const above = planCompanion(companion.name, 30, 99); | ||
| 358 | + assert.equal(above.personalRank, companion.maxRank); | ||
| 359 | + assert.deepEqual( | ||
| 360 | + above.arts.map((art) => art.name), | ||
| 361 | + canonical.arts.map((art) => art.name), | ||
| 362 | + `${companion.name}: ranks above maxRank must not change the Arts`, | ||
| 363 | + ); | ||
| 364 | + const below = planCompanion(companion.name, 30, 0); | ||
| 365 | + assert.equal(below.personalRank, companion.startRank); | ||
| 366 | + assert.deepEqual( | ||
| 367 | + below.arts.map((art) => art.name), | ||
| 368 | + planCompanion(companion.name, 30, companion.startRank).arts.map((art) => art.name), | ||
| 369 | + `${companion.name}: ranks below startRank must not change the Arts`, | ||
| 370 | + ); | ||
| 371 | + } | ||
| 372 | +}); | ||
| 373 | + | ||
| 374 | +test("language only changes presentation, never the loadout", () => { | ||
| 375 | + for (const companion of companions) { | ||
| 376 | + const english = planCompanion(companion.name, 30, companion.maxRank, "en"); | ||
| 377 | + const french = planCompanion(companion.name, 30, companion.maxRank, "fr"); | ||
| 378 | + assert.deepEqual( | ||
| 379 | + french.arts.map((art) => art.name), | ||
| 380 | + english.arts.map((art) => art.name), | ||
| 381 | + `${companion.name}: Arts changed between languages`, | ||
| 382 | + ); | ||
| 383 | + assert.deepEqual( | ||
| 384 | + french.skills.map((skill) => skill.name), | ||
| 385 | + english.skills.map((skill) => skill.name), | ||
| 386 | + `${companion.name}: Skills changed between languages`, | ||
| 387 | + ); | ||
| 388 | + } | ||
| 389 | +}); | ||
| 390 | + | ||
| 391 | +test("every companion exposes a curated fixed build with sourced equipment advice", () => { | ||
| 392 | + for (const companion of companions) { | ||
| 393 | + const plan = planCompanion(companion.name, 30, companion.maxRank); | ||
| 394 | + const curated: CuratedCompanionBuild = plan.curatedBuild; | ||
| 395 | + assert.ok( | ||
| 396 | + curated.arts.length >= 1, | ||
| 397 | + `${companion.name}: curated build lists no Arts`, | ||
| 398 | + ); | ||
| 399 | + assert.equal( | ||
| 400 | + new Set(curated.arts).size, | ||
| 401 | + curated.arts.length, | ||
| 402 | + `${companion.name}: curated Arts contain duplicates`, | ||
| 403 | + ); | ||
| 404 | + assert.equal( | ||
| 405 | + new Set(curated.skills).size, | ||
| 406 | + curated.skills.length, | ||
| 407 | + `${companion.name}: curated Skills contain duplicates`, | ||
| 408 | + ); | ||
| 409 | + const curatedTpArts = curated.arts.filter( | ||
| 410 | + (art) => tpCostingArtNames[art], | ||
| 411 | + ); | ||
| 412 | + assert.ok( | ||
| 413 | + curatedTpArts.length <= 2, | ||
| 414 | + `${companion.name}: curated build lists ${curatedTpArts.length} TP-costing Arts (max 2): ${curatedTpArts.join(", ")}`, | ||
| 415 | + ); | ||
| 416 | + const artUniverse = new Set([...curated.arts, ...curated.artSubstitutes]); | ||
| 417 | + for (const art of plan.arts) { | ||
| 418 | + assert.ok( | ||
| 419 | + artUniverse.has(art.name), | ||
| 420 | + `${companion.name}: equipped Art "${art.name}" is outside the curated build and its substitutes`, | ||
| 421 | + ); | ||
| 422 | + } | ||
| 423 | + const skillUniverse = new Set([ | ||
| 424 | + ...curated.skills, | ||
| 425 | + ...curated.skillSubstitutes, | ||
| 426 | + ]); | ||
| 427 | + for (const skill of plan.skills) { | ||
| 428 | + assert.ok( | ||
| 429 | + skillUniverse.has(skill.name), | ||
| 430 | + `${companion.name}: equipped Skill "${skill.name}" is outside the curated build and its substitutes`, | ||
| 431 | + ); | ||
| 432 | + } | ||
| 433 | + for (const key of ["role", "rationale"] as const) { | ||
| 434 | + const text = curated[key]; | ||
| 435 | + assert.ok( | ||
| 436 | + text.length === 2 && text.every((part) => part.length > 0), | ||
| 437 | + `${companion.name}: curated ${key} must be present in English and French`, | ||
| 438 | + ); | ||
| 439 | + } | ||
| 440 | + for (const key of ["weapons", "armor", "availability"] as const) { | ||
| 441 | + const text = curated.equipment[key]; | ||
| 442 | + assert.ok( | ||
| 443 | + text.length === 2 && text.every((part) => part.length > 0), | ||
| 444 | + `${companion.name}: curated equipment ${key} must be present in English and French`, | ||
| 445 | + ); | ||
| 446 | + } | ||
| 447 | + assert.ok( | ||
| 448 | + curated.sources.length >= 1, | ||
| 449 | + `${companion.name}: curated build cites no sources`, | ||
| 450 | + ); | ||
| 451 | + for (const source of curated.sources) { | ||
| 452 | + assert.ok( | ||
| 453 | + /^https?:\/\//.test(source.url), | ||
| 454 | + `${companion.name}: source "${source.label}" has no URL`, | ||
| 455 | + ); | ||
| 456 | + assert.ok( | ||
| 457 | + source.edition === "DE" || source.edition === "XCX" || source.edition === "both", | ||
| 458 | + `${companion.name}: source "${source.label}" must declare its game edition`, | ||
| 459 | + ); | ||
| 460 | + } | ||
| 461 | + } | ||
| 462 | +}); | ||
| 463 | + | ||
| 464 | +test("companion kits change only when a progression rank unlocks something", () => { | ||
| 465 | + for (const companion of companions) { | ||
| 466 | + const unlockRanks = new Set<number>([ | ||
| 467 | + ...companion.arts.map((art) => art.rank), | ||
| 468 | + ...companion.skills.map((skill) => skill.rank), | ||
| 469 | + ]); | ||
| 470 | + for (let rank = companion.startRank; rank < companion.maxRank; rank += 1) { | ||
| 471 | + if (unlockRanks.has(rank + 1)) continue; | ||
| 472 | + const before = planCompanion(companion.name, 30, rank); | ||
| 473 | + const after = planCompanion(companion.name, 30, rank + 1); | ||
| 474 | + assert.deepEqual( | ||
| 475 | + after.arts.map((art) => art.name), | ||
| 476 | + before.arts.map((art) => art.name), | ||
| 477 | + `${companion.name}: Arts changed between ranks ${rank} and ${rank + 1} although nothing unlocks there`, | ||
| 478 | + ); | ||
| 479 | + assert.deepEqual( | ||
| 480 | + after.skills.map((skill) => skill.name), | ||
| 481 | + before.skills.map((skill) => skill.name), | ||
| 482 | + `${companion.name}: Skills changed between ranks ${rank} and ${rank + 1} although nothing unlocks there`, | ||
| 483 | + ); | ||
| 484 | + } | ||
| 485 | + } | ||
| 486 | +}); | ||
| 487 | + | ||
| 488 | +test("curated canonical Arts take precedence over substitutes once they unlock", () => { | ||
| 489 | + let assertedBoundaries = 0; | ||
| 490 | + for (const companion of companions) { | ||
| 491 | + const plan = planCompanion(companion.name, 30, companion.maxRank); | ||
| 492 | + const curated: CuratedCompanionBuild = plan.curatedBuild; | ||
| 493 | + /** Canonical Art -> unlock rank, proving every curated canonical is a real fact. */ | ||
| 494 | + const unlockRankByCanonical = new Map<string, number>(); | ||
| 495 | + for (const name of curated.arts) { | ||
| 496 | + const fact = companion.arts.find((art) => art.name === name); | ||
| 497 | + assert.ok( | ||
| 498 | + fact !== undefined, | ||
| 499 | + `${companion.name}: curated canonical Art "${name}" is not an unlockable Art of the character`, | ||
| 500 | + ); | ||
| 501 | + unlockRankByCanonical.set(name, fact.rank); | ||
| 502 | + } | ||
| 503 | + // Substitutes stay legal Arts of the character's own weapon families. | ||
| 504 | + for (const name of curated.artSubstitutes) { | ||
| 505 | + const weapon = weaponByArtName[name]; | ||
| 506 | + assert.ok( | ||
| 507 | + weapon !== undefined, | ||
| 508 | + `${companion.name}: substitute Art "${name}" is missing from the research fact table`, | ||
| 509 | + ); | ||
| 510 | + assert.ok( | ||
| 511 | + weapon === companion.ranged || weapon === companion.melee, | ||
| 512 | + `${companion.name}: substitute Art "${name}" needs ${weapon}, outside ${companion.name}'s ${companion.ranged}/${companion.melee}`, | ||
| 513 | + ); | ||
| 514 | + } | ||
| 515 | + for (const [art, rank] of unlockRankByCanonical) { | ||
| 516 | + if (rank <= companion.startRank) continue; | ||
| 517 | + // With more canonical Arts unlocked than loadout slots, some omission | ||
| 518 | + // is unavoidable and no precedence claim is possible for a specific Art. | ||
| 519 | + const canonicalsAvailable = [...unlockRankByCanonical.values()].filter( | ||
| 520 | + (unlockRank) => unlockRank <= rank, | ||
| 521 | + ).length; | ||
| 522 | + if (canonicalsAvailable > 8) continue; | ||
| 523 | + const after = planCompanion(companion.name, 30, rank).arts.map( | ||
| 524 | + (selection) => selection.name, | ||
| 525 | + ); | ||
| 526 | + const canonicalTpArts = after.filter((name) => { | ||
| 527 | + const canonicalRank = unlockRankByCanonical.get(name); | ||
| 528 | + return tpCostingArtNames[name] && canonicalRank !== undefined && canonicalRank <= rank; | ||
| 529 | + }); | ||
| 530 | + // Two canonical TP Arts already reserve the TP budget: the freshly | ||
| 531 | + // unlocked TP Art may legitimately stay out in favour of non-TP filler. | ||
| 532 | + const tpBudgetReserved = | ||
| 533 | + Boolean(tpCostingArtNames[art]) && | ||
| 534 | + canonicalTpArts.length >= 2 && | ||
| 535 | + !after.includes(art); | ||
| 536 | + if (tpBudgetReserved) continue; | ||
| 537 | + assert.ok( | ||
| 538 | + after.includes(art), | ||
| 539 | + `${companion.name}: canonical "${art}" unlocks at rank ${rank} but the plan still serves substitutes`, | ||
| 540 | + ); | ||
| 541 | + assertedBoundaries += 1; | ||
| 542 | + } | ||
| 543 | + } | ||
| 544 | + assert.ok( | ||
| 545 | + assertedBoundaries >= 1, | ||
| 546 | + "no companion exercised a canonical unlock boundary; the precedence contract is untested", | ||
| 547 | + ); | ||
| 548 | +}); | ||
| 549 | + | ||
| 550 | +test("Phog replaces his first progression filler with Side Slash at rank 5", () => { | ||
| 551 | + const before = planCompanion("Phog", 30, 4); | ||
| 552 | + const after = planCompanion("Phog", 30, 5); | ||
| 553 | + assert.equal(before.arts[3]?.name, "Upper Hand"); | ||
| 554 | + assert.equal(after.arts[3]?.name, "Side Slash"); | ||
| 555 | + assert.equal(planCompanion("Phog", 30, 10).skills[0]?.name, "Agile Gunslinger"); | ||
| 556 | + assert.equal(planCompanion("Phog", 30, 11).skills[0]?.name, "Background Noise"); | ||
| 557 | +}); | ||
modified
src/lib/types.ts +25 -2 | @@ -3,6 +3,29 @@ export type Lang = "en" | "fr"; | ||
| 3 | 3 | /** Bilingual label: [English, French] — game terms in official English first. */ |
| 4 | 4 | export type LocalizedText = readonly [string, string]; |
| 5 | 5 | |
| 6 | +export interface CompanionBuildSource { | |
| 7 | + label: string; | |
| 8 | + url: string; | |
| 9 | + edition: "DE" | "XCX" | "both"; | |
| 10 | +} | |
| 11 | + | |
| 12 | +export interface CompanionEquipmentAdvice { | |
| 13 | + weapons: LocalizedText; | |
| 14 | + armor: LocalizedText; | |
| 15 | + availability: LocalizedText; | |
| 16 | +} | |
| 17 | + | |
| 18 | +export interface CuratedCompanionBuild { | |
| 19 | + role: LocalizedText; | |
| 20 | + rationale: LocalizedText; | |
| 21 | + arts: readonly string[]; | |
| 22 | + skills: readonly string[]; | |
| 23 | + artSubstitutes: readonly string[]; | |
| 24 | + skillSubstitutes: readonly string[]; | |
| 25 | + equipment: CompanionEquipmentAdvice; | |
| 26 | + sources: readonly CompanionBuildSource[]; | |
| 27 | +} | |
| 28 | + | |
| 6 | 29 | export interface ClassEntry { |
| 7 | 30 | id: string; |
| 8 | 31 | en: string; |
| @@ -162,8 +185,7 @@ export interface CompanionPlan { | ||
| 162 | 185 | strategy: StrategyKey; |
| 163 | 186 | capabilities: CapabilityVector; |
| 164 | 187 | arts: readonly ArtSelection[]; |
| 165 | - /** Unbudgeted top-Arts pool; role scoring uses potential while display respects the TP budget. */ | |
| 166 | - potentialArts: readonly ArtSelection[]; | |
| 188 | + curatedBuild: CuratedCompanionBuild; | |
| 167 | 189 | skills: readonly SkillSelection[]; |
| 168 | 190 | skillSlots: number; |
| 169 | 191 | note: LocalizedText; |
| @@ -212,6 +234,7 @@ export interface RosterMember { | ||
| 212 | 234 | skillSlots: number; |
| 213 | 235 | strategy: StrategyKey; |
| 214 | 236 | note: LocalizedText; |
| 237 | + curatedBuild?: CuratedCompanionBuild; | |
| 215 | 238 | planReasons: readonly string[]; |
| 216 | 239 | source?: string; |
| 217 | 240 | } |
| @@ -3,6 +3,29 @@ export type Lang = "en" | "fr"; | |||
| 3 | /** Bilingual label: [English, French] — game terms in official English first. */ | 3 | /** Bilingual label: [English, French] — game terms in official English first. */ |
| 4 | export type LocalizedText = readonly [string, string]; | 4 | export type LocalizedText = readonly [string, string]; |
| 5 | 5 | ||
| 6 | +export interface CompanionBuildSource { | ||
| 7 | + label: string; | ||
| 8 | + url: string; | ||
| 9 | + edition: "DE" | "XCX" | "both"; | ||
| 10 | +} | ||
| 11 | + | ||
| 12 | +export interface CompanionEquipmentAdvice { | ||
| 13 | + weapons: LocalizedText; | ||
| 14 | + armor: LocalizedText; | ||
| 15 | + availability: LocalizedText; | ||
| 16 | +} | ||
| 17 | + | ||
| 18 | +export interface CuratedCompanionBuild { | ||
| 19 | + role: LocalizedText; | ||
| 20 | + rationale: LocalizedText; | ||
| 21 | + arts: readonly string[]; | ||
| 22 | + skills: readonly string[]; | ||
| 23 | + artSubstitutes: readonly string[]; | ||
| 24 | + skillSubstitutes: readonly string[]; | ||
| 25 | + equipment: CompanionEquipmentAdvice; | ||
| 26 | + sources: readonly CompanionBuildSource[]; | ||
| 27 | +} | ||
| 28 | + | ||
| 6 | export interface ClassEntry { | 29 | export interface ClassEntry { |
| 7 | id: string; | 30 | id: string; |
| 8 | en: string; | 31 | en: string; |
| @@ -162,8 +185,7 @@ export interface CompanionPlan { | |||
| 162 | strategy: StrategyKey; | 185 | strategy: StrategyKey; |
| 163 | capabilities: CapabilityVector; | 186 | capabilities: CapabilityVector; |
| 164 | arts: readonly ArtSelection[]; | 187 | arts: readonly ArtSelection[]; |
| 165 | - /** Unbudgeted top-Arts pool; role scoring uses potential while display respects the TP budget. */ | 188 | + curatedBuild: CuratedCompanionBuild; |
| 166 | - potentialArts: readonly ArtSelection[]; | ||
| 167 | skills: readonly SkillSelection[]; | 189 | skills: readonly SkillSelection[]; |
| 168 | skillSlots: number; | 190 | skillSlots: number; |
| 169 | note: LocalizedText; | 191 | note: LocalizedText; |
| @@ -212,6 +234,7 @@ export interface RosterMember { | |||
| 212 | skillSlots: number; | 234 | skillSlots: number; |
| 213 | strategy: StrategyKey; | 235 | strategy: StrategyKey; |
| 214 | note: LocalizedText; | 236 | note: LocalizedText; |
| 237 | + curatedBuild?: CuratedCompanionBuild; | ||
| 215 | planReasons: readonly string[]; | 238 | planReasons: readonly string[]; |
| 216 | source?: string; | 239 | source?: string; |
| 217 | } | 240 | } |