FireflyGO api support
Deploy GaC-Srtool to GitHub Pages / deploy (push) Canceled after 0s

This commit is contained in:
CAtlas0784 committed 2026-11-04 17:14:50 +07:00
1 parent 8eb519023a
commit 1593581729
18 files changed
+2757 -98

No files matched your search

+105 -4
View File
@@ -7099,7 +7099,7 @@ const MODAL_AND_TOOL_TRANSLATIONS = {
fireflyChallengeGroupId: 'Peak group id',
fireflyChallengeGroupList: 'รายการ Peak group id',
fireflyTheoryTitle: '🧪 Theory Craft',
fireflyTheoryMode: 'เปิดโหมด Theory Craft',
fireflyTheoryMode: 'เปิดโหมด Theory Craft (= โหมดสร้างสรรค์)',
fireflyTheoryCycleCount: 'จำนวนรอบ',
fireflyTheoryStageId: 'Stage id',
fireflyTheoryLineup: 'ทีมที่กำหนดเอง',
@@ -7118,6 +7118,8 @@ const MODAL_AND_TOOL_TRANSLATIONS = {
fireflyRequestFailedDetail: 'ไม่สำเร็จ: {message}',
fireflyTimeout: 'FireflyGo ไม่ตอบสนอง (หมดเวลา)',
fireflyNoData: 'ยังไม่มีข้อมูลตัวละครให้ซิงค์',
fireflyPlayerNotLoaded: 'ข้อมูลผู้เล่นยังไม่ได้โหลด กรุณาล็อกอินตัวละครเข้าเกมก่อน',
fireflyMixedContentHint: 'เบราว์เซอร์บล็อกการเชื่อมต่อ HTTP จากเว็บ HTTPS กรุณาเปิดเว็บผ่าน localhost หรืออนุญาต Insecure content ในการตั้งค่าไซต์',
fireflyExtraSaved: 'บันทึกตัวควบคุม FireflyGo แล้ว',
fireflyHpInvalid: 'ค่า HP ต้องเป็น JSON object เช่น {"1001": [12000, 9000]}',
@@ -7253,7 +7255,55 @@ const MODAL_AND_TOOL_TRANSLATIONS = {
relicSetSearchLabel: 'ค้นหาชุดรีลิกส์',
relicSetSearchPlaceholder: '🔍 ค้นหาชุดรีลิกส์...',
relicSetGridLabel: 'ชุดรีลิกส์',
analystDamageAvPlaceholder: "เฉลี่ยต่อรอบ: -", analystCyclesPlaceholder: "0 รอบ", analystTurnsPlaceholder: "0 เทิร์น", analystAutoTurnsPlaceholder: "เทิร์นอัตโนมัติ: 0", analystDamageAvPlaceholder: "Avg per cycle: -", analystCyclesPlaceholder: "0 Cycles", analystTurnsPlaceholder: "0 Turns", analystAutoTurnsPlaceholder: "Auto Turns: 0", analystDamageAvPlaceholder: "ラウンド平均: -", analystCyclesPlaceholder: "0 ラウンド", analystTurnsPlaceholder: "0 ターン", analystAutoTurnsPlaceholder: "オートターン: 0", analystDamageAvPlaceholder: "라운드당 평균: -", analystCyclesPlaceholder: "0 라운드", analystTurnsPlaceholder: "0 턴", analystAutoTurnsPlaceholder: "자동 턴: 0", analystDamageAvPlaceholder: "Trung bình mỗi vòng: -", analystCyclesPlaceholder: "0 vòng", analystTurnsPlaceholder: "0 lượt", analystAutoTurnsPlaceholder: "Lượt tự động: 0", analystDamageAvPlaceholder: "Rata-rata per siklus: -", analystCyclesPlaceholder: "0 Siklus", analystTurnsPlaceholder: "0 Giliran", analystAutoTurnsPlaceholder: "Giliran otomatis: 0", analystDamageAvPlaceholder: "Promedio por ciclo: -", analystCyclesPlaceholder: "0 ciclos", analystTurnsPlaceholder: "0 turnos", analystAutoTurnsPlaceholder: "Turnos automáticos: 0", analystDamageAvPlaceholder: "Moyenne par cycle : -", analystCyclesPlaceholder: "0 cycle", analystTurnsPlaceholder: "0 tour", analystAutoTurnsPlaceholder: "Tours auto : 0", analystDamageAvPlaceholder: "Durchschnitt pro Zyklus: -", analystCyclesPlaceholder: "0 Zyklen", analystTurnsPlaceholder: "0 Züge", analystAutoTurnsPlaceholder: "Auto-Züge: 0", analystDamageAvPlaceholder: "В среднем за цикл: -", analystCyclesPlaceholder: "0 циклов", analystTurnsPlaceholder: "0 ходов", analystAutoTurnsPlaceholder: "Авто-ходы: 0", analystDamageAvPlaceholder: "Média por ciclo: -", analystCyclesPlaceholder: "0 ciclos", analystTurnsPlaceholder: "0 turnos", analystAutoTurnsPlaceholder: "Turnos automáticos: 0", miniViewFullAnalystTooltip: "เปิดหน้า Damage Analyst ตัวเต็ม", miniViewFullAnalystTooltip: "Open full Damage Analyst", miniViewFullAnalystTooltip: "完全なダメージ分析を開く", miniViewFullAnalystTooltip: "전체 데미지 분석 열기", miniViewFullAnalystTooltip: "Mở Trình phân tích sát thương đầy đủ", miniViewFullAnalystTooltip: "Buka Analis Kerusakan Lengkap", miniViewFullAnalystTooltip: "Abrir analizador de daño completo", miniViewFullAnalystTooltip: "Ouvrir l'analyseur de dégâts complet", miniViewFullAnalystTooltip: "Vollständigen Schadensanalysten öffnen", miniViewFullAnalystTooltip: "Открыть полный анализ урона", miniViewFullAnalystTooltip: "Abrir analisador de dano completo", copyCardGenerated: 'สร้างโดย GaCy-Srtool'
analystDamageAvPlaceholder: "เฉลี่ยต่อรอบ: -", analystCyclesPlaceholder: "0 รอบ", analystTurnsPlaceholder: "0 เทิร์น", analystAutoTurnsPlaceholder: "เทิร์นอัตโนมัติ: 0", analystDamageAvPlaceholder: "Avg per cycle: -", analystCyclesPlaceholder: "0 Cycles", analystTurnsPlaceholder: "0 Turns", analystAutoTurnsPlaceholder: "Auto Turns: 0", analystDamageAvPlaceholder: "ラウンド平均: -", analystCyclesPlaceholder: "0 ラウンド", analystTurnsPlaceholder: "0 ターン", analystAutoTurnsPlaceholder: "オートターン: 0", analystDamageAvPlaceholder: "라운드당 평균: -", analystCyclesPlaceholder: "0 라운드", analystTurnsPlaceholder: "0 턴", analystAutoTurnsPlaceholder: "자동 턴: 0", analystDamageAvPlaceholder: "Trung bình mỗi vòng: -", analystCyclesPlaceholder: "0 vòng", analystTurnsPlaceholder: "0 lượt", analystAutoTurnsPlaceholder: "Lượt tự động: 0", analystDamageAvPlaceholder: "Rata-rata per siklus: -", analystCyclesPlaceholder: "0 Siklus", analystTurnsPlaceholder: "0 Giliran", analystAutoTurnsPlaceholder: "Giliran otomatis: 0", analystDamageAvPlaceholder: "Promedio por ciclo: -", analystCyclesPlaceholder: "0 ciclos", analystTurnsPlaceholder: "0 turnos", analystAutoTurnsPlaceholder: "Turnos automáticos: 0", analystDamageAvPlaceholder: "Moyenne par cycle : -", analystCyclesPlaceholder: "0 cycle", analystTurnsPlaceholder: "0 tour", analystAutoTurnsPlaceholder: "Tours auto : 0", analystDamageAvPlaceholder: "Durchschnitt pro Zyklus: -", analystCyclesPlaceholder: "0 Zyklen", analystTurnsPlaceholder: "0 Züge", analystAutoTurnsPlaceholder: "Auto-Züge: 0", analystDamageAvPlaceholder: "В среднем за цикл: -", analystCyclesPlaceholder: "0 циклов", analystTurnsPlaceholder: "0 ходов", analystAutoTurnsPlaceholder: "Авто-ходы: 0", analystDamageAvPlaceholder: "Média por ciclo: -", analystCyclesPlaceholder: "0 ciclos", analystTurnsPlaceholder: "0 turnos", analystAutoTurnsPlaceholder: "Turnos automáticos: 0", miniViewFullAnalystTooltip: "เปิดหน้า Damage Analyst ตัวเต็ม", miniViewFullAnalystTooltip: "Open full Damage Analyst", miniViewFullAnalystTooltip: "完全なダメージ分析を開く", miniViewFullAnalystTooltip: "전체 데미지 분석 열기", miniViewFullAnalystTooltip: "Mở Trình phân tích sát thương đầy đủ", miniViewFullAnalystTooltip: "Buka Analis Kerusakan Lengkap", miniViewFullAnalystTooltip: "Abrir analizador de daño completo", miniViewFullAnalystTooltip: "Ouvrir l'analyseur de dégâts complet", miniViewFullAnalystTooltip: "Vollständigen Schadensanalysten öffnen", miniViewFullAnalystTooltip: "Открыть полный анализ урона", miniViewFullAnalystTooltip: "Abrir analisador de dano completo", copyCardGenerated: 'สร้างโดย GaCy-Srtool',
// FireflyGo endgame room picker
ffEndgameTitle: '🦋 ห้อง Endgame (FireflyGO)',
ffEndgameTablistLabel: 'โหมดด่าน endgame ของ FireflyGO',
ffEndgameDescription: 'เลือกด่าน endgame และคลื่นมอนที่ FireflyGO จะใช้ แล้วเขียนลง battle_config โดยตรง',
ffEndgameRule: 'ค่าเหล่านี้เขียนลง battle_config (และ extra_data.challenge สำหรับ Anomaly Arbitration) จากนั้นบันทึกในเครื่องหรือซิงค์ขึ้น FireflyGO',
ffEndgameModePeak: 'Anomaly Arbitration',
ffEndgameLoading: 'กำลังโหลดข้อมูลด่าน endgame…',
ffEndgameReady: 'พร้อมใช้งาน · เลือกห้องแล้วกดใช้กับ battle_config',
ffEndgameCatalogError: 'โหลดข้อมูลด่าน endgame ไม่ได้: {error}',
ffEndgameSeason: 'ซีซัน / กลุ่มด่าน',
ffEndgameFloor: 'ชั้น',
ffEndgameFloorValue: 'ชั้น {floor}',
ffEndgameSide: 'ฝั่ง',
ffEndgameSideFirst: 'ครึ่งแรก',
ffEndgameSideSecond: 'ครึ่งหลัง',
ffEndgameSideThird: 'โหนดที่สาม',
ffEndgameStage: 'ด่าน',
ffEndgameStageValue: 'ด่าน {id}',
ffEndgameStageKindPre: 'ด่านก่อนบอส',
ffEndgameStageKindBoss: 'บอส',
ffEndgameStageKindHard: 'โหมดยาก',
ffEndgameStageId: 'stage_id {id}',
ffEndgamePreview: 'ตัวอย่าง battle_config',
ffEndgameNoStages: 'ไม่พบข้อมูลด่านสำหรับโหมดนี้',
ffEndgameUseCycle: 'ใช้จำนวนรอบจากด่าน (TurnLimit)',
ffEndgameUseBuff: 'ใช้บัฟของด่าน',
ffEndgameCycles: 'รอบ: {count}',
ffEndgameBlessings: 'บัฟ: {count}',
ffEndgameMonsterCount: 'มอน: {count}',
ffEndgameApply: '💾 ใช้กับ battle_config',
ffEndgameApplySync: '🚀 ใช้และซิงค์',
ffEndgameReset: '↺ รีเซ็ตค่าเริ่มต้น',
ffEndgameResetDone: 'รีเซ็ตค่าเริ่มต้นของโหมดนี้แล้ว',
ffEndgameSaving: 'กำลังบันทึก battle_config…',
ffEndgameSaved: 'บันทึก battle_config ในเครื่องแล้ว',
ffEndgameSynced: 'บันทึกและซิงค์ขึ้น FireflyGO แล้ว',
ffEndgameApplyError: 'เลือกห้องให้ครบก่อนใช้ค่านี้',
ffEndgameNoData: 'ยังไม่มีข้อมูล FreeSR — โหลดหรือซิงค์ข้อมูลก่อน',
ffEndgameSyncError: 'ซิงค์ไม่สำเร็จ: {error}',
ffEndgameCustomDescription: 'กำหนดคลื่นมอนเองโดยใช้ monster_id จากเกม ค่าที่ใช้ได้ต้องตรงกับที่ FireflyGO รองรับ',
ffEndgameAddWave: 'เพิ่มคลื่น',
ffEndgameRemoveWave: 'ลบคลื่น',
ffEndgameAddMonster: 'เพิ่มมอน',
ffEndgameRemoveMonster: 'ลบมอน',
ffEndgameMonsterId: 'Monster ID',
ffEndgameMonsterLevel: 'เลเวล',
ffEndgameMonsterAmount: 'จำนวน',
ffEndgameCycleCount: 'จำนวนรอบ'
},
en: {
// Server modes
@@ -7306,7 +7356,7 @@ const MODAL_AND_TOOL_TRANSLATIONS = {
fireflyChallengeGroupId: 'Peak group id',
fireflyChallengeGroupList: 'Peak group id list',
fireflyTheoryTitle: '🧪 Theory Craft',
fireflyTheoryMode: 'Enable theory craft',
fireflyTheoryMode: 'Enable Theory Craft (= Creative Mode)',
fireflyTheoryCycleCount: 'Cycle count',
fireflyTheoryStageId: 'Stage id',
fireflyTheoryLineup: 'Custom lineup',
@@ -7325,6 +7375,8 @@ const MODAL_AND_TOOL_TRANSLATIONS = {
fireflyRequestFailedDetail: 'Failed: {message}',
fireflyTimeout: 'FireflyGo did not respond (timed out)',
fireflyNoData: 'There is no character data to sync yet',
fireflyPlayerNotLoaded: 'Player data is not loaded yet. Please log into the game with your character first.',
fireflyMixedContentHint: 'Browser blocked HTTP localhost from HTTPS page. Please open via localhost or allow Insecure content in site settings.',
fireflyExtraSaved: 'FireflyGo controls saved',
fireflyHpInvalid: 'HP overrides must be a JSON object such as {"1001": [12000, 9000]}',
@@ -7460,7 +7512,56 @@ const MODAL_AND_TOOL_TRANSLATIONS = {
relicSetSearchLabel: 'Search relic sets',
relicSetSearchPlaceholder: '🔍 Search relic sets...',
relicSetGridLabel: 'Relic sets',
copyCardGenerated: 'Generated via GaCy-Srtool'
copyCardGenerated: 'Generated via GaCy-Srtool',
// FireflyGo endgame room picker
ffEndgameTitle: '🦋 Endgame Rooms (FireflyGO)',
ffEndgameTablistLabel: 'FireflyGO endgame room modes',
ffEndgameDescription: 'Pick the endgame room and monster waves FireflyGO should load, then write them straight into battle_config.',
ffEndgameRule: 'These values are written to battle_config (plus extra_data.challenge for Anomaly Arbitration), then saved locally or synced to FireflyGO.',
ffEndgameModePeak: 'Anomaly Arbitration',
ffEndgameLoading: 'Loading endgame data…',
ffEndgameReady: 'Ready · pick a room, then apply it to battle_config',
ffEndgameCatalogError: 'Could not load endgame data: {error}',
ffEndgameSeason: 'Season / stage group',
ffEndgameFloor: 'Floor',
ffEndgameFloorValue: 'Floor {floor}',
ffEndgameSide: 'Side',
ffEndgameSideFirst: 'First half',
ffEndgameSideSecond: 'Second half',
ffEndgameSideThird: 'Third node',
ffEndgameStage: 'Stage',
ffEndgameStageValue: 'Stage {id}',
ffEndgameStageKindPre: 'Pre-boss',
ffEndgameStageKindBoss: 'Boss',
ffEndgameStageKindHard: 'Hard mode',
ffEndgameStageId: 'stage_id {id}',
ffEndgamePreview: 'battle_config preview',
ffEndgameNoStages: 'No stage data for this mode',
ffEndgameUseCycle: 'Use the stage turn limit',
ffEndgameUseBuff: 'Use the stage buffs',
ffEndgameCycles: 'Cycles: {count}',
ffEndgameBlessings: 'Buffs: {count}',
ffEndgameMonsterCount: 'Monsters: {count}',
ffEndgameApply: '💾 Apply to battle_config',
ffEndgameApplySync: '🚀 Apply & sync',
ffEndgameReset: '↺ Reset to defaults',
ffEndgameResetDone: 'This mode was reset to its defaults',
ffEndgameSaving: 'Saving battle_config…',
ffEndgameSaved: 'battle_config saved locally',
ffEndgameSynced: 'Saved and synced to FireflyGO',
ffEndgameApplyError: 'Finish selecting a room before applying',
ffEndgameNoData: 'No FreeSR data yet — load or sync a save first',
ffEndgameSyncError: 'Sync failed: {error}',
ffEndgameCustomDescription: 'Build custom monster waves with the in-game monster_id. Values must match what FireflyGO accepts.',
ffEndgameAddWave: 'Add wave',
ffEndgameRemoveWave: 'Remove wave',
ffEndgameAddMonster: 'Add monster',
ffEndgameRemoveMonster: 'Remove monster',
ffEndgameMonsterId: 'Monster ID',
ffEndgameMonsterLevel: 'Level',
ffEndgameMonsterAmount: 'Amount',
ffEndgameCycleCount: 'Cycle count'
}
};
for (const [language, additions] of Object.entries(MODAL_AND_TOOL_TRANSLATIONS)) {