diff --git a/Css/main.css b/Css/main.css index e61d316..d4471e5 100644 --- a/Css/main.css +++ b/Css/main.css @@ -52,6 +52,8 @@ to { transform: translate(0, -5px); } } +body { margin: 0; } + .centered { position: fixed; top: 50%; left: 50%; transform: translate(-50%, -50%); text-align: center; } .hidden { opacity: 0; } @@ -98,6 +100,8 @@ #dialog-scroll img { height: 35px; } +#title-container { margin-bottom: 2px; } + #other-controls-container { display: flex; width: 550px; justify-content: center; } #select-mission { min-width: 0; } @@ -122,9 +126,11 @@ #mission-modal span { max-width: 100%; word-break: break-word; max-height: 120px; overflow: auto;} -#mission-modal .mission-title { text-align: center; } +#mission-modal .mission-title { font-weight: bold; text-align: center; } -#mission-modal #mission-ids { margin-top: auto; width: 100%; display: flex; justify-content: space-around; } +#mission-modal #mission-ids { margin-top: auto; width: 100%; display: flex; flex-direction: column; align-items: center; } + +#mission-modal #mission-ids div { display: flex; align-items: center; } #modal-buttons { bottom: 0; margin-top: 10px; width: 100%; display: flex; justify-content: space-between; } diff --git a/Images/hide_button.png b/Images/hide_button.png index e308170..66132ad 100644 Binary files a/Images/hide_button.png and b/Images/hide_button.png differ diff --git a/Images/skip_button.png b/Images/skip_button.png new file mode 100644 index 0000000..8f42d13 Binary files /dev/null and b/Images/skip_button.png differ diff --git a/Js/Common.js b/Js/Common.js index 04e61c8..0aa7842 100644 --- a/Js/Common.js +++ b/Js/Common.js @@ -45,6 +45,37 @@ class commonFunctions { }); } + static readQueryParameters() { + let params = {}; + let indexOfStart = window.location.href.indexOf("?"); + let toCheck = window.location.href.slice(indexOfStart + 1); + let name = ""; + let value = ""; + let nameStep = true; + for(let i = 0; i < toCheck.length; ++i) { + if(toCheck[i] === "=") { + name = name.toLowerCase(); + params[decodeURIComponent(name)] = ""; + nameStep = false + continue; + } + if(toCheck[i] === "&") { + params[name] = decodeURIComponent(value); + name = ""; + value = ""; + nameStep = true; + continue; + } + if(nameStep) { + name += toCheck[i]; + } else { + value += toCheck[i]; + } + } + params[name] = decodeURIComponent(value); + return params; + } + static readLine(line, headers) { if(line.startsWith('//')) { return {comment: line}; diff --git a/Js/Main.js b/Js/Main.js index 649123d..e26a736 100644 --- a/Js/Main.js +++ b/Js/Main.js @@ -13,8 +13,13 @@ const player = new Player(pixiApp, utage, textFunc, audio, shaders); const languages = ["eng", "jpn"]; let bodyLoaded = false; let utageLoaded = false; +let languagesLoaded = false; let selectedLang = "eng"; let currentMission = undefined; +let currentMissionMst = 0; +let currentMissionIndex = 0; +let currentMissionList = []; +let urlParams = {}; let screenw = Math.max(document.documentElement.clientWidth, window.innerWidth || 0); let screenh = Math.max(document.documentElement.clientHeight, window.innerHeight || 0); let screenSizeTimeout = undefined; @@ -44,14 +49,14 @@ function onBodyLoaded() { document.getElementById('loading-font').style.cssText = "display: none;"; loadLocalStorage(); } - if(utageLoaded) { + if(utageLoaded && languagesLoaded) { document.getElementById('loading-utage').style.cssText = "display: none;"; } - if(bodyLoaded && utageLoaded) { + if(bodyLoaded && utageLoaded && languagesLoaded) { document.getElementById('loading-container').style.cssText = "opacity: 0;"; onAllLoaded(); } else { - setTimeout(checkIsLoaded, 300); + setTimeout(checkIsLoaded, 200); } })(); @@ -65,6 +70,7 @@ function onAllLoaded(success) { document.getElementById('parent-container').style.cssText = "opacity: 1;"; onWindowResize(); window.addEventListener("resize", onWindowResize); + checkQueryParameters(); }, 0); } @@ -91,7 +97,13 @@ function loadLocalStorage() { if(languages.includes(lang)) { selectedLang = lang; } - utage.setTranslationLanguage(selectedLang, ''); + utage.setTranslationLanguage(selectedLang, '') + .then((success) => { + languagesLoaded = true; + }, (failure) => { + languagesLoaded = true; + console.log(failure); + }); } catch(error) { console.log(error); } @@ -107,11 +119,16 @@ function buildMissionSelectList() { opt.innerText = 'Select Mission'; } else { let m = utage.missionsList[i]; - if(!m.includes('MA3.5-')) { + //Only allowing 3.5 right now + if(!(m.MstId >= 104001 && m.MstId <= 104008)) { continue; } - opt.setAttribute('value', m); - opt.innerText = m.replace('|', ' - '); + opt.setAttribute('value', m.MstId); + let name = m.Name; + if(utage.missionTranslations[m.MstId]) { + name = utage.missionTranslations[m.MstId].Name || name; + } + opt.innerText = name; } selectBox.appendChild(opt); } @@ -129,27 +146,46 @@ function buildLanguageList() { selectBox.value = selectedLang; } +function checkQueryParameters() { + urlParams = commonFunctions.readQueryParameters(); + if(urlParams['mstid'] && urlParams['id'] && utage.groupedMissions[urlParams['mstid']] && utage.groupedMissions[urlParams['mstid']].Missions[urlParams['id']]) { + missionChanged(urlParams['mstid'], urlParams['id']); + } +} + function missionDropDownChanged(event) { if(!event || !event.currentTarget || !event.currentTarget.value || event.currentTarget.value === '{Select}') { return; } let cont = document.getElementById("modal-container"); - let misId = event.currentTarget.value.split('|')[0]; - let mis = utage.availableMissions[misId]; + let misId = event.currentTarget.value; + let mis = utage.groupedMissions[misId]; if(!mis) { console.log(`Mission ${misId} not found`); return; } - cont.innerHTML = '' + - ''; + let name = mis.Name; + let summary = mis.SummaryText; + if(utage.missionTranslations[mis.MstId]) { + name = utage.missionTranslations[mis.MstId].Name || name; + summary = utage.missionTranslations[mis.MstId].SummaryText || summary; + } + let chapterSelect = '
Chapter Select:
'; + cont.innerHTML = ` + `; document.getElementById("click-catcher").style.cssText = 'display: flex;'; cont.style.cssText = 'display: flex;'; } @@ -166,7 +202,15 @@ function closeMissionModal(event, wasStarted) { cont.innerHTML = ''; } -function missionChanged(value) { +function missionChanged(mstId, value) { + let mst = utage.groupedMissions[mstId]; + let name = mst.Name; + if(utage.missionTranslations[mstId]) { + name = utage.missionTranslations[mstId].Name || name; + } + if(!value) { + value = document.getElementById("ChapterSelect").value; + } if(!audio) { audio = new audioController(utage); audio.changeVolume(volume); @@ -175,27 +219,33 @@ function missionChanged(value) { } player.resetAll() .then((success) => { - let newMission = utage.availableMissions[value]; + let newMission = mst.Missions[value]; + checkMissionList(mst.Missions, value); currentMission = newMission; + currentMissionMst = mstId; let promises = [ utage.parseMissionFile(`${utage.rootDirectory}XDUData/${newMission.Path.replace('Asset/', '').replace('.utage', '').replace('.tsv', '_t.tsv')}`), utage.loadMissionTranslation(`${utage.rootDirectory}XDUData/${newMission.Path.replace('Asset/', '').replace('.utage', '').replace('.tsv', `_translations_${selectedLang}.json`)}`) ]; closeMissionModal(undefined, true); - Promise.all(promises) .then((success) => { - let res = player.playFile() + document.getElementById("playing-title").innerText = `${name} (${value})`; + player.playFile() .then((success) => { - player.resetAll(); - currentMission = undefined; + if(currentMissionIndex !== currentMissionList.length - 1) { + missionChanged(currentMissionMst, mst.Missions[currentMissionList[currentMissionIndex+1]].Id) + } else { + player.resetAll(); + resetMissions(); + } }, (failure) => { player.resetAll(); - currentMission = undefined; + resetMissions(); console.log(failure); }); }, (failure) => { - currentMission = undefined; + resetMissions(); console.log(failure); }); }, (failure) => { @@ -213,6 +263,33 @@ function languageChanged(event) { utage.setTranslationLanguage(selectedLang, missionPath); } +function checkMissionList(missions, currentvalue) { + currentMissionList = []; + let i = 0; + for(var m of Object.keys(missions)) { + currentMissionList.push(m); + if(m === currentvalue) { + currentMissionIndex = i; + } + ++i; + } + if(currentMissionIndex + 1 === currentMissionList.length) { + document.getElementById("skip-button").style.cssText = "display: none;"; + } else { + document.getElementById("skip-button").style.cssText = "display: inline-block;"; + } +} + +function resetMissions() { + currentMissionIndex = 0; + currentMissionList = []; + currentMission = undefined; + currentMissionMst = 0; + document.getElementById("skip-button").style.cssText = "display: inline-block;"; + document.getElementById("playing-title").innerText = 'None'; + document.getElementById('select-mission').value = '{Select}'; +} + function onMainClick(event) { player.onMainClick(event); } @@ -221,6 +298,16 @@ function hideUiClicked(event) { player.hideUiClicked(event); } +function skipClicked(event) { + if(player.uiHidden) { + player.hideUiClicked(event); + } else if(player.runEvent && currentMissionIndex !== currentMissionList.length - 1) { + event.preventDefault(); + event.stopPropagation(); + missionChanged(currentMissionMst, utage.groupedMissions[currentMissionMst].Missions[currentMissionList[currentMissionIndex+1]].Id); + } +} + function dialogScrollUp(event) { event.preventDefault(); event.stopPropagation(); @@ -263,6 +350,7 @@ function onWindowResize(event) { screenw = Math.max(document.documentElement.clientWidth, window.innerWidth || 0); screenh = Math.max(document.documentElement.clientHeight, window.innerHeight || 0); let topContainerHeight = document.getElementById('other-controls-container').offsetHeight + 6; + topContainerHeight += document.getElementById('title-container').offsetHeight; let res = commonFunctions.getNewResolution(baseDimensions, screenw, screenh, topContainerHeight); player.updateResolution(res); document.getElementById('app-container').style.cssText = `width: ${res.width}px; height: ${res.height}px;`; diff --git a/Js/Player.js b/Js/Player.js index edf704c..88e90d4 100644 --- a/Js/Player.js +++ b/Js/Player.js @@ -426,6 +426,7 @@ class Player { processCommand(delta) { try { let cur = this.currentCommand; + //No seriously this is a thing they did if(cur.Arg2 === '<Off>') { cur.Arg2 = ''; } diff --git a/Js/Translations/XduMissionsNames_eng.json b/Js/Translations/XduMissionsNames_eng.json new file mode 100644 index 0000000..f53c78e --- /dev/null +++ b/Js/Translations/XduMissionsNames_eng.json @@ -0,0 +1,1462 @@ +{ + "101001": { + "Name": "", + "SummaryText": "" + }, + "101002": { + "Name": "", + "SummaryText": "" + }, + "101003": { + "Name": "", + "SummaryText": "" + }, + "101004": { + "Name": "", + "SummaryText": "" + }, + "101005": { + "Name": "", + "SummaryText": "" + }, + "101006": { + "Name": "", + "SummaryText": "" + }, + "101007": { + "Name": "", + "SummaryText": "" + }, + "101008": { + "Name": "", + "SummaryText": "" + }, + "101009": { + "Name": "", + "SummaryText": "" + }, + "101010": { + "Name": "", + "SummaryText": "" + }, + "101011": { + "Name": "", + "SummaryText": "" + }, + "101012": { + "Name": "", + "SummaryText": "" + }, + "101013": { + "Name": "", + "SummaryText": "" + }, + "101014": { + "Name": "", + "SummaryText": "" + }, + "101015": { + "Name": "", + "SummaryText": "" + }, + "101016": { + "Name": "", + "SummaryText": "" + }, + "101017": { + "Name": "", + "SummaryText": "" + }, + "101018": { + "Name": "", + "SummaryText": "" + }, + "101019": { + "Name": "", + "SummaryText": "" + }, + "101020": { + "Name": "", + "SummaryText": "" + }, + "101041": { + "Name": "", + "SummaryText": "" + }, + "101042": { + "Name": "", + "SummaryText": "" + }, + "102001": { + "Name": "", + "SummaryText": "" + }, + "102002": { + "Name": "", + "SummaryText": "" + }, + "102003": { + "Name": "", + "SummaryText": "" + }, + "102004": { + "Name": "", + "SummaryText": "" + }, + "102005": { + "Name": "", + "SummaryText": "" + }, + "102006": { + "Name": "", + "SummaryText": "" + }, + "102007": { + "Name": "", + "SummaryText": "" + }, + "102008": { + "Name": "", + "SummaryText": "" + }, + "102009": { + "Name": "", + "SummaryText": "" + }, + "102010": { + "Name": "", + "SummaryText": "" + }, + "102011": { + "Name": "", + "SummaryText": "" + }, + "102012": { + "Name": "", + "SummaryText": "" + }, + "102013": { + "Name": "", + "SummaryText": "" + }, + "102014": { + "Name": "", + "SummaryText": "" + }, + "102015": { + "Name": "", + "SummaryText": "" + }, + "102016": { + "Name": "", + "SummaryText": "" + }, + "102017": { + "Name": "", + "SummaryText": "" + }, + "102018": { + "Name": "", + "SummaryText": "" + }, + "102019": { + "Name": "", + "SummaryText": "" + }, + "102020": { + "Name": "", + "SummaryText": "" + }, + "102041": { + "Name": "", + "SummaryText": "" + }, + "102042": { + "Name": "", + "SummaryText": "" + }, + "103001": { + "Name": "", + "SummaryText": "" + }, + "103002": { + "Name": "", + "SummaryText": "" + }, + "103003": { + "Name": "", + "SummaryText": "" + }, + "103004": { + "Name": "", + "SummaryText": "" + }, + "103005": { + "Name": "", + "SummaryText": "" + }, + "103006": { + "Name": "", + "SummaryText": "" + }, + "103007": { + "Name": "", + "SummaryText": "" + }, + "103008": { + "Name": "", + "SummaryText": "" + }, + "103009": { + "Name": "", + "SummaryText": "" + }, + "103010": { + "Name": "", + "SummaryText": "" + }, + "103011": { + "Name": "", + "SummaryText": "" + }, + "103012": { + "Name": "", + "SummaryText": "" + }, + "103013": { + "Name": "", + "SummaryText": "" + }, + "103014": { + "Name": "", + "SummaryText": "" + }, + "103015": { + "Name": "", + "SummaryText": "" + }, + "103016": { + "Name": "", + "SummaryText": "" + }, + "103017": { + "Name": "", + "SummaryText": "" + }, + "103018": { + "Name": "", + "SummaryText": "" + }, + "103019": { + "Name": "", + "SummaryText": "" + }, + "103020": { + "Name": "", + "SummaryText": "" + }, + "103041": { + "Name": "", + "SummaryText": "" + }, + "103042": { + "Name": "", + "SummaryText": "" + }, + "104001": { + "Name": "Symphogear 3.5 - 1: Warm-Up", + "SummaryText": "" + }, + "104002": { + "Name": "", + "SummaryText": "" + }, + "104003": { + "Name": "", + "SummaryText": "" + }, + "104004": { + "Name": "", + "SummaryText": "" + }, + "104005": { + "Name": "", + "SummaryText": "" + }, + "104006": { + "Name": "", + "SummaryText": "" + }, + "104007": { + "Name": "", + "SummaryText": "" + }, + "104008": { + "Name": "", + "SummaryText": "" + }, + "201001": { + "Name": "", + "SummaryText": "" + }, + "201002": { + "Name": "", + "SummaryText": "" + }, + "201003": { + "Name": "", + "SummaryText": "" + }, + "201004": { + "Name": "", + "SummaryText": "" + }, + "201005": { + "Name": "", + "SummaryText": "" + }, + "201006": { + "Name": "", + "SummaryText": "" + }, + "201007": { + "Name": "", + "SummaryText": "" + }, + "201008": { + "Name": "", + "SummaryText": "" + }, + "201009": { + "Name": "", + "SummaryText": "" + }, + "201010": { + "Name": "", + "SummaryText": "" + }, + "201011": { + "Name": "", + "SummaryText": "" + }, + "201012": { + "Name": "", + "SummaryText": "" + }, + "201015": { + "Name": "", + "SummaryText": "" + }, + "201016": { + "Name": "", + "SummaryText": "" + }, + "201017": { + "Name": "", + "SummaryText": "" + }, + "201018": { + "Name": "", + "SummaryText": "" + }, + "201019": { + "Name": "", + "SummaryText": "" + }, + "201020": { + "Name": "", + "SummaryText": "" + }, + "201701": { + "Name": "", + "SummaryText": "" + }, + "201801": { + "Name": "", + "SummaryText": "" + }, + "201802": { + "Name": "", + "SummaryText": "" + }, + "201803": { + "Name": "", + "SummaryText": "" + }, + "201804": { + "Name": "", + "SummaryText": "" + }, + "201805": { + "Name": "", + "SummaryText": "" + }, + "201806": { + "Name": "", + "SummaryText": "" + }, + "202001": { + "Name": "", + "SummaryText": "" + }, + "202002": { + "Name": "", + "SummaryText": "" + }, + "202003": { + "Name": "", + "SummaryText": "" + }, + "202004": { + "Name": "", + "SummaryText": "" + }, + "202005": { + "Name": "", + "SummaryText": "" + }, + "202006": { + "Name": "", + "SummaryText": "" + }, + "202007": { + "Name": "", + "SummaryText": "" + }, + "202008": { + "Name": "", + "SummaryText": "" + }, + "202009": { + "Name": "", + "SummaryText": "" + }, + "202012": { + "Name": "", + "SummaryText": "" + }, + "202013": { + "Name": "", + "SummaryText": "" + }, + "202014": { + "Name": "", + "SummaryText": "" + }, + "202016": { + "Name": "", + "SummaryText": "" + }, + "202017": { + "Name": "", + "SummaryText": "" + }, + "202018": { + "Name": "", + "SummaryText": "" + }, + "202019": { + "Name": "", + "SummaryText": "" + }, + "202020": { + "Name": "", + "SummaryText": "" + }, + "202021": { + "Name": "", + "SummaryText": "" + }, + "202022": { + "Name": "", + "SummaryText": "" + }, + "202023": { + "Name": "", + "SummaryText": "" + }, + "202024": { + "Name": "", + "SummaryText": "" + }, + "202025": { + "Name": "", + "SummaryText": "" + }, + "202026": { + "Name": "", + "SummaryText": "" + }, + "202027": { + "Name": "", + "SummaryText": "" + }, + "202028": { + "Name": "", + "SummaryText": "" + }, + "202029": { + "Name": "", + "SummaryText": "" + }, + "202030": { + "Name": "", + "SummaryText": "" + }, + "202031": { + "Name": "", + "SummaryText": "" + }, + "202032": { + "Name": "", + "SummaryText": "" + }, + "202033": { + "Name": "", + "SummaryText": "" + }, + "202034": { + "Name": "", + "SummaryText": "" + }, + "202035": { + "Name": "", + "SummaryText": "" + }, + "202036": { + "Name": "", + "SummaryText": "" + }, + "202037": { + "Name": "", + "SummaryText": "" + }, + "202038": { + "Name": "", + "SummaryText": "" + }, + "202039": { + "Name": "", + "SummaryText": "" + }, + "202040": { + "Name": "", + "SummaryText": "" + }, + "202041": { + "Name": "", + "SummaryText": "" + }, + "202042": { + "Name": "", + "SummaryText": "" + }, + "202043": { + "Name": "", + "SummaryText": "" + }, + "202044": { + "Name": "", + "SummaryText": "" + }, + "202045": { + "Name": "", + "SummaryText": "" + }, + "202047": { + "Name": "", + "SummaryText": "" + }, + "202048": { + "Name": "", + "SummaryText": "" + }, + "202049": { + "Name": "", + "SummaryText": "" + }, + "202050": { + "Name": "", + "SummaryText": "" + }, + "202051": { + "Name": "", + "SummaryText": "" + }, + "202052": { + "Name": "", + "SummaryText": "" + }, + "202053": { + "Name": "", + "SummaryText": "" + }, + "202054": { + "Name": "", + "SummaryText": "" + }, + "202055": { + "Name": "", + "SummaryText": "" + }, + "202056": { + "Name": "", + "SummaryText": "" + }, + "202057": { + "Name": "", + "SummaryText": "" + }, + "202058": { + "Name": "", + "SummaryText": "" + }, + "202059": { + "Name": "", + "SummaryText": "" + }, + "202060": { + "Name": "", + "SummaryText": "" + }, + "202061": { + "Name": "", + "SummaryText": "" + }, + "202062": { + "Name": "", + "SummaryText": "" + }, + "202063": { + "Name": "", + "SummaryText": "" + }, + "202064": { + "Name": "", + "SummaryText": "" + }, + "202065": { + "Name": "", + "SummaryText": "" + }, + "202066": { + "Name": "", + "SummaryText": "" + }, + "202067": { + "Name": "", + "SummaryText": "" + }, + "203001": { + "Name": "", + "SummaryText": "" + }, + "203002": { + "Name": "", + "SummaryText": "" + }, + "203003": { + "Name": "", + "SummaryText": "" + }, + "203004": { + "Name": "", + "SummaryText": "" + }, + "203005": { + "Name": "", + "SummaryText": "" + }, + "203006": { + "Name": "", + "SummaryText": "" + }, + "203007": { + "Name": "", + "SummaryText": "" + }, + "203008": { + "Name": "", + "SummaryText": "" + }, + "203009": { + "Name": "", + "SummaryText": "" + }, + "203010": { + "Name": "", + "SummaryText": "" + }, + "203011": { + "Name": "", + "SummaryText": "" + }, + "203012": { + "Name": "", + "SummaryText": "" + }, + "203013": { + "Name": "", + "SummaryText": "" + }, + "203014": { + "Name": "", + "SummaryText": "" + }, + "203015": { + "Name": "", + "SummaryText": "" + }, + "203016": { + "Name": "", + "SummaryText": "" + }, + "203017": { + "Name": "", + "SummaryText": "" + }, + "203018": { + "Name": "", + "SummaryText": "" + }, + "203019": { + "Name": "", + "SummaryText": "" + }, + "203020": { + "Name": "", + "SummaryText": "" + }, + "203021": { + "Name": "", + "SummaryText": "" + }, + "203022": { + "Name": "", + "SummaryText": "" + }, + "203023": { + "Name": "", + "SummaryText": "" + }, + "203024": { + "Name": "", + "SummaryText": "" + }, + "203025": { + "Name": "", + "SummaryText": "" + }, + "203026": { + "Name": "", + "SummaryText": "" + }, + "203027": { + "Name": "", + "SummaryText": "" + }, + "203028": { + "Name": "", + "SummaryText": "" + }, + "203029": { + "Name": "", + "SummaryText": "" + }, + "203030": { + "Name": "", + "SummaryText": "" + }, + "203031": { + "Name": "", + "SummaryText": "" + }, + "203033": { + "Name": "", + "SummaryText": "" + }, + "203034": { + "Name": "", + "SummaryText": "" + }, + "203035": { + "Name": "", + "SummaryText": "" + }, + "203036": { + "Name": "", + "SummaryText": "" + }, + "304001": { + "Name": "", + "SummaryText": "" + }, + "304002": { + "Name": "", + "SummaryText": "" + }, + "304003": { + "Name": "", + "SummaryText": "" + }, + "304004": { + "Name": "", + "SummaryText": "" + }, + "304005": { + "Name": "", + "SummaryText": "" + }, + "304006": { + "Name": "", + "SummaryText": "" + }, + "304007": { + "Name": "", + "SummaryText": "" + }, + "304008": { + "Name": "", + "SummaryText": "" + }, + "304009": { + "Name": "", + "SummaryText": "" + }, + "304010": { + "Name": "", + "SummaryText": "" + }, + "304011": { + "Name": "", + "SummaryText": "" + }, + "304012": { + "Name": "", + "SummaryText": "" + }, + "304013": { + "Name": "", + "SummaryText": "" + }, + "304014": { + "Name": "", + "SummaryText": "" + }, + "304015": { + "Name": "", + "SummaryText": "" + }, + "307101": { + "Name": "", + "SummaryText": "" + }, + "307102": { + "Name": "", + "SummaryText": "" + }, + "307103": { + "Name": "", + "SummaryText": "" + }, + "307104": { + "Name": "", + "SummaryText": "" + }, + "308001": { + "Name": "", + "SummaryText": "" + }, + "308007": { + "Name": "", + "SummaryText": "" + }, + "308008": { + "Name": "", + "SummaryText": "" + }, + "309001": { + "Name": "", + "SummaryText": "" + }, + "309002": { + "Name": "", + "SummaryText": "" + }, + "309003": { + "Name": "", + "SummaryText": "" + }, + "309004": { + "Name": "", + "SummaryText": "" + }, + "309005": { + "Name": "", + "SummaryText": "" + }, + "309006": { + "Name": "", + "SummaryText": "" + }, + "309007": { + "Name": "", + "SummaryText": "" + }, + "309008": { + "Name": "", + "SummaryText": "" + }, + "309009": { + "Name": "", + "SummaryText": "" + }, + "309010": { + "Name": "", + "SummaryText": "" + }, + "309011": { + "Name": "", + "SummaryText": "" + }, + "309012": { + "Name": "", + "SummaryText": "" + }, + "309013": { + "Name": "", + "SummaryText": "" + }, + "309014": { + "Name": "", + "SummaryText": "" + }, + "309015": { + "Name": "", + "SummaryText": "" + }, + "311001": { + "Name": "", + "SummaryText": "" + }, + "311005": { + "Name": "", + "SummaryText": "" + }, + "313001": { + "Name": "", + "SummaryText": "" + }, + "313002": { + "Name": "", + "SummaryText": "" + }, + "313003": { + "Name": "", + "SummaryText": "" + }, + "313004": { + "Name": "", + "SummaryText": "" + }, + "313005": { + "Name": "", + "SummaryText": "" + }, + "313006": { + "Name": "", + "SummaryText": "" + }, + "313007": { + "Name": "", + "SummaryText": "" + }, + "313008": { + "Name": "", + "SummaryText": "" + }, + "313009": { + "Name": "", + "SummaryText": "" + }, + "313010": { + "Name": "", + "SummaryText": "" + }, + "313011": { + "Name": "", + "SummaryText": "" + }, + "313012": { + "Name": "", + "SummaryText": "" + }, + "313013": { + "Name": "", + "SummaryText": "" + }, + "313014": { + "Name": "", + "SummaryText": "" + }, + "313015": { + "Name": "", + "SummaryText": "" + }, + "317001": { + "Name": "", + "SummaryText": "" + }, + "317002": { + "Name": "", + "SummaryText": "" + }, + "317003": { + "Name": "", + "SummaryText": "" + }, + "319001": { + "Name": "", + "SummaryText": "" + }, + "319002": { + "Name": "", + "SummaryText": "" + }, + "319003": { + "Name": "", + "SummaryText": "" + }, + "321001": { + "Name": "", + "SummaryText": "" + }, + "321002": { + "Name": "", + "SummaryText": "" + }, + "321003": { + "Name": "", + "SummaryText": "" + }, + "321004": { + "Name": "", + "SummaryText": "" + }, + "321005": { + "Name": "", + "SummaryText": "" + }, + "321006": { + "Name": "", + "SummaryText": "" + }, + "321007": { + "Name": "", + "SummaryText": "" + }, + "321008": { + "Name": "", + "SummaryText": "" + }, + "321009": { + "Name": "", + "SummaryText": "" + }, + "321010": { + "Name": "", + "SummaryText": "" + }, + "322055": { + "Name": "", + "SummaryText": "" + }, + "322056": { + "Name": "", + "SummaryText": "" + }, + "322057": { + "Name": "", + "SummaryText": "" + }, + "323055": { + "Name": "", + "SummaryText": "" + }, + "323056": { + "Name": "", + "SummaryText": "" + }, + "323057": { + "Name": "", + "SummaryText": "" + }, + "324001": { + "Name": "", + "SummaryText": "" + }, + "324002": { + "Name": "", + "SummaryText": "" + }, + "324003": { + "Name": "", + "SummaryText": "" + }, + "324004": { + "Name": "", + "SummaryText": "" + }, + "324005": { + "Name": "", + "SummaryText": "" + }, + "324006": { + "Name": "", + "SummaryText": "" + }, + "324007": { + "Name": "", + "SummaryText": "" + }, + "324008": { + "Name": "", + "SummaryText": "" + }, + "324009": { + "Name": "", + "SummaryText": "" + }, + "324010": { + "Name": "", + "SummaryText": "" + }, + "324011": { + "Name": "", + "SummaryText": "" + }, + "324012": { + "Name": "", + "SummaryText": "" + }, + "324013": { + "Name": "", + "SummaryText": "" + }, + "324014": { + "Name": "", + "SummaryText": "" + }, + "324015": { + "Name": "", + "SummaryText": "" + }, + "325001": { + "Name": "", + "SummaryText": "" + }, + "325002": { + "Name": "", + "SummaryText": "" + }, + "325003": { + "Name": "", + "SummaryText": "" + }, + "325004": { + "Name": "", + "SummaryText": "" + }, + "325005": { + "Name": "", + "SummaryText": "" + }, + "325006": { + "Name": "", + "SummaryText": "" + }, + "325007": { + "Name": "", + "SummaryText": "" + }, + "325008": { + "Name": "", + "SummaryText": "" + }, + "325009": { + "Name": "", + "SummaryText": "" + }, + "325010": { + "Name": "", + "SummaryText": "" + }, + "325011": { + "Name": "", + "SummaryText": "" + }, + "325012": { + "Name": "", + "SummaryText": "" + }, + "325013": { + "Name": "", + "SummaryText": "" + }, + "325014": { + "Name": "", + "SummaryText": "" + }, + "325015": { + "Name": "", + "SummaryText": "" + }, + "326001": { + "Name": "", + "SummaryText": "" + }, + "326002": { + "Name": "", + "SummaryText": "" + }, + "326003": { + "Name": "", + "SummaryText": "" + }, + "327001": { + "Name": "", + "SummaryText": "" + }, + "327002": { + "Name": "", + "SummaryText": "" + }, + "327003": { + "Name": "", + "SummaryText": "" + }, + "328001": { + "Name": "", + "SummaryText": "" + }, + "328002": { + "Name": "", + "SummaryText": "" + }, + "328003": { + "Name": "", + "SummaryText": "" + }, + "328004": { + "Name": "", + "SummaryText": "" + }, + "328005": { + "Name": "", + "SummaryText": "" + }, + "328006": { + "Name": "", + "SummaryText": "" + }, + "328007": { + "Name": "", + "SummaryText": "" + }, + "328008": { + "Name": "", + "SummaryText": "" + }, + "328009": { + "Name": "", + "SummaryText": "" + }, + "328010": { + "Name": "", + "SummaryText": "" + }, + "330001": { + "Name": "", + "SummaryText": "" + }, + "330002": { + "Name": "", + "SummaryText": "" + }, + "330003": { + "Name": "", + "SummaryText": "" + }, + "331001": { + "Name": "", + "SummaryText": "" + }, + "331002": { + "Name": "", + "SummaryText": "" + }, + "331003": { + "Name": "", + "SummaryText": "" + }, + "332001": { + "Name": "", + "SummaryText": "" + }, + "332002": { + "Name": "", + "SummaryText": "" + }, + "332003": { + "Name": "", + "SummaryText": "" + }, + "332004": { + "Name": "", + "SummaryText": "" + }, + "332005": { + "Name": "", + "SummaryText": "" + }, + "332006": { + "Name": "", + "SummaryText": "" + }, + "332007": { + "Name": "", + "SummaryText": "" + }, + "332008": { + "Name": "", + "SummaryText": "" + }, + "332009": { + "Name": "", + "SummaryText": "" + }, + "332010": { + "Name": "", + "SummaryText": "" + }, + "332030": { + "Name": "", + "SummaryText": "" + }, + "333001": { + "Name": "", + "SummaryText": "" + }, + "333002": { + "Name": "", + "SummaryText": "" + }, + "333003": { + "Name": "", + "SummaryText": "" + }, + "335001": { + "Name": "", + "SummaryText": "" + }, + "335002": { + "Name": "", + "SummaryText": "" + }, + "335003": { + "Name": "", + "SummaryText": "" + }, + "335004": { + "Name": "", + "SummaryText": "" + }, + "335005": { + "Name": "", + "SummaryText": "" + }, + "335006": { + "Name": "", + "SummaryText": "" + }, + "335007": { + "Name": "", + "SummaryText": "" + }, + "335008": { + "Name": "", + "SummaryText": "" + }, + "335009": { + "Name": "", + "SummaryText": "" + }, + "335010": { + "Name": "", + "SummaryText": "" + }, + "335011": { + "Name": "", + "SummaryText": "" + }, + "335012": { + "Name": "", + "SummaryText": "" + }, + "335013": { + "Name": "", + "SummaryText": "" + }, + "335014": { + "Name": "", + "SummaryText": "" + }, + "335015": { + "Name": "", + "SummaryText": "" + }, + "336001": { + "Name": "", + "SummaryText": "" + }, + "336002": { + "Name": "", + "SummaryText": "" + }, + "336003": { + "Name": "", + "SummaryText": "" + }, + "336004": { + "Name": "", + "SummaryText": "" + }, + "336005": { + "Name": "", + "SummaryText": "" + }, + "336006": { + "Name": "", + "SummaryText": "" + }, + "336007": { + "Name": "", + "SummaryText": "" + }, + "336008": { + "Name": "", + "SummaryText": "" + }, + "336009": { + "Name": "", + "SummaryText": "" + }, + "336010": { + "Name": "", + "SummaryText": "" + }, + "336016": { + "Name": "", + "SummaryText": "" + } +} \ No newline at end of file diff --git a/Js/Translations/XduMissionsNames_jpn.json b/Js/Translations/XduMissionsNames_jpn.json new file mode 100644 index 0000000..fb58662 --- /dev/null +++ b/Js/Translations/XduMissionsNames_jpn.json @@ -0,0 +1,1462 @@ +{ + "101001": { + "Name": "MA1-1:戦場の歌姫", + "SummaryText": "" + }, + "101002": { + "Name": "MA1-2:覚醒の鼓動", + "SummaryText": "" + }, + "101003": { + "Name": "MA1-3:雑音と不協和音と", + "SummaryText": "" + }, + "101004": { + "Name": "MA1-4:夜にすれ違う・前編", + "SummaryText": "" + }, + "101005": { + "Name": "MA1-5:夜にすれ違う・後編", + "SummaryText": "" + }, + "101006": { + "Name": "MA1-6:落涙", + "SummaryText": "" + }, + "101007": { + "Name": "MA1-7:なお昏き深淵の底から", + "SummaryText": "" + }, + "101008": { + "Name": "MA1-8:デュランダル起動", + "SummaryText": "" + }, + "101009": { + "Name": "MA1-9:兆しの行方は", + "SummaryText": "" + }, + "101010": { + "Name": "MA1-10:撃ちてし止まぬ運命のもとに・前編", + "SummaryText": "" + }, + "101011": { + "Name": "MA1-11:撃ちてし止まぬ運命のもとに・後編", + "SummaryText": "" + }, + "101012": { + "Name": "MA1-12:陽だまりに翳りなく・前編", + "SummaryText": "" + }, + "101013": { + "Name": "MA1-13:陽だまりに翳りなく・後編", + "SummaryText": "" + }, + "101014": { + "Name": "MA1-14:防人の歌", + "SummaryText": "" + }, + "101015": { + "Name": "MA1-15:繋いだ手だけが紡ぐもの・前編", + "SummaryText": "" + }, + "101016": { + "Name": "MA1-16:繋いだ手だけが紡ぐもの・後編", + "SummaryText": "" + }, + "101017": { + "Name": "MA1-17:月を穿つ", + "SummaryText": "" + }, + "101018": { + "Name": "MA1-18:シンフォギア", + "SummaryText": "" + }, + "101019": { + "Name": "MA1-19:エクスドライブ", + "SummaryText": "" + }, + "101020": { + "Name": "MA1-20:流れ星、墜ちて燃えて尽きて、そして―", + "SummaryText": "" + }, + "101041": { + "Name": "MA1-21:クリスの入学①", + "SummaryText": "" + }, + "101042": { + "Name": "MA1-22:クリスの入学②", + "SummaryText": "" + }, + "102001": { + "Name": "MA2-1:不穏な足音", + "SummaryText": "" + }, + "102002": { + "Name": "MA2-2:ガングニールの少女", + "SummaryText": "" + }, + "102003": { + "Name": "MA2-3:胸に力と偽りと", + "SummaryText": "" + }, + "102004": { + "Name": "MA2-4:装者同士の戦い", + "SummaryText": "" + }, + "102005": { + "Name": "MA2-5:S2CA", + "SummaryText": "" + }, + "102006": { + "Name": "MA2-6:終焉を望む者、終焉に臨む者", + "SummaryText": "" + }, + "102007": { + "Name": "MA2-7:フィーネの再誕", + "SummaryText": "" + }, + "102008": { + "Name": "MA2-8:あたしの帰る場所", + "SummaryText": "" + }, + "102009": { + "Name": "MA2-9:血飛沫の小夜曲・前編", + "SummaryText": "" + }, + "102010": { + "Name": "MA2-10:血飛沫の小夜曲・後編", + "SummaryText": "" + }, + "102011": { + "Name": "MA2-11:君でいられなくなるキミに", + "SummaryText": "" + }, + "102012": { + "Name": "MA2-12:守りたい笑顔", + "SummaryText": "" + }, + "102013": { + "Name": "MA2-13:繋ぐ手と手…戸惑うわたしのため…", + "SummaryText": "" + }, + "102014": { + "Name": "MA2-14:消えた陽だまり", + "SummaryText": "" + }, + "102015": { + "Name": "MA2-15:英雄故事", + "SummaryText": "" + }, + "102016": { + "Name": "MA2-16:愛の力", + "SummaryText": "" + }, + "102017": { + "Name": "MA2-17:喪失までのカウントダウン", + "SummaryText": "" + }, + "102018": { + "Name": "MA2-18:ディスティニーアーク", + "SummaryText": "" + }, + "102019": { + "Name": "MA2-19:撃槍", + "SummaryText": "" + }, + "102020": { + "Name": "MA2-20:遥か彼方、星が音楽となった…かの日", + "SummaryText": "" + }, + "102041": { + "Name": "MA2-21:束の間の平和①", + "SummaryText": "" + }, + "102042": { + "Name": "MA2-22:束の間の平和②", + "SummaryText": "" + }, + "103001": { + "Name": "MA3-1:S.O.N.G.始動", + "SummaryText": "" + }, + "103002": { + "Name": "MA3-2:奇跡の殺戮者", + "SummaryText": "" + }, + "103003": { + "Name": "MA3-3:世界を壊す──その前に", + "SummaryText": "" + }, + "103004": { + "Name": "MA3-4:装者たちの黄昏", + "SummaryText": "" + }, + "103005": { + "Name": "MA3-5:ガングニール、再び", + "SummaryText": "" + }, + "103006": { + "Name": "MA3-6:Project IGNITE", + "SummaryText": "" + }, + "103007": { + "Name": "MA3-7:Edge Works", + "SummaryText": "" + }, + "103008": { + "Name": "MA3-8:抜剣", + "SummaryText": "" + }, + "103009": { + "Name": "MA3-9:輝きを継ぐ、君らしく", + "SummaryText": "" + }, + "103010": { + "Name": "MA3-10:向き合う勇気・前編", + "SummaryText": "" + }, + "103011": { + "Name": "MA3-11:向き合う勇気・後編", + "SummaryText": "" + }, + "103012": { + "Name": "MA3-12:夢の途中・前編", + "SummaryText": "" + }, + "103013": { + "Name": "MA3-13:夢の途中・後編", + "SummaryText": "" + }, + "103014": { + "Name": "MA3-14:英雄再び", + "SummaryText": "" + }, + "103015": { + "Name": "MA3-15:こんなにも、残酷だけど", + "SummaryText": "" + }, + "103016": { + "Name": "MA3-16:へいき、へっちゃら", + "SummaryText": "" + }, + "103017": { + "Name": "MA3-17:世界を壊す歌", + "SummaryText": "" + }, + "103018": { + "Name": "MA3-18:GX", + "SummaryText": "" + }, + "103019": { + "Name": "MA3-19:奇跡のカタチ", + "SummaryText": "" + }, + "103020": { + "Name": "MA3-20:正義を信じて、握り締めて", + "SummaryText": "" + }, + "103041": { + "Name": "MA3-21:お見送り①", + "SummaryText": "" + }, + "103042": { + "Name": "MA3-22:お見送り②", + "SummaryText": "" + }, + "104001": { + "Name": "MA3.5-1:ウォームアップ", + "SummaryText": "" + }, + "104002": { + "Name": "MA3.5-2:新たな脅威", + "SummaryText": "" + }, + "104003": { + "Name": "MA3.5-3:錬金術の足跡", + "SummaryText": "" + }, + "104004": { + "Name": "MA3.5-4:黄金に刻まれた呪い", + "SummaryText": "" + }, + "104005": { + "Name": "MA3.5-5:歌姫たちの日常", + "SummaryText": "" + }, + "104006": { + "Name": "MA3.5-6:蠢くもの", + "SummaryText": "" + }, + "104007": { + "Name": "MA3.5-7:繋がる想い、時を越えて", + "SummaryText": "" + }, + "104008": { + "Name": "MA3.5-8:エピローグ", + "SummaryText": "" + }, + "201001": { + "Name": "SI1-1-1:立花響という少女①", + "SummaryText": "" + }, + "201002": { + "Name": "SI1-1-2:立花響という少女②", + "SummaryText": "" + }, + "201003": { + "Name": "SI1-1-3:防人の誇り①", + "SummaryText": "" + }, + "201004": { + "Name": "SI1-1-4:防人の誇り②", + "SummaryText": "" + }, + "201005": { + "Name": "SI1-1-5:知らない街①", + "SummaryText": "" + }, + "201006": { + "Name": "SI1-1-6:知らない街②", + "SummaryText": "" + }, + "201007": { + "Name": "SI1-1-7:お昼当番①", + "SummaryText": "" + }, + "201008": { + "Name": "SI1-1-8:お昼当番②", + "SummaryText": "" + }, + "201009": { + "Name": "SI1-1-9:マリアの心配事①", + "SummaryText": "" + }, + "201010": { + "Name": "SI1-1-10:マリアの心配事②", + "SummaryText": "" + }, + "201011": { + "Name": "SI1-1-11:おるすばん①", + "SummaryText": "" + }, + "201012": { + "Name": "SI1-1-12:おるすばん②", + "SummaryText": "" + }, + "201015": { + "Name": "SI1-1-13:先輩と宿題①", + "SummaryText": "" + }, + "201016": { + "Name": "SI1-1-14:先輩と宿題②", + "SummaryText": "" + }, + "201017": { + "Name": "SI1-1-15:クリスの災難、夏の海にて①", + "SummaryText": "" + }, + "201018": { + "Name": "SI1-1-16:クリスの災難、夏の海にて②", + "SummaryText": "" + }, + "201019": { + "Name": "", + "SummaryText": "" + }, + "201020": { + "Name": "", + "SummaryText": "" + }, + "201701": { + "Name": "SI1-3-1:未知の敵との接触", + "SummaryText": "" + }, + "201801": { + "Name": "SI1-2-1:互いを知るために", + "SummaryText": "" + }, + "201802": { + "Name": "SI1-2-2:3人の装者", + "SummaryText": "" + }, + "201803": { + "Name": "SI1-2-3:認め合う強さ", + "SummaryText": "" + }, + "201804": { + "Name": "SI1-2-4:大人の力", + "SummaryText": "" + }, + "201805": { + "Name": "SI1-2-5:エルフナインの想い", + "SummaryText": "" + }, + "201806": { + "Name": "SI1-2-6:護りたいものを護るために", + "SummaryText": "" + }, + "202001": { + "Name": "SI2-1:雨の日の帰り道", + "SummaryText": "新しい傘を調と一緒に使いたい切歌\nだが、無常にも調が居ないタイミングで\n雨が降り出してしまい――。" + }, + "202002": { + "Name": "SI2-2:翼を休める場所", + "SummaryText": "ツヴァイウィングのライブ前夜、不安そう\nにする翼を元気づける奏。しかし、\n翼の胸騒ぎは一向に治まらない。" + }, + "202003": { + "Name": "SI2-3:可愛い寝顔", + "SummaryText": "とある事情により自宅に戻れなくなり、\n翼の家でお泊りすることになった調だったが――。" + }, + "202004": { + "Name": "SI2-4:戦士の休息", + "SummaryText": "突然倒れたクリス。どうやら後輩のため\nに頑張りすぎて、あまり寝ていない\n様子。そんなクリスにマリアが――。" + }, + "202005": { + "Name": "SI2-5:息抜きデート", + "SummaryText": "仕事のしすぎでお疲れのエルフナインを\n気遣い、息抜きにと調が散歩に連れ出すと……。" + }, + "202006": { + "Name": "SI2-6:プリンセスハグ", + "SummaryText": "新しい服となれないハイヒールを履いた\n切歌。歩きにくそうなその姿を\n見るに見かねた翼が……。" + }, + "202007": { + "Name": "SI2-7:バトルプレリュード", + "SummaryText": "何度も共に戦ってきた翼とクリス。\n互いに信頼し合う2人には、\nもはや言葉は不要。" + }, + "202008": { + "Name": "SI2-8:白衣の診察", + "SummaryText": "医療スタッフ不在をいいことに以前から\n興味があったナース服に着替える2人。\nそこに体調を崩したスタッフがやって来て――。" + }, + "202009": { + "Name": "SI2-9:戦闘機能特化型の実力", + "SummaryText": "毎度毎度キスを迫ってくるミカに\n対して、ガリィがとった秘策とは?" + }, + "202012": { + "Name": "SI2-10:ヨガ初体験", + "SummaryText": "最近ちょっとお腹の肉付きが気になる\nクリスとマリア。そんな2人が、\nみんなに内緒でヨガに挑戦する。" + }, + "202013": { + "Name": "SI2-11:バニーガールズ", + "SummaryText": "S.O.N.G.主催のパーティの余興に出て\nくれないかとお願いされる翼とクリス。\n軽い気持ちで引き受ける2人だが……。" + }, + "202014": { + "Name": "SI2-39:舞踊演舞", + "SummaryText": "新曲の演出のため、着物での踊りの練習を\nする翼と奏。慣れない恰好に苦戦しつつ\n練習を重ねていく。" + }, + "202016": { + "Name": "SI2-12:初めてのカラオケ", + "SummaryText": "敵情視察という名目で、なぜかカラオケ\nに来たキャロルとエルフナイン。\nくだらないと言いつつも興味深々。" + }, + "202017": { + "Name": "SI2-19:最高で最強のステージ", + "SummaryText": "夢にまでみた歌姫3人でのステージが\n実現。脇役なんていない、全員が主役。\n今、最高のステージの幕が上がるッ!" + }, + "202018": { + "Name": "SI2-13:手料理の味は?", + "SummaryText": "クリスの家の台所を借りて料理の練習を\nする未来。いきなりハードルの高い料理\nに挑戦するが……。" + }, + "202019": { + "Name": "SI2-14:ドキドキの急接近", + "SummaryText": "みんなで楽しくお泊り会ッ!\n定番のレクリエーション王様ゲームで\n選ばれた響とクリスへの命令は?" + }, + "202020": { + "Name": "SI2-15:淑女のたしなみ", + "SummaryText": "見事な太刀捌きでノイズを刻んでいく\n翼。きっと包丁捌きも上手で料理もでき\nるはずッ!と言われるが果たして……。" + }, + "202021": { + "Name": "SI2-20:一日の始まり", + "SummaryText": "寝ぼけたまま歯を磨く調。そんな姿を\n見ていられず、世話を焼くマリア。\nその姿は姉妹というより母と娘。" + }, + "202022": { + "Name": "SI2-16:マリアの意外な特技", + "SummaryText": "戦術向上のため将棋を勧められる翼。\n海外育ちのマリアになら余裕で\n勝てるだろうと挑むが――。" + }, + "202023": { + "Name": "SI2-35:茶道体験", + "SummaryText": "茶道に興味を持ち、やってみたいという調。\n初めて体験するお茶の苦みに\n強がりを見せる調だが――。" + }, + "202024": { + "Name": "SI2-42:ツインギター", + "SummaryText": "うまく連携の取れないクリスと切歌。\n互いをもっと知るために一緒に音楽を\nやってみることになるのだが……。" + }, + "202025": { + "Name": "SI2-49:忍術修業中", + "SummaryText": "慣れない水上での戦いに苦戦する装者たち。\n水上を自在に移動できれば……\nと考えていると、調が何かを思いつく。" + }, + "202026": { + "Name": "SI2-37:艶やかな2人", + "SummaryText": "おしとやかで大人っぽい、そんな\n大和撫子になりたい切歌が、先輩の\nクリスを巻き込んでとった行動とは?" + }, + "202027": { + "Name": "SI2-34:着付に挑戦", + "SummaryText": "今日は着物での特別授業。\n着付けの出来ない響を手伝う未来だが、\nどんどんおかしなことになってしまい……。" + }, + "202028": { + "Name": "SI2-38:ガリィ流の華道", + "SummaryText": "可愛い着物姿にノリノリのガリィ。\n内心は超面倒と思いつつ、\n勢いに任せて生け花に挑戦。" + }, + "202029": { + "Name": "SI2-17:2人だけのパジャマパーティー", + "SummaryText": "疲れて帰って来た響を、優しく出迎える未来。\nそんな2人の陽だまりは、\nもはや何者も侵すことはできない。" + }, + "202030": { + "Name": "SI2-18:ミッション遂行中", + "SummaryText": "最近、何か様子のおかしい響と切歌。\n2人を心配する未来と調は、潜入美人\n捜査官メガネをかけて追跡を開始する。" + }, + "202031": { + "Name": "SI2-21:疲労困憊", + "SummaryText": "弦十郎による愛の特訓に耐え抜いた\n装者たち。もはや立ち上がる力も、\n話す気力も残されていない。" + }, + "202032": { + "Name": "SI2-22:奏のバースデー2017", + "SummaryText": "装者たちで奏の誕生日パーティを開催。\nどのタイミングで奏にプレゼントを\n渡そうか悩んでいる翼に奏が――。" + }, + "202033": { + "Name": "SI2-23:マリアのバースデー2017", + "SummaryText": "最近、調と切歌の様子がおかしいと心配する\nマリア。悩みがあるなら言って欲しい……。\nそんなことを考えながら家に帰ると――。" + }, + "202034": { + "Name": "SI2-24:縁側で一休み", + "SummaryText": "夏の暑さで体調を崩してしまう調。\nみんなが心配する中、奏が看病をかってでる。" + }, + "202035": { + "Name": "SI2-25:おさかな集合大作戦", + "SummaryText": "海水浴中の響と切歌。\nお魚たちに餌をあげると、\n予想以上に沢山集まってきてしまい――。" + }, + "202036": { + "Name": "SI2-26:暑さを凌ぐ良い方法", + "SummaryText": "バイクを洗車中の翼の元に未来が通りかかる。\nこんな暑い日はわたしも水を浴びたいです、\nと言う未来の願いを早速叶えてあげる翼。" + }, + "202037": { + "Name": "SI2-27:サマーウエイトレス", + "SummaryText": "海の家で手伝いをすることになった\nクリスとマリア。水着エプロンという格好\nと慣れない接客のせいで悪戦苦闘する2人。" + }, + "202038": { + "Name": "SI2-28:響のバースデー2017", + "SummaryText": "響の誕生日プレゼントに悩む未来に\n奏が「インパクト勝負だッ!」と提案、\n2人で考えた響へのプレゼントとは――。" + }, + "202039": { + "Name": "SI2-29:切歌の寝ぼけ癖", + "SummaryText": "とある日の朝、幸せそうに布団に包まる切歌。\n遅刻を心配し、何とか起こそうとするマリア。\n2人の壮絶な戦いが今始まる。" + }, + "202040": { + "Name": "SI2-30:悪戯な暇つぶし", + "SummaryText": "レイアの驚いた表情が見たいガリィが\n様々な方法でレイアを驚かそうとする。\nガリィのただの暇つぶし。" + }, + "202041": { + "Name": "SI2-31:奏の極楽マッサージ", + "SummaryText": "戦いの後、ストレッチの重要性を\n甘く見た切歌に降りかかる災難とは――。" + }, + "202042": { + "Name": "SI2-32:雨に濡れて", + "SummaryText": "雨でびしょ濡れになったクリスと調。\n互いに乾かしながら過ぎて行く優しい時間。" + }, + "202043": { + "Name": "SI2-33:夏服の歌姫たち", + "SummaryText": "学生服を懐かしく感じ、\n久々に着て見たくなった奏、マリアを\n巻き込んで強引に試着をしようとする。" + }, + "202044": { + "Name": "SI2-36:セレナのバースデー2017", + "SummaryText": "プリンの美味しさに満面の笑みを浮かべる\nセレナ。でも本当に嬉しいのは、大好きな\n姉と一緒に美味しい物を食べれること。" + }, + "202045": { + "Name": "SI2-40:未来のバースデー2017", + "SummaryText": "今日は未来の誕生日、しかし、響は緊急の\n呼び出しで出て行ってしまう。1人での\n誕生日は寂しいな……と感じていると――。" + }, + "202047": { + "Name": "SI2-41:クリスの氷上訓練", + "SummaryText": "連携強化のためにアイススケートを\nすることになったクリスと調。\n滑ることが得意な調に対してクリスは……" + }, + "202048": { + "Name": "SI2-43:お風呂上りのひと時", + "SummaryText": "夜、戦いの疲れをお風呂で取り、\n自室にて休むマリア。1人でいることに\n少し寂しさを感じていると、突然電話が鳴る。" + }, + "202049": { + "Name": "SI2-44:露天風呂パニック", + "SummaryText": "仕事のしすぎな友里にしっかり休むよう\nに言う弦十郎。偶然こちらに来ていた奏と\n一緒に弦十郎の勧める温泉に行くことに。" + }, + "202050": { + "Name": "SI2-45:クリスマスの天使たち", + "SummaryText": "地域ボランティアの一環で、子供たちの\nためのクリスマス会に参加することになった\n響たち。出し物はオリジナルの演劇。" + }, + "202051": { + "Name": "SI2-47:Happy New Year 2018", + "SummaryText": "新年あけましておめでとうございますッ!\nきっと今年も大変な1年になりそうだけど、\nとりあえず今は正月を楽しもうと決めた3人。" + }, + "202052": { + "Name": "SI2-46:クリスのバースデー2017", + "SummaryText": "ついに来たクリスの誕生日。\n切歌たちの計画、クリスを泣かせよう作戦は\n果たして成功するのかッ!?" + }, + "202053": { + "Name": "SI2-48:羽根つき勝負", + "SummaryText": "お正月某日、S.O.N.G.内で\n行われることになった装者対抗羽根つき大会。\n余裕そうに振る舞うクリスだったが……。" + }, + "202054": { + "Name": "SI2-50:大凧で空へ", + "SummaryText": "空から迅速に現場へ移動可能な緒川の\n忍術に憧れを抱いた翼は、緒川に\n伝授して頂けないかとお願いをする。" + }, + "202055": { + "Name": "SI2-51:メイドでお仕事", + "SummaryText": "装者たちの戦いの影響を受け、オープンで\nきなくなったとある喫茶店。罪悪感にから\nれたマリアたちがお手伝いをすることに。" + }, + "202056": { + "Name": "SI2-52:チョコケーキ大作戦", + "SummaryText": "大好きな人に食べてもらいたいッ!\nその想いを胸にケーキ作りに挑戦する3人。\n果たしてどんなケーキに仕上がるのか……。" + }, + "202057": { + "Name": "SI2-53:調のバースデー2018", + "SummaryText": "ついに来た調の誕生日。\n切歌の悩みに悩んだサプライズが\n火を噴くッ! 調の反応はいかに?" + }, + "202058": { + "Name": "SI2-54:居合の心得", + "SummaryText": "こっそりと翼の強さの秘密を探る未来と調。\n途中で見つかり、事情を知った翼は、\n2人を居合の練習に付き合わせることに。" + }, + "202059": { + "Name": "SI2-55:制服の魅力", + "SummaryText": "学校に憧れを抱くセレナ。形だけでもと、\n調からリディアンの制服を借りて\n着てみることに。" + }, + "202060": { + "Name": "SI2-56:紳士的なお出迎え", + "SummaryText": "ホワイトデーのプレゼントがなかなか\n決まらない響と翼。手伝って欲しいと\n調にお願いすると、ある提案をされて……?" + }, + "202061": { + "Name": "SI2-57:ひな人形の並べ方", + "SummaryText": "もうすぐひな祭りッ!\n装者の形をしたひな人形をめぐって\nバトルが勃発ッ!?" + }, + "202062": { + "Name": "SI2-58:夜の学校", + "SummaryText": "宿題のノートを学院に忘れてしまった切歌。\n怖がりながらも暗い廊下を進んでいくと、\nどこからともなく足音が聞こえてきて……?" + }, + "202063": { + "Name": "SI2-59:可愛いお雛様", + "SummaryText": "ひな人形が気に入った様子のセレナ。\n同じ服を着せてあげたいと考えるマリアに\n翼がある提案をして……?" + }, + "202064": { + "Name": "SI2-60:早朝トレーニング", + "SummaryText": "もうすぐマラソン大会ッ!響たちと一緒に\n練習に参加することにしたクリスだったが、\nその内容は予想以上にハードでッ!?" + }, + "202065": { + "Name": "SI2-61:中国拳法大特訓", + "SummaryText": "中国拳法の特訓をすることになった翼。\n響の主張によると、特訓にはある衣装が\n必要不可欠らしくて……ッ!?" + }, + "202066": { + "Name": "SI2-62:愛情表現", + "SummaryText": "大きな犬と会った調、切歌、セレナの3人。\nフライングディスクで意外な才能を発揮した\nセレナに、ワンコの愛情表現が炸裂するッ!" + }, + "202067": { + "Name": "SI2-63:切歌のバースデー2018", + "SummaryText": "ついに来た切歌の誕生日ッ!\nみんなにお祝いしてもらう準備万全で当日を\n迎えた切歌だったが……?" + }, + "203001": { + "Name": "SI3-1-1:弦十郎との修行①", + "SummaryText": "" + }, + "203002": { + "Name": "SI3-1-2:弦十郎との修行②", + "SummaryText": "" + }, + "203003": { + "Name": "SI3-1-3:弦十郎との修行③", + "SummaryText": "" + }, + "203004": { + "Name": "SI3-1-4:弦十郎との修行④", + "SummaryText": "" + }, + "203005": { + "Name": "SI3-2-1:女子力強化①", + "SummaryText": "" + }, + "203006": { + "Name": "SI3-2-2:女子力強化②", + "SummaryText": "" + }, + "203007": { + "Name": "SI3-2-3:女子力強化③", + "SummaryText": "" + }, + "203008": { + "Name": "SI3-2-4:女子力強化④", + "SummaryText": "" + }, + "203009": { + "Name": "SI3-3-1:頼りになる先輩①", + "SummaryText": "" + }, + "203010": { + "Name": "SI3-3-2:頼りになる先輩②", + "SummaryText": "" + }, + "203011": { + "Name": "SI3-3-3:頼りになる先輩③", + "SummaryText": "" + }, + "203012": { + "Name": "SI3-3-4:頼りになる先輩④", + "SummaryText": "" + }, + "203013": { + "Name": "SI3-4-1:引っ込み思案な私①", + "SummaryText": "" + }, + "203014": { + "Name": "SI3-4-2:引っ込み思案な私②", + "SummaryText": "" + }, + "203015": { + "Name": "SI3-4-3:引っ込み思案な私③", + "SummaryText": "" + }, + "203016": { + "Name": "SI3-4-4:引っ込み思案な私④", + "SummaryText": "" + }, + "203017": { + "Name": "SI3-5-1:調の倹約術①", + "SummaryText": "" + }, + "203018": { + "Name": "SI3-5-2:調の倹約術②", + "SummaryText": "" + }, + "203019": { + "Name": "SI3-5-3:調の倹約術③", + "SummaryText": "" + }, + "203020": { + "Name": "SI3-5-4:調の倹約術④", + "SummaryText": "" + }, + "203021": { + "Name": "SI3-6-1:手紙を求めて①", + "SummaryText": "" + }, + "203022": { + "Name": "SI3-6-2:手紙を求めて②", + "SummaryText": "" + }, + "203023": { + "Name": "SI3-6-3:手紙を求めて③", + "SummaryText": "" + }, + "203024": { + "Name": "SI3-6-4:手紙を求めて④", + "SummaryText": "" + }, + "203025": { + "Name": "SI3-7-1:ワイルドな生活①", + "SummaryText": "" + }, + "203026": { + "Name": "SI3-7-2:ワイルドな生活②", + "SummaryText": "" + }, + "203027": { + "Name": "SI3-7-3:ワイルドな生活③", + "SummaryText": "" + }, + "203028": { + "Name": "SI3-7-4:ワイルドな生活④", + "SummaryText": "" + }, + "203029": { + "Name": "SI3-8-1:装者としての心構え①", + "SummaryText": "" + }, + "203030": { + "Name": "SI3-8-2:装者としての心構え②", + "SummaryText": "" + }, + "203031": { + "Name": "SI3-8-3:装者としての心構え③", + "SummaryText": "" + }, + "203033": { + "Name": "SI3-9-1:妹としてできること①", + "SummaryText": "" + }, + "203034": { + "Name": "SI3-9-2:妹としてできること②", + "SummaryText": "" + }, + "203035": { + "Name": "SI3-9-3:妹としてできること③", + "SummaryText": "" + }, + "203036": { + "Name": "SI3-9-4:妹としてできること④", + "SummaryText": "" + }, + "304001": { + "Name": "EV3-1:思い思いの夏", + "SummaryText": "" + }, + "304002": { + "Name": "EV3-2:南国の島", + "SummaryText": "" + }, + "304003": { + "Name": "EV3-3:適応するギア", + "SummaryText": "" + }, + "304004": { + "Name": "EV3-4:セイレーンの歌", + "SummaryText": "" + }, + "304005": { + "Name": "EV3-5:心象変化", + "SummaryText": "" + }, + "304006": { + "Name": "EV3-6:砕けた聖遺物", + "SummaryText": "" + }, + "304007": { + "Name": "EV3-7:サバイバルライフ", + "SummaryText": "" + }, + "304008": { + "Name": "EV3-8:アイランドサーチ", + "SummaryText": "" + }, + "304009": { + "Name": "EV3-9:黒いクジラ", + "SummaryText": "" + }, + "304010": { + "Name": "EV3-10:洞窟探検", + "SummaryText": "" + }, + "304011": { + "Name": "EV3-11:トラップ×トラップ・前編", + "SummaryText": "" + }, + "304012": { + "Name": "EV3-12:トラップ×トラップ・後編", + "SummaryText": "" + }, + "304013": { + "Name": "EV3-13:海底遺跡中枢", + "SummaryText": "" + }, + "304014": { + "Name": "EV3-14:大脱出", + "SummaryText": "" + }, + "304015": { + "Name": "EV3-15:装者たちの夏休み", + "SummaryText": "" + }, + "307101": { + "Name": "EV6-S1:うまいもんマップ完成を目指して①", + "SummaryText": "" + }, + "307102": { + "Name": "EV6-S2:うまいもんマップ完成を目指して②", + "SummaryText": "" + }, + "307103": { + "Name": "EV6-S3:「あったかいもの」の秘密①", + "SummaryText": "" + }, + "307104": { + "Name": "EV6-S4:「あったかいもの」の秘密②", + "SummaryText": "" + }, + "308001": { + "Name": "EV7-1:未確認アルカ・ノイズ襲来", + "SummaryText": "" + }, + "308007": { + "Name": "EV7-7:未確認アルカ・ノイズ襲来(港)", + "SummaryText": "" + }, + "308008": { + "Name": "EV7-8:未確認アルカ・ノイズ襲来(街)", + "SummaryText": "" + }, + "309001": { + "Name": "EV8-1:いざ出陣", + "SummaryText": "" + }, + "309002": { + "Name": "EV8-2:装者不在の世界", + "SummaryText": "" + }, + "309003": { + "Name": "EV8-3:哲学兵装ムラマサ", + "SummaryText": "" + }, + "309004": { + "Name": "EV8-4:国を守る者たち", + "SummaryText": "" + }, + "309005": { + "Name": "EV8-5:世界の救世主", + "SummaryText": "" + }, + "309006": { + "Name": "EV8-6:並行世界での生活", + "SummaryText": "" + }, + "309007": { + "Name": "EV8-7:和装ギアの実力", + "SummaryText": "" + }, + "309008": { + "Name": "EV8-8:それぞれの役割", + "SummaryText": "" + }, + "309009": { + "Name": "EV8-9:結束", + "SummaryText": "" + }, + "309010": { + "Name": "EV8-10:黒い武者ノイズ", + "SummaryText": "" + }, + "309011": { + "Name": "EV8-11:新たな課題", + "SummaryText": "" + }, + "309012": { + "Name": "EV8-12:互いを知るための特訓", + "SummaryText": "" + }, + "309013": { + "Name": "EV8-13:ラストスパート", + "SummaryText": "" + }, + "309014": { + "Name": "EV8-14:和装乱舞", + "SummaryText": "" + }, + "309015": { + "Name": "EV8-15:可愛い後輩、可愛い先輩", + "SummaryText": "" + }, + "311001": { + "Name": "EV10-1:天体観測①", + "SummaryText": "" + }, + "311005": { + "Name": "EV10-2:天体観測②", + "SummaryText": "" + }, + "313001": { + "Name": "EV1-1:ギャラルホルン", + "SummaryText": "" + }, + "313002": { + "Name": "EV1-2:IFの世界", + "SummaryText": "" + }, + "313003": { + "Name": "EV1-3:片翼の奏者", + "SummaryText": "" + }, + "313004": { + "Name": "EV1-4:黒いノイズ", + "SummaryText": "" + }, + "313005": { + "Name": "EV1-5:交錯する想い", + "SummaryText": "" + }, + "313006": { + "Name": "EV1-6:封じられた力", + "SummaryText": "" + }, + "313007": { + "Name": "EV1-7:侵食する世界", + "SummaryText": "" + }, + "313008": { + "Name": "EV1-8:復讐の歌", + "SummaryText": "" + }, + "313009": { + "Name": "EV1-9:憎しみと後悔", + "SummaryText": "" + }, + "313010": { + "Name": "EV1-10:受け継がれた想い", + "SummaryText": "" + }, + "313011": { + "Name": "EV1-11:カルマノイズ殲滅作戦", + "SummaryText": "" + }, + "313012": { + "Name": "EV1-12:「あたし」のいないステージ", + "SummaryText": "" + }, + "313013": { + "Name": "EV1-13:七人の装者", + "SummaryText": "" + }, + "313014": { + "Name": "EV1-14:逆光のリゾルヴ", + "SummaryText": "" + }, + "313015": { + "Name": "EV1-15:両翼は再び空を舞う", + "SummaryText": "" + }, + "317001": { + "Name": "EV14-S1:雪上のクリスマス①", + "SummaryText": "" + }, + "317002": { + "Name": "EV14-S2:雪上のクリスマス②", + "SummaryText": "" + }, + "317003": { + "Name": "EV14-S3:雪上のクリスマス③", + "SummaryText": "" + }, + "319001": { + "Name": "EV15-S1:暁のサンタクロース:前編", + "SummaryText": "" + }, + "319002": { + "Name": "EV15-S2:暁のサンタクロース:中編", + "SummaryText": "" + }, + "319003": { + "Name": "EV15-S3:暁のサンタクロース:後編", + "SummaryText": "" + }, + "321001": { + "Name": "EV17-S1:端月の神隠し", + "SummaryText": "" + }, + "321002": { + "Name": "EV17-S2:迷宮屋敷", + "SummaryText": "" + }, + "321003": { + "Name": "EV17-S3:心象に描かれたモノ", + "SummaryText": "" + }, + "321004": { + "Name": "EV17-S4:痕跡を辿って", + "SummaryText": "" + }, + "321005": { + "Name": "EV17-S5:振袖の怪物", + "SummaryText": "" + }, + "321006": { + "Name": "EV17-S6:振袖に刻まれた呪い", + "SummaryText": "" + }, + "321007": { + "Name": "EV17-S7:迷宮からの声", + "SummaryText": "" + }, + "321008": { + "Name": "EV17-S8:大火の振袖", + "SummaryText": "" + }, + "321009": { + "Name": "EV17-S9:哀哭を絶つ剣", + "SummaryText": "" + }, + "321010": { + "Name": "EV17-S10:翼と振袖", + "SummaryText": "" + }, + "322055": { + "Name": "EV9-S1:先覚の協力者・フィーネ①", + "SummaryText": "" + }, + "322056": { + "Name": "EV9-S2:先覚の協力者・フィーネ②", + "SummaryText": "" + }, + "322057": { + "Name": "EV9-S3:先覚の協力者・フィーネ③", + "SummaryText": "" + }, + "323055": { + "Name": "EV12-S1:先覚の協力者・ウェル博士①", + "SummaryText": "" + }, + "323056": { + "Name": "EV12-S2:先覚の協力者・ウェル博士②", + "SummaryText": "" + }, + "323057": { + "Name": "EV12-S3:先覚の協力者・ウェル博士③", + "SummaryText": "" + }, + "324001": { + "Name": "EV18-S1:集いし先覚者", + "SummaryText": "" + }, + "324002": { + "Name": "EV18-S2:不滅の刃", + "SummaryText": "" + }, + "324003": { + "Name": "EV18-S3:唯一の居場所", + "SummaryText": "" + }, + "324004": { + "Name": "EV18-S4:インターミッション", + "SummaryText": "" + }, + "324005": { + "Name": "EV18-S5:二課潜入", + "SummaryText": "" + }, + "324006": { + "Name": "EV18-S6:フィーネの企み", + "SummaryText": "" + }, + "324007": { + "Name": "EV18-S7:ウェル襲撃", + "SummaryText": "" + }, + "324008": { + "Name": "EV18-S8:激戦", + "SummaryText": "" + }, + "324009": { + "Name": "EV18-S9:遅れてきた先覚者", + "SummaryText": "" + }, + "324010": { + "Name": "EV18-S10:RN式回天特機装束", + "SummaryText": "" + }, + "324011": { + "Name": "EV18-S11:Recapture Operation", + "SummaryText": "" + }, + "324012": { + "Name": "EV18-S12:決戦・フィーネ", + "SummaryText": "" + }, + "324013": { + "Name": "EV18-S13:穢れた赤き竜", + "SummaryText": "" + }, + "324014": { + "Name": "EV18-S14:拳", + "SummaryText": "" + }, + "324015": { + "Name": "EV18-S15:ふたりの時間", + "SummaryText": "" + }, + "325001": { + "Name": "EV19-S1:小さな勇気", + "SummaryText": "" + }, + "325002": { + "Name": "EV19-S2:もうひとりのセレナ", + "SummaryText": "" + }, + "325003": { + "Name": "EV19-S3:ネフィリム再び", + "SummaryText": "" + }, + "325004": { + "Name": "EV19-S4:変わらない妹", + "SummaryText": "" + }, + "325005": { + "Name": "EV19-S5:もうひとつの結末", + "SummaryText": "" + }, + "325006": { + "Name": "EV19-S6:目覚めた日のこと", + "SummaryText": "" + }, + "325007": { + "Name": "EV19-S7:可愛らしい客人", + "SummaryText": "" + }, + "325008": { + "Name": "EV19-S8:悪夢の予感", + "SummaryText": "" + }, + "325009": { + "Name": "EV19-S9:増殖する脅威", + "SummaryText": "" + }, + "325010": { + "Name": "EV19-S10:わたしでないわたしのために", + "SummaryText": "" + }, + "325011": { + "Name": "EV19-S11:家族", + "SummaryText": "" + }, + "325012": { + "Name": "EV19-S12:大好きの絆", + "SummaryText": "" + }, + "325013": { + "Name": "EV19-S13:偽りの姉妹", + "SummaryText": "" + }, + "325014": { + "Name": "EV19-S14:イノセント・シスター", + "SummaryText": "" + }, + "325015": { + "Name": "EV19-S15:姉妹", + "SummaryText": "" + }, + "326001": { + "Name": "EV20-S1:エキスパート・メイド:前編", + "SummaryText": "" + }, + "326002": { + "Name": "EV20-S2:エキスパート・メイド:中編", + "SummaryText": "" + }, + "326003": { + "Name": "EV20-S3:エキスパート・メイド:後編", + "SummaryText": "" + }, + "327001": { + "Name": "EV21-S1:これがわたしのメイド道ッ!:前編", + "SummaryText": "" + }, + "327002": { + "Name": "EV21-S2:これがわたしのメイド道ッ!:中編", + "SummaryText": "" + }, + "327003": { + "Name": "EV21-S3:これがわたしのメイド道ッ!:後編", + "SummaryText": "" + }, + "328001": { + "Name": "EV23-S1:夜を翔ける少女", + "SummaryText": "" + }, + "328002": { + "Name": "EV23-S2:怪盗への道", + "SummaryText": "" + }, + "328003": { + "Name": "EV23-S3:誕生、怪盗ファントムシスターズ", + "SummaryText": "" + }, + "328004": { + "Name": "EV23-S4:潜入、豪華客船", + "SummaryText": "" + }, + "328005": { + "Name": "EV23-S5:暗躍する影", + "SummaryText": "" + }, + "328006": { + "Name": "EV23-S6:怪盗の日常", + "SummaryText": "" + }, + "328007": { + "Name": "EV23-S7:3人目の怪盗", + "SummaryText": "" + }, + "328008": { + "Name": "EV23-S8:捕える者たちとの攻防", + "SummaryText": "" + }, + "328009": { + "Name": "EV23-S9:夜空を舞う怪盗姉妹", + "SummaryText": "" + }, + "328010": { + "Name": "EV23-S10:怪盗姉妹は永遠に", + "SummaryText": "" + }, + "330001": { + "Name": "EV24-S1:竜を討つ魔剣:前編", + "SummaryText": "" + }, + "330002": { + "Name": "EV24-S2:竜を討つ魔剣:中編", + "SummaryText": "" + }, + "330003": { + "Name": "EV24-S3:竜を討つ魔剣:後編", + "SummaryText": "" + }, + "331001": { + "Name": "EV25-S1:不死身の英雄:前編", + "SummaryText": "" + }, + "331002": { + "Name": "EV25-S2:不死身の英雄:中編", + "SummaryText": "" + }, + "331003": { + "Name": "EV25-S3:不死身の英雄:後編", + "SummaryText": "" + }, + "332001": { + "Name": "EV26-S1:謎の海賊船", + "SummaryText": "" + }, + "332002": { + "Name": "EV26-S2:海賊の掟", + "SummaryText": "" + }, + "332003": { + "Name": "EV26-S3:大海賊ブラックバート", + "SummaryText": "" + }, + "332004": { + "Name": "EV26-S4:捕虜の生活", + "SummaryText": "" + }, + "332005": { + "Name": "EV26-S5:海賊船長との決闘", + "SummaryText": "" + }, + "332006": { + "Name": "EV26-S6:急襲の錬金術師", + "SummaryText": "" + }, + "332007": { + "Name": "EV26-S7:海賊の生活", + "SummaryText": "" + }, + "332008": { + "Name": "EV26-S8:海賊の財宝", + "SummaryText": "" + }, + "332009": { + "Name": "EV26-S9:海上大激戦", + "SummaryText": "" + }, + "332010": { + "Name": "EV26-S10:海賊の証", + "SummaryText": "" + }, + "332030": { + "Name": "EV26-BS:海賊の絆", + "SummaryText": "" + }, + "333001": { + "Name": "EV27-S1:燃えよッ!カンフーマスター:前編", + "SummaryText": "" + }, + "333002": { + "Name": "EV27-S2:燃えよッ!カンフーマスター:中編", + "SummaryText": "" + }, + "333003": { + "Name": "EV27-S3:燃えよッ!カンフーマスター:後編", + "SummaryText": "" + }, + "335001": { + "Name": "EV5-1:翳る太陽", + "SummaryText": "" + }, + "335002": { + "Name": "EV5-2:暗い夢の中", + "SummaryText": "" + }, + "335003": { + "Name": "EV5-3:異変究明", + "SummaryText": "" + }, + "335004": { + "Name": "EV5-4:陽だまりの無い世界", + "SummaryText": "" + }, + "335005": { + "Name": "EV5-5:精神同調", + "SummaryText": "" + }, + "335006": { + "Name": "EV5-6:決意", + "SummaryText": "" + }, + "335007": { + "Name": "EV5-7:神獣鏡、起動", + "SummaryText": "" + }, + "335008": { + "Name": "EV5-8:未来の戦い", + "SummaryText": "" + }, + "335009": { + "Name": "EV5-9:地中からの脅威", + "SummaryText": "" + }, + "335010": { + "Name": "EV5-10:救うための戦い", + "SummaryText": "" + }, + "335011": { + "Name": "EV5-11:侵食", + "SummaryText": "" + }, + "335012": { + "Name": "EV5-12:嘆く心", + "SummaryText": "" + }, + "335013": { + "Name": "EV5-13:装者になった理由", + "SummaryText": "" + }, + "335014": { + "Name": "EV5-14:翳り裂く閃光", + "SummaryText": "" + }, + "335015": { + "Name": "EV5-15:わたしのいるべき場所", + "SummaryText": "" + }, + "336001": { + "Name": "EV27-S1:高速のアルカ・ノイズ", + "SummaryText": "" + }, + "336002": { + "Name": "EV27-S2:ハイウェイ・チェイス", + "SummaryText": "" + }, + "336003": { + "Name": "EV27-S3:速さへの心象実験", + "SummaryText": "" + }, + "336004": { + "Name": "EV27-S4:ライダー型ギア", + "SummaryText": "" + }, + "336005": { + "Name": "EV27-S5:予期せぬ邂逅", + "SummaryText": "" + }, + "336006": { + "Name": "EV27-S6:死のレース", + "SummaryText": "" + }, + "336007": { + "Name": "EV27-S7:スピードを求めて", + "SummaryText": "" + }, + "336008": { + "Name": "EV27-S8:決戦の日", + "SummaryText": "" + }, + "336009": { + "Name": "EV27-S9:Beyond the Speed", + "SummaryText": "" + }, + "336010": { + "Name": "EV27-S10:わたしの相棒", + "SummaryText": "" + }, + "336016": { + "Name": "EV27-BS:戦いのあと", + "SummaryText": "" + } +} \ No newline at end of file diff --git a/Js/UtageParse.js b/Js/UtageParse.js index 23f4256..b110041 100644 --- a/Js/UtageParse.js +++ b/Js/UtageParse.js @@ -5,7 +5,7 @@ class UtageInfo { constructor() { this.currentPlayingFile = []; this.rootDirectory = ``; - this.availableMissions = {}; + this.groupedMissions = {}; this.missionsList = []; this.characterInfo = {}; this.layerInfo = {}; @@ -13,9 +13,10 @@ class UtageInfo { this.paramInfo = {}; this.soundInfo = {}; this.textureInfo = {}; - this.translationsInner = {}; this.currentTranslation = 'eng'; + this.translationsInner = {}; this.charTranslationsInner = {}; + this.missionTranslationsInner = {}; this.bgmLoopData = {}; } @@ -34,9 +35,9 @@ class UtageInfo { ]; Promise.all(promises) .then((success) => { - this.availableMissions = success[0]; - this.missionsList = Object.keys(this.availableMissions).map((k) => { - return `${this.availableMissions[k].Id}|${this.availableMissions[k].Name}`; + this.groupMissions(success[0]); + this.missionsList = Object.keys(this.groupedMissions).map((k) => { + return {Name: this.groupedMissions[k].Name, MstId: this.groupedMissions[k].MstId}; }); this.missionsList.sort(); this.parseCharacterInfo(success[1]); @@ -79,6 +80,24 @@ class UtageInfo { }); } + + groupMissions(missions) { + for(let key of Object.keys(missions)) { + let mis = missions[key]; + if(!this.groupedMissions[mis.MstId]) { + this.groupedMissions[mis.MstId] = { + Name: mis.Name, + SummaryText: mis.SummaryText, + MstId: mis.MstId, + Missions: {} + } + this.groupedMissions[mis.MstId].Missions[mis.Id] = { Id: mis.Id, Path: mis.Path }; + } else { + this.groupedMissions[mis.MstId].Missions[mis.Id] = { Id: mis.Id, Path: mis.Path }; + } + } + } + get translations() { return this.translationsInner[this.currentTranslation]; } @@ -87,10 +106,15 @@ class UtageInfo { return this.charTranslationsInner[this.currentTranslation]; } + get missionTranslations() { + return this.missionTranslationsInner[this.currentTranslation]; + } + setTranslationLanguage(key, missionPath) { return new Promise((resolve, reject) => { this.currentTranslation = key; - var promises = [this.loadCharacterTranslations(key)]; + let promises = [this.loadCharacterTranslations(key), + this.loadMissionNamesTranslations(key)]; if(missionPath) { promises.push(this.loadMissionTranslation(missionPath, key)); } @@ -114,6 +138,7 @@ class UtageInfo { this.translationsInner[this.currentTranslation] = success; resolve(); }, (failure) => { + console.log(failure); resolve(); }); } @@ -130,6 +155,24 @@ class UtageInfo { this.charTranslationsInner[this.currentTranslation] = success; resolve(); }, (failure) => { + console.log(failure); + resolve(); + }); + } + }); + } + + loadMissionNamesTranslations() { + return new Promise((resolve, reject) => { + if(this.missionTranslationsInner[this.currentTranslation]) { + resolve(); + } else { + commonFunctions.getFileJson(`${utage.rootDirectory}Js/Translations/XduMissionsNames_${this.currentTranslation}.json`) + .then((success) => { + this.missionTranslationsInner[this.currentTranslation] = success; + resolve(); + }, (failure) => { + console.log(failure); resolve(); }); } diff --git a/Player.html b/Player.html index d009ba9..9ea148a 100644 --- a/Player.html +++ b/Player.html @@ -20,6 +20,7 @@

Loading Page Data...

+
Now Playing: None
🔊 @@ -36,8 +37,9 @@ -
- - test - test - -
+
+ + test + test + +
\ No newline at end of file