IIDX: Initial support added for SPADA

This commit is contained in:
duel0213 2024-02-13 02:54:42 +09:00
parent 386c4ccb7b
commit 0b44be3640
7 changed files with 539 additions and 78 deletions

View File

@ -9,6 +9,7 @@ Supported Versions
- beatmaniaIIDX 18 Resort Anthem
- beatmaniaIIDX 19 Lincle
- beatmaniaIIDX 20 tricoro
- beatmaniaIIDX 21 SPADA
- beatmaniaIIDX 27 HEROIC VERSE
- beatmaniaIIDX 28 BISTROVER
- beatmaniaIIDX 29 CastHour
@ -60,3 +61,8 @@ Changelogs
- Event savings are broken
- Added movie_upload url setting on plugin setting (BISTROVER ~)
- This uses JSON instead of XML and this requires additional setup. (can't test or implement this as I don't own NVIDIA GPU)
**v0.1.7**
- Added Initial support for SPADA
- Event savings are broken
- Fixed rtype didn't save correctly. (BISTROVER ~)

View File

@ -59,7 +59,7 @@ export const musicgetrank: EPR = async (info, data, send) => {
});
}
}
else if (version > 19 && version < 27) {
else if (version > 19 && version < 21) {
indices = cltype === 0 ? [1, 2, 3] : [6, 7, 8];
music_data.forEach((res: score) => {
if (cltype == 0) {
@ -89,8 +89,10 @@ export const musicgetrank: EPR = async (info, data, send) => {
});
}
}
else if (version >= 27) {
indices = cltype === 0 ? [0, 1, 2, 3, 4] : [5, 6, 7, 8, 9];
else if (version >= 21) {
if (version >= 27) indices = cltype === 0 ? [0, 1, 2, 3, 4] : [5, 6, 7, 8, 9];
else indices = cltype === 0 ? [1, 2, 3] : [6, 7, 8];
music_data.forEach((res: score) => {
if (cltype == 0) {
score_data = [-1, res.mid, ...indices.map(i => res.cArray[i]), ...indices.map(i => res.esArray[i]), ...indices.map(i => res.mArray[i])];
@ -219,6 +221,7 @@ export const musicreg: EPR = async (info, data, send) => {
let ghost = null, ghost_gauge = null; // Heroic Verse //
let style = 0, option = 0, option_2 = 0;
// TODO:: SPADA Leggendaria has seperate music_id //
const mapping = [1, 2, 3, 6, 7, 8];
if (version == -1) return send.deny();
else if (version < 20) {

View File

@ -1,4 +1,4 @@
import { pcdata, KDZ_pcdata, IIDX27_pcdata, IIDX28_pcdata, IIDX29_pcdata, IIDX30_pcdata, JDZ_pcdata, LDJ_pcdata } from "../models/pcdata";
import { pcdata, KDZ_pcdata, IIDX27_pcdata, IIDX28_pcdata, IIDX29_pcdata, IIDX30_pcdata, JDZ_pcdata, LDJ_pcdata, IIDX21_pcdata } from "../models/pcdata";
import { grade } from "../models/grade";
import { custom, default_custom } from "../models/custom";
import { IDtoCode, IDtoRef, Base64toBuffer, GetVersion, ReftoProfile, ReftoPcdata, ReftoQPRO, appendSettingConverter } from "../util";
@ -61,7 +61,8 @@ export const pccommon: EPR = async (info, data, send) => {
flg: String(-1),
}),
});
} else if (version == 20) {
}
else if (version == 20) {
return send.object({
"@attr": {
expire: 600,
@ -90,10 +91,9 @@ export const pccommon: EPR = async (info, data, send) => {
tricolettepark: K.ATTR({
open: String(1),
}),
});
}
else if (version >= 27) {
else if (version >= 21) {
return send.pugFile(`pug/LDJ/${version}pccommon.pug`, {
beat: U.GetConfig("BeatPhase"),
movie_upload: U.GetConfig("MovieUpload"),
@ -123,6 +123,9 @@ export const pcreg: EPR = async (info, data, send) => {
case 20:
pcdata = LDJ_pcdata;
break;
case 21:
pcdata = IIDX21_pcdata;
break;
case 27:
pcdata = IIDX27_pcdata;
lightning_playdata = lm_playdata;
@ -306,14 +309,14 @@ export const pcget: EPR = async (info, data, send) => {
wArray.sort((a, b) => a.tour_id - b.tour_id);
}
let event, event_1, event_1s, evtArray = [], evtArray2 = [];
let event;
if (version == 18) {
event = await DB.FindOne(refid, { collection: "event_1", version: version });
if (!_.isNil(event)) {
event.cf = Base64toBuffer(event.cf);
event.pf = Base64toBuffer(event.pf);
event.mf = Base64toBuffer(event.mf);
event.cf = Base64toBuffer(event.cf).toString("hex");
event.pf = Base64toBuffer(event.pf).toString("hex");
event.mf = Base64toBuffer(event.mf).toString("hex");
}
return send.pugFile("pug/JDZ/pcget.pug", {
@ -330,9 +333,9 @@ export const pcget: EPR = async (info, data, send) => {
event = await DB.FindOne(refid, { collection: "event_1", version: version });
if (!_.isNil(event)) {
event.cf = Base64toBuffer(event.cf);
event.qcf = Base64toBuffer(event.qcf);
event.piece = Base64toBuffer(event.piece);
event.cf = Base64toBuffer(event.cf).toString("hex");
event.qcf = Base64toBuffer(event.qcf).toString("hex");
event.piece = Base64toBuffer(event.piece).toString("hex");
}
return send.pugFile("pug/KDZ/pcget.pug", {
@ -346,7 +349,7 @@ export const pcget: EPR = async (info, data, send) => {
});
}
else if (version == 20) {
if (!_.isNil(pcdata.st_help)) pcdata.st_help = Base64toBuffer(pcdata.st_help);
if (!_.isNil(pcdata.st_help)) pcdata.st_help = Base64toBuffer(pcdata.st_help).toString("hex");
let link5 = await DB.FindOne(refid, { collection: "event_1", version: version, event_name: "link5" });
let tricolettepark = await DB.FindOne(refid, { collection: "event_1", version: version, event_name: "tricolettepark" });
@ -366,23 +369,44 @@ export const pcget: EPR = async (info, data, send) => {
yellowboss,
});
}
else if (version >= 27) {
event_1 = await DB.Find(refid, { collection: "event_1", version: version });
event_1s = await DB.Find(refid, { collection: "event_1_sub", version: version });
else if (version >= 21) {
let link5 = null, tricolettepark = null, boss1 = null, evtArray = [], evtArray2 = [];
if (version == 20 || version == 21) {
link5 = await DB.FindOne(refid, { collection: "event_1", version: 20, event_name: "link5" });
tricolettepark = await DB.FindOne(refid, { collection: "event_1", version: 20, event_name: "tricolettepark" });
if (event_1.length > 0) {
for (let evt of event_1) {
evtArray.push(evt);
if (version == 21) {
if (!_.isNil(pcdata.sp_mlist)) {
pcdata.sp_mlist = Base64toBuffer(pcdata.sp_mlist).toString("hex");
pcdata.sp_clist = Base64toBuffer(pcdata.sp_clist).toString("hex");
pcdata.dp_mlist = Base64toBuffer(pcdata.dp_mlist).toString("hex");
pcdata.dp_clist = Base64toBuffer(pcdata.dp_clist).toString("hex");
}
if (!_.isNil(pcdata.st_album)) pcdata.st_album = Base64toBuffer(pcdata.st_album).toString("hex");
boss1 = await DB.FindOne(refid, { collection: "event_1", version: version, event_name: "boss1" });
if (!_.isNil(boss1.durability)) boss1.durability = Base64toBuffer(boss1.durability).toString("hex");
}
}
else {
let event_1 = await DB.Find(refid, { collection: "event_1", version: version });
let event_1s = await DB.Find(refid, { collection: "event_1_sub", version: version });
if (event_1.length > 0) {
for (let evt of event_1) {
evtArray.push(evt);
}
}
if (event_1s.length > 0) {
for (let evt of event_1s) {
evtArray2.push(evt);
}
}
}
if (event_1s.length > 0) {
for (let evt of event_1s) {
evtArray2.push(evt);
}
}
if (lm_music_memo_new.length > 0 && version >= 30) {
if (version >= 30 && lm_music_memo_new.length > 0) {
lm_music_memo_new.forEach((res) => {
let musicmemo_data: musicmemo_data_new = {
folder_idx: res.folder_idx,
@ -395,7 +419,8 @@ export const pcget: EPR = async (info, data, send) => {
mArray.push(musicmemo_data);
});
mArray.sort((a: musicmemo_data_new, b: musicmemo_data_new): number => a.play_style - b.play_style || a.folder_idx - b.folder_idx);
} else if (lm_music_memo.length > 0 && version >= 27) {
}
else if (version >= 27 && lm_music_memo.length > 0) {
lm_music_memo.forEach((res) => {
let musicmemo_data: musicmemo_data = {
music_idx: res.music_idx,
@ -409,7 +434,7 @@ export const pcget: EPR = async (info, data, send) => {
mArray.sort((a: musicmemo_data, b: musicmemo_data): number => a.play_style - b.play_style || a.music_idx - b.music_idx);
}
/* TODO:: figure out how badges works
/*** TODO:: figure out how badges works
[save] - elements are below but get checks for id 0~12
today_recommend (flg)
weekly_ranking (flg)
@ -419,9 +444,8 @@ export const pcget: EPR = async (info, data, send) => {
event1 (flg_id, flg) [10]
arena (flg_id, flg) [2]
iidx_exam (flg)
*/
/* [get]
[get]
category_id - up to 12
badge_flg_id
- This can be up to 23
@ -429,42 +453,45 @@ export const pcget: EPR = async (info, data, send) => {
- category_id: 9 -> 9
- category_id: 7, 10 -> 2
badge_flg
*/
for (let a = 0; a < 13; a++) {
if (a == 0 || a == 1) {
for (let b = 0; b < 24; b++) {
bArray.push({
id: a,
flg_id: b,
flg: -1,
});
}
continue;
} else if (a == 9) {
for (let b = 0; b < 10; b++) {
bArray.push({
id: a,
flg_id: b,
flg: -1,
});
}
continue;
} else if (a == 7 || a == 10) {
for (let b = 0; b < 2; b++) {
bArray.push({
id: a,
flg_id: b,
flg: -1,
});
}
continue;
}
***/
bArray.push({
id: a,
flg_id: 0,
flg: -1,
});
if (version >= 30) {
for (let a = 0; a < 13; a++) {
if (a == 0 || a == 1) {
for (let b = 0; b < 24; b++) {
bArray.push({
id: a,
flg_id: b,
flg: -1,
});
}
continue;
} else if (a == 9) {
for (let b = 0; b < 10; b++) {
bArray.push({
id: a,
flg_id: b,
flg: -1,
});
}
continue;
} else if (a == 7 || a == 10) {
for (let b = 0; b < 2; b++) {
bArray.push({
id: a,
flg_id: b,
flg: -1,
});
}
continue;
}
bArray.push({
id: a,
flg_id: 0,
flg: -1,
});
}
}
return send.pugFile(`pug/LDJ/${version}pcget.pug`, {
@ -480,12 +507,15 @@ export const pcget: EPR = async (info, data, send) => {
rArray,
evtArray,
evtArray2,
boss1,
link5,
tricolettepark,
wArray,
bArray,
});
} else {
return send.deny();
}
return send.deny();
};
// TODO:: migration (oldget/getname/takeover) //
@ -533,6 +563,9 @@ export const pctakeover: EPR = async (info, data, send) => {
case 20:
pcdata = LDJ_pcdata;
break;
case 21:
pcdata = IIDX21_pcdata;
break;
case 27:
pcdata = IIDX27_pcdata;
lightning_playdata = lm_playdata;
@ -674,7 +707,8 @@ export const pcsave: EPR = async (info, data, send) => {
if (cltype == 0) {
pcdata.sach = parseInt($(data).attr().achi);
pcdata.sp_opt = parseInt($(data).attr().opt);
} else {
}
else {
pcdata.dach = parseInt($(data).attr().achi);
pcdata.dp_opt = parseInt($(data).attr().opt);
pcdata.dp_opt2 = parseInt($(data).attr().opt2);
@ -723,7 +757,8 @@ export const pcsave: EPR = async (info, data, send) => {
if (cltype == 0) {
pcdata.sach = parseInt($(data).attr().achi);
pcdata.sp_opt = parseInt($(data).attr().opt);
} else {
}
else {
pcdata.dach = parseInt($(data).attr().achi);
pcdata.dp_opt = parseInt($(data).attr().opt);
pcdata.dp_opt2 = parseInt($(data).attr().opt2);
@ -799,7 +834,8 @@ export const pcsave: EPR = async (info, data, send) => {
if (cltype == 0) {
pcdata.sach = parseInt($(data).attr().achi);
pcdata.sp_opt = parseInt($(data).attr().opt);
} else {
}
else {
pcdata.dach = parseInt($(data).attr().achi);
pcdata.dp_opt = parseInt($(data).attr().opt);
pcdata.dp_opt2 = parseInt($(data).attr().opt2);
@ -1054,9 +1090,265 @@ export const pcsave: EPR = async (info, data, send) => {
);
}
}
else if (version == 21) {
pcdata.rtype = parseInt($(data).attr().rtype);
pcdata.sach = parseInt($(data).attr().s_achi);
pcdata.dach = parseInt($(data).attr().d_achi);
pcdata.sp_opt = parseInt($(data).attr().sp_opt);
pcdata.dp_opt = parseInt($(data).attr().dp_opt);
pcdata.dp_opt2 = parseInt($(data).attr().dp_opt2);
pcdata.gpos = parseInt($(data).attr().gpos);
pcdata.s_sorttype = parseInt($(data).attr().s_sorttype);
pcdata.d_sorttype = parseInt($(data).attr().d_sorttype);
pcdata.s_disp_judge = parseInt($(data).attr().s_disp_judge);
pcdata.d_disp_judge = parseInt($(data).attr().d_disp_judge);
pcdata.s_pace = parseInt($(data).attr().s_pace);
pcdata.d_pace = parseInt($(data).attr().d_pace);
pcdata.s_gno = parseInt($(data).attr().s_gno);
pcdata.d_gno = parseInt($(data).attr().d_gno);
pcdata.s_gtype = parseInt($(data).attr().s_gtype);
pcdata.d_gtype = parseInt($(data).attr().d_gtype);
pcdata.s_sdlen = parseInt($(data).attr().s_sdlen);
pcdata.d_sdlen = parseInt($(data).attr().d_sdlen);
pcdata.s_sdtype = parseInt($(data).attr().s_sdtype);
pcdata.d_sdtype = parseInt($(data).attr().d_sdtype);
pcdata.s_notes = parseFloat($(data).attr().s_notes);
pcdata.d_notes = parseFloat($(data).attr().d_notes);
pcdata.s_judge = parseInt($(data).attr().s_judge);
pcdata.d_judge = parseInt($(data).attr().d_judge);
pcdata.s_judgeAdj = parseInt($(data).attr().s_judgeAdj);
pcdata.d_judgeAdj = parseInt($(data).attr().d_judgeAdj);
pcdata.s_hispeed = parseFloat($(data).attr().s_hispeed);
pcdata.d_hispeed = parseFloat($(data).attr().d_hispeed);
pcdata.s_opstyle = parseInt($(data).attr().s_opstyle);
pcdata.d_opstyle = parseInt($(data).attr().d_opstyle);
if (!_.isNil($(data).element("secret"))) {
pcdata.secret_flg1 = $(data).element("secret").bigints("flg1").map(String);
pcdata.secret_flg2 = $(data).element("secret").bigints("flg2").map(String);
pcdata.secret_flg3 = $(data).element("secret").bigints("flg3").map(String);
}
if (!_.isNil($(data).element("favorite"))) {
pcdata.sp_mlist = $(data).element("favorite").buffer("sp_mlist").toString("base64");
pcdata.sp_clist = $(data).element("favorite").buffer("sp_clist").toString("base64");
pcdata.dp_mlist = $(data).element("favorite").buffer("dp_mlist").toString("base64");
pcdata.dp_clist = $(data).element("favorite").buffer("dp_clist").toString("base64");
}
if (!_.isNil($(data).element("qpro_secret"))) {
custom.qpro_secret_head = $(data).element("qpro_secret").bigints("head").map(String);
custom.qpro_secret_hair = $(data).element("qpro_secret").bigints("hair").map(String);
custom.qpro_secret_face = $(data).element("qpro_secret").bigints("face").map(String);
custom.qpro_secret_body = $(data).element("qpro_secret").bigints("body").map(String);
custom.qpro_secret_hand = $(data).element("qpro_secret").bigints("hand").map(String);
}
if (!_.isNil($(data).element("achievements"))) {
// TODO:: achi_packflg, achi_packid, achi_playpack //
pcdata.achi_lastweekly = parseInt($(data).attr("achievements").last_weekly);
pcdata.achi_packcomp = parseInt($(data).attr("achievements").pack_comp);
pcdata.achi_visitflg = parseInt($(data).attr("achievements").visit_flg);
pcdata.achi_weeklynum = parseInt($(data).attr("achievements").weekly_num);
pcdata.achi_trophy = $(data).element("achievements").bigints("trophy").map(String);
}
if (hasStepUpData) {
pcdata.st_damage = parseInt($(data).attr("step").damage);
pcdata.st_defeat = parseInt($(data).attr("step").defeat);
pcdata.st_progress = parseInt($(data).attr("step").progress);
pcdata.st_round = parseInt($(data).attr("step").round);
pcdata.st_sp_mission = parseInt($(data).attr("step").sp_mission);
pcdata.st_dp_mission = parseInt($(data).attr("step").dp_mission);
pcdata.st_sp_level = parseInt($(data).attr("step").sp_level);
pcdata.st_dp_level = parseInt($(data).attr("step").dp_level);
pcdata.st_sp_mplay = parseInt($(data).attr("step").sp_mplay);
pcdata.st_dp_mplay = parseInt($(data).attr("step").dp_mplay);
pcdata.st_last_select = parseInt($(data).attr("step").last_select);
pcdata.st_album = $(data).buffer("step").toString("base64"); // TODO:: verify //
}
if (!_.isNil($(data).element("deller"))) pcdata.deller += parseInt($(data).attr("deller").deller);
if (!_.isNil($(data).element("orb_data"))) pcdata.orb += parseInt($(data).attr("orb_data").add_orb);
// TODO:: fix event saving, these event savings are broken. //
if (!_.isNil($(data).element("boss1"))) {
let event_data = {
stamina: parseInt($(data).attr("boss1").stamina),
attack: parseInt($(data).attr("boss1").attack),
item_flg: parseInt($(data).attr("boss1").item_flg),
item_flg2: parseInt($(data).attr("boss1").item_flg2),
pick: parseInt($(data).attr("boss1").pick),
row0: parseInt($(data).attr("boss1").row0),
row1: parseInt($(data).attr("boss1").row1),
row2: parseInt($(data).attr("boss1").row2),
row3: parseInt($(data).attr("boss1").row3),
column0: parseInt($(data).attr("boss1").column0),
column1: parseInt($(data).attr("boss1").column1),
column2: parseInt($(data).attr("boss1").column2),
column3: parseInt($(data).attr("boss1").column3),
map: parseInt($(data).attr("boss1").map),
job: parseInt($(data).attr("boss1").job),
general: parseInt($(data).attr("boss1").general),
battle: parseInt($(data).attr("boss1").battle),
boss0_n: parseInt($(data).attr("boss1").boss0_n),
boss0_h: parseInt($(data).attr("boss1").boss0_h),
boss0_a: parseInt($(data).attr("boss1").boss0_a),
boss1_n: parseInt($(data).attr("boss1").boss1_n),
boss1_h: parseInt($(data).attr("boss1").boss1_h),
boss1_a: parseInt($(data).attr("boss1").boss1_a),
boss2_n: parseInt($(data).attr("boss1").boss2_n),
boss2_h: parseInt($(data).attr("boss1").boss2_h),
boss2_a: parseInt($(data).attr("boss1").boss2_a),
boss_scene: parseInt($(data).attr("boss1").boss_scene),
boss0_damage: parseInt($(data).attr("boss1").boss0_damage),
boss1_damage: parseInt($(data).attr("boss1").boss1_damage),
boss2_damage: parseInt($(data).attr("boss1").boss2_damage),
boss3_damage: parseInt($(data).attr("boss1").boss3_damage),
boss4_damage: parseInt($(data).attr("boss1").boss4_damage),
boss5_damage: parseInt($(data).attr("boss1").boss5_damage),
boss6_damage: parseInt($(data).attr("boss1").boss6_damage),
level: $(data).element("boss1").numbers("level"),
durability: $(data).element("boss1").buffer("durability").toString("base64"),
};
await DB.Upsert(refid,
{
collection: "event_1",
version: version,
event_name: "boss1",
},
{
$set: event_data,
}
);
}
if (!_.isNil($(data).element("link5"))) {
let link5 = await DB.FindOne(refid, { collection: "event_1", version: 20, event_name: "link5" });
let event_data;
if (_.isNil(link5)) {
event_data = {
qpro: parseInt($(data).attr("link5").qpro), // add
glass: parseInt($(data).attr("link5").glass), // add
beautiful: parseInt($(data).attr("link5").beautiful),
quaver: parseInt($(data).attr("link5").quaver),
castle: parseInt($(data).attr("link5").castle),
flip: parseInt($(data).attr("link5").flip),
titans: parseInt($(data).attr("link5").titans),
exusia: parseInt($(data).attr("link5").exusia),
waxing: parseInt($(data).attr("link5").waxing),
sampling: parseInt($(data).attr("link5").sampling),
beachside: parseInt($(data).attr("link5").beachside),
cuvelia: parseInt($(data).attr("link5").cuvelia),
reunion: parseInt($(data).attr("link5").reunion),
bad: parseInt($(data).attr("link5").bad),
turii: parseInt($(data).attr("link5").turii),
anisakis: parseInt($(data).attr("link5").anisakis),
second: parseInt($(data).attr("link5").second),
whydidyou: parseInt($(data).attr("link5").whydidyou),
china: parseInt($(data).attr("link5").china),
fallen: parseInt($(data).attr("link5").fallen),
broken: parseInt($(data).attr("link5").broken),
summer: parseInt($(data).attr("link5").summer),
sakura: parseInt($(data).attr("link5").sakura),
wuv: parseInt($(data).attr("link5").wuv),
survival: parseInt($(data).attr("link5").survival),
thunder: parseInt($(data).attr("link5").thunder),
}
}
else {
event_data = link5;
event_data.qpro += parseInt($(data).attr("link5").qpro);
event_data.glass += parseInt($(data).attr("link5").glass);
event_data.beautiful = parseInt($(data).attr("link5").beautiful);
event_data.quaver = parseInt($(data).attr("link5").quaver);
event_data.castle = parseInt($(data).attr("link5").castle);
event_data.flip = parseInt($(data).attr("link5").flip);
event_data.titans = parseInt($(data).attr("link5").titans);
event_data.exusia = parseInt($(data).attr("link5").exusia);
event_data.waxing = parseInt($(data).attr("link5").waxing);
event_data.sampling = parseInt($(data).attr("link5").sampling);
event_data.beachside = parseInt($(data).attr("link5").beachside);
event_data.cuvelia = parseInt($(data).attr("link5").cuvelia);
event_data.reunion = parseInt($(data).attr("link5").reunion);
event_data.bad = parseInt($(data).attr("link5").bad);
event_data.turii = parseInt($(data).attr("link5").turii);
event_data.anisakis = parseInt($(data).attr("link5").anisakis);
event_data.second = parseInt($(data).attr("link5").second);
event_data.whydidyou = parseInt($(data).attr("link5").whydidyou);
event_data.china = parseInt($(data).attr("link5").china);
event_data.fallen = parseInt($(data).attr("link5").fallen);
event_data.broken = parseInt($(data).attr("link5").broken);
event_data.summer = parseInt($(data).attr("link5").summer);
event_data.sakura = parseInt($(data).attr("link5").sakura);
event_data.wuv = parseInt($(data).attr("link5").wuv);
event_data.survival = parseInt($(data).attr("link5").survival);
event_data.thunder = parseInt($(data).attr("link5").thunder);
}
await DB.Upsert(refid,
{
collection: "event_1",
version: 20,
event_name: "link5",
},
{
$set: event_data,
}
);
}
if (!_.isNil($(data).element("tricolettepark"))) {
let tricolettepark = await DB.FindOne(refid, { collection: "event_1", version: 20, event_name: "tricolettepark" });
let event_data;
if (_.isNil(tricolettepark)) {
event_data = {
open_music: parseInt($(data).attr("tricolettepark").open_music),
boss0_damage: parseInt($(data).attr("tricolettepark").boss0_damage), // add
boss1_damage: parseInt($(data).attr("tricolettepark").boss1_damage),
boss2_damage: parseInt($(data).attr("tricolettepark").boss2_damage),
boss3_damage: parseInt($(data).attr("tricolettepark").boss3_damage),
boss0_stun: parseInt($(data).attr("tricolettepark").boss0_stun),
boss1_stun: parseInt($(data).attr("tricolettepark").boss1_stun),
boss2_stun: parseInt($(data).attr("tricolettepark").boss2_stun),
boss3_stun: parseInt($(data).attr("tricolettepark").boss3_stun),
union_magic_used: parseInt($(data).attr("tricolettepark").union_magic_used),
}
}
else {
event_data = tricolettepark;
event_data.open_music = parseInt($(data).attr("tricolettepark").open_music),
event_data.boss0_damage += parseInt($(data).attr("tricolettepark").boss0_damage);
event_data.boss1_damage += parseInt($(data).attr("tricolettepark").boss1_damage);
event_data.boss2_damage += parseInt($(data).attr("tricolettepark").boss2_damage);
event_data.boss3_damage += parseInt($(data).attr("tricolettepark").boss3_damage);
event_data.boss0_stun = parseInt($(data).attr("tricolettepark").boss0_stun);
event_data.boss1_stun = parseInt($(data).attr("tricolettepark").boss1_stun);
event_data.boss2_stun = parseInt($(data).attr("tricolettepark").boss2_stun);
event_data.boss3_stun = parseInt($(data).attr("tricolettepark").boss3_stun);
event_data.union_magic_used = parseInt($(data).attr("tricolettepark").union_magic_used);
}
await DB.Upsert(refid,
{
collection: "event_1",
version: 20,
event_name: "tricolettepark",
},
{
$set: event_data,
}
);
}
}
else if (version >= 27) {
// lid bookkeep cid ctype ccode
pcdata.rtype = parseInt($(data).attr().d_sdtype);
pcdata.rtype = parseInt($(data).attr().rtype);
pcdata.sach = parseInt($(data).attr().s_achi);
pcdata.dach = parseInt($(data).attr().d_achi);
pcdata.sp_opt = parseInt($(data).attr().sp_opt);

View File

@ -34,6 +34,7 @@ export function register() {
const MultiRoute = (method: string, handler: EPR | boolean) => {
R.Route(`${method}`, handler);
R.Route(`IIDX21${method}`, handler);
R.Route(`IIDX27${method}`, handler);
R.Route(`IIDX28${method}`, handler);
R.Route(`IIDX29${method}`, handler);
@ -67,7 +68,7 @@ export function register() {
MultiRoute("gameSystem.systemInfo", gssysteminfo);
R.Unhandled((req: EamuseInfo, data: any, send: EamuseSend) => {
console.warn(`Unhandled Request : ${req.module}.${req.method} , [${GetVersion(req)}]`);
console.warn(`Unhandled Request : [${GetVersion(req)}], ${req.module}.${req.method}, ${JSON.stringify(data)}`);
return send.success();
});
}

View File

@ -129,11 +129,21 @@ export interface pcdata {
st_review: number;
st_help: any; // save as base64 string, sent as buffer //
st_damage: number; // step (spada) //
st_defeat: number;
st_round: number;
st_sp_mission: number;
st_dp_mission: number;
st_sp_level: number;
st_dp_level: number;
st_sp_mplay: number;
st_dp_mplay: number;
st_last_select: number;
st_album: any;
st_enemy_damage: number; // step (Heroic Verse) //
st_progress: number;
st_is_track_ticket: boolean;
st_sp_level: number;
st_dp_level: number;
st_sp_mission_point: number;
st_dp_mission_point: number;
st_sp_dj_mission_level: number;
@ -144,8 +154,6 @@ export interface pcdata {
st_dp_dj_mission_clear: number;
st_sp_clear_mission_clear: number;
st_dp_clear_mission_clear: number;
st_sp_mplay: number;
st_dp_mplay: number;
st_tips_read_list: number;
st_total_point: number; // CastHour //
st_enemy_defeat_flg: number;
@ -167,6 +175,11 @@ export interface pcdata {
p3: number[];
p4: number[];
sp_mlist: any; // favorite (SPADA), save as base64 string, sent as buffer //
sp_clist: any;
dp_mlist: any;
dp_clist: any;
eb_keyorb: number; // extra boss (Heroic Verse) //
eb_bossorb0: number;
eb_bossorb1: number;
@ -304,6 +317,83 @@ export const LDJ_pcdata = {
orb: 0,
}
export const IIDX21_pcdata = {
version: 21,
spnum: 0,
dpnum: 0,
sach: 0,
dach: 0,
mode: 0,
pmode: 0,
rtype: 0,
sp_opt: 0,
dp_opt: 0,
dp_opt2: 0,
gpos: 0,
s_sorttype: 0,
d_sorttype: 0,
s_pace: 0,
d_pace: 0,
s_gno: 0,
d_gno: 0,
s_sub_gno: 0,
d_sub_gno: 0,
s_gtype: 0,
d_gtype: 0,
s_sdlen: 0,
d_sdlen: 0,
s_sdtype: 0,
d_sdtype: 0,
s_timing: 0,
d_timing: 0,
s_notes: 0,
d_notes: 0,
s_judge: 0,
d_judge: 0,
s_judgeAdj: 0,
d_judgeAdj: 0,
s_hispeed: 0,
d_hispeed: 0,
s_liflen: 0,
d_liflen: 0,
s_disp_judge: 0,
d_disp_judge: 0,
s_opstyle: 0,
d_opstyle: 0,
secret_flg1: Array<string>(3).fill("-1"),
secret_flg2: Array<string>(3).fill("-1"),
secret_flg3: Array<string>(3).fill("-1"),
sgid: -1,
dgid: -1,
st_damage: 0,
st_defeat: 0,
st_progress: 0,
st_round: 0,
st_sp_mission: 0,
st_dp_mission: 0,
st_sp_level: 0,
st_dp_level: 0,
st_sp_mplay: 0,
st_dp_mplay: 0,
st_last_select: 0,
st_album: "",
achi_pack: 0,
achi_packcomp: 0,
achi_lastweekly: 0,
achi_weeklynum: 0,
achi_visitflg: 0,
achi_rivalcrush: 0,
achi_trophy: Array<string>(20).fill("0"),
deller: 0,
orb: 0,
}
export const IIDX27_pcdata = {
version: 27,

View File

@ -0,0 +1,14 @@
IIDX21pc(status="0" expire="600")
ir(beat=beat)
limit(phase="1")
boss(phase="1")
boss1(phase="1")
medal(phase="1")
vip_pass_black
cafe(open="1")
tricolettepark(open="1")
tricolettepark_skip(phase="1")
deller_bonus(open="1")
gumi_event
newsong_another(open="1")
superstar(phase="1")

View File

@ -0,0 +1,55 @@
IIDX21pc(status="0")
pcdata(id=profile.id idstr=profile.idstr name=profile.name pid=profile.pid spnum=pcdata.spnum dpnum=pcdata.dpnum sach=pcdata.sach dach=pcdata.dach mode=pcdata.mode pmode=pcdata.pmode rtype=pcdata.rtype sp_opt=pcdata.sp_opt dp_opt=pcdata.dp_opt dp_opt2=pcdata.dp_opt2 gpos=pcdata.gpos s_sorttype=pcdata.s_sorttype d_sorttype=pcdata.d_sorttype s_pace=pcdata.s_pace d_pace=pcdata.d_pace s_gno=pcdata.s_gno d_gno=pcdata.d_gno s_gtype=pcdata.s_gtype d_gtype=pcdata.d_gtype s_sdlen=pcdata.s_sdlen d_sdlen=pcdata.d_sdlen s_sdtype=pcdata.s_sdtype d_sdtype=pcdata.d_sdtype s_timing=pcdata.s_timing d_timing=pcdata.d_timing s_notes=pcdata.s_notes d_notes=pcdata.d_notes s_judge=pcdata.s_judge d_judge=pcdata.d_judge s_judgeAdj=pcdata.s_judgeAdj d_judgeAdj=pcdata.d_judgeAdj s_hispeed=pcdata.s_hispeed d_hispeed=pcdata.d_hispeed s_liflen=pcdata.s_liflen d_liflen=pcdata.d_liflen s_disp_judge=pcdata.s_disp_judge d_disp_judge=pcdata.d_disp_judge s_opstyle=pcdata.s_opstyle d_opstyle=pcdata.d_opstyle)
spdp_rival(flg="-1")
bind_eaappli
secret
flg1(__type="s64" __count="2") -1 -1
flg2(__type="s64" __count="2") -1 -1
flg3(__type="s64" __count="2") -1 -1
if pcdata.sp_mlist != null
favorite
sp_mlist(__type="bin") #{pcdata.sp_mlist}
sp_clist(__type="bin") #{pcdata.sp_clist}
dp_mlist(__type="bin") #{pcdata.dp_mlist}
dp_clist(__type="bin") #{pcdata.dp_clist}
qpro_secret
head(__type="s64" __count="3") -1 -1 -1
hair(__type="s64" __count="3") -1 -1 -1
face(__type="s64" __count="3") -1 -1 -1
body(__type="s64" __count="3") -1 -1 -1
hand(__type="s64" __count="3") -1 -1 -1
grade(sgid=pcdata.sgid dgid=pcdata.dgid)
- for (let d of dArray)
g(__type="u8" __count="4") #{d[0]} #{d[1]} #{d[2]} #{d[3]}
skin(__type="s16" __count="14") #{custom.frame} #{custom.turntable} #{custom.note_burst} #{custom.menu_music} #{appendsettings} #{custom.lane_cover} 0 #{custom.category_vox} #{custom.note_skin} #{custom.full_combo_splash} 0 #{custom.disable_musicpreview} 0 0
qprodata(__type="u32" __count="5") #{custom.qpro_head} #{custom.qpro_hair} #{custom.qpro_face} #{custom.qpro_hand} #{custom.qpro_body}
rlist
- for (let rd of rArray)
rival(spdp=rd.play_style id=rd.profile[2] id_str=rd.profile[3] djname=rd.profile[0] pid=rd.profile[1] sg=rd.pcdata[0] dg=rd.pcdata[1] sa=rd.pcdata[2] da=rd.pcdata[3])
stepdata(step_sach="-1" step_dach="-1")
qprodata(body=rd.qprodata[3] face=rd.qprodata[2] hair=rd.qprodata[0] hand=rd.qprodata[4] head=rd.qprodata[1])
shop(name="CORE")
join_shop(joinflg="1" join_cflg="1" join_id="0" join_name="CORE")
if pcdata.st_album != null
step(damage=pcdata.st_damage defeat=pcdata.st_defeat progress=pcdata.st_progress round=pcdata.st_round sp_mission=pcdata.st_sp_mission dp_mission=pcdata.st_dp_mission sp_level=pcdata.st_sp_level dp_level=pcdata.st_dp_level sp_mplay=pcdata.st_sp_mplay dp_mplay=pcdata.st_dp_mplay last_select=pcdata.st_last_select)
album(__type="bin") #{pcdata.st_album}
//-step_assist(iidx_id iidx_id_str name hair head face body hand)
achievements(pack=pcdata.achi_pack pack_comp=pcdata.achi_packcomp last_weekly=pcdata.achi_lastweekly weekly_num=pcdata.achi_weeklynum visit_flg=pcdata.achi_visitflg rival_crush=pcdata.achi_rivalcrush)
trophy(__type="s64" __count="10") #{pcdata.achi_trophy[0]} #{pcdata.achi_trophy[1]} #{pcdata.achi_trophy[2]} #{pcdata.achi_trophy[3]} #{pcdata.achi_trophy[4]} #{pcdata.achi_trophy[5]} #{pcdata.achi_trophy[6]} #{pcdata.achi_trophy[7]} #{pcdata.achi_trophy[8]} #{pcdata.achi_trophy[9]}
if link5 != null
link5(qpro=link5.qpro glass=link5.glass treasure="0" beautiful=link5.beautiful quaver=link5.quaver castle=link5.castle flip=link5.flip titans=link5.titans exusia=link5.exusia waxing=link5.waxing sampling=link5.sampling beachside=link5.beachside cuvelia=link5.cuvelia reunion=link5.reunion bad=link5.bad turii=link5.turii anisakis=link5.anisakis second=link5.second whydidyou=link5.whydidyou china=link5.china fallen=link5.fallen broken=link5.broken summer=link5.summer sakura=link5.sakura wuv=link5.wuv survival=link5.survival thunder=link5.thunder qproflg="0" glassflg="0" reflec_data="0")
//-cafe(food pastry rainbow beastie astraia beachimp holysnow trueblue ledvsscu service is_first)
gakuen(music_list="-1")
baseball(music_list="-1")
if tricolettepark != null
tricolettepark(open_music=tricolettepark.open_music boss0_damage=tricolettepark.boss0_damage boss1_damage=tricolettepark.boss1_damage boss2_damage=tricolettepark.boss2_damage boss3_damage=tricolettepark.boss3_damage boss0_stun=tricolettepark.boss0_stun boss1_stun=tricolettepark.boss1_stun boss2_stun=tricolettepark.boss2_stun boss3_stun=tricolettepark.boss3_stun magic_gauge="0" party="0" is_union="0" attack_rate="1")
pyramid(music_list="-1" item_list="-1" statue_0="0" statue_1="0" statue_2="0")
deller(deller=pcdata.deller rate="1")
orb_data(rest_orb=pcdata.orb)
if boss1 != null
boss1(stamina=boss1.stamina attack=boss1.attack item_flg=boss1.item_flg item_flg2=boss1.item_flg2 pick=boss1.pick row0=boss1.row0 row1=boss1.row1 row2=boss1.row2 row3=boss1.row3 column0=boss1.column0 column1=boss1.column1 column2=boss1.column2 column3=boss1.column3 map=boss1.map job=boss1.job general=boss1.general battle=boss1.battle boss0_n=boss1.boss0_n boss0_h=boss1.boss0_h boss0_a=boss1.boss0_a boss1_n=boss1.boss1_n boss1_h=boss1.boss1_h boss1_a=boss1.boss1_a boss2_n=boss1.boss2_n boss2_h=boss1.boss2_h boss2_a=boss1.boss2_a item1="0" item2="0" item3="0" boss_scene=boss1.boss_scene boss0_damage=boss1.boss0_damage boss1_damage=boss1.boss1_damage boss2_damage=boss1.boss2_damage boss3_damage=boss1.boss3_damage boss4_damage=boss1.boss4_damage boss5_damage=boss1.boss5_damage boss6_damage=boss1.boss6_damage)
durability(__type="bin") #{boss1.durability}
level(__type="s32" __count="28") #{boss1.level[0]} #{boss1.level[1]} #{boss1.level[2]} #{boss1.level[3]} #{boss1.level[4]} #{boss1.level[5]} #{boss1.level[6]}
//-boss1_phase4(map_clear_flg)
new_durability
//-superstar(achieve_flg)