diff --git a/api/fight.php b/api/fight.php
index 8076e83..64334bb 100644
--- a/api/fight.php
+++ b/api/fight.php
@@ -42,6 +42,7 @@ query GetReportData($reportCode: String!) {
endTime
fights {
id
+ encounterID
name
startTime
endTime
@@ -75,9 +76,7 @@ function localized_graphql_uri(string $language): string {
return preg_replace('#https://[^/]+#', 'https://' . $host, GRAPHQL_URI);
}
-// Fight names must be stable regardless of language — always use the English endpoint.
-// Localization only matters for ability/player names in analysis.php.
-$ch = curl_init(GRAPHQL_URI);
+$ch = curl_init(localized_graphql_uri($language));
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => $payload,
@@ -85,6 +84,7 @@ curl_setopt_array($ch, [
CURLOPT_HTTPHEADER => [
'Content-Type: application/json',
'Authorization: Bearer ' . $_SESSION['access_token'],
+ 'Accept-Language: ' . ($language === 'jp' ? 'ja' : $language),
],
CURLOPT_SSL_VERIFYPEER => !DEV_MODE,
]);
diff --git a/js/analysis.js b/js/analysis.js
index 696b622..1ab74c9 100644
--- a/js/analysis.js
+++ b/js/analysis.js
@@ -138,13 +138,24 @@
return String(name ?? '').trim().toLowerCase();
}
- function currentFightName() {
- const fight = (window.App?.fights ?? []).find(f => f.id === window.App?.fightId);
- return normalizeFightName(fight?.name);
+ function fightEncounterId(fight) {
+ return parseInt(fight?.encounterID ?? fight?.encounterId ?? 0, 10) || 0;
}
- function isSameFightName(fight) {
- const name = currentFightName();
+ function currentFight() {
+ return (window.App?.fights ?? []).find(f => f.id === window.App?.fightId) ?? null;
+ }
+
+ function isSameEncounter(fight) {
+ const selectedFight = currentFight();
+ const selectedEncounterId = fightEncounterId(selectedFight);
+ const encounterId = fightEncounterId(fight);
+
+ if (selectedEncounterId && encounterId) {
+ return encounterId === selectedEncounterId;
+ }
+
+ const name = normalizeFightName(selectedFight?.name);
return name !== '' && normalizeFightName(fight?.name) === name;
}
@@ -341,7 +352,7 @@
let allSameReportFights = [];
function populateRefFightSelect() {
- const visible = allSameReportFights.filter(f => f.id !== window.App.fightId && isSameFightName(f));
+ const visible = allSameReportFights.filter(f => f.id !== window.App.fightId && isSameEncounter(f));
refFightSelect.innerHTML = '';
visible.forEach(f => {
const hp = f.kill ? 'Kill' : (f.fightPercentage != null ? f.fightPercentage.toFixed(2) + '%' : '?');
@@ -410,7 +421,7 @@
extReportCode = code;
updateRefFflogsLink();
- const visibleExt = fights.filter(isSameFightName);
+ const visibleExt = fights.filter(isSameEncounter);
refExtFightSelect.innerHTML = '';
visibleExt.forEach(f => {
const hp = f.kill ? 'Kill' : (f.fightPercentage != null ? f.fightPercentage.toFixed(2) + '%' : '?');