sdvx: added WIP features - arena save, valgene, common.ts updates, webui features

This commit is contained in:
vvo
2022-09-20 18:23:13 +08:00
parent be4e9ba6fc
commit cd64a4e781
99 changed files with 2517 additions and 439 deletions
+2
View File
@@ -103,6 +103,8 @@ function getDifficulty(musicid, type) {
return "HVN";
case "5":
return "VVD";
case "6":
return "XCD";
}
}
case 4:
+1 -1
View File
@@ -201,7 +201,7 @@ function calculateVolforce() {
return toFixed(VF, 3);
}
var diffName = ["NOV", "ADV", "EXH", "INF\nGRV\nHVN\nVVD", "MXM"];
var diffName = ["NOV", "ADV", "EXH", "INF\nGRV\nHVN\nVVD\nXCD", "MXM"];
function preSetTableMark(type) {
$('#statistic-table').empty();
+74 -58
View File
@@ -38,8 +38,8 @@ $('[name="bgm"]').change(function() {
$('#custom_0').attr("src", "static/asset/audio/custom_" + zeroPad($('[name="bgm"]').val(), 2) + "/0.mp3");
$('#custom_1').attr("src", "static/asset/audio/custom_" + zeroPad($('[name="bgm"]').val(), 2) + "/1.mp3");
if ($('[name="bgm"]').val() == 99) {
$('#custom_0').attr("src", "static/asset/audio/special_00/0.m4a");
$('#custom_1').attr("src", "static/asset/audio/custom_00/1.m4a");
$('#custom_0').attr("src", "static/asset/audio/special_00/0.mp3");
$('#custom_1').attr("src", "static/asset/audio/custom_00/1.mp3");
}
$('#custom_0').prop("volume", 0.5);
$('#custom_1').prop("volume", 0.2);
@@ -124,6 +124,13 @@ var play_bgm = false;
var play_sel = false;
$(document).ready(function() {
profile_data = JSON.parse(document.getElementById("data-pass").innerText);
items_crew = JSON.parse(document.getElementById("data-pass-crew").innerText);
items_stamp = JSON.parse(document.getElementById("data-pass-stamp").innerText);
items_subbg = JSON.parse(document.getElementById("data-pass-subbg").innerText);
items_bgm = JSON.parse(document.getElementById("data-pass-bgm").innerText);
items_nemsys = JSON.parse(document.getElementById("data-pass-nemsys").innerText);
unlock_all = (document.getElementById("data-pass-unlock-all").innerText === 'true');
console.log(unlock_all);
$.getJSON("static/asset/json/data.json", function(json) {
database = json;
@@ -132,47 +139,54 @@ $(document).ready(function() {
//console.log(profile_data);
for (var i in json["nemsys"]) {
$('#nemsys_select').append($('<option>', {
value: json["nemsys"][i].value,
text: json["nemsys"][i].name,
}));
var image = new Image();
if (json["nemsys"][i].value != 30) {
image.src = "static/asset/nemsys/nemsys_" + zeroPad(json["nemsys"][i].value, 4) + ".png";
} else {
image.src = "static/asset/nemsys/nemsys_aprilfool.png";
if(unlock_all || (json["nemsys"][i].value === 0 || items_nemsys.find(x => x.id === json["nemsys"][i].value))) {
$('#nemsys_select').append($('<option>', {
value: json["nemsys"][i].value,
text: json["nemsys"][i].name,
}));
var image = new Image();
if (json["nemsys"][i].value != 30) {
image.src = "static/asset/nemsys/nemsys_" + zeroPad(json["nemsys"][i].value, 4) + ".png";
} else {
image.src = "static/asset/nemsys/nemsys_aprilfool.png";
}
//console.log(profile_data["nemsys"])
}
//console.log(profile_data["nemsys"])
}
$('#nemsys_select').val(profile_data["nemsys"]);
for (var i in json["subbg"]) {
$('[name="subbg"]').append($('<option>', {
value: json["subbg"][i].value,
text: json["subbg"][i].name,
}));
var image = new Image();
image.src = "static/asset/submonitor_bg/subbg_" + zeroPad(json["subbg"][i].value, 4) + ".jpg";
// console.log(image);
//console.log(profile_data["subbg"])
if(unlock_all || (json["subbg"][i].value === 0 || items_subbg.find(x => x.id === json["subbg"][i].value))) {
$('[name="subbg"]').append($('<option>', {
value: json["subbg"][i].value,
text: json["subbg"][i].name,
}));
var image = new Image();
image.src = "static/asset/submonitor_bg/subbg_" + zeroPad(json["subbg"][i].value, 4) + ".jpg";
// console.log(image);
//console.log(profile_data["subbg"])
}
}
$('[name="subbg"]').val(profile_data["subbg"]);
for (var i in json["bgm"]) {
$('[name="bgm"]').append($('<option>', {
value: json["bgm"][i].value,
text: json["bgm"][i].name,
}));
var audio = new Audio();
var audio1 = new Audio();
if (json["bgm"][i].value == 99) {
audio.src = "static/asset/audio/special_00/0.mp3"
} else {
audio.src = "static/asset/audio/custom_" + zeroPad(json["bgm"][i].value, 2) + "/0.mp3"
audio1.src = "static/asset/audio/custom_" + zeroPad(json["bgm"][i].value, 2) + "/1.mp3"
}
if(unlock_all || (json["bgm"][i].value === 0 || items_bgm.find(x => parseInt(x.id) === parseInt(json["bgm"][i].value)))) {
$('[name="bgm"]').append($('<option>', {
value: json["bgm"][i].value,
text: json["bgm"][i].name,
}));
var audio = new Audio();
var audio1 = new Audio();
if (json["bgm"][i].value == 99) {
audio.src = "static/asset/audio/special_00/0.mp3"
} else {
audio.src = "static/asset/audio/custom_" + zeroPad(json["bgm"][i].value, 2) + "/0.mp3"
audio1.src = "static/asset/audio/custom_" + zeroPad(json["bgm"][i].value, 2) + "/1.mp3"
}
//console.log(profile_data["bgm"])
//console.log(profile_data["bgm"])
}
}
$('[name="bgm"]').val(profile_data["bgm"]);
@@ -186,35 +200,37 @@ $(document).ready(function() {
$('[name="akaname"]').val(profile_data["akaname"]);
for (var i in json["stamp"]) {
$('[name="stampA"]').append($('<option>', {
value: json["stamp"][i].value,
text: json["stamp"][i].name,
}));
$('[name="stampA"]').val(profile_data["stampA"]);
if(unlock_all || (json["stamp"][i].value === 0 || items_stamp.find(x => x.id === json["stamp"][i].value))) {
$('[name="stampA"]').append($('<option>', {
value: json["stamp"][i].value,
text: json["stamp"][i].name,
}));
$('[name="stampA"]').val(profile_data["stampA"]);
$('[name="stampB"]').append($('<option>', {
value: json["stamp"][i].value,
text: json["stamp"][i].name,
}));
$('[name="stampB"]').val(profile_data["stampB"]);
$('[name="stampB"]').append($('<option>', {
value: json["stamp"][i].value,
text: json["stamp"][i].name,
}));
$('[name="stampB"]').val(profile_data["stampB"]);
$('[name="stampC"]').append($('<option>', {
value: json["stamp"][i].value,
text: json["stamp"][i].name,
}));
$('[name="stampC"]').val(profile_data["stampC"]);
$('[name="stampC"]').append($('<option>', {
value: json["stamp"][i].value,
text: json["stamp"][i].name,
}));
$('[name="stampC"]').val(profile_data["stampC"]);
$('[name="stampD"]').append($('<option>', {
value: json["stamp"][i].value,
text: json["stamp"][i].name,
}));
$('[name="stampD"]').val(profile_data["stampD"]);
var group = Math.trunc((json["stamp"][i].value - 1) / 4 + 1);
var item = json["stamp"][i].value % 4;
if (item == 0) item = 4;
var image = new Image();
$('[name="stampD"]').append($('<option>', {
value: json["stamp"][i].value,
text: json["stamp"][i].name,
}));
$('[name="stampD"]').val(profile_data["stampD"]);
var group = Math.trunc((json["stamp"][i].value - 1) / 4 + 1);
var item = json["stamp"][i].value % 4;
if (item == 0) item = 4;
var image = new Image();
image.src = "static/asset/chat_stamp/stamp_" + zeroPad(group, 4) + "/stamp_" + zeroPad(group, 4) + "_" + zeroPad(item, 2) + ".png";
image.src = "static/asset/chat_stamp/stamp_" + zeroPad(group, 4) + "/stamp_" + zeroPad(group, 4) + "_" + zeroPad(item, 2) + ".png";
}
}
});
+16 -1
View File
@@ -16,6 +16,15 @@ function getSongName(musicid) {
//console.log(result);
}
function getReleaseDate(musicid) {
//console.log(music_db["mdb"]["music"])
//console.log(musicid+" "+type);
var result = music_db["mdb"]["music"].filter(object => object["@id"] == musicid);
return result[0]["info"]["distribution_date"]["#text"]
//console.log(result);
}
function getDifficulty(musicid, type) {
var result = music_db["mdb"]["music"].filter(object => object["@id"] == musicid);
if (result.length == 0) {
@@ -41,6 +50,8 @@ function getDifficulty(musicid, type) {
return "HVN";
case "5":
return "VVD";
case "6":
return "XCD"
}
}
case 4:
@@ -109,8 +120,10 @@ function difficultySort(d) {
return 6;
case "VVD":
return 7;
case "MXM":
case "XCD":
return 8;
case "MXM":
return 9;
}
return 0;
};
@@ -223,6 +236,7 @@ $(document).ready(function() {
temp_data.mid = profile_data[i].mid;
temp_data.songname = getSongName(profile_data[i].mid);
temp_data.diff = getDifficulty(profile_data[i].mid, profile_data[i].type);
temp_data.releasedate = getReleaseDate(profile_data[i].mid);
temp_data.score = profile_data[i].score;
temp_data.exscore = ((profile_data[i].exscore) ? profile_data[i].exscore : 0);
temp_data.grade = getGrade(profile_data[i].grade);
@@ -246,6 +260,7 @@ $(document).ready(function() {
{ data: 'mid' },
{ data: 'songname' },
{ data: 'diff', "type": "diff" },
{ data: 'releasedate'},
{ data: 'score', },
{ data: 'exscore' },
{ data: 'grade', "type": "grade" },
@@ -0,0 +1,142 @@
function getInfDifficulty(inf_ver) {
switch (inf_ver) {
case "2":
return "INF";
case "3":
return "GRV";
case "4":
return "HVN";
case "5":
return "VVD";
case "6":
return "XCD"
}
}
$(document).ready(function() {
courseData = musicDB = []
versionCourseData = []
courseLevels = []
specificCourse = []
selectedVersion = selectedCourseLevel = selectedSpecificCourse = null
$.getJSON('static/asset/json/course_data.json', function(json) {
courseData = json;
})
$.getJSON("static/asset/json/music_db.json", function(json) {
musicDB = json;
});
$('#savebutton').click(function(){
})
$('#sdvx-version').change(function(){
$('#skill-course').find('option').not(':first').remove();
$('#skill-course-level').find('option').not(':first').remove();
$('.track-name').val('');
$('.track-id').val('');
$('.track-difficulty').val('');
if(this.value != '-- Select --'){
selectedVersion = parseInt(this.value);
selectedCourseLevel = null;
selectedSpecificCourse = null;
versionCourseData = courseData.courseData.find(data => parseInt(data['version']) === selectedVersion).info;
courseLevels = []
specificCourse = []
versionCourseData.forEach(function(item, index){
item.courses.forEach(function(item2, index2) {
if(!courseLevels.some(course => course.includes(item2['name']))) courseLevels.push([item2['name'], item2['id']]);
})
});
$.each(courseLevels, function() {
$('#skill-course').append("<option value=" + this[1] + ">" + this[0] + "</>");
});
}
})
$('#skill-course').change(function(){
$('#skill-course-level').find('option').not(':first').remove();
$('.track-name').val('');
$('.track-id').val('');
$('.track-difficulty').val('');
if(this.value != '-- Select --'){
selectedCourseLevel = parseInt(this.value);
selectedSpecificCourse = null;
specificCourse = []
versionCourseData.forEach(function(item, index){
item.courses.forEach(function(item2, index2) {
if(!specificCourse.some(course => course.includes(item['name'])) && item2['id'] == selectedCourseLevel){
console.log(item['name'] + " included in " + selectedCourseLevel + " in " + selectedVersion)
specificCourse.push([item['name'], item['id']])
}
})
});
$.each(specificCourse, function() {
console.log(specificCourse)
$('#skill-course-level').append("<option value=" + this[1] + ">" + this[0] + "</>");
});
}
})
$('#skill-course-level').change(function(){
if(this.value != '-- Select --'){
selectedSpecificCourse = parseInt(this.value);
theCourse = versionCourseData.find(data => data.id === selectedSpecificCourse).courses
.find(data => data.id === selectedCourseLevel).tracks;
trackIndex = 0;
difficultyLabels = ['Novice', 'Advanced', 'Exhaust', 'Inf/Grv/Hvn/Vvd/Xcd', 'Maximum']
infLabel = ['0', '1', 'Infinite', 'Gravity', 'Heavenly', 'Vivid', 'Exceed']
musicDBDifficultyLabel = ['novice', 'advanced', 'exhaust', 'infinite', 'maximum']
theCourse.forEach(function(courseTrack){
track = musicDB.mdb.music.find(data => parseInt(courseTrack.mid) === parseInt(data['@id']))
// console.log(courseTrack.mty)
if(courseTrack.mty == 3) {
difficultyLabel = infLabel[parseInt(track.info.inf_ver['#text'])]
} else {
difficultyLabel = difficultyLabels[courseTrack.mty]
}
console.log(courseTrack.mid)
$(".track-id").eq(trackIndex).val(track['@id'])
$(".track-name").eq(trackIndex).val(track.info.title_name)
$(".track-name").eq(trackIndex).attr('track-id', track['@id'])
$('.track-difficulty').eq(trackIndex).find('option').not(':first').remove();
$(".track-difficulty").eq(trackIndex).append("<option value=" + 0 + ">" + difficultyLabels[0] + ' (' + track.difficulty['novice'].difnum['#text'] + ")</option>")
$(".track-difficulty").eq(trackIndex).append("<option value=" + 1 + ">" + difficultyLabels[1] + ' (' + track.difficulty['advanced'].difnum['#text'] + ")</option>")
$(".track-difficulty").eq(trackIndex).append("<option value=" + 2 + ">" + difficultyLabels[2] + ' (' + track.difficulty['exhaust'].difnum['#text'] + ")</option>")
if(track.difficulty['maximum'].difnum['#text'] != '0' || track.difficulty['infinite'].difnum['#text'] != '0'){
$(".track-difficulty").eq(trackIndex).append("<option value=" + ((courseTrack.mty == 3) ? 3 : 4) + ">" + (track.difficulty['infinite'].difnum['#text'] != '0' ? infLabel[parseInt(track.info.inf_ver['#text'])] : difficultyLabels[4]) + ' (' + (track.difficulty['infinite'].difnum['#text'] != '0' ? track.difficulty['infinite'].difnum['#text'] : track.difficulty['maximum'].difnum['#text']) + ")</option>")
}
$(".track-difficulty").eq(trackIndex).val(courseTrack.mty)
$(".track-difficulty").eq(trackIndex).attr('diff-id', courseTrack.mty)
trackIndex++;
})
}
})
$('.track-id').on('input', function(){
searchTrackID = parseInt(this.value);
var that_ = this;
var currentIndex = $('.track-id').index(that_);
difficultyLabels = ['Novice', 'Advanced', 'Exhaust', 'Inf/Grv/Hvn/Vvd/Xcd', 'Maximum']
infLabel = ['0', '1', 'Infinite', 'Gravity', 'Heavenly', 'Vivid', 'Exceed']
musicDBDifficultyLabel = ['novice', 'advanced', 'exhaust', 'infinite', 'maximum']
track = musicDB.mdb.music.find(data => searchTrackID === parseInt(data['@id']))
if(track){
$(".track-name").eq(currentIndex).val(track.info.title_name)
$(".track-name").eq(currentIndex).attr('track-id', track['@id'])
$('.track-difficulty').eq(currentIndex).find('option').not(':first').remove();
$(".track-difficulty").eq(currentIndex).append("<option value=" + 0 + ">" + difficultyLabels[0] + ' (' + track.difficulty['novice'].difnum['#text'] + ")</option>")
$(".track-difficulty").eq(currentIndex).append("<option value=" + 1 + ">" + difficultyLabels[1] + ' (' + track.difficulty['advanced'].difnum['#text'] + ")</option>")
$(".track-difficulty").eq(currentIndex).append("<option value=" + 2 + ">" + difficultyLabels[2] + ' (' + track.difficulty['exhaust'].difnum['#text'] + ")</option>")
if(track.difficulty['maximum'].difnum['#text'] != '0' || track.difficulty['infinite'].difnum['#text'] != '0'){
$(".track-difficulty").eq(currentIndex).append("<option value=" + ((parseInt(track.info.inf_ver['#text']) != 0) ? 3 : 4) + ">" + (track.difficulty['infinite'].difnum['#text'] != '0' ? infLabel[parseInt(track.info.inf_ver['#text'])] : difficultyLabels[4]) + ' (' + (track.difficulty['infinite'].difnum['#text'] != '0' ? track.difficulty['infinite'].difnum['#text'] : track.difficulty['maximum'].difnum['#text']) + ")</option>")
}
$(".track-difficulty").eq(currentIndex).val('-- Select --')
$(".track-difficulty").eq(currentIndex).attr('diff-id', 0)
} else {
$(".track-name").eq(currentIndex).val('')
$(".track-name").eq(currentIndex).attr('track-id', 0)
$('.track-difficulty').eq(currentIndex).find('option').not(':first').remove();
}
})
})
+130
View File
@@ -0,0 +1,130 @@
function getInfDifficulty(inf_ver) {
switch (inf_ver) {
case "2":
return "INF";
case "3":
return "GRV";
case "4":
return "HVN";
case "5":
return "VVD";
case "6":
return "XCD"
}
}
$(document).ready(function() {
// jQuery.fn.dataTableExt.oSort['diff-asc'] = function(a, b) {
// var x = difficultySort(a);
// var y = difficultySort(b);
// return ((x < y) ? -1 : ((x > y) ? 1 : 0));
// };
// jQuery.fn.dataTableExt.oSort['diff-desc'] = function(a, b) {
// var x = difficultySort(a);
// var y = difficultySort(b);
// return ((x < y) ? 1 : ((x > y) ? -1 : 0));
// };
// jQuery.fn.dataTableExt.oSort['grade-asc'] = function(a, b) {
// var x = gradeSort(a);
// var y = gradeSort(b);
// return ((x < y) ? -1 : ((x > y) ? 1 : 0));
// };
// jQuery.fn.dataTableExt.oSort['grade-desc'] = function(a, b) {
// var x = gradeSort(a);
// var y = gradeSort(b);
// return ((x < y) ? 1 : ((x > y) ? -1 : 0));
// };
// jQuery.fn.dataTableExt.oSort['clear-mark-asc'] = function(a, b) {
// var x = markSort(a);
// var y = markSort(b);
// return ((x < y) ? -1 : ((x > y) ? 1 : 0));
// };
// jQuery.fn.dataTableExt.oSort['clear-mark-desc'] = function(a, b) {
// var x = markSort(a);
// var y = markSort(b);
// return ((x < y) ? 1 : ((x > y) ? -1 : 0));
// };
// var profile_data = JSON.parse(document.getElementById("data-pass").innerText);
// profile_data = profile_data.sort(function(a, b) {
// if (a.mid > b.mid) return 1;
// if (a.mid < b.mid) return -1;
// return a.type > b.type ? 1 : -1;
// });
//console.log(profile_data);
//$('#music_score').DataTable();
$.getJSON("static/asset/json/music_db.json", function(json) {
music_db = json;
var music_data = [];
for (let mdata in music_db.mdb.music) {
var temp_data = {};
temp_data.mid = music_db.mdb.music[mdata]['@id'];
temp_data.songname = music_db.mdb.music[mdata]['info']['title_name'];
temp_data.releasedate = music_db.mdb.music[mdata]['info']['distribution_date']['#text'];
temp_data.nov = "";
temp_data.adv = "";
temp_data.exh = "";
temp_data.mxm = "";
temp_data.oth = "";
if (music_db.mdb.music[mdata]['difficulty']['novice']['difnum']['#text'] != 0) {
temp_data.nov = music_db.mdb.music[mdata]['difficulty']['novice']['difnum']['#text']
}
if (music_db.mdb.music[mdata]['difficulty']['advanced']['difnum']['#text'] != 0) {
temp_data.adv = music_db.mdb.music[mdata]['difficulty']['advanced']['difnum']['#text']
}
if (music_db.mdb.music[mdata]['difficulty']['exhaust']['difnum']['#text'] != 0) {
temp_data.exh = music_db.mdb.music[mdata]['difficulty']['exhaust']['difnum']['#text']
}
if (music_db.mdb.music[mdata]['difficulty']['maximum']['difnum']['#text'] != 0) {
temp_data.mxm = music_db.mdb.music[mdata]['difficulty']['maximum']['difnum']['#text']
}
if (music_db.mdb.music[mdata]['info']['inf_ver']['#text'] != 0) {
temp_data.oth = music_db.mdb.music[mdata]['difficulty']['infinite']['difnum']['#text'] + ' | ' + getInfDifficulty(music_db.mdb.music[mdata]['info']['inf_ver']['#text'])
}
music_data.push(temp_data);
}
$('#songslist').DataTable({
data: music_data,
columns: [
{ data: 'mid' },
{ data: 'songname' },
{ data: 'releasedate' },
{ data: 'nov', },
{ data: 'adv' },
{ data: 'exh' },
{ data: 'mxm' },
{ data: 'oth' }
],
columnDefs: [
],
responsive: {
details: {
display: $.fn.dataTable.Responsive.display.modal({
header: function(row) {
var data = row.data();
return 'Details for ' + data.songname;
}
})
}
},
});
});
})
@@ -0,0 +1,55 @@
// data\graphics\game_nemsys -- nemsys
// data\graphics\ap_card -- appeal card
// data\graphics\submonitor_bg -- subbg
$(document).ready(async function() {
let sdvxDir = document.getElementById("sdvx-dir").innerText
$( "#updateResources" ).click(async function() {
answer = confirm("Clicking OK would mean that you have already updated the datecode in your ea3-config.xml file. Would you like to proceed?");
if (answer == true) {
document.getElementById("logtextarea").textContent = ''
document.getElementById("logtextarea").textContent = 'Updating music_db.json file....\n'
await emit("generateLatestMusicDBFile").then(
function(response) {
$.getJSON( "static/asset/json/music_db.json", function( data ) {
document.getElementById("logtextarea").textContent += "New songs found in version " + data['mdb']['version'] + ": \n";
$.each( data['mdb']['music'], function( key, val ) {
if(parseInt(val.info.distribution_date['#text']) >= parseInt(data['mdb']['version'].substring(0,8))){
document.getElementById("logtextarea").textContent += val.info.distribution_date['#text'] + " - " + val.info.title_name + "\n";
}
});
document.getElementById("logtextarea").textContent += '\n\n'
});
},
function(error) {
document.getElementById("logtextarea").textContent += error + "\n";
document.getElementById("logtextarea").textContent += "Please check if 'Exceed Gear Data Directory' is configured properly." + "\n";
}
);
await emit("copyResourcesFromGame").then(
function(response){
$.getJSON( "static/asset/logs/copyResourcesFromGame.json", function( data ) {
document.getElementById("logtextarea").textContent += 'New nemsys: \n'
$.each(data['nemsys'], function(key, val) {
document.getElementById("logtextarea").textContent += val + '\n'
})
document.getElementById("logtextarea").textContent += '\n\n'
document.getElementById("logtextarea").textContent += 'New appeal cards: \n'
$.each(data['apCard'], function(key, val) {
document.getElementById("logtextarea").textContent += val + '\n'
})
document.getElementById("logtextarea").textContent += '\n\n'
document.getElementById("logtextarea").textContent += 'New submonitor backgrounds: \n'
$.each(data['subbg'], function(key, val) {
document.getElementById("logtextarea").textContent += val + '\n'
})
document.getElementById("logtextarea").textContent += '\n\n'
})
},
function(error){
console.log(error);
}
)
}
});
})
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -0,0 +1 @@
{"nemsys":["nemsys_0008.png","nemsys_0009.png","nemsys_0011.png","nemsys_0021.png","nemsys_0022.png","nemsys_0023.png","nemsys_0024.png","nemsys_0025.png","nemsys_0026.png","nemsys_0027.png","nemsys_0028.png","nemsys_0029.png","nemsys_0030.png","nemsys_0031.png"],"apCard":["ap_06_R0002.png","ap_06_R0003.png","ap_06_R0004.png","ap_06_R0005.png","ap_06_R0006.png","ap_06_R0007.png","ap_06_R0008.png","ap_06_R0009.png","ap_06_R0010.png","ap_06_R0011.png"],"subbg":["subbg_0103.png","subbg_0104.png","subbg_0105.png","subbg_0106.png","subbg_0107.png","subbg_0108.png","subbg_0109.png","subbg_0110.png","subbg_0111.png","subbg_0112.png","subbg_0113.png","subbg_0114.png","subbg_0115.png","subbg_0116.png","subbg_0117.png","subbg_0118.png","subbg_0119.png","subbg_0120.png","subbg_0121.png","subbg_0122.png","subbg_0123.png","subbg_0124.png","subbg_0125.png","subbg_0126.png","subbg_0127.png","subbg_0128.png","subbg_0129.png","subbg_0130.png","subbg_0131.png","subbg_0132.png","subbg_0133.png","subbg_0134.png","subbg_0135.png","subbg_0136.png","subbg_0137.png","subbg_0138.png","subbg_0139.png","subbg_0140.png","subbg_0141.png","subbg_0142.png","subbg_0143.png","subbg_0144.png","subbg_0145.png","subbg_0146.png","subbg_0147.png","subbg_0148.png","subbg_0149.png","subbg_0150.png","subbg_0151.png","submonitor_bg.ifs"]}