diff --git a/iidx@asphyxia/README.md b/iidx@asphyxia/README.md new file mode 100644 index 0000000..56d6bd8 --- /dev/null +++ b/iidx@asphyxia/README.md @@ -0,0 +1,170 @@ +# beatmaniaIIDX + +Plugin Version: **v0.1.17** + +--- + +Supported Versions + - beatmaniaIIDX 14 GOLD (2007072301) + - beatmaniaIIDX 15 DJ TROOPERS (2008031100) + - beatmaniaIIDX 16 EMPRESS (2009072200) + - beatmaniaIIDX 17 SIRIUS (2010071200) + - beatmaniaIIDX 18 Resort Anthem (2011071200) + - beatmaniaIIDX 19 Lincle (2012090300) + - beatmaniaIIDX 20 tricoro (2013090900) + - beatmaniaIIDX 21 SPADA (2014071600) + - beatmaniaIIDX 22 PENDUAL (2015080500) + - beatmaniaIIDX 23 copula (2016083100) + - beatmaniaIIDX 24 SINOBUZ (2017082800) + - beatmaniaIIDX 25 CANNON BALLERS (2018091900) + - beatmaniaIIDX 26 Rootage (2019090200) + - beatmaniaIIDX 27 HEROIC VERSE (2020092900) + - beatmaniaIIDX 28 BISTROVER (2021091500) + - beatmaniaIIDX 29 CastHour (2022082400) + - beatmaniaIIDX 30 RESIDENT (2023090500) + - beatmaniaIIDX 31 EPOLIS (2024082600) + - beatmaniaIIDX 32 Pinky Crush (2025082500) + +--- + +Features + - STEP UP (Partial) + - SKILL ANALYZER + - EVENT (Partial) + - ARENA (LOCAL only) + - RANDOME LANE TICKET + - FAVORITE/SONG SELECTION NOTES + - ORIGINAL FILTER + +--- + +Known Issues + - Clear Lamps may display invalid lamps due to missing conversion code + - DJ LEVEL folders are broken in ~ DJ TROOPERS due to missing rank\_id + - LEGGENDARIA play records before HEROIC VERSE may not display on higher version due to missing conversion code + - SUPER FUTURE 2323 play records doesn't display on other version due to missing conversion code + - ONE MORE EXTRA STAGE progress won't save (can't test this due to skill issue) + - Some of licensed songs are locked behind (kinda solved with music\_open but needs to be verified) + - Some of badges aren't saving in RESIDENT ~ (needs to figure out name to id) + +--- + +Changelogs + +**v0.1.0** + - Added Initial support for Lincle + +**v0.1.1** + - Added Initial support for HEROIC VERSE + - Expanded score array to adapting newer difficulty (SPN ~ DPA [6] -> SPB ~ DPL [10]) + - This borked previous score datas recorded with v0.1.0 + - All score data now shared with all version + - as it doesn't have music\_id conversion, it will display incorrect data on certain versions + - Added Initial customize support (no webui) + +**v0.1.2** + - Added Initial support for BISTROVER + - Added Initial Rival support (partial webui) + +**v0.1.3** + - Added Initial support for CastHour + +**v0.1.4** + - Added Initial support for RESIDENT + +**v0.1.5** + - Added Initial support for Resort Anthem + - LEAGUE, STORY does not work yet + - Fixed where s\_hispeed/d\_hispeed doesn't save correctly + +**v0.1.6** + - Added Initial support for tricoro + - Some of 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 + - Some of event savings are broken + - Fixed where rtype didn't save correctly (BISTROVER ~) + +**v0.1.8** + - Added RIVAL pacemaker support + - Added Initial support for PENDUAL + - Some of event savings are broken + - Fixed where old\_linkage\_secret\_flg is missing on pc.get response (RESIDENT) + - Fixed where game could crash due to invalid rival qprodata + - Fixed where lift isn't saving (SPADA) + +**v0.1.9** + - Added Initial support for copula + - Some of event savings are broken + - Added shop.getconvention/shop.setconvention/shop.getname/shop.savename response + +**v0.1.10** + - Added Initial support for SINOBUZ ~ Rootage + - Converted from asphyxia\_route\_public + +**v0.1.11** + - Added Shop Ranking support + - Changed pc.common/gameSystem.systemInfo response not to use pugFile + - IIDX\_CPUS on models/arena.ts came from asphyxia\_route\_public + +**v0.1.12** + - Exposed some of pc.common attributes to plugin settings (WIP) + - Added Experimental WebUI (WIP) + - Added music.crate/music.breg response + - CLEAR RATE and BEGINNER clear lamp may not work on certain versions + - Added Initial support for SIRIUS + - Fixed where Venue Top didn't save correctly (BISTROVER ~) + - Fixed where music.appoint send empty response even rival has score data but player doesn't have score data + - Fixed where FAVORITE may work only on specific version + - Fixed where shop name always displayed as "CORE" instead of saved one + - Fixed where rlist STEP UP achieve value was fixed value instead of saved one + - Fixed where fcombo isn't saving (Resort Anthem) + - Removed shop.savename as not working as intented + +**v0.1.13** + - Added Initial support for DJ TROOPERS + - Added Initial support for EMPRESS + - Fixed where EXPERT result does not display total cleared users and ranking position + +**v0.1.14** + - Added Experimental OMEGA-Attack event saving support on tricoro + - Reworked on SINOBUZ ~ Rootage responses + - Fixed where Base64toBuffer returns invalid value sometimes + - Fixed where timing display option isn't saving on certain versions + +**v0.1.15** + - Added Initial support for GOLD + - Added Disable Beginner Option + - Added Experimental Badge saving support + - Added Experimental score import/export + - Fixed where plugin may fail to register due to missing types in dev mode (invalid setup for dev, just enough to get around) + - Fixed where unable to login after first-play (SPADA, SINOBUZ, Rootage) + - Fixed where pacemaker isn't working as intended due to malformed ghost data on music.appoint response (~ DJ TROOPERS) + - Fixed where pacemaker isn't working as intented due to wrong condition check (HEROIC VERSE ~) + - Fixed where pacemaker sub-type isn't load correctly (HEROIC VERSE ~) + - Fixed where QPRO data doesn't get saved in WebUI + +**v0.1.16** + - Added Initial support for EPOLIS + - Added music\_open on gameSystem.systemInfo response + - Added EXTRA FAVORITE support + - Fixed where lightning settings doesn't get saved on logout + - Fixed where Disable Music Preview, Disable HCN Color, VEFX Lock settings doesn't reflect + - Fixed where MISS COUNT has 0 as default (including score import) + - Fixed where MISS COUNT doesn't get updated when exscore is same + - Fixed where lightning model settings saved incorrectly + - Fixed where unable to import score if user has DP scores + - Fixed where unable to achieve dan if you failed once + - Fixed where unable to login (tricoro, CastHour, Rootage) + - Fixed where unable to specify rival in WebUI + - Fixed where music.arenaCPU isn't working as intended due to change of type (EPOLIS ~) + - Fixed where qpro head equip request handle as hand equip (@anzuwork) + - Added error message for invalid score database entries + - Reverted `v0.1.15` dev mode related code changes (now requires proper dev setup, refer parent README.md) + - WebUI is now display values of corresponding version + +**v0.1.17** + - Added Initial support for Pinky Crush diff --git a/iidx@asphyxia/data/grade.json b/iidx@asphyxia/data/grade.json new file mode 100644 index 0000000..970189b --- /dev/null +++ b/iidx@asphyxia/data/grade.json @@ -0,0 +1,94 @@ +{ + "31": { + "0": { + "15": { + "music_id": [ 25090, 23068, 19004, 29045 ], + "class_id": [ 3, 3, 3, 3 ], + "kind": 0 + }, + "16": { + "music_id": [ 23005, 27078, 22065, 27060 ], + "class_id": [ 3, 3, 3, 3 ], + "kind": 0 + }, + "17": { + "music_id": [ 29007, 26108, 19002, 18004 ], + "class_id": [ 3, 3, 3, 3 ], + "kind": 0 + }, + "18": { + "music_id": [ 25007, 18032, 16020, 12004 ], + "class_id": [ 3, 3, 3, 3 ], + "kind": 0 + } + }, + "1": { + "15": { + "music_id": [ 15032, 29033, 27092, 30020 ], + "class_id": [ 3, 3, 3, 3 ], + "kind": 0 + }, + "16": { + "music_id": [ 10028, 26070, 28091, 23075 ], + "class_id": [ 3, 3, 3, 3 ], + "kind": 0 + }, + "17": { + "music_id": [ 26012, 28002, 17017, 28005 ], + "class_id": [ 3, 3, 3, 3 ], + "kind": 0 + }, + "18": { + "music_id": [ 28008, 15001, 19002, 9028 ], + "class_id": [ 3, 3, 3, 3 ], + "kind": 0 + } + } + }, + "32": { + "0": { + "15": { + "music_id": [ 19022, 30033, 27013, 29045 ], + "class_id": [ 3, 3, 3, 3 ], + "kind": 0 + }, + "16": { + "music_id": [ 27034, 24023, 16009, 25085 ], + "class_id": [ 3, 3, 3, 3 ], + "kind": 0 + }, + "17": { + "music_id": [ 26087, 19002, 29050, 30024 ], + "class_id": [ 3, 3, 3, 3 ], + "kind": 0 + }, + "18": { + "music_id": [ 30052, 18032, 16020, 12004 ], + "class_id": [ 3, 3, 3, 3 ], + "kind": 0 + } + }, + "1": { + "15": { + "music_id": [ 12002, 31063, 23046, 30020 ], + "class_id": [ 3, 3, 3, 3 ], + "kind": 0 + }, + "16": { + "music_id": [ 26106, 14021, 29052, 23075 ], + "class_id": [ 3, 3, 3, 3 ], + "kind": 0 + }, + "17": { + "music_id": [ 29042, 26043, 17017, 28005 ], + "class_id": [ 3, 3, 3, 3 ], + "kind": 0 + }, + "18": { + "music_id": [ 25007, 29017, 19002, 9028 ], + "class_id": [ 3, 3, 3, 3 ], + "kind": 0 + } + } + } +} diff --git a/iidx@asphyxia/data/music_open.json b/iidx@asphyxia/data/music_open.json new file mode 100644 index 0000000..0da4f89 --- /dev/null +++ b/iidx@asphyxia/data/music_open.json @@ -0,0 +1,82 @@ +{ + "26": { + "26002": { "kind": 0 }, + "26006": { "kind": 0 }, + "26022": { "kind": 0 }, + "26045": { "kind": 0 } + }, + "27": { + "27070": { "kind": 0 }, + "27071": { "kind": 0 }, + "27073": { "kind": 0 } + }, + "28": { + "28001": { "kind": 0 }, + "28036": { "kind": 0 }, + "28038": { "kind": 0 }, + "28072": { "kind": 0 }, + "28074": { "kind": 0 } + }, + "29": { + "29071": { "kind": 0 }, + "29072": { "kind": 0 }, + "29075": { "kind": 0 }, + "29081": { "kind": 0 }, + "29082": { "kind": 0 }, + "29085": { "kind": 0 }, + "29101": { "kind": 0 }, + "29102": { "kind": 0 }, + "29103": { "kind": 0 } + }, + "30": { + "30038": { "kind": 0 }, + "30082": { "kind": 0 }, + "30083": { "kind": 0 }, + "30084": { "kind": 0 }, + "30085": { "kind": 0 }, + "30101": { "kind": 0 }, + "30102": { "kind": 0 }, + "30104": { "kind": 0 }, + "30105": { "kind": 0 } + }, + "31": { + "31021": { "kind": 0 }, + "31022": { "kind": 0 }, + "31023": { "kind": 0 }, + "31024": { "kind": 0 }, + "31025": { "kind": 0 }, + "31065": { "kind": 0 }, + "31066": { "kind": 0 }, + "31097": { "kind": 0 }, + "31098": { "kind": 0 }, + "31099": { "kind": 0 }, + "31100": { "kind": 0 }, + "31101": { "kind": 0 }, + "31102": { "kind": 0 }, + "31110": { "kind": 0 }, + "31112": { "kind": 0 }, + "31113": { "kind": 0 } + }, + "32": { + "32022": { "kind": 0 }, + "32049": { "kind": 0 }, + "32078": { "kind": 0 }, + "32079": { "kind": 0 }, + "32080": { "kind": 0 }, + "32081": { "kind": 0 }, + "32082": { "kind": 0 }, + "32083": { "kind": 0 }, + "32084": { "kind": 0 }, + "32085": { "kind": 0 }, + "32096": { "kind": 0 }, + "32097": { "kind": 0 }, + "32098": { "kind": 0 }, + "32019": { "kind": 0 }, + "32101": { "kind": 0 }, + "32102": { "kind": 0 }, + "32103": { "kind": 0 }, + "32104": { "kind": 0 }, + "32110": { "kind": 0 }, + "32111": { "kind": 0 } + } +} diff --git a/iidx@asphyxia/handlers/gamesystem.ts b/iidx@asphyxia/handlers/gamesystem.ts new file mode 100644 index 0000000..e67e939 --- /dev/null +++ b/iidx@asphyxia/handlers/gamesystem.ts @@ -0,0 +1,177 @@ +import { IIDX_CPUS } from "../models/arena"; +import { GetVersion } from "../util"; + +export const gssysteminfo: EPR = async (info, data, send) => { + const version = GetVersion(info); + if (version < 24) return send.success(); + + let result: any = { + arena_schedule: { + phase: K.ITEM("u8", U.GetConfig("ArenaPhase")), + start: K.ITEM("u32", 1605784800), + end: K.ITEM("u32", 4102326000) + }, + arena_music_difficult: [], + maching_class_range: [], + arena_cpu_define: [], + } + + // following datas are made up needs to figure out correct way to do it // + let music_open = JSON.parse(await IO.ReadFile("data/music_open.json", "utf-8")); + if (!_.isNil(music_open[version])) { + result = Object.assign(result, { music_open: [] }); + + Object.keys(music_open).forEach(v => { + Object.keys(music_open[v]).forEach(m => { + if (Number(v) > version) return; + + result.music_open.push({ + music_id: K.ITEM("s32", Number(m)), + kind: K.ITEM("s32", music_open[v][m].kind), + }); + }); + }); + } + + switch (version) { + case 32: + result.arena_schedule.phase = K.ITEM("u8", 3); + result.arena_schedult = Object.assign(result.arena_schedule, { season: K.ITEM("u8", 0) }); // arena season for online // + + case 31: + result.arena_schedult = Object.assign(result.arena_schedule, { rule_type: K.ITEM("u8", 0) }); // arena rule for online // + + result = Object.assign(result, { grade_course: [] }); + + // following datas are made up needs to figure out correct way to do it // + let grade = JSON.parse(await IO.ReadFile("data/grade.json", "utf-8")); + if (!_.isNil(grade[version])) { + Object.keys(grade[version]).forEach(s => { + Object.keys(grade[version][s]).forEach(c => { + result.grade_course.push({ + play_style: K.ITEM("s32", Number(s)), + grade_id: K.ITEM("s32", Number(c)), + is_valid: K.ITEM("bool", true), + music_id_0: K.ITEM("s32", grade[version][s][c].music_id[0]), + class_id_0: K.ITEM("s32", grade[version][s][c].class_id[0]), + music_id_1: K.ITEM("s32", grade[version][s][c].music_id[1]), + class_id_1: K.ITEM("s32", grade[version][s][c].class_id[1]), + music_id_2: K.ITEM("s32", grade[version][s][c].music_id[2]), + class_id_2: K.ITEM("s32", grade[version][s][c].class_id[2]), + music_id_3: K.ITEM("s32", grade[version][s][c].music_id[3]), + class_id_3: K.ITEM("s32", grade[version][s][c].class_id[3]), + index: K.ITEM("s32", result.grade_course.length), + cube_num: K.ITEM("s32", 0), + kind: K.ITEM("s32", grade[version][s][c].kind), + }); + }); + }); + } + + default: + break; + } + + // arena_music_difficult // + for (let s = 0; s < 2; ++s) { + for (let c = 0; c < 20; ++c) { + result.arena_music_difficult.push({ + play_style: K.ITEM("s32", s), + arena_class: K.ITEM("s32", c), + low_difficult: K.ITEM("s32", 1), + high_difficult: K.ITEM("s32", 12), + is_leggendaria: K.ITEM("bool", 1), + force_music_list_id: K.ITEM("s32", 0), + }); + + result.maching_class_range.push({ + play_style: K.ITEM("s32", s), + matching_class: K.ITEM("s32", c), + low_arena_class: K.ITEM("s32", 1), + high_arena_class: K.ITEM("s32", 20), + }); + + result.arena_cpu_define.push({ + play_style: K.ITEM("s32", s), + arena_class: K.ITEM("s32", c), + grade_id: K.ITEM("s32", IIDX_CPUS[s][c][0]), + low_music_difficult: K.ITEM("s32", IIDX_CPUS[s][c][1]), + high_music_difficult: K.ITEM("s32", IIDX_CPUS[s][c][2]), + is_leggendaria: K.ITEM("bool", IIDX_CPUS[s][c][3]), + }); + } + } + + switch (version) { + case 29: + result = Object.assign(result, { + CommonBossPhase: K.ATTR({ val: String(3) }), + Event1InternalPhase: K.ATTR({ val: String(U.GetConfig("ch_event")) }), + ExtraBossEventPhase: K.ATTR({ val: String(U.GetConfig("ch_extraboss")) }), + isNewSongAnother12OpenFlg: K.ATTR({ val: String(Number(U.GetConfig("NewSongAnother12"))) }), + gradeOpenPhase: K.ATTR({ val: String(U.GetConfig("Grade")) }), + isEiseiOpenFlg: K.ATTR({ val: String(Number(U.GetConfig("Eisei"))) }), + WorldTourismOpenList: K.ATTR({ val: String(-1) }), + BPLBattleOpenPhase: K.ATTR({ val: String(2) }), + }); + break; + case 30: + result = Object.assign(result, { + CommonBossPhase: K.ATTR({ val: String(3) }), + Event1InternalPhase: K.ATTR({ val: String(U.GetConfig("rs_event")) }), + ExtraBossEventPhase: K.ATTR({ val: String(U.GetConfig("rs_extraboss")) }), + isNewSongAnother12OpenFlg: K.ATTR({ val: String(Number(U.GetConfig("NewSongAnother12"))) }), + gradeOpenPhase: K.ATTR({ val: String(U.GetConfig("Grade")) }), + isEiseiOpenFlg: K.ATTR({ val: String(Number(U.GetConfig("Eisei"))) }), + WorldTourismOpenList: K.ATTR({ val: String(-1) }), + BPLBattleOpenPhase: K.ATTR({ val: String(2) }), + }) + break; + case 31: + let totalMetron = 0; + let eventData = await DB.Find(null, { + collection: "event_1", + version: version, + event_data: "myepo_map", + }); + + if (!_.isNil(eventData)) { + eventData.forEach((res: any) => { + totalMetron += Number(res.metron_total_get); + }); + } + + Object.assign(result, { + CommonBossPhase: K.ATTR({ val: String(3) }), + Event1Value: K.ATTR({ val: String(U.GetConfig("ep_event")) }), + Event1Phase: K.ATTR({ val: String(U.GetConfig("ep_event1")) }), + Event2Phase: K.ATTR({ val: String(U.GetConfig("ep_event2")) }), + ExtraBossEventPhase: K.ATTR({ val: String(U.GetConfig("ep_extraboss")) }), + isNewSongAnother12OpenFlg: K.ATTR({ val: String(Number(U.GetConfig("NewSongAnother12"))) }), + isKiwamiOpenFlg: K.ATTR({ val: String(Number(U.GetConfig("Eisei"))) }), + WorldTourismOpenList: K.ATTR({ val: String(-1) }), + BPLBattleOpenPhase: K.ATTR({ val: String(2) }), + UnlockLeggendaria: K.ATTR({ val: String(1) }), + BPLSerialCodePhase: K.ATTR({ val: String(0) }), + Event1AllPlayerTotalGetMetron: K.ATTR({ val: String(totalMetron) }), // total amount of all users metron // + }); + break; + case 32: + result = Object.assign(result, { + Event1Value: K.ATTR({ val: String(U.GetConfig("pc_event")) }), // TEST // + Event1Phase: K.ATTR({ val: String(U.GetConfig("pc_event1")) }), // TEST // + Event2Phase: K.ATTR({ val: String(U.GetConfig("pc_event2")) }), // TEST // + ExtraBossEventPhase: K.ATTR({ val: String(U.GetConfig("pc_extraboss")) }), // TEST // + isNewSongAnother12OpenFlg: K.ATTR({ val: String(Number(U.GetConfig("NewSongAnother12"))) }), + isKiwamiOpenFlg: K.ATTR({ val: String(Number(U.GetConfig("Eisei"))) }), + WorldTourismOpenList: K.ATTR({ val: String(-1) }), + OldBPLBattleOpenPhase: K.ATTR({ val: String(3) }), + }); + break; + + default: + break; + } + + return send.object(result); +}; diff --git a/iidx@asphyxia/handlers/grade.ts b/iidx@asphyxia/handlers/grade.ts new file mode 100644 index 0000000..fec600e --- /dev/null +++ b/iidx@asphyxia/handlers/grade.ts @@ -0,0 +1,208 @@ +import { pcdata } from "../models/pcdata"; +import { grade } from "../models/grade"; +import { IDtoRef, GetVersion } from "../util"; +import { eisei_grade } from "../models/lightning"; +import { badge } from "../models/badge"; + +export const graderaised: EPR = async (info, data, send) => { + const version = GetVersion(info); + const iidxid = Number($(data).attr().iidxid); + const refid = await IDtoRef(iidxid); + const gid = Number($(data).attr().gid); + const gtype = Number($(data).attr().gtype); + + let cflg = Number($(data).attr().cflg); + let achi = Number($(data).attr().achi); + + let pcdata = await DB.FindOne(refid, { collection: "pcdata", version: version }); + let grade = await DB.FindOne(refid, { + collection: "grade", + version: version, + style: gtype, + gradeId: gid, + }); + + if (version >= 23) cflg = Number($(data).attr().cstage); + + const isTDJ = !_.isNil($(data).element("lightning_play_data")); // lightning model // + const hasEiseiData = (!_.isNil($(data).element("eisei_data")) || !_.isNil($(data).element("eisei_grade_data")) || !_.isNil($(data).element("kiwami_data"))); + if (isTDJ && hasEiseiData) { + let eisei_clear_type: number; + let eisei_grade_id: number; + let eisei_grade_type: number; + let eisei_stage_num: number; + let eisei_option: number; + + let eisei_past_achievement: number[]; + let eisei_past_selected_course: number[]; + let eisei_max_past_achievement: number[]; + let eisei_max_past_selected_course: number[]; + + switch (version) { + case 27: + eisei_clear_type = Number($(data).attr("eisei_data").clear_type); + eisei_grade_id = Number($(data).attr("eisei_data").grade_id); + eisei_grade_type = Number($(data).attr("eisei_data").grade_type); + eisei_stage_num = Number($(data).attr("eisei_data").stage_num); + + eisei_past_achievement = $(data).element("eisei_data").numbers("past_achievement"); + eisei_max_past_achievement = $(data).element("eisei_data").numbers("max_past_achievement"); + break; + case 30: + eisei_clear_type = Number($(data).element("eisei_data").attr().clear_type); + eisei_grade_id = Number($(data).element("eisei_data").attr().grade_id); + eisei_grade_type = Number($(data).element("eisei_data").attr().grade_type); + eisei_stage_num = Number($(data).element("eisei_data").attr().stage_num); + eisei_option = Number($(data).element("eisei_data").attr().option); + + eisei_past_achievement = $(data).element("eisei_data").numbers("past_achievement"); + eisei_past_selected_course = $(data).element("eisei_data").numbers("past_selected_course"); + eisei_max_past_achievement = $(data).element("eisei_data").numbers("max_past_achievement"); + eisei_max_past_selected_course = $(data).element("eisei_data").numbers("max_past_selected_course"); + break; + case 31: + case 32: + eisei_clear_type = Number($(data).attr("kiwami_data").clear_type); + eisei_grade_id = Number($(data).attr("kiwami_data").grade_id); + eisei_grade_type = Number($(data).attr("kiwami_data").grade_type); + eisei_stage_num = Number($(data).attr("kiwami_data").stage_num); + eisei_option = Number($(data).attr("kiwami_data").option); + + eisei_past_achievement = $(data).element("kiwami_data").numbers("past_achievement"); + eisei_past_selected_course = $(data).element("kiwami_data").numbers("past_selected_course"); + eisei_max_past_achievement = $(data).element("kiwami_data").numbers("max_past_achievement"); + eisei_max_past_selected_course = $(data).element("kiwami_data").numbers("max_past_selected_course"); + break; + + default: + eisei_clear_type = Number($(data).attr("eisei_grade_data").clear_type); + eisei_grade_id = Number($(data).attr("eisei_grade_data").grade_id); + eisei_grade_type = Number($(data).attr("eisei_grade_data").grade_type); + eisei_stage_num = Number($(data).attr("eisei_grade_data").stage_num); + + eisei_past_achievement = $(data).element("eisei_grade_data").numbers("past_achievement"); + eisei_past_selected_course = $(data).element("eisei_grade_data").numbers("past_selected_course"); + eisei_max_past_achievement = $(data).element("eisei_grade_data").numbers("max_past_achievement"); + eisei_max_past_selected_course = $(data).element("eisei_grade_data").numbers("max_past_selected_course"); + break; + } + + await DB.Upsert( + refid, + { + collection: "eisei_grade", + version: version, + grade_type: eisei_grade_type, + grade_id: eisei_grade_id, + }, + { + $set: { + clear_type: eisei_clear_type, + stage_num: eisei_stage_num, + option: eisei_option, + + past_achievement: eisei_past_achievement, + past_selected_course: eisei_past_selected_course, + max_past_achievement: eisei_max_past_achievement, + max_past_selected_course: eisei_max_past_selected_course, + }, + } + ); + + return send.object( + K.ATTR({ + pnum: "1", // This isn't visible to user and seems leftover // + }) + ); + } + + let updatePcdata = false; + let updateGrade = false; + if (_.isNil(pcdata)) return send.deny(); + if (_.isNil(grade)) { + if (cflg == 4) { + if (gtype == 0) pcdata.sgid = Math.max(gid, pcdata.sgid); + else pcdata.dgid = Math.max(gid, pcdata.dgid); + + updatePcdata = true; + } + + updateGrade = true; + } else { + if (cflg >= grade.maxStage || achi >= grade.archive) { + cflg = Math.max(cflg, grade.maxStage); + achi = Math.max(achi, grade.archive); + + updateGrade = true; + } + + if (cflg == 4) { + if (gtype == 0) pcdata.sgid = Math.max(gid, pcdata.sgid); + else pcdata.dgid = Math.max(gid, pcdata.dgid); + + updatePcdata = true; + } + } + + if (updatePcdata) { + await DB.Upsert( + refid, + { + collection: "pcdata", + version: version, + }, + { + $set: pcdata + } + ); + } + + if (updateGrade) { + await DB.Upsert( + refid, + { + collection: "grade", + version: version, + style: gtype, + gradeId: gid, + }, + { + $set: { + maxStage: cflg, + archive: achi, + } + } + ); + } + + if (!_.isNil($(data).element("badge"))) { + await DB.Upsert( + refid, + { + collection: "badge", + version: version, + category_name: "grade", + flg_id: Number($(data).attr("badge").badge_flg_id), + }, + { + $set: { + flg: Number($(data).attr("badge").badge_flg), + } + } + ); + } + + let gradeUser = await DB.Find(null, { + collection: "grade", + version: version, + style: gtype, + gradeId: gid, + maxStage: 4, + }); + + return send.object( + K.ATTR({ + pnum: String(gradeUser.length), + }) + ); +}; diff --git a/iidx@asphyxia/handlers/music.ts b/iidx@asphyxia/handlers/music.ts new file mode 100644 index 0000000..931dc8f --- /dev/null +++ b/iidx@asphyxia/handlers/music.ts @@ -0,0 +1,1033 @@ +import { IDtoRef, GetVersion, OldMidToNewMid, NewMidToOldMid, ReftoProfile, ReftoPcdata, ClidToPlaySide, ReftoQPRO, NumArrayToString, OldMidToVerMid, GetWeekId } from "../util"; +import { score, score_top } from "../models/score"; +import { profile } from "../models/profile"; +import { shop_data } from "../models/shop"; +import { tutorial } from "../models/tutorial"; +import { badge } from "../models/badge"; +import { activity_mybest } from "../models/activity"; + +export const musicgetrank: EPR = async (info, data, send) => { + const version = GetVersion(info); + const refid = await IDtoRef(Number($(data).attr().iidxid)); + const cltype = Number($(data).attr().cltype); // 0 -> SP, 1 -> DP // + const music_data: any = ( + await DB.Find(refid, { + collection: "score", + }) + ); + + const rival_refids = [ + [Number($(data).attr().iidxid0), await IDtoRef(Number($(data).attr().iidxid0))], + [Number($(data).attr().iidxid1), await IDtoRef(Number($(data).attr().iidxid1))], + [Number($(data).attr().iidxid2), await IDtoRef(Number($(data).attr().iidxid2))], + [Number($(data).attr().iidxid3), await IDtoRef(Number($(data).attr().iidxid3))], + [Number($(data).attr().iidxid4), await IDtoRef(Number($(data).attr().iidxid4))], + ]; + + let m = [], top = [], b = [], t = []; + let score_data: number[]; + let indices, temp_mid = 0; + if (version == 14 || version == 15) { + let result = { + r: [], // v - (-1, beginner/-2, tutorial) // + }; + indices = cltype === 0 ? [1, 2, 3] : [6, 7, 8]; + music_data.forEach((res: score) => { + if (_.isNil(res.cArray)) throw new Error("[music.getrank] There is unsupported entry in Database"); + + temp_mid = NewMidToOldMid(res.mid); + let verMid = OldMidToVerMid(temp_mid); + + // TODO:: determine whether use rid,dj_level from music.reg or make a database that has max exscore of all songs for rid // + if (verMid[0] > version) return; + for (let a = 0; a < 3; a++) { + if (res.esArray[indices[a]] == 0) continue; + let rank_id = _.isNil(res.rArray) ? -1 : res.rArray[indices[a]]; + + result.r.push( + K.ITEM("str", NumArrayToString( + [7, 4, 13, 3, 3], + [verMid[1], a, res.esArray[indices[a]], rank_id, res.cArray[indices[a]]] // 4th element is rid (rank_id) // + ), { v: String(verMid[0]) }) + ); + } + + // BEGINNER // + if (res.cArray[0] == 0) return; + result.r.push( + K.ITEM("str", NumArrayToString( + [12, 6], + [temp_mid, res.cArray[0]] + ), { v: String("-1") }) + ); + }); + + // TUTORIAL // + const tutorial = await DB.Find(refid, { + collection: "tutorial", + version: version + }); + tutorial.sort((a: tutorial, b: tutorial) => a.tid - b.tid); + tutorial.forEach((res) => { + result.r.push( + K.ITEM("str", NumArrayToString( + [5, 1], + [res.tid, res.clr] + ), { v: String("-2") }) + ); + }); + + return send.object(result); + } + else if (version < 20) { + indices = cltype === 0 ? [1, 2, 3] : [6, 7, 8]; + music_data.forEach((res: score) => { + if (_.isNil(res.cArray)) throw new Error("[music.getrank] There is unsupported entry in Database"); + + temp_mid = NewMidToOldMid(res.mid); + let mVersion = Math.floor(temp_mid / 100); + if (mVersion > version) return; + + if (version == 16) score_data = [-1, temp_mid, ...indices.map(i => res.cArray[i]), ...indices.map(i => res.esArray[i])]; + else score_data = [-1, temp_mid, ...indices.map(i => res.cArray[i]), ...indices.map(i => res.esArray[i]), ...indices.map(i => res.mArray[i])]; + + m.push(K.ARRAY("s16", score_data)); + if (res.cArray[0] != 0) b.push(K.ARRAY("u16", [temp_mid, res.cArray[0]])); + }); + + for (let i = 0; i < rival_refids.length; i++) { + if (_.isNaN(rival_refids[i][0])) continue; + + const rival_score = await DB.Find(String(rival_refids[i][1]), + { collection: "score", } + ); + + rival_score.forEach((res: score) => { + temp_mid = NewMidToOldMid(res.mid); + let mVersion = Math.floor(temp_mid / 100); + if (mVersion > version) return; + + if (version == 16) score_data = [i, temp_mid, ...indices.map(i => res.cArray[i]), ...indices.map(i => res.esArray[i])]; + else score_data = [i, temp_mid, ...indices.map(i => res.cArray[i]), ...indices.map(i => res.esArray[i]), ...indices.map(i => res.mArray[i])]; + + m.push(K.ARRAY("s16", score_data)); + }); + } + + // tutorial // + const tutorial = await DB.Find(refid, { + collection: "tutorial", + version: version + }); + tutorial.sort((a: tutorial, b: tutorial) => a.tid - b.tid); + tutorial.forEach((res) => { + t.push(K.ARRAY("u16", [res.tid, res.clr])); + }); + } + else if (version >= 20) { + 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 (_.isNil(res.cArray)) throw new Error("[music.getrank] There is unsupported entry in Database"); + + let mVersion = Math.floor(res.mid / 1000); + if (mVersion > version) return; + + score_data = [-1, res.mid, ...indices.map(i => res.cArray[i]), ...indices.map(i => res.esArray[i]), ...indices.map(i => res.mArray[i])]; + + m.push(K.ARRAY("s16", score_data)); + if (res.cArray[0] != 0) b.push(K.ARRAY("u16", [res.mid, res.cArray[0]])); + }); + + for (let i = 0; i < rival_refids.length; i++) { + if (_.isNaN(rival_refids[i][0])) continue; + + const rival_score = await DB.Find(String(rival_refids[i][1]), + { collection: "score", } + ); + + rival_score.forEach((res: score) => { // rival score // + let mVersion = Math.floor(res.mid / 1000); + if (mVersion > version) return; + + score_data = [i, res.mid, ...indices.map(i => res.cArray[i]), ...indices.map(i => res.esArray[i]), ...indices.map(i => res.mArray[i])]; + + m.push(K.ARRAY("s16", score_data)); + }); + } + + const score_top = await DB.Find({ + collection: "score_top", + play_style: cltype, + }); + + if (score_top.length > 0) { + if (version >= 27) { + score_top.forEach((res) => { + let mVersion = Math.floor(res.mid / 1000); + if (mVersion > version) return; + + top.push({ + "@attr": ({ + name0: res.names[0], + name1: res.names[1], + name2: res.names[2], + name3: res.names[3], + name4: res.names[4], + }), + detail: K.ARRAY("s16", [res.mid, ...res.clflgs, ...res.scores]) + }); + }); + } else { + score_top.forEach((res) => { + let mVersion = Math.floor(res.mid / 1000); + if (mVersion > version) return; + + top.push({ + "@attr": ({ + name0: res.names[1], + name1: res.names[2], + name2: res.names[3], + }), + detail: K.ARRAY("s16", [res.mid, ...indices.map(i => res.clflgs[i]), ...indices.map(i => res.scores[i])]) + }); + }); + } + } + + return send.object({ + style: K.ATTR({ type: String(cltype) }), + m, + b, + top, + }); + } + else { + return send.success(); + } + + return send.object({ + m, + b, + t + }); +} + +export const musicgetralive: EPR = async (info, data, send) => { + const version = GetVersion(info); + const refid = await IDtoRef(Number($(data).attr().iidxid)); + const cltype = Number($(data).attr().cltype); // 0 -> SP, 1 -> DP // + const music_data: any = ( + await DB.Find(refid, { + collection: "score", + }) + ); + const rival_refids = [ + [Number($(data).attr().iidxid0), await IDtoRef(Number($(data).attr().iidxid0))], + [Number($(data).attr().iidxid1), await IDtoRef(Number($(data).attr().iidxid1))], + [Number($(data).attr().iidxid2), await IDtoRef(Number($(data).attr().iidxid2))], + [Number($(data).attr().iidxid3), await IDtoRef(Number($(data).attr().iidxid3))], + [Number($(data).attr().iidxid4), await IDtoRef(Number($(data).attr().iidxid4))], + ]; + + let result = { + d: [] + }; + let myRecord: Record = {}; + let rRecord: Record = {}; + let indices = cltype === 0 ? [1, 2, 3] : [6, 7, 8]; + + music_data.forEach((res: score) => { + if (_.isNil(res.cArray)) throw new Error("[music.getralive] There is unsupported entry in Database"); + + myRecord[NewMidToOldMid(res.mid)] = [...res.esArray, ...res.cArray]; + }); + + for (let i = 0; i < rival_refids.length; i++) { + if (_.isNaN(rival_refids[i][0])) continue; + + const rival_score = await DB.Find(String(rival_refids[i][1]), + { collection: "score", } + ); + + // [0~2] - NOPLAY/WIN/LOSE (ANOTHER/HYPER/NORMAL), // + // consider same score as LOSE, tho theres seems DRAW state but game render as LOSE // + // TODO:: figure out what other elements does // + rival_score.forEach((res: score) => { + let mid = NewMidToOldMid(res.mid); + let verMid = OldMidToVerMid(mid); + if (verMid[0] > version) return; + + let scoreArray = Array(15).fill(0); + if (!_.isNil(myRecord[mid])) { + for (let a = 0; a < 3; a++) { + let myExscore = myRecord[mid][indices[a]]; + let rvExscore = res.esArray[indices[a]]; + let mycFlg = myRecord[mid][indices[a] + 10]; + let rvcFlg = res.cArray[indices[a]]; + + if (mycFlg == 0 || rvcFlg == 0) continue; + scoreArray[2 - a] = myExscore > rvExscore ? 1 : 2; + } + } + + let strResult = NumArrayToString([6], [verMid[1]]); + strResult += NumArrayToString(Array(15).fill(2), scoreArray); + + if (verMid[0] in rRecord) { + rRecord[verMid[0]] += strResult; + } else { + rRecord[verMid[0]] = strResult; + } + }); + } + + for (const key in rRecord) { + result.d.push( + K.ITEM("str", rRecord[key], { v: key }) + ); + } + + return send.object(result); +} + +export const musicappoint: EPR = async (info, data, send) => { + const version = GetVersion(info); + + // clid, ctype, grd, iidxid, lv, mid, subtype // + const refid = await IDtoRef(Number($(data).attr().iidxid)); + const ctype = Number($(data).attr().ctype); + const subtype = Number($(data).attr().subtype); + let mid = Number($(data).attr().mid); + let clid = Number($(data).attr().clid); + + const mapping = [1, 2, 3, 6, 7, 8]; + if (version < 20) { + mid = OldMidToNewMid(mid); + clid = mapping[clid]; + } + else if (version < 27) { + clid = mapping[clid]; + } + + let result: any = {}; + + // MINE // + const music_data: score | null = await DB.FindOne(refid, { + collection: "score", + mid: mid, + [clid]: { $exists: true }, + }); + + let mydata, option = 0, option2 = 0; + if (!_.isNil(music_data)) { + if (version >= 27) { + if (!_.isNil(music_data.optArray) && version > 27) { + option = music_data.optArray[clid]; + option2 = music_data.opt2Array[clid]; + } + } + + if (version < 16) mydata = K.ITEM("str", Buffer.from(music_data[clid], "base64").toString("hex").toUpperCase()); + else mydata = K.ITEM("bin", Buffer.from(music_data[clid], "base64")); + } + + /*** ctype + [-1] - DEFAULT + [1] - RIVAL + [2] - ALL TOP + [3] - ALL AVG. + [4] - LOCATION TOP + [5] - LOCATION AVG. + [6] - SAME DAN TOP + [7] - SAME DAN AVG. + [8] - RIVAL TOP + [9] - RIVAL AVG. + [10] - STORE TOP + [13] - RIVAL NEXT + [14] - STORE ROTATE + [15] - RIVAL ROTATE + ***/ + + // OTHERS // + let other_refid, other_musicdata: score | null, other_pcdata, other_profile, sdata = null; + if (!_.isNaN(subtype)) { + switch (ctype) { + case 1: + other_refid = await IDtoRef(subtype); + other_profile = await ReftoProfile(other_refid); + other_pcdata = await ReftoPcdata(other_refid, version); + other_musicdata = await DB.FindOne(other_refid, { + collection: "score", + mid: mid, + [clid]: { $exists: true }, + }); + if (_.isNaN(other_pcdata) || _.isNil(other_musicdata)) break; + + if (version < 16) { + sdata = K.ITEM("str", Buffer.from(other_musicdata[clid], "base64").toString("hex").toUpperCase(), { + score: String(other_musicdata.esArray[clid]), + pid: String(other_profile[1]), + name: String(other_profile[0]), + riidxid: String(other_profile[2]) + }); + } + else { + sdata = K.ITEM("bin", Buffer.from(other_musicdata[clid], "base64"), { + score: String(other_musicdata.esArray[clid]), + pid: String(other_profile[1]), + name: String(other_profile[0]), + riidxid: String(other_profile[2]) + }); + } + + break; + + default: + break; + } + } + + if (_.isNil(mydata) && _.isNil(sdata)) return send.success(); + + if (version >= 27) { + let my_gauge_data = Buffer.alloc(0), other_gauge_data = Buffer.alloc(0); + if (!_.isNil(music_data[clid + 10])) my_gauge_data = Buffer.from(music_data[clid + 10], "base64"); + + if (!_.isNil(sdata)) { + if (_.isNil(other_musicdata.optArray)) { // migration // + other_musicdata.optArray = Array(10).fill(0); + other_musicdata.opt2Array = Array(10).fill(0); + } + + let other_data = K.ITEM("bin", Buffer.from(other_musicdata[clid], "base64"), { + score: String(other_musicdata.esArray[clid]), + achieve: String(other_pcdata[ClidToPlaySide(clid) + 2]), + pid: String(other_profile[1]), + name: String(other_profile[0]), + riidxid: String(other_profile[2]), + option: String(other_musicdata.optArray[clid]), // CastHour // + option2: String(other_musicdata.opt2Array[clid]), + }); + + if (!_.isNil(other_musicdata[clid + 10])) other_gauge_data = Buffer.from(other_musicdata[clid + 10], "base64"); + sdata = { + ...other_data, + gauge_data: K.ITEM("bin", other_gauge_data) + }; + } + + if (_.isNil(sdata) && !_.isNil(mydata)) { + result = { + "@attr": { my_option: option, my_option2: option2 }, + mydata, + my_gauge_data: K.ITEM("bin", my_gauge_data), + }; + } + if (_.isNil(mydata) && !_.isNil(sdata)) result = { sdata }; + if (!_.isNil(mydata) && !_.isNil(sdata)) { + result = { + "@attr": { my_option: option, my_option2: option2 }, // CastHour // + mydata, + my_gauge_data: K.ITEM("bin", my_gauge_data), + sdata, + }; + } + } + else { + if (_.isNil(sdata) && !_.isNil(mydata)) result = { mydata }; + if (_.isNil(mydata) && !_.isNil(sdata)) result = { sdata }; + if (!_.isNil(mydata) && !_.isNil(sdata)) result = { mydata, sdata }; + } + + return send.object(result); +} + +export const musicreg: EPR = async (info, data, send) => { + const version = GetVersion(info); + const refid = await IDtoRef(Number($(data).attr().iidxid)); + + const shop_data = await DB.FindOne({ + collection: "shop_data", + }); + const profile = await DB.FindOne(refid, { + collection: "profile", + }); + + // wid, oppid, opname, opt, opt2, pside, nocnt, anum // + const pgnum = Number($(data).attr().pgnum); + const gnum = Number($(data).attr().gnum); + const mnum = Number($(data).attr().mnum); + const cflg = Number($(data).attr().cflg); + let mid = Number($(data).attr().mid); + let clid = Number($(data).attr().clid); + let exscore = (pgnum * 2 + gnum); + let ghost = null, ghost_gauge = null; // Heroic Verse // + let style = 0, option = 0, option_2 = 0, rid = -1; + + // TODO:: Leggendaria until HEROIC VERSE has seperate music_id // + // TODO:: SUPER FUTURE 2323 has seperate music_id // + const mapping = [1, 2, 3, 6, 7, 8]; + if (version == -1) return send.deny(); + else if (version < 20) { + mid = OldMidToNewMid(mid); + if (mid == -1) return send.deny(); + + clid = mapping[clid]; + } + else if (version < 27) { + clid = mapping[clid]; + } + + const music_data: score | null = await DB.FindOne(refid, { + collection: "score", + mid: mid, + }); + + // SPN -> DPA [0~5] -> LINCLE // + // SPB -> DPL [0~9] -> Heroic Verse // + let pgArray = Array(10).fill(0); // PGREAT // + let gArray = Array(10).fill(0); // GREAT // + let mArray = Array(10).fill(-1); // MISS // + let cArray = Array(10).fill(0); // CLEAR FLAGS // + let rArray = Array(10).fill(-1); // RANK ID // + let esArray = Array(10).fill(0); // EXSCORE // + let optArray = Array(10).fill(0); // USED OPTION (CastHour) // + let opt2Array = Array(10).fill(0); // USED OPTION (CastHour) // + let update = 0; + + if (!_.isNil($(data).attr().rid)) rid = Number($(data).attr().rid); + else if (!_.isNil($(data).attr().dj_level)) rid = Number($(data).attr().dj_level); + if (rid > -1) console.log(`[music.reg] rank_id : ${rid}`); + + if (version < 16) ghost = Buffer.from($(data).str("ghost"), "hex").toString("base64"); + else ghost = $(data).buffer("ghost").toString("base64"); + + if (version >= 27) { + ghost_gauge = $(data).buffer("ghost_gauge").toString("base64"); + style = Number($(data).element("music_play_log").attr().play_style); + + if (version >= 29) { + option = Number($(data).element("music_play_log").attr().option1); + option_2 = Number($(data).element("music_play_log").attr().option2); + } + } + + if (_.isNil(music_data)) { + pgArray[clid] = pgnum; + gArray[clid] = gnum; + mArray[clid] = mnum; + cArray[clid] = cflg; + rArray[clid] = rid; + esArray[clid] = exscore; + optArray[clid] = option; + opt2Array[clid] = option_2; + } else { + pgArray = music_data.pgArray; + gArray = music_data.gArray; + mArray = music_data.mArray; + cArray = music_data.cArray; + esArray = music_data.esArray; + if (!_.isNil(music_data.optArray)) { // migration // + optArray = music_data.optArray; + opt2Array = music_data.opt2Array; + } + if (!_.isNil(music_data.rArray)) { + rArray = music_data.rArray; + } + + // migration for invalid miss count // + // if EXSCORE/MISS COUNT is 0 and CLEAR FLAG is NO PLAY then set MISS COUNT to -1 // + for (let a = 0; a < mArray.length; a++) { + if (esArray[a] == 0 && cArray[a] == 0 && mArray[a] == 0) mArray[a] = -1; + } + + const pExscore = esArray[clid]; + if (exscore > pExscore) { + pgArray[clid] = pgnum; + gArray[clid] = gnum; + rArray[clid] = rid; + esArray[clid] = exscore; + optArray[clid] = option; + opt2Array[clid] = option_2; + update = 1; + } else { + ghost = music_data[clid]; + if (version >= 27) ghost_gauge = music_data[clid + 10]; + } + + if (mnum == -1) mArray[clid] = Math.max(mArray[clid], mnum); // this seems asking for not updating miss count // + else mArray[clid] = mArray[clid] == -1 ? mnum : Math.min(mArray[clid], mnum); + cArray[clid] = Math.max(cArray[clid], cflg); + } + + if (version >= 27) { // TODO:: support old version // + const score_top: score_top | null = await DB.FindOne(null, { + collection: "score_top", + play_style: style, + mid: mid, + }); + + let names = Array(5).fill(""); + let scores = Array(5).fill(-1); + let clflgs = Array(5).fill(-1); + let tmp_clid = clid; + if (style == 1) tmp_clid -= 5; + + if (_.isNil(score_top)) { + if (esArray[clid] > exscore) { + names[tmp_clid] = profile.name; + scores[tmp_clid] = esArray[clid]; + clflgs[tmp_clid] = cArray[clid]; + } else { + names[tmp_clid] = profile.name; + scores[tmp_clid] = exscore; + clflgs[tmp_clid] = cflg; + } + } + else { + names = score_top.names; + scores = score_top.scores; + clflgs = score_top.clflgs; + + if (exscore > scores[tmp_clid]) { + names[tmp_clid] = profile.name; + scores[tmp_clid] = exscore; + clflgs[tmp_clid] = cflg; + } + } + + await DB.Upsert( + { + collection: "score_top", + play_style: style, + mid: mid, + }, + { + $set: { + names, + scores, + clflgs, + } + } + ); + } + + await DB.Upsert( + refid, + { + collection: "score", + mid: mid, + }, + { + $set: { + pgArray, + gArray, + mArray, + cArray, + rArray, + esArray, + optArray, + opt2Array, + + [clid]: ghost, + [clid + 10]: ghost_gauge, + } + } + ); + + if (!_.isNil($(data).element("badge"))) { + if (!_.isNil($(data).attr("badge").djLevel_badge_flg_id)) { + await DB.Upsert( + refid, + { + collection: "badge", + version: version, + category_name: "djLevel", + flg_id: Number($(data).attr("badge").djLevel_badge_flg_id), + }, + { + $set: { + flg: Number($(data).attr("badge").djLevel_badge_flg), + } + } + ); + } + + if (!_.isNil($(data).attr("badge").clear_badge_flg_id)) { + await DB.Upsert( + refid, + { + collection: "badge", + version: version, + category_name: "clear", + flg_id: Number($(data).attr("badge").clear_badge_flg_id), + }, + { + $set: { + flg: Number($(data).attr("badge").clear_badge_flg), + } + } + ); + } + + if (!_.isNil($(data).attr("badge").rivalChallenge_badge_flg)) { + await DB.Upsert( + refid, + { + collection: "badge", + version: version, + category_name: "rivalChallenge", + flg_id: 0, + }, + { + $set: { + flg: Number($(data).attr("badge").rivalChallenge_badge_flg), + } + } + ); + } + } + + let date = new Date(); + if (!_.isNil($(data).element("best_result"))) { + await DB.Upsert( + refid, + { + collection: "activity_mybest", + version: version, + + play_style: Number($(data).attr("best_result").play_style), + play_side: Number($(data).attr("best_result").play_side), + music_id: Number($(data).attr("best_result").music_id), + note_id: Number($(data).attr("best_result").note_id), + }, + { + $set: { + target_graph: Number($(data).attr("best_result").target_graph), + target_score: Number($(data).attr("best_result").target_score), + pacemaker: Number($(data).attr("best_result").pacemaker), + best_clear: Number($(data).attr("best_result").best_clear), + best_score: Number($(data).attr("best_result").best_score), + best_misscount: Number($(data).attr("best_result").best_misscount), + now_clear: Number($(data).attr("best_result").now_clear), + now_score: Number($(data).attr("best_result").now_score), + now_misscount: Number($(data).attr("best_result").now_misscount), + now_pgreat: Number($(data).attr("best_result").now_pgreat), + now_great: Number($(data).attr("best_result").now_great), + now_good: Number($(data).attr("best_result").now_good), + now_bad: Number($(data).attr("best_result").now_bad), + now_poor: Number($(data).attr("best_result").now_poor), + now_combo: Number($(data).attr("best_result").now_combo), + now_fast: Number($(data).attr("best_result").now_fast), + now_slow: Number($(data).attr("best_result").now_slow), + option: Number($(data).attr("best_result").option), + option_2: Number($(data).attr("best_result").option2), + ghost_gauge_data: $(data).element("best_result").buffer("ghost_gauge_data").toString("base64"), + gauge_type: Number($(data).attr("best_result").gauge_type), + result_type: Number($(data).attr("best_result").result_type), + is_special_result: Number($(data).element("best_result").bool("is_special_result")), + + update_date: Math.floor(date.valueOf() / 1000), + } + } + ); + } + + let shop_rank = -1, shop_rank_data = []; + let scores: any[][]; + scores = ( + await DB.Find(null, { + collection: "score", + mid: mid, + cArray: { $exists: true }, + esArray: { $exists: true }, + }) + ).map((r) => [r.esArray[clid], r.cArray[clid], r.__refid]); + scores.sort((a, b) => b[0] - a[0]); + shop_rank = scores.findIndex((a) => a[2] == refid); + + scores = await Promise.all( + scores.map(async (r) => [ + r[0], + r[1], + await ReftoProfile(r[2]), + await ReftoQPRO(r[2], version), + await ReftoPcdata(r[2], version), + ]) + ); + + let crate = 0, frate = 0, cflgs = 0, fcflgs = 0; + scores.forEach((rankscore, index) => { + if (rankscore[1] != 1) cflgs += 1; + if (rankscore[1] == 7) fcflgs += 1; + + if (index == shop_rank) { + shop_rank_data.push( + K.ATTR({ + iidx_id: String(rankscore[2][2]), + name: String(rankscore[2][0]), + opname: shop_data.opname, + rnum: String(index + 1), + score: String(rankscore[0]), + clflg: String(rankscore[1]), + pid: String(rankscore[2][1]), + sgrade: String(rankscore[4][0]), + dgrade: String(rankscore[4][1]), + head: String(rankscore[3][1]), + hair: String(rankscore[3][0]), + face: String(rankscore[3][2]), + body: String(rankscore[3][3]), + hand: String(rankscore[3][4]), + myFlg: String(1), + s_baron: String(0), + p_baron: String(0), + achieve: String(0), + update: String(update), + }) + ); + } + else if (rankscore[0] != 0 || rankscore[1] != 0) { + shop_rank_data.push( + K.ATTR({ + iidx_id: String(rankscore[2][2]), + name: String(rankscore[2][0]), + opname: shop_data.opname, + rnum: String(index + 1), + score: String(rankscore[0]), + clflg: String(rankscore[1]), + pid: String(rankscore[2][1]), + sgrade: String(rankscore[4][0]), + dgrade: String(rankscore[4][1]), + head: String(rankscore[3][1]), + hair: String(rankscore[3][0]), + face: String(rankscore[3][2]), + body: String(rankscore[3][3]), + hand: String(rankscore[3][4]), + myFlg: String(0), + s_baron: String(0), + p_baron: String(0), + achieve: String(0), + update: String(0), + }) + ); + } + }); + + let rate = version > 23 ? 1000 : 100; + crate = Math.round((cflgs / shop_rank_data.length) * rate); + frate = Math.round((fcflgs / shop_rank_data.length) * rate); + + let result: any = { + "@attr": { + mid: String(mid), + clid: String(clid), + crate: String(crate), + frate: String(frate), + rankside: String(style), + }, + ranklist: { + "@attr": { total_user_num: String(shop_rank_data.length) }, + data: shop_rank_data, + }, + shopdata: K.ATTR({ rank: String(shop_rank) }), + } + + return send.object(result); +} + +export const musicbreg: EPR = async (info, data, send) => { + const version = GetVersion(info); + + // mid pgnum gnum cflg // + const refid = await IDtoRef(Number($(data).attr().iidxid)); + const pgnum = Number($(data).attr().pgnum); + const gnum = Number($(data).attr().gnum); + const cflg = Number($(data).attr().cflg); + let mid = Number($(data).attr().mid); + let clid = 0; // SP BEGINNER // + let exscore = (pgnum * 2 + gnum); + + if (version < 20) mid = OldMidToNewMid(mid); + + const music_data: score | null = await DB.FindOne(refid, { + collection: "score", + mid: mid, + }); + + let pgArray = Array(10).fill(0); // PGREAT // + let gArray = Array(10).fill(0); // GREAT // + let mArray = Array(10).fill(-1); // MISS // + let cArray = Array(10).fill(0); // CLEAR FLAGS // + let rArray = Array(10).fill(-1); // RANK ID // + let esArray = Array(10).fill(0); // EXSCORE // + let optArray = Array(10).fill(0); // USED OPTION (CastHour) // + let opt2Array = Array(10).fill(0); // USED OPTION (CastHour) // + + if (_.isNil(music_data)) { + pgArray[clid] = pgnum; + gArray[clid] = gnum; + mArray[clid] = -1; // this is not being sent // + cArray[clid] = cflg; + rArray[clid] = -1; // this is not being sent // + esArray[clid] = exscore; + optArray[clid] = 0; // this is not being sent // + opt2Array[clid] = 0; // this is not being sent // + } else { + pgArray = music_data.pgArray; + gArray = music_data.gArray; + mArray = music_data.mArray; + cArray = music_data.cArray; + esArray = music_data.esArray; + if (!_.isNil(music_data.optArray)) { // migration // + optArray = music_data.optArray; + opt2Array = music_data.opt2Array; + } + if (!_.isNil(music_data.rArray)) { + rArray = music_data.rArray; + } + + const pExscore = esArray[clid]; + if (exscore > pExscore) { + pgArray[clid] = Math.max(pgArray[clid], pgnum); + gArray[clid] = Math.max(gArray[clid], gnum); + esArray[clid] = Math.max(esArray[clid], exscore); + } + + cArray[clid] = Math.max(cArray[clid], cflg); + } + + await DB.Upsert( + refid, + { + collection: "score", + mid: mid, + }, + { + $set: { + pgArray, + gArray, + mArray, + cArray, + rArray, + esArray, + optArray, + opt2Array, + + [clid]: null, + [clid + 10]: null, + } + } + ); + + return send.success(); +}; + +export const musiccrate: EPR = async (info, data, send) => { + const version = GetVersion(info); + const scores = await DB.Find(null, { + collection: "score", + }); + const cltype = Number($(data).attr().cltype); + + let cFlgs: Record = {}, + fcFlgs: Record = {}, + totalFlgs: Record = {}; + + scores.forEach((res) => { + let mVersion = Math.floor(res.mid / 1000); + if (mVersion > version) return; + + let totalArray = Array(10).fill(0); + let cFlgArray = Array(10).fill(0); + let fcFlgArray = Array(10).fill(0); + + if (_.isNil(res.cArray)) throw new Error("[music.crate] There is unsupported entry in Database"); + + for (let a = 0; a < 10; a++) { + if (res.cArray[a] != 0) totalArray[a] += 1; + if (res.cArray[a] != 1) cFlgArray[a] += 1; + if (res.cArray[a] == 7) fcFlgArray[a] += 1; + } + + let temp_mid = version < 20 ? NewMidToOldMid(res.mid) : res.mid; + totalFlgs[temp_mid] = totalArray; + cFlgs[temp_mid] = cFlgArray; + fcFlgs[temp_mid] = fcFlgArray; + }); + + let result = {}, c = [], cdata = []; + for (const key in totalFlgs) { + let cRate = Array(10).fill(0); + let fcRate = Array(10).fill(0); + + for (let a = 0; a < 10; a++) { + if (totalFlgs[key][a] == 0) continue; + + if (version > 23) { + cRate[a] = Math.round((cFlgs[key][a] / totalFlgs[key][a]) * 1000); + fcRate[a] = Math.round((fcFlgs[key][a] / totalFlgs[key][a]) * 1000); + } else { + cRate[a] = Math.round((cFlgs[key][a] / totalFlgs[key][a]) * 100); + fcRate[a] = Math.round((fcFlgs[key][a] / totalFlgs[key][a]) * 100); + } + } + + let indices = [1, 2, 3, 6, 7, 8]; + if (version == 14 || version == 15) { + let verMid = OldMidToVerMid(Number(key)); + + let str = cltype == 0 ? + `${NumArrayToString([7, 7, 7, 7], [verMid[1], cRate[1], cRate[2], cRate[3]])}ZZZZ` : + `${NumArrayToString([7, 7, 7, 7], [verMid[1], cRate[6], cRate[7], cRate[8]])}ZZZZ`; + + cdata.push( + K.ITEM("str", str, { ver: String(verMid[0]) }) + ); + } + else { + let rateArray = version < 27 ? [...indices.map(i => cRate[i]), ...indices.map(i => fcRate[i])] : [...cRate, ...fcRate]; + let rateResult = version < 24 ? K.ARRAY("u8", rateArray, { mid: key }) : K.ARRAY("s32", rateArray, { mid: key }); + + c.push(rateResult); + } + } + + result = (version == 14 || version == 15) ? { cdata } : { c }; + + return send.object(result); +} + +// this is not valid response // +export const musicarenacpu: EPR = async (info, data, send) => { + const version = GetVersion(info); + if (version == -1) return send.deny(); + + let cpu_score_list = [], total_notes = []; + $(data).elements("music_list").forEach((res) => { + total_notes.push(res.number("total_notes")); + }); + + for (let a = 0; a < $(data).elements("cpu_list").length; a++) { + let score_list = []; + + total_notes.forEach((res) => { + score_list.push({ + score: K.ITEM("s32", _.random(res, res * 2)), + ghost: version > 30 ? K.ITEM("s8", 0) : K.ITEM("u8", 0), + enable_score: K.ITEM("bool", 1), + enable_ghost: K.ITEM("bool", 0), + }); + }) + + cpu_score_list.push({ + index: K.ITEM("s32", a), + score_list, + }); + } + + return send.object({ + cpu_score_list, + }) +} diff --git a/iidx@asphyxia/handlers/pc.ts b/iidx@asphyxia/handlers/pc.ts new file mode 100644 index 0000000..b20f6c1 --- /dev/null +++ b/iidx@asphyxia/handlers/pc.ts @@ -0,0 +1,5350 @@ +import { pcdata, KDZ_pcdata, IIDX27_pcdata, IIDX28_pcdata, IIDX29_pcdata, IIDX30_pcdata, JDZ_pcdata, LDJ_pcdata, IIDX21_pcdata, IIDX22_pcdata, IIDX23_pcdata, IIDX24_pcdata, IIDX25_pcdata, IIDX26_pcdata, JDJ_pcdata, HDD_pcdata, I00_pcdata, GLD_pcdata, IIDX31_pcdata, IIDX32_pcdata } from "../models/pcdata"; +import { grade } from "../models/grade"; +import { custom, default_custom } from "../models/custom"; +import { IDtoCode, IDtoRef, GetVersion, ReftoProfile, ReftoPcdata, ReftoQPRO, appendSettingConverter, NumArrayToString, GetWeekId } from "../util"; +import { eisei_grade, eisei_grade_data, lightning_custom, lightning_musicfilter, lightning_musicfilter_sort, lightning_musicmemo, lightning_musicmemo_new, lightning_playdata, lightning_settings, lm_customdata, lm_playdata, lm_settings, lm_settings_new, musicfilter_data, musicfilter_sort_data, musicmemo_data, musicmemo_data_new } from "../models/lightning"; +import { profile, default_profile } from "../models/profile"; +import { rival, rival_data } from "../models/rival"; +import { world_tourism } from "../models/worldtourism"; +import { shop_data } from "../models/shop"; +import { tutorial } from "../models/tutorial"; +import { expert } from "../models/ranking"; +import { blueboss } from "../models/event"; +import { badge } from "../models/badge"; +import { extra_favorite } from "../models/favorite"; +import { activity, activity_mybest } from "../models/activity"; +import { extra_boss } from "../models/extraboss"; + +export const pccommon: EPR = async (info, data, send) => { + const version = GetVersion(info); + + let result: any = { + "@attr": { expire: 300 }, + ir: K.ATTR({ beat: String(U.GetConfig("BeatPhase")) }), + expert: K.ATTR({ phase: String(U.GetConfig("ExpertPhase")) }), + expert_random_secret: K.ATTR({ phase: String(U.GetConfig("ExpertRandomPhase")) }), + expert_secret_full_open: {}, + } + + // have no idea what some of attribute or value does // + // exposing these to plugin setting or use static value // + switch (version) { + case 14: + result = Object.assign(result, { + gshop: { + "@attr": { vipg: "0" } // TODO:: verify // + } + }); + break; + case 15: + break; + case 16: + result = Object.assign(result, { + cmd: K.ATTR({ + gmbl: String(Number(U.GetConfig("cmd_gmbl"))), + gmbla: String(Number(U.GetConfig("cmd_gmbla"))), + regl: String(Number(U.GetConfig("cmd_regl"))), + rndp: String(Number(U.GetConfig("cmd_rndp"))), + hrnd: String(Number(U.GetConfig("cmd_hrnd"))), + alls: String(Number(U.GetConfig("cmd_alls"))), + }), + }); + break; + case 17: + result = Object.assign(result, { + cmd: K.ATTR({ + gmbl: String(Number(U.GetConfig("cmd_gmbl"))), + gmbla: String(Number(U.GetConfig("cmd_gmbla"))), + regl: String(Number(U.GetConfig("cmd_regl"))), + rndp: String(Number(U.GetConfig("cmd_rndp"))), + hrnd: String(Number(U.GetConfig("cmd_hrnd"))), + alls: String(Number(U.GetConfig("cmd_alls"))), + }), + lg: K.ATTR({ lea: String(U.GetConfig("sr_league")) }), + }); + case 18: + result = Object.assign(result, { + cmd: K.ATTR({ + gmbl: String(Number(U.GetConfig("cmd_gmbl"))), + gmbla: String(Number(U.GetConfig("cmd_gmbla"))), + regl: String(Number(U.GetConfig("cmd_regl"))), + rndp: String(Number(U.GetConfig("cmd_rndp"))), + hrnd: String(Number(U.GetConfig("cmd_hrnd"))), + alls: String(Number(U.GetConfig("cmd_alls"))), + }), + lg: K.ATTR({ lea: String(U.GetConfig("ra_league")) }), + lf: K.ATTR({ life: String(U.GetConfig("ra_story")) }), + ev: K.ATTR({ pha: String(U.GetConfig("ra_event")) }), + lincle: K.ATTR({ phase: String(U.GetConfig("ra_lincle")) }) + }); + break; + case 19: + result = Object.assign(result, { + lincle: K.ATTR({ phase: String(U.GetConfig("lc_lincle")) }), + boss: K.ATTR({ phase: String(U.GetConfig("lc_boss")) }), + mr_secret: K.ATTR({ flg: String(-1) }), + travel: K.ATTR({ flg: String(-1) }), + }); + break; + case 20: + result = Object.assign(result, { + limit: K.ATTR({ phase: String(U.GetConfig("tr_limit")) }), + boss: K.ATTR({ phase: String(U.GetConfig("tr_boss")) }), + red: K.ATTR({ phase: String(U.GetConfig("tr_red")) }), + yellow: K.ATTR({ phase: String(U.GetConfig("tr_yellow")) }), + medal: K.ATTR({ phase: String(U.GetConfig("tr_medal")) }), + cafe: K.ATTR({ open: String(Number(U.GetConfig("tr_cafe"))) }), + tricolettepark: K.ATTR({ open: String(Number(U.GetConfig("tr_tripark"))) }), + }); + break; + case 21: + result = Object.assign(result, { + limit: K.ATTR({ phase: String(U.GetConfig("sp_limit")) }), + boss: K.ATTR({ phase: String(U.GetConfig("sp_boss")) }), + boss1: K.ATTR({ phase: String(U.GetConfig("sp_boss1")) }), + medal: K.ATTR({ phase: String(1) }), + vip_pass_black: {}, + cafe: K.ATTR({ open: String(Number(U.GetConfig("sp_cafe"))) }), + tricolettepark: K.ATTR({ open: String(Number(U.GetConfig("sp_tripark"))) }), + tricolettepark_skip: K.ATTR({ phase: String(U.GetConfig("sp_triparkskip")) }), + deller_bonus: K.ATTR({ open: String(1) }), + gumi_event: {}, + newsong_another: K.ATTR({ open: String(Number(U.GetConfig("NewSongAnother12"))) }), + superstar: K.ATTR({ phase: String(U.GetConfig("sp_superstar")) }), + }); + break; + case 22: + result = Object.assign(result, { + license: { + string: K.ITEM("bin", Buffer.from([0x00])), // TODO:: figure out what this does (alloc size: 600) // + }, + pre_play: K.ATTR({ phase: String(U.GetConfig("pd_preplay")) }), + toho_remix: K.ATTR({ phase: String(U.GetConfig("pd_tohoremix")) }), + limit: K.ATTR({ phase: String(U.GetConfig("pd_limit")) }), + boss: K.ATTR({ phase: String(U.GetConfig("pd_boss")) }), + chrono_diver: K.ATTR({ phase: String(U.GetConfig("pd_chronodiver")) }), + qpronicle_chord: K.ATTR({ phase: String(U.GetConfig("pd_qproniclechord")) }), + vip_pass_black: {}, + cc_collabo_event: K.ATTR({ phase: String(U.GetConfig("pd_cccollabo")) }), + cc_collabo_license: {}, + deller_bonus: K.ATTR({ open: String(1) }), + newsong_another: K.ATTR({ open: String(Number(U.GetConfig("NewSongAnother12"))) }), + common_timeshift_phase: K.ATTR({ phase: String(U.GetConfig("pd_timephase")) }), + expert_secret_full_open: {}, + eappli_expert: {}, + eaorder: {}, + }); + break; + case 23: + result = Object.assign(result, { + license: { + string: K.ITEM("bin", Buffer.from([0x00])), // TODO:: figure out what this does (alloc size: 600) // + }, + boss: K.ATTR({ phase: String(U.GetConfig("cp_boss")) }), + event1_phase: K.ATTR({ phase: String(U.GetConfig("cp_event1")) }), + event2_phase: K.ATTR({ phase: String(U.GetConfig("cp_event2")) }), + extra_boss_event: K.ATTR({ phase: String(U.GetConfig("cp_extraboss")) }), // TODO:: verify // + vip_pass_black: {}, + event1_ranbow_ticket: {}, + deller_bonus: K.ATTR({ open: String(1) }), + newsong_another: K.ATTR({ open: String(Number(U.GetConfig("NewSongAnother12"))) }), + expert_secret_full_open: {}, + remocon_collabo: {}, + ravemania_collabo: {}, + djlevel_result: {}, + virtual_coin: K.ATTR({ phase: String(1) }), + reflec_volzza_collabo: {}, + bemani_summer2016: K.ATTR({ phase: String(U.GetConfig("cp_bemanisummer")) }), + }); + break; + case 24: + result = Object.assign(result, { + license: { + string: K.ITEM("bin", Buffer.from([0x00])), // TODO:: figure out what this does (alloc size: 600) // + }, + boss: K.ATTR({ phase: String(U.GetConfig("sb_boss")) }), + extra_boss_event: K.ATTR({ phase: String(U.GetConfig("sb_extraboss")) }), + vip_pass_black: {}, + deller_bonus: K.ATTR({ open: String(1) }), + newsong_another: K.ATTR({ open: String(Number(U.GetConfig("NewSongAnother12"))) }), + event1_phase: K.ATTR({ phase: String(U.GetConfig("sb_event1")) }), + event2_phase: K.ATTR({ phase: String(U.GetConfig("sb_event2")) }), + eaorder_phase: K.ATTR({ phase: String(2) }), // TODO:: figure out what this does // + common_evnet: K.ATTR({ flg: String(-1) }), // TODO:: figure out what this does // + }); + break; + case 25: + result = Object.assign(result, { + license: { + string: K.ITEM("bin", Buffer.from([0x00])), // TODO:: figure out what this does (alloc size: 600) // + }, + boss: K.ATTR({ phase: String(U.GetConfig("cb_boss")) }), + event1_phase: K.ATTR({ phase: String(U.GetConfig("cb_event1")) }), + extra_boss_event: K.ATTR({ phase: String(U.GetConfig("cb_extraboss")) }), + vip_pass_black: {}, + deller_bonus: K.ATTR({ open: String(1) }), + newsong_another: K.ATTR({ open: String(Number(U.GetConfig("NewSongAnother12"))) }), + eaorder_phase: K.ATTR({ phase: String(2) }), // TODO:: figure out what this does // + common_evnet: K.ATTR({ flg: String(-1) }), // TODO:: figure out what this does // + }); + break; + case 26: + result = Object.assign(result, { + license: { + string: K.ITEM("bin", Buffer.from([0x00])), // TODO:: figure out what this does (alloc size: 600) // + }, + boss: K.ATTR({ phase: String(U.GetConfig("rt_boss")) }), + extra_boss_event: K.ATTR({ phase: String(U.GetConfig("rt_extraboss")) }), + vip_pass_black: {}, + deller_bonus: K.ATTR({ open: String(1) }), + newsong_another: K.ATTR({ open: String(Number(U.GetConfig("NewSongAnother12"))) }), + expert_secret_full_open: {}, + eaorder_phase: K.ATTR({ phase: String(2) }), // TODO:: figure out what this does // + common_evnet: K.ATTR({ flg: String(-1) }), // TODO:: figure out what this does // + event1_phase: K.ATTR({ phase: String(U.GetConfig("rt_event1")) }), + event2_phase: K.ATTR({ phase: String(U.GetConfig("rt_event2")) }), + system_voice_phase: K.ATTR({ phase: String(_.random(0, 8)) }), + anniv20_phase: K.ATTR({ phase: String(8) }), // TODO:: figure out what this does // + }); + break; + case 27: + result = Object.assign(result, { + movie_agreement: K.ATTR({ version: String(1) }), + license: { + string: K.ITEM("bin", Buffer.from([0x00])), // TODO:: figure out what this does (alloc size: 600) // + }, + boss: K.ATTR({ phase: String(U.GetConfig("hv_boss")) }), + vip_pass_black: {}, + deller_bonus: K.ATTR({ open: String(1) }), + newsong_another: K.ATTR({ open: String(Number(U.GetConfig("NewSongAnother12"))) }), + expert_secret_full_open: {}, + eaorder_phase: K.ATTR({ phase: String(2) }), // TODO:: figure out what this does // + common_evnet: K.ATTR({ flg: String(-1) }), // TODO:: figure out what this does // + system_voice_phase: K.ATTR({ phase: String(_.random(0, 8)) }), + extra_boss_event: K.ATTR({ phase: String(U.GetConfig("hv_extraboss")) }), + event1_phase: K.ATTR({ phase: String(U.GetConfig("hv_event")) }), + premium_area_news: K.ATTR({ open: String(1) }), + premium_area_qpro: K.ATTR({ open: String(1) }), + play_video: {}, + display_asio_logo: {}, + }); + break; + case 28: + result = Object.assign(result, { + movie_agreement: K.ATTR({ version: String(1) }), + license: { + string: K.ITEM("bin", Buffer.from([0x00])), // TODO:: figure out what this does (alloc size: 600) // + }, + movie_upload: K.ATTR({ url: String(U.GetConfig("MovieUpload")) }), + boss: K.ATTR({ phase: String(U.GetConfig("bo_boss")) }), + vip_pass_black: {}, + eisei: K.ATTR({ open: String(Number(U.GetConfig("Eisei"))) }), + deller_bonus: K.ATTR({ open: String(1) }), + newsong_another: K.ATTR({ open: String(Number(U.GetConfig("NewSongAnother12"))) }), + expert_secret_full_open: {}, + eaorder_phase: K.ATTR({ phase: String(2) }), // TODO:: figure out what this does // + common_evnet: K.ATTR({ flg: String(-1) }), // TODO:: figure out what this does // + system_voice_phase: K.ATTR({ phase: String(_.random(0, 8)) }), + extra_boss_event: K.ATTR({ phase: String(U.GetConfig("bo_extraboss")) }), + event1_phase: K.ATTR({ phase: String(U.GetConfig("bo_event")) }), + premium_area_news: K.ATTR({ open: String(1) }), + premium_area_qpro: K.ATTR({ open: String(1) }), + play_video: {}, + world_tourism: K.ATTR({ open_list: String(-1) }), + bpl_battle: K.ATTR({ phase: String(1) }), + display_asio_logo: {}, + }); + break; + case 29: + result = Object.assign(result, { + movie_agreement: K.ATTR({ version: String(1) }), + license: { + string: K.ITEM("bin", Buffer.from([0x00])), // TODO:: figure out what this does (alloc size: 600) // + }, + movie_upload: K.ATTR({ url: String(U.GetConfig("MovieUpload")) }), + boss: K.ATTR({ phase: String(1) }), // TODO:: verify // + vip_pass_black: {}, + eisei: K.ATTR({ open: String(Number(U.GetConfig("Eisei"))) }), // TODO:: verify // + deller_bonus: K.ATTR({ open: String(1) }), + newsong_another: K.ATTR({ open: String(Number(U.GetConfig("NewSongAnother12"))) }), // TODO:: verify // + expert_secret_full_open: {}, + eaorder_phase: K.ATTR({ phase: String(2) }), // TODO:: figure out what this does // + common_evnet: K.ATTR({ flg: String(-1) }), // TODO:: figure out what this does // + system_voice_phase: K.ATTR({ phase: String(_.random(0, 8)) }), + extra_boss_event: K.ATTR({ phase: String(1) }), // TODO:: verify // + event1_phase: K.ATTR({ phase: String(4) }), // TODO:: verify // + premium_area_news: K.ATTR({ open: String(1) }), + premium_area_qpro: K.ATTR({ open: String(1) }), + play_video: {}, + world_tourism: K.ATTR({ open_list: String(-1) }), + bpl_battle: K.ATTR({ phase: String(1) }), + display_asio_logo: {}, + lane_gacha: {}, + }); + break; + case 30: + result = Object.assign(result, { + movie_agreement: K.ATTR({ version: String(1) }), + license: { + string: K.ITEM("bin", Buffer.from([0x00])), // TODO:: figure out what this does (alloc size: 600) // + }, + movie_upload: K.ATTR({ url: String(U.GetConfig("MovieUpload")) }), + vip_pass_black: {}, + deller_bonus: K.ATTR({ open: String(1) }), + common_evnet: K.ATTR({ flg: String(-1) }), // TODO:: figure out what this does // + system_voice_phase: K.ATTR({ phase: String(_.random(0, 8)) }), + premium_area_news: K.ATTR({ open: String(1) }), + premium_area_qpro: K.ATTR({ open: String(1) }), + play_video: {}, + music_retry: {}, + display_asio_logo: {}, + lane_gacha: {}, + tourism_booster: {}, + ameto_event: {}, + }); + break; + case 31: + result = Object.assign(result, { + movie_agreement: K.ATTR({ version: String(1) }), + license: { + string: K.ITEM("bin", Buffer.from([0x00])), // TODO:: figure out what this does (alloc size: 600) // + }, + movie_upload: K.ATTR({ url: String(U.GetConfig("MovieUpload")) }), + vip_pass_black: {}, + deller_bonus: K.ATTR({ open: String(1) }), + common_evnet: K.ATTR({ flg: String(-1) }), + system_voice_phase: K.ATTR({ phase: String(_.random(0, 8)) }), + premium_area_news: K.ATTR({ open: String(1) }), + premium_area_qpro: K.ATTR({ open: String(1) }), + play_video: {}, + music_retry: {}, + display_asio_logo: {}, + lane_gacha: {}, + tourism_booster: {}, + }); + break; + case 32: + result = Object.assign(result, { + movie_agreement: K.ATTR({ version: String(1) }), + license: { + string: K.ITEM("bin", Buffer.alloc(0)), // TODO:: figure out what this does (alloc size: 600) // + }, + movie_upload: K.ATTR({ url: String(U.GetConfig("MovieUpload")) }), + vip_pass_black: {}, + deller_bonus: K.ATTR({ open: String(1) }), + common_evnet: K.ATTR({ flg: String(-1) }), + /*system_voice: { + season: [ + { + "@attr": { + season: String(0), + s_m: String(0), + s_f: String(0), + e_m: String(0), + e_f: String(0), + } + }, + { + "@attr": { + season: String(1), + s_m: String(1), + s_f: String(0), + e_m: String(0), + e_f: String(0), + } + }, + { + "@attr": { + season: String(2), + s_m: String(1), + s_f: String(1), + e_m: String(0), + e_f: String(0), + } + }, + { + "@attr": { + season: String(3), + s_m: String(1), + s_f: String(1), + e_m: String(1), + e_f: String(0), + } + }, + { + "@attr": { + season: String(4), + s_m: String(1), + s_f: String(1), + e_m: String(1), + e_f: String(1), + } + } + ] + },*/ + play_video: {}, + music_retry: {}, + display_asio_logo: {}, + lane_gacha: {}, + tourism_booster: {}, + disable_same_triger: K.ATTR({ frame: String(0) }), + //fps_fix: {}, + //fix_framerate: {}, + fix_real: {}, + }); + break; + + default: + return send.deny(); + } + + return send.object(result); +}; + +export const pcreg: EPR = async (info, data, send) => { + const version = GetVersion(info); + const id = _.random(10000000, 99999999); + const idstr = IDtoCode(id); + const refid = $(data).attr().rid; + + let pcdata: object; + let lightning_settings: object; + let lightning_playdata: object; + let lightning_custom: object; + switch (version) { + case 14: + pcdata = GLD_pcdata; + break; + case 15: + pcdata = HDD_pcdata; + break; + case 16: + pcdata = I00_pcdata; + break; + case 17: + pcdata = JDJ_pcdata; + break; + case 18: + pcdata = JDZ_pcdata; + break; + case 19: + pcdata = KDZ_pcdata; + break; + case 20: + pcdata = LDJ_pcdata; + break; + case 21: + pcdata = IIDX21_pcdata; + break; + case 22: + pcdata = IIDX22_pcdata; + break; + case 23: + pcdata = IIDX23_pcdata; + break; + case 24: + pcdata = IIDX24_pcdata; + break; + case 25: + pcdata = IIDX25_pcdata; + break; + case 26: + pcdata = IIDX26_pcdata; + break; + case 27: + pcdata = IIDX27_pcdata; + lightning_playdata = lm_playdata; + lightning_settings = lm_settings; + break; + case 28: + pcdata = IIDX28_pcdata; + lightning_playdata = lm_playdata; + lightning_settings = lm_settings; + lightning_custom = lm_customdata; + break; + case 29: + pcdata = IIDX29_pcdata; + lightning_playdata = lm_playdata; + lightning_settings = lm_settings_new; + lightning_custom = lm_customdata; + break; + case 30: + pcdata = IIDX30_pcdata; + lightning_playdata = lm_playdata; + lightning_settings = lm_settings_new; + lightning_custom = lm_customdata; + break; + case 31: + pcdata = IIDX31_pcdata; + lightning_playdata = lm_playdata; + lightning_settings = lm_settings_new; + lightning_custom = lm_customdata; + break; + case 32: + pcdata = IIDX32_pcdata; + lightning_playdata = lm_playdata; + lightning_settings = lm_settings_new; + lightning_custom = lm_customdata; + break; + + default: + return send.deny(); + } + + await DB.Upsert( + refid, + { + collection: "profile", + }, + { + $set: { + name: $(data).attr().name, + pid: Number($(data).attr().pid), + id, + idstr, + ...default_profile, + } + } + ); + + await DB.Upsert( + refid, + { + collection: "pcdata", + version: version, + }, + { + $set: pcdata, + } + ); + + await DB.Upsert( + refid, + { + collection: "custom", + version: version, + }, + { + $set: default_custom, + } + ); + + if (version >= 27) { + await DB.Upsert( + refid, + { + collection: "lightning_settings", + version: version, + }, + { + $set: lightning_settings, + } + ); + + await DB.Upsert( + refid, + { + collection: "lightning_playdata", + version: version, + }, + { + $set: lightning_playdata, + } + ); + + await DB.Upsert( + refid, + { + collection: "lightning_custom", + version: version, + }, + { + $set: lightning_custom, + } + ); + } + + return send.object( + K.ATTR({ + id: String(id), + id_str: idstr, + }) + ); +}; + +export const pcget: EPR = async (info, data, send) => { + const version = GetVersion(info); + const refid = $(data).attr().rid; + + const profile = await DB.FindOne(refid, { collection: "profile" }); + const pcdata = await DB.FindOne(refid, { collection: "pcdata", version: version }); + const custom = await DB.FindOne(refid, { collection: "custom", version: version }); + const grade = await DB.Find(refid, { collection: "grade", version: version }); + const rivals = await DB.Find(refid, { collection: "rival" }); + const shop_data = await DB.FindOne({ collection: "shop_data" }); + const expert = await DB.Find(refid, { collection: "expert", version: version }); + const world_tourism = await DB.Find(refid, { collection: "world_tourism", version: version }); + const badge = await DB.Find(refid, { collection: "badge", version: version }); + const extra_favorite = await DB.Find(refid, { collection: "extra_favorite", version: version }); + + const lm_settings = await DB.FindOne(refid, { collection: "lightning_settings", version: version }); + const lm_playdata = await DB.FindOne(refid, { collection: "lightning_playdata", version: version }); + const lm_eisei_grade = await DB.Find(refid, { collection: "eisei_grade", version: version }); + const lm_music_memo = await DB.Find(refid, { collection: "lightning_musicmemo", version: version }); + const lm_music_memo_new = await DB.Find(refid, { collection: "lightning_musicmemo_new", version: version }); + const lm_music_filter = await DB.Find(refid, { collection: "lightning_musicfilter", version: version }); + const lm_music_filter_sort = await DB.Find(refid, { collection: "lightning_musicfilter_sort", version: version }); + let lm_custom: any = await DB.FindOne(refid, { collection: "lightning_custom", version: version }); + + if (_.isNil(pcdata)) return send.deny(); + + // migration // + if (_.isNil(custom.disable_beginner_option)) { + await DB.Upsert(refid, + { + collection: "custom", + version: version, + }, + { + $set: { + disable_beginner_option: false, + } + } + ); + + custom.disable_beginner_option = false; + } + + // migration // + if (version >= 28 && _.isNil(lm_custom)) { + await DB.Upsert(refid, + { + collection: "lightning_custom", + version: version, + }, + { + $set: lm_customdata, + } + ); + + lm_custom = lm_customdata; + } + + // migration // + if (version == 29 && _.isNil(pcdata.dr_sprank)) { + pcdata.dr_sprank = IIDX29_pcdata.dr_sprank; + pcdata.dr_sppoint = IIDX29_pcdata.dr_sppoint; + pcdata.dr_dprank = IIDX29_pcdata.dr_dprank; + pcdata.dr_dppoint = IIDX29_pcdata.dr_dppoint; + } + + // temporary solution until figure out why this happening on others // + if (_.isNil(pcdata.orb)) { + pcdata.orb = 0; + pcdata.present_orb = 0; + } + + const appendsettings = appendSettingConverter( + custom.rank_folder, + custom.clear_folder, + custom.diff_folder, + custom.alpha_folder, + custom.rival_folder, + custom.rival_battle_folder, + custom.rival_info, + custom.hide_playcount, + custom.disable_graph_cutin, + custom.classic_hispeed, + custom.rival_played_folder, + custom.hide_iidxid, + custom.disable_beginner_option, + ); + let dArray = [], eArray = [], rArray = [], mArray = [], bArray = [], fArray = [], fsArray = [], efArray = []; + + grade.forEach((res: grade) => { + dArray.push([res.style, res.gradeId, res.maxStage, res.archive]); + }); + dArray.sort((a: grade, b: grade) => a.style - b.style || a.gradeId - b.gradeId); + + lm_eisei_grade.forEach((res) => { + eArray.push({ + grade_type: res.grade_type, + grade_id: res.grade_id, + stage_num: res.stage_num, + clear_type: res.clear_type, + option: res.option, + + past: res.past_achievement, + selected_course: res.past_selected_course, + max_past: res.max_past_achievement, + max_selected_course: res.max_past_selected_course, + }); + }); + eArray.sort((a: eisei_grade_data, b: eisei_grade_data): number => a.grade_type - b.grade_type || a.grade_id - b.grade_id); + + if (rivals.length > 0) { + for (let a = 0; a < rivals.length; a++) { + let profile = await ReftoProfile(rivals[a].rival_refid); + let pcdata = await ReftoPcdata(rivals[a].rival_refid, version); + let qprodata = await ReftoQPRO(rivals[a].rival_refid, version); + + let rival_data: rival_data = { + play_style: rivals[a].play_style, + index: rivals[a].index, + + profile: profile, + pcdata: pcdata, + qprodata: qprodata, + } + + rArray.push(rival_data); + } + + rArray.sort((a: rival_data, b: rival_data): number => a.play_style - b.play_style || a.index - b.index); + } + + let wArray = []; + if (world_tourism.length > 0) { + for (let wt of world_tourism) { + let world_tourism_data = { + tour_id: wt.tour_id, + progress: wt.progress, + } + + wArray.push(world_tourism_data); + } + wArray.sort((a, b) => a.tour_id - b.tour_id); + } + + let event, gradeStr = "", exStr = "", skinStr = ""; + if (version == 14) { + dArray.forEach((res) => { + gradeStr += NumArrayToString([6, 3, 2, 7], [res[1], res[2], res[0], res[3]]); + }); + + expert.sort((a: expert, b: expert) => a.coid - b.coid); + expert.forEach((res) => { + for (let a = 0; a < 6; a++) { + exStr += NumArrayToString([6, 5, 1], [res.coid, a, res.cArray[a]]); + exStr += NumArrayToString([18], [res.pgArray[a]]); + exStr += NumArrayToString([18], [res.gArray[a]]); + } + }); + + skinStr += NumArrayToString([12], [custom.frame, custom.turntable, custom.note_burst, custom.menu_music, appendsettings, custom.lane_cover, 0, custom.category_vox]); + + return send.pugFile("pug/GLD/pcget.pug", { + profile, + pcdata, + gradeStr, + exStr, + skinStr, + rArray, + }); + } + else if (version == 15) { + dArray.forEach((res) => { + gradeStr += NumArrayToString([6, 3, 2, 7], [res[1], res[2], res[0], res[3]]); + }); + + expert.sort((a: expert, b: expert) => a.coid - b.coid); + expert.forEach((res) => { + for (let a = 0; a < 6; a++) { + exStr += NumArrayToString([6, 3, 3], [res.coid, a, res.cArray[a]]); + exStr += NumArrayToString([18], [res.pgArray[a]]); + exStr += NumArrayToString([18], [res.gArray[a]]); + } + }); + + skinStr += NumArrayToString([12], [custom.frame, custom.turntable, custom.note_burst, custom.menu_music, appendsettings, custom.lane_cover, 0, custom.category_vox]); + + return send.pugFile("pug/HDD/pcget.pug", { + profile, + pcdata, + gradeStr, + exStr, + skinStr, + rArray, + }); + } + else if (version == 16) { + expert.sort((a: expert, b: expert) => a.coid - b.coid); + expert.forEach((res) => { + for (let a = 0; a < 6; a++) { + eArray.push([res.coid, a, res.cArray[a], res.pgArray[a], res.gArray[a]]); + } + }); + + return send.pugFile("pug/I00/pcget.pug", { + profile, + pcdata, + dArray, + eArray, + appendsettings, + custom, + rArray, + }); + } + else if (version == 17) { + expert.sort((a: expert, b: expert) => a.coid - b.coid); + expert.forEach((res) => { + for (let a = 0; a < 6; a++) { + eArray.push([res.coid, a, res.cArray[a], res.pgArray[a], res.gArray[a]]); + } + }); + + return send.pugFile("pug/JDJ/pcget.pug", { + profile, + pcdata, + dArray, + eArray, + appendsettings, + custom, + rArray, + }); + } + else if (version == 18) { + if (_.isNil(pcdata.fcombo)) { // migration // + pcdata.fcombo = Array(2).fill(0); + + await DB.Upsert( + refid, + { + collection: "pcdata", + version: version, + }, + { + $set: { + fcombo: Array(2).fill(0), + } + } + ); + } + + event = await DB.FindOne(refid, { collection: "event_1", version: version }); + if (!_.isNil(event)) { + event.cf = Buffer.from(event.cf, "base64").toString("hex"); + event.pf = Buffer.from(event.pf, "base64").toString("hex"); + event.mf = Buffer.from(event.mf, "base64").toString("hex"); + } + + return send.pugFile("pug/JDZ/pcget.pug", { + profile, + pcdata, + dArray, + appendsettings, + custom, + rArray, + event, + }); + } + else if (version == 19) { + event = await DB.FindOne(refid, { collection: "event_1", version: version }); + + if (!_.isNil(event)) { + event.cf = Buffer.from(event.cf, "base64").toString("hex"); + event.qcf = Buffer.from(event.qcf, "base64").toString("hex"); + event.piece = Buffer.from(event.piece, "base64").toString("hex"); + } + + return send.pugFile("pug/KDZ/pcget.pug", { + profile, + pcdata, + dArray, + appendsettings, + custom, + rArray, + event, + }); + } + else if (version == 20) { + pcdata.st_stamp = _.isNil(pcdata.st_stamp) ? "00" : Buffer.from(pcdata.st_stamp as string, "base64").toString("hex"); + pcdata.st_help = _.isNil(pcdata.st_help) ? "00" : Buffer.from(pcdata.st_help as string, "base64").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" }); + let redboss = await DB.FindOne(refid, { collection: "event_1", version: version, event_name: "redboss" }); + let blueboss = await DB.FindOne(refid, { collection: "event_1", version: version, event_name: "blueboss" }); + let yellowboss = await DB.FindOne(refid, { collection: "event_1", version: version, event_name: "yellowboss" }); + + if (!_.isNil(blueboss)) blueboss.durability = Buffer.from(blueboss.durability, "base64").toString("hex"); + + return send.pugFile("pug/LDJ/pcget.pug", { + profile, + pcdata, + dArray, + appendsettings, + custom, + rArray, + link5, + tricolettepark, + redboss, + blueboss, + yellowboss, + shop_data, + }); + } + else if (version >= 21) { + let link5 = null, + tricolettepark = null, + boss1 = null, + chrono_diver = null, + qpronicle_chord = null, + qpronicle_chord_sub = [], + qpronicle_phase3 = null, + pendual_talis = null, + open_tokotoko = null, + mystery_line = null, + mystery_line_sub = [], + siege_sinobuz = null, + siege_sinobuz_sub = [], + ninja_shichikyoden = null, + rush_cannonracer = null, + rush_cannonracer_sub = [], + mirage_lib = null, + mirage_lib_sub = [], + delabity_lab = null, + delabity_lab_sub = [], + anniv20 = null, + epo_res = null, + epo_res_sub = [], + pinky_ug = null, + pinky_ug_hall = [], + pinky_ug_qpro = [], + event_1 = null, + event_1s = null, + evtArray = [], evtArray2 = [], evtArray3 = [], + ebeArray = []; + + switch (version) { + case 21: + pcdata.st_album = _.isNil(pcdata.st_album) ? "00" : Buffer.from(pcdata.st_album as string, "base64").toString("hex"); + + 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" }); + + boss1 = await DB.FindOne(refid, { collection: "event_1", version: version, event_name: "boss1" }); + if (!_.isNil(boss1)) boss1.durability = Buffer.from(boss1.durability, "base64").toString("hex"); + break; + case 22: + pcdata.st_album = _.isNil(pcdata.st_album) ? "00" : Buffer.from(pcdata.st_album as string, "base64").toString("hex"); + + chrono_diver = await DB.FindOne(refid, { collection: "event_1", version: version, event_name: "chrono_diver" }); + pendual_talis = await DB.FindOne(refid, { collection: "event_1", version: version, event_name: "boss_event_3" }); + if (_.isNil(pendual_talis)) pendual_talis = { point: 0 }; + else if (pendual_talis.point == "null" || _.isNil(pendual_talis.point)) pendual_talis = { point: 0 }; + + qpronicle_chord = await DB.FindOne(refid, { collection: "event_1", version: version, event_name: "qpronicle_chord" }); + qpronicle_chord_sub = await DB.Find(refid, { collection: "event_1_sub", version: version, event_name: "qpronicle_chord" }); + qpronicle_phase3 = await DB.FindOne(refid, { collection: "event_1", version: version, event_name: "qpronicle_phase3" }); + break; + case 23: + pcdata.st_tokimeki = _.isNil(pcdata.st_tokimeki) ? "00" : Buffer.from(pcdata.st_tokimeki as string, "base64").toString("hex"); + + open_tokotoko = await DB.FindOne(refid, { collection: "event_1", version: version, event_name: "event1_data" }); + mystery_line = await DB.FindOne(refid, { collection: "event_1", version: version, event_name: "event2_data" }); + mystery_line_sub = await DB.Find(refid, { collection: "event_1_sub", version: version, event_name: "event2_data" }); + break; + case 24: + siege_sinobuz = await DB.FindOne(refid, { collection: "event_1", version: version, event_name: "event1_data" }); + siege_sinobuz_sub = await DB.Find(refid, { collection: "event_1_sub", version: version, event_name: "event1_data" }); + siege_sinobuz_sub.forEach((res) => { + res.is_clear = Number(res.is_clear); + res.ninjyutsu = Buffer.from(res.ninjyutsu, "base64").toString("hex"); + res.card_damage = Buffer.from(res.card_damage, "base64").toString("hex"); + res.card_clear = Buffer.from(res.card_clear, "base64").toString("hex"); + }); + + ninja_shichikyoden = await DB.FindOne(refid, { collection: "event_1", version: version, event_name: "event2_data" }); + if (!_.isNil(ninja_shichikyoden)) + ninja_shichikyoden.last_select_dojo = Buffer.from(ninja_shichikyoden.last_select_dojo, "base64").toString("hex"); + if (!_.isNil(ninja_shichikyoden)) + ninja_shichikyoden.enemy_damage = Buffer.from(ninja_shichikyoden.enemy_damage, "base64").toString("hex"); + break; + case 25: + rush_cannonracer = await DB.FindOne(refid, { collection: "event_1", version: version, event_name: "event1_data" }); + rush_cannonracer_sub = await DB.Find(refid, { collection: "event_1_sub", version: version, event_name: "event1_data" }); + rush_cannonracer_sub.forEach((res) => { + res.is_clear = Number(res.is_clear); + }); + break; + case 26: + mirage_lib = await DB.FindOne(refid, { collection: "event_1", version: version, event_name: "event1_data" }); + if (!_.isNil(mirage_lib)) + mirage_lib.quiz_control_list = Buffer.from(mirage_lib.quiz_control_list, "base64").toString("hex"); + + mirage_lib_sub = await DB.Find(refid, { collection: "event_1_sub", version: version, event_name: "event1_data" }); + mirage_lib_sub.forEach((res) => { + res.map_route_damage = Buffer.from(res.map_route_damage, "base64").toString("hex"); + }); + + delabity_lab = await DB.FindOne(refid, { collection: "event_1", version: version, event_name: "event2_data" }); + delabity_lab_sub = await DB.Find(refid, { collection: "event_1_sub", version: version, event_name: "event2_data" }); + + anniv20 = await DB.FindOne(refid, { collection: "event_1", version: version, event_name: "anniv20_data" }); + break; + case 31: + let myepo_map = await DB.Find(refid, { collection: "event_1", version: version, event_data: "myepo_map" }); + let myepo_building = await DB.Find(refid, { collection: "event_1_sub", version: version, event_data: "myepo_building" }); + let myepo_shop = await DB.Find(refid, { collection: "event_1_sub", version: version, event_data: "myepo_shop" }); + + myepo_map.forEach((res: any) => { + let data = { + ...res, + carryover_use: 0, + }; + + evtArray.push(data); + }); + + evtArray2 = myepo_building; + evtArray3 = myepo_shop; + + epo_res = await DB.FindOne(refid, { collection: "event_1", version: version, event_data: "epores" }); + epo_res_sub = await DB.Find(refid, { collection: "event_1_sub", version: version, event_data: "epores_system" }); + break; + case 32: + event_1 = await DB.Find(refid, { collection: "event_1", version: version }); + event_1s = await DB.Find(refid, { collection: "event_1_sub", version: version }); + + if (event_1.length > 0) { + for (let evt of event_1) { + evt.hire_num = _.isNil(evt.hire_num) ? 0 : evt.hire_num; + evt.flg_l = _.isNil(evt.flg_l) ? 0 : Number(evt.flg_l); + + if (_.isNil(evt.event_data)) evtArray.push(evt); + } + } + + if (event_1s.length > 0) { + for (let evt of event_1s) { + if (_.isNil(evt.event_data)) evtArray2.push(evt); + } + } + + rArray.forEach((res, idx) => { + evtArray3.push({ + index: idx, + + iidx_id: res.profile[2], + name: res.profile[0], + + head: res.qprodata[1], + hair: res.qprodata[0], + face: res.qprodata[2], + body: res.qprodata[3], + hand: res.qprodata[4], + back: res.qprodata[5], + }); + }); + + pinky_ug = await DB.FindOne(refid, { collection: "event_1", version: version, event_data: "pinkyunderground" }); + pinky_ug_hall = await DB.Find(refid, { collection: "event_1_sub", version: version, event_data: "pinkyunderground_hall" }); + pinky_ug_qpro = await DB.Find(refid, { collection: "event_1_sub", version: version, event_data: "pinkyunderground_hall_qpro" }); + break; + + default: + event_1 = await DB.Find(refid, { collection: "event_1", version: version }); + 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); + } + } + break; + } + + if (!_.isNil(pcdata.sp_mlist)) { + pcdata.sp_mlist = Buffer.from(pcdata.sp_mlist as string, "base64").toString("hex"); + pcdata.sp_clist = Buffer.from(pcdata.sp_clist as string, "base64").toString("hex"); + pcdata.dp_mlist = Buffer.from(pcdata.dp_mlist as string, "base64").toString("hex"); + pcdata.dp_clist = Buffer.from(pcdata.dp_clist as string, "base64").toString("hex"); + } + + if (extra_favorite.length > 0) { + extra_favorite.forEach((res) => { + efArray.push({ + folder_id: res.folder_id, + + sp_mlist: Buffer.from(res.sp_mlist as string, "base64").toString("hex"), + sp_clist: Buffer.from(res.sp_clist as string, "base64").toString("hex"), + dp_mlist: Buffer.from(res.dp_mlist as string, "base64").toString("hex"), + dp_clist: Buffer.from(res.dp_clist as string, "base64").toString("hex") + }); + }); + } + + if (version >= 30) { + if (lm_music_memo_new.length > 0) { + lm_music_memo_new.forEach((res) => { + let musicmemo_data: musicmemo_data_new = { + folder_idx: res.folder_idx, + folder_name: res.folder_name, + play_style: res.play_style, + + music_ids: res.music_ids, + } + + 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); + } + + if (lm_music_filter.length > 0) { + lm_music_filter.forEach((res) => { + let musicfilter_data: musicfilter_data = { + play_style: res.play_style, + folder_id: res.folder_id, + filter_id: res.filter_id, + + is_valid: Number(res.is_valid), + value0: res.value0, + value1: res.value1, + } + + fArray.push(musicfilter_data); + }); + fArray.sort((a: musicfilter_data, b: musicfilter_data): number => a.play_style - b.play_style || a.folder_id - b.folder_id); + } + + if (lm_music_filter_sort.length > 0) { + lm_music_filter_sort.forEach((res) => { + let musicfiltersort_data: musicfilter_sort_data = { + play_style: res.play_style, + folder_id: res.folder_id, + sort: res.sort + }; + + fsArray.push(musicfiltersort_data); + }); + fsArray.sort((a: musicfilter_sort_data, b: musicfilter_sort_data): number => a.play_style - b.play_style || a.folder_id - b.folder_id); + } + } + else if (version >= 27) { + if (lm_music_memo.length > 0) { + lm_music_memo.forEach((res) => { + let musicmemo_data: musicmemo_data = { + music_idx: res.music_idx, + play_style: res.play_style, + + music_id: res.music_id, + } + + mArray.push(musicmemo_data); + }); + 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 (following table is for EPOLIS) + [save] - element names are following below but get checks for id 0 ~ 16 + step_up [2] + today_recommend + weekly_ranking + visitor [2] + notes_radar [2] + tsujigiri + iidx_exam + world_tourism + event1 + arena [2] + event2 + + [get] (starts from zero) + category_id - up to 16 + badge_flg_id + - This can be up to 23 [category_id, badge_flg_id] + - 0 - 23 [djLevel] + - 1 - 23 [clear] + - 2 - 1 [grade] + - 3 - 1 [step_up] + - 4 - (none) + - 5 - (none) + - 6 - (none) + - 7 - 1 [visitor] + - 8 - 1 [notes_radar] + - 10 - (none) + - 11 - 1 + - 12 - (none) [tourism?] + - 13 - (none) [event] + - 14 - 1 + - 15 - (none) + - 16 - (none) [event2] + - 3001 - 9 + badge_flg (these are s64 - this may exceed max int value) + + - following codes are dummy code + ***/ + + if (version >= 30 && badge.length > 0) { + let djLevel, clear, grade, step_up, visitor, notes_radar, world_tourism, event1, event2; + + // visitor, notes_radar, world_tourism, step_up // + if (version == 30) { + // this keep sending back on save // + // possibly wrong category_id but at least doesn't show as new badges // + visitor = badge.filter((res) => res.category_name === "visitor"); + visitor.forEach((res) => { + bArray.push({ + id: 6, + flg_id: res.flg_id, + flg: res.flg, + }); + }); + + notes_radar = badge.filter((res) => res.category_name === "notes_radar"); + notes_radar.forEach((res) => { + bArray.push({ + id: 7, + flg_id: res.flg_id, + flg: res.flg, + }); + }); + + world_tourism = badge.filter((res) => res.category_name === "world_tourism"); + world_tourism.forEach((res) => { + bArray.push({ + id: 8, + flg_id: res.flg_id, + flg: res.flg, + }); + }); + } else { + step_up = badge.filter((res) => res.category_name === "step_up"); + step_up.forEach((res) => { + bArray.push({ + id: 3, + flg_id: res.flg_id, + flg: res.flg, + }); + }); + + // this keep sending back on save // + // possibly wrong category_id but at least doesn't show as new badges // + visitor = badge.filter((res) => res.category_name === "visitor"); + visitor.forEach((res) => { + bArray.push({ + id: 7, + flg_id: res.flg_id, + flg: res.flg, + }); + }); + + notes_radar = badge.filter((res) => res.category_name === "notes_radar"); + notes_radar.forEach((res) => { + bArray.push({ + id: 8, + flg_id: res.flg_id, + flg: res.flg, + }); + }); + + world_tourism = badge.filter((res) => res.category_name === "world_tourism"); + world_tourism.forEach((res) => { + bArray.push({ + id: 12, + flg_id: res.flg_id, + flg: res.flg, + }); + }); + } + + // event // + switch (version) { + case 30: + event1 = badge.filter((res) => res.category_name === "event1"); + event1.forEach((res) => { + bArray.push({ + id: 9, + flg_id: res.flg_id, + flg: res.flg, + }); + }); + break; + case 31: + event1 = badge.filter((res) => res.category_name === "event1"); + event1.forEach((res) => { + bArray.push({ + id: 13, + flg_id: res.flg_id, + flg: res.flg, + }); + }); + + event2 = badge.filter((res) => res.category_name === "event2"); + event2.forEach((res) => { + bArray.push({ + id: 16, + flg_id: res.flg_id, + flg: res.flg, + }); + }); + break; + case 32: + event1 = badge.filter((res) => res.category_name === "event1"); + event1.forEach((res) => { + bArray.push({ + id: 13, + flg_id: res.flg_id, + flg: res.flg, + }); + }); + break; + + default: + break; + } + + // default // + djLevel = badge.filter((res) => res.category_name === "djLevel"); + djLevel.forEach((res) => { + bArray.push({ + id: 0, + flg_id: res.flg_id, + flg: res.flg, + }); + }); + + clear = badge.filter((res) => res.category_name === "clear"); + clear.forEach((res) => { + bArray.push({ + id: 1, + flg_id: res.flg_id, + flg: res.flg, + }); + }); + + grade = badge.filter((res) => res.category_name === "grade"); + grade.forEach((res) => { + bArray.push({ + id: 2, + flg_id: res.flg_id, + flg: res.flg, + }); + }); + + bArray.sort((a, b) => a.id - b.id || a.flg_id - b.flg_id); + } + + // theres must be better way to do this but hey it works // + const date = new Date(); + const monthStr = `${date.getMonth() + 1}`.padStart(2, "0"); + const dayStr = `${date.getDate()}`.padStart(2, "0"); + const activityDayId = date.getDay(); + const activityTimestamp = Math.floor(date.valueOf() / 1000); // unix timestamp (seconds) // + const activityDateStr = Number(`${date.getFullYear()}${monthStr}${dayStr}`); + const activity = await DB.Find(refid, { + collection: "activity", + version: version, + }); + const activityTodaySP = activity.find((res) => res.play_style == 0 && res.date == activityDateStr); + const activityTodayDP = activity.find((res) => res.play_style == 1 && res.date == activityDateStr); + + let activityWeekSP = []; + let activityWeekDP = []; + let weekDates = []; + let weekDays = [Math.floor(date.valueOf() / 1000)]; + for (let a = 1; a < 6; a++) { + weekDays.push(new Date(weekDays[a - 1]).getTime() - 7 * 24 * 60 * 60); + } + weekDays = weekDays.reverse(); + + weekDays.forEach((res) => { + let weekDate = new Date(Math.floor(res * 1000)); + let weekDateMonthStr = `${weekDate.getMonth() + 1}`.padStart(2, "0"); + let weekDateDayStr = `${weekDate.getDate()}`.padStart(2, "0"); + weekDates.push(Number(`${weekDate.getFullYear()}${weekDateMonthStr}${weekDateDayStr}`)); + }); + + for (let b = 0; b < 5; b++) { + activityWeekSP.push({ + week_index: b, + week_id: b, + date: weekDays[b], + + music_num: 0, + play_time: 0, + keyboard_num: 0, + scratch_num: 0, + + clear_update_num: Array(13).fill(0), + score_update_num: Array(13).fill(0), + }); + + let activityWeekDataSP = activity.filter((res) => res.play_style == 0 && (res.date >= weekDates[b] && res.date < weekDates[b + 1])); + activityWeekDataSP.forEach((res) => { + activityWeekSP[b].music_num += res.music_num; + activityWeekSP[b].play_time += res.play_time; + activityWeekSP[b].keyboard_num += res.keyboard_num; + activityWeekSP[b].scratch_num += res.scratch_num; + + for (let c = 0; c < 13; c++) { + activityWeekSP[b].clear_update_num[c] += res.clear_update_num[c]; + activityWeekSP[b].score_update_num[c] += res.score_update_num[c]; + } + }); + + activityWeekDP.push({ + week_index: b, + week_id: b, + date: weekDays[b], + + music_num: 0, + play_time: 0, + keyboard_num: 0, + scratch_num: 0, + + clear_update_num: Array(13).fill(0), + score_update_num: Array(13).fill(0), + }); + + let activityWeekDataDP = activity.filter((res) => res.play_style == 1 && (res.date >= weekDates[b] && res.date < weekDates[b + 1])); + activityWeekDataDP.forEach((res) => { + activityWeekDP[b].music_num += res.music_num; + activityWeekDP[b].play_time += res.play_time; + activityWeekDP[b].keyboard_num += res.keyboard_num; + activityWeekDP[b].scratch_num += res.scratch_num; + + for (let c = 0; c < 13; c++) { + activityWeekDP[b].clear_update_num[c] += res.clear_update_num[c]; + activityWeekDP[b].score_update_num[c] += res.score_update_num[c]; + } + }); + } + + const activity_mybest_sp = await DB.Find(refid, { + collection: "activity_mybest", + version: version, + play_style: 0, + }); + const activity_mybest_dp = await DB.Find(refid, { + collection: "activity_mybest", + version: version, + play_style: 1, + }); + + // TODO:: actually sort by today's gameplay // + let activityMybest = [], activityMynews = []; + if (activity_mybest_sp.length > 0) { + activity_mybest_sp.sort((a, b) => b.now_clear - a.now_clear); + activityMybest.push({ + play_style: activity_mybest_sp[0].play_style, + play_side: activity_mybest_sp[0].play_side, + music_id: activity_mybest_sp[0].music_id, + note_id: activity_mybest_sp[0].note_id, + + kind: 0, + + target_graph: activity_mybest_sp[0].target_graph, + target_score: activity_mybest_sp[0].target_score, + pacemaker: activity_mybest_sp[0].pacemaker, + best_clear: activity_mybest_sp[0].best_clear, + best_score: activity_mybest_sp[0].best_score, + best_misscount: activity_mybest_sp[0].best_misscount, + now_clear: activity_mybest_sp[0].now_clear, + now_score: activity_mybest_sp[0].now_score, + now_misscount: activity_mybest_sp[0].now_misscount, + now_pgreat: activity_mybest_sp[0].now_pgreat, + now_great: activity_mybest_sp[0].now_great, + now_good: activity_mybest_sp[0].now_good, + now_bad: activity_mybest_sp[0].now_bad, + now_poor: activity_mybest_sp[0].now_poor, + now_combo: activity_mybest_sp[0].now_combo, + now_fast: activity_mybest_sp[0].now_fast, + now_slow: activity_mybest_sp[0].now_slow, + option: activity_mybest_sp[0].option, + option_2: activity_mybest_sp[0].option_2, + ghost_gauge_data: Buffer.from(activity_mybest_sp[0].ghost_gauge_data, "base64").toString("hex"), + gauge_type: activity_mybest_sp[0].gauge_type, + result_type: activity_mybest_sp[0].result_type, + is_special_result: activity_mybest_sp[0].is_special_result, + + update_date: activity_mybest_sp[0].update_date, + }); + + activity_mybest_sp.sort((a, b) =>b.now_score - a.now_score); + activityMybest.push({ + play_style: activity_mybest_sp[0].play_style, + play_side: activity_mybest_sp[0].play_side, + music_id: activity_mybest_sp[0].music_id, + note_id: activity_mybest_sp[0].note_id, + + kind: 1, + + target_graph: activity_mybest_sp[0].target_graph, + target_score: activity_mybest_sp[0].target_score, + pacemaker: activity_mybest_sp[0].pacemaker, + best_clear: activity_mybest_sp[0].best_clear, + best_score: activity_mybest_sp[0].best_score, + best_misscount: activity_mybest_sp[0].best_misscount, + now_clear: activity_mybest_sp[0].now_clear, + now_score: activity_mybest_sp[0].now_score, + now_misscount: activity_mybest_sp[0].now_misscount, + now_pgreat: activity_mybest_sp[0].now_pgreat, + now_great: activity_mybest_sp[0].now_great, + now_good: activity_mybest_sp[0].now_good, + now_bad: activity_mybest_sp[0].now_bad, + now_poor: activity_mybest_sp[0].now_poor, + now_combo: activity_mybest_sp[0].now_combo, + now_fast: activity_mybest_sp[0].now_fast, + now_slow: activity_mybest_sp[0].now_slow, + option: activity_mybest_sp[0].option, + option_2: activity_mybest_sp[0].option_2, + ghost_gauge_data: Buffer.from(activity_mybest_sp[0].ghost_gauge_data, "base64").toString("hex"), + gauge_type: activity_mybest_sp[0].gauge_type, + result_type: activity_mybest_sp[0].result_type, + is_special_result: activity_mybest_sp[0].is_special_result, + + update_date: activity_mybest_sp[0].update_date, + }); + + activity_mybest_sp.sort((a, b) => b.update_date - a.update_date); + activity_mybest_sp.forEach((res, idx) => { + activityMynews.push({ + play_style: res.play_style, + kind: 0, // unknown // + news_no: idx, + index: idx, + day_id: new Date(res.update_date * 1000).getDay(), + music_id: res.music_id, + note_id: res.note_id, + best_score: res.best_score, + now_score: res.now_score, + now_clear: res.now_clear, + news_time: res.update_date, + }); + }); + } + + if (activity_mybest_dp.length > 0) { + activity_mybest_dp.sort((a, b) => b.now_clear - a.now_clear); + activityMybest.push({ + play_style: activity_mybest_dp[0].play_style, + play_side: activity_mybest_dp[0].play_side, + music_id: activity_mybest_dp[0].music_id, + note_id: activity_mybest_dp[0].note_id, + + kind: 0, + + target_graph: activity_mybest_dp[0].target_graph, + target_score: activity_mybest_dp[0].target_score, + pacemaker: activity_mybest_dp[0].pacemaker, + best_clear: activity_mybest_dp[0].best_clear, + best_score: activity_mybest_dp[0].best_score, + best_misscount: activity_mybest_dp[0].best_misscount, + now_clear: activity_mybest_dp[0].now_clear, + now_score: activity_mybest_dp[0].now_score, + now_misscount: activity_mybest_dp[0].now_misscount, + now_pgreat: activity_mybest_dp[0].now_pgreat, + now_great: activity_mybest_dp[0].now_great, + now_good: activity_mybest_dp[0].now_good, + now_bad: activity_mybest_dp[0].now_bad, + now_poor: activity_mybest_dp[0].now_poor, + now_combo: activity_mybest_dp[0].now_combo, + now_fast: activity_mybest_dp[0].now_fast, + now_slow: activity_mybest_dp[0].now_slow, + option: activity_mybest_dp[0].option, + option_2: activity_mybest_dp[0].option_2, + ghost_gauge_data: Buffer.from(activity_mybest_dp[0].ghost_gauge_data, "base64").toString("hex"), + gauge_type: activity_mybest_dp[0].gauge_type, + result_type: activity_mybest_dp[0].result_type, + is_special_result: activity_mybest_dp[0].is_special_result, + + update_date: activity_mybest_dp[0].update_date, + }); + + activity_mybest_dp.sort((a, b) => b.now_score - a.now_score); + activityMybest.push({ + play_style: activity_mybest_dp[0].play_style, + play_side: activity_mybest_dp[0].play_side, + music_id: activity_mybest_dp[0].music_id, + note_id: activity_mybest_dp[0].note_id, + + kind: 1, + + target_graph: activity_mybest_dp[0].target_graph, + target_score: activity_mybest_dp[0].target_score, + pacemaker: activity_mybest_dp[0].pacemaker, + best_clear: activity_mybest_dp[0].best_clear, + best_score: activity_mybest_dp[0].best_score, + best_misscount: activity_mybest_dp[0].best_misscount, + now_clear: activity_mybest_dp[0].now_clear, + now_score: activity_mybest_dp[0].now_score, + now_misscount: activity_mybest_dp[0].now_misscount, + now_pgreat: activity_mybest_dp[0].now_pgreat, + now_great: activity_mybest_dp[0].now_great, + now_good: activity_mybest_dp[0].now_good, + now_bad: activity_mybest_dp[0].now_bad, + now_poor: activity_mybest_dp[0].now_poor, + now_combo: activity_mybest_dp[0].now_combo, + now_fast: activity_mybest_dp[0].now_fast, + now_slow: activity_mybest_dp[0].now_slow, + option: activity_mybest_dp[0].option, + option_2: activity_mybest_dp[0].option_2, + ghost_gauge_data: Buffer.from(activity_mybest_dp[0].ghost_gauge_data, "base64").toString("hex"), + gauge_type: activity_mybest_dp[0].gauge_type, + result_type: activity_mybest_dp[0].result_type, + is_special_result: activity_mybest_dp[0].is_special_result, + + update_date: activity_mybest_dp[0].update_date, + }); + + activity_mybest_dp.sort((a, b) => b.update_date - a.update_date); + activity_mybest_dp.forEach((res, idx) => { + activityMynews.push({ + play_style: res.play_style, + kind: 0, // unknown // + news_no: idx, + index: idx, + day_id: new Date(res.update_date * 1000).getDay(), + music_id: res.music_id, + note_id: res.note_id, + best_score: res.best_score, + now_score: res.now_score, + now_clear: res.now_clear, + news_time: res.update_date, + }); + }); + } + + const extra_boss_event = await DB.Find(refid, { + collection: "extra_boss", + version: version, + }); + extra_boss_event.forEach((res) => { + ebeArray.push({ + phase: res.phase, + + extra: res.extra, + extra_b: res.extra_b, + onemore: res.onemore, + onemore_b: res.onemore_b, + }); + }); + + let result: any = { + profile, + pcdata, + dArray, + appendsettings, + custom, + rArray, + shop_data, + }; + + switch (version) { + case 21: + result = Object.assign(result, { + link5, + tricolettepark, + boss1, + }); + break; + case 22: + result = Object.assign(result, { + chrono_diver, + qpronicle_chord, + qpronicle_chord_sub, + qpronicle_phase3, + pendual_talis, + }); + break; + case 23: + result = Object.assign(result, { + efArray, + open_tokotoko, + mystery_line, + mystery_line_sub, + }); + break; + case 24: + result = Object.assign(result, { + efArray, + siege_sinobuz, + siege_sinobuz_sub, + ninja_shichikyoden, + }); + break; + case 25: + result = Object.assign(result, { + efArray, + rush_cannonracer, + rush_cannonracer_sub, + }); + break; + case 26: + result = Object.assign(result, { + mirage_lib, + mirage_lib_sub, + delabity_lab, + delabity_lab_sub, + anniv20, + }); + break; + case 31: + result = Object.assign(result, { + epo_res, + epo_res_sub, + }); + break; + case 32: + result = Object.assign(result, { + pinky_ug, + pinky_ug_hall, + pinky_ug_qpro, + }); + break; + + default: + break; + } + + switch (version) { + case 32: + result = Object.assign(result, { + fsArray, + activityDayId, + activityTimestamp, + activityTodaySP, + activityTodayDP, + activityWeekSP, + activityWeekDP, + activityMynews, + activityMybest, + ebeArray, + }); + case 31: + result = Object.assign(result, { + fArray, + }); + case 30: + result = Object.assign(result, { + bArray, + }); + case 29: + case 28: + result = Object.assign(result, { + mArray, + wArray, + }); + case 27: + result = Object.assign(result, { + lm_playdata, + lm_settings, + lm_custom, + eArray, + evtArray, + evtArray2, + evtArray3, + }); + default: break; + } + + return send.pugFile(`pug/LDJ/${version}pcget.pug`, result); + } + + return send.deny(); +}; + +export const pcoldget: EPR = async (info, data, send) => { + const refid = $(data).attr().rid; + const pcdata = await DB.FindOne(refid, { collection: "pcdata" }); // version check removed // + + if (_.isNil(pcdata)) return send.deny(); + + return send.success(); +}; + +export const pcgetname: EPR = async (info, data, send) => { + const refid = $(data).attr().rid; + const profile = await DB.FindOne(refid, { collection: "profile" }); + + if (_.isNil(profile)) return send.deny(); + + return send.object( + K.ATTR({ + name: profile.name, + idstr: profile.idstr, + pid: String(profile.pid), + }) + ); +}; + +export const pctakeover: EPR = async (info, data, send) => { + const version = GetVersion(info); + const refid = $(data).attr().rid; + const profile = await DB.FindOne(refid, { collection: "profile" }); + + // do samething as pcreg // + let pcdata: object; + let lightning_settings: object; + let lightning_playdata: object; + let lightning_custom: object; + switch (version) { + case 14: + pcdata = GLD_pcdata; + break; + case 15: + pcdata = HDD_pcdata; + break; + case 16: + pcdata = I00_pcdata; + break; + case 17: + pcdata = JDJ_pcdata; + break; + case 18: + pcdata = JDZ_pcdata; + break; + case 19: + pcdata = KDZ_pcdata; + break; + case 20: + pcdata = LDJ_pcdata; + break; + case 21: + pcdata = IIDX21_pcdata; + break; + case 22: + pcdata = IIDX22_pcdata; + break; + case 23: + pcdata = IIDX23_pcdata; + break; + case 24: + pcdata = IIDX24_pcdata; + break; + case 25: + pcdata = IIDX25_pcdata; + break; + case 26: + pcdata = IIDX26_pcdata; + break; + case 27: + pcdata = IIDX27_pcdata; + lightning_playdata = lm_playdata; + lightning_settings = lm_settings; + break; + case 28: + pcdata = IIDX28_pcdata; + lightning_playdata = lm_playdata; + lightning_settings = lm_settings; + lightning_custom = lm_customdata; + break; + case 29: + pcdata = IIDX29_pcdata; + lightning_playdata = lm_playdata; + lightning_settings = lm_settings_new; + lightning_custom = lm_customdata; + break; + case 30: + pcdata = IIDX30_pcdata; + lightning_playdata = lm_playdata; + lightning_settings = lm_settings_new; + lightning_custom = lm_customdata; + break; + case 31: + pcdata = IIDX31_pcdata; + lightning_playdata = lm_playdata; + lightning_settings = lm_settings_new; + lightning_custom = lm_customdata; + break; + case 32: + pcdata = IIDX32_pcdata; + lightning_playdata = lm_playdata; + lightning_settings = lm_settings_new; + lightning_custom = lm_customdata; + break; + + default: + return send.deny(); + } + + await DB.Upsert( + refid, + { + collection: "pcdata", + version: version, + }, + { + $set: pcdata, + } + ); + + await DB.Upsert( + refid, + { + collection: "custom", + version: version, + }, + { + $set: default_custom, + } + ); + + if (version >= 27) { + await DB.Upsert( + refid, + { + collection: "lightning_settings", + version: version, + }, + { + $set: lightning_settings, + } + ); + + await DB.Upsert( + refid, + { + collection: "lightning_playdata", + version: version, + }, + { + $set: lightning_playdata, + } + ); + + await DB.Upsert( + refid, + { + collection: "lightning_custom", + version: version, + }, + { + $set: lightning_custom, + } + ); + } + + return send.object( + K.ATTR({ + id: String(profile.id), + }) + ); +}; + +export const pcvisit: EPR = async (info, data, send) => { + return send.object( + K.ATTR({ + anum: "10", + snum: "10", + pnum: "10", + aflg: "0", + sflg: "0", + pflg: "0", + }) + ); +}; + +export const pcsave: EPR = async (info, data, send) => { + const version = GetVersion(info); + const refid = await IDtoRef(Number($(data).attr().iidxid)); + const cltype = Number($(data).attr().cltype); // 0 -> SP, 1 -> DP // + + if (version == -1) return send.deny(); + + let profile = await DB.FindOne(refid, { collection: "profile" }); + let pcdata = await DB.FindOne(refid, { collection: "pcdata", version: version }); + let custom = await DB.FindOne(refid, { collection: "custom", version: version }); + let lm_settings = await DB.FindOne(refid, { collection: "lightning_settings", version: version }); + let lm_playdata = await DB.FindOne(refid, { collection: "lightning_playdata", version: version }); + + if (_.isNil(pcdata)) return send.deny(); + + const isTDJ = !(_.isNil($(data).element("lightning_play_data"))); + const hasStepUpData = !(_.isNil($(data).element("step"))); + const hasEventData = !(_.isNil($(data).element("event1"))) || !(_.isNil($(data).element("event_1"))); + const hasEvent2Data = !(_.isNil($(data).element("event2"))) || !(_.isNil($(data).element("event_2"))); + const hasLanguageData = !(_.isNil($(data).element("language_setting"))); + const hasWorldTourism = !(_.isNil($(data).element("world_tourism_data"))); + const hasTDJSettings = !(_.isNil($(data).element("lightning_setting"))); + const hasMusicMemo = !(_.isNil($(data).element("music_memo"))); + const hasTowerData = !(_.isNil($(data).element("tower_data"))); + const hasSkinData = !(_.isNil($(data).element("skin_equip"))); + const hasTDJSkinData = !(_.isNil($(data).element("tdjskin_equip"))); + const hasMusicFilter = !(_.isNil($(data).element("music_filter"))); + const hasBadgeData = !(_.isNil($(data).element("badge"))); + const hasActivityData = !(_.isNil($(data).element("activity_data"))); + + if (cltype == 0) pcdata.spnum += 1; + else pcdata.dpnum += 1; + + if (isTDJ) { + if (cltype == 0) lm_playdata.sp_num += 1; + else lm_playdata.dp_num += 1; + + if (hasTDJSettings) { + lm_settings.headphone_vol = Number($(data).attr("lightning_setting").headphone_vol); + lm_settings.slider = $(data).element("lightning_setting").numbers("slider"); + lm_settings.resistance_sp_left = Number($(data).attr("lightning_setting").resistance_sp_left); + lm_settings.resistance_sp_right = Number($(data).attr("lightning_setting").resistance_sp_right); + lm_settings.resistance_dp_left = Number($(data).attr("lightning_setting").resistance_dp_left); + lm_settings.resistance_dp_right = Number($(data).attr("lightning_setting").resistance_dp_right); + lm_settings.light = $(data).element("lightning_setting").numbers("light"); + lm_settings.concentration = $(data).element("lightning_setting").number("concentration"); + + await DB.Upsert( + refid, + { + collection: "lightning_settings", + version: version, + }, + { + $set: lm_settings, + } + ); + } + } + + profile.total_pc += 1; + + pcdata.mode = Number($(data).attr().mode); + pcdata.pmode = Number($(data).attr().pmode); + + if (version == 14) { + if (cltype == 0) { + pcdata.sach = Number($(data).attr().achi); + pcdata.sp_opt = Number($(data).attr().opt); + } + else { + pcdata.dach = Number($(data).attr().achi); + pcdata.dp_opt = Number($(data).attr().opt); + pcdata.dp_opt2 = Number($(data).attr().opt2); + } + + pcdata.gno = Number($(data).attr().gno); + pcdata.sflg0 = Number($(data).attr().sflg0); + pcdata.sflg1 = Number($(data).attr().sflg1); + pcdata.sflg2 = Number($(data).attr().sflg2); + pcdata.sdhd = Number($(data).attr().sdhd); + pcdata.ncomb = Number($(data).attr().ncomb); + pcdata.mcomb = Number($(data).attr().mcomb); + + if (!_.isNil($(data).attr().now_g)) { + pcdata.gold_now = Number($(data).attr().now_g); + pcdata.gold_all = Number($(data).attr().all_g); + pcdata.gold_use = Number($(data).attr().use_g); + } + } + else if (version == 15) { + if (cltype == 0) { + pcdata.sach = Number($(data).attr().achi); + pcdata.sp_opt = Number($(data).attr().opt); + } + else { + pcdata.dach = Number($(data).attr().achi); + pcdata.dp_opt = Number($(data).attr().opt); + pcdata.dp_opt2 = Number($(data).attr().opt2); + } + + pcdata.gno = Number($(data).attr().gno); + pcdata.sflg0 = Number($(data).attr().sflg0); + pcdata.sflg1 = Number($(data).attr().sflg1); + pcdata.sflg2 = Number($(data).attr().sflg2); + pcdata.sdhd = Number($(data).attr().sdhd); + pcdata.ncomb = Number($(data).attr().ncomb); + pcdata.mcomb = Number($(data).attr().mcomb); + + if (!_.isNil($(data).element("tutorial"))) { + let clr = Number($(data).attr("tutorial").clr); + await DB.Upsert(refid, + { + collection: "tutorial", + version: version, + tid: Number($(data).attr("tutorial").tid), + }, + { + $set: { + clr + } + } + ); + } + } + else if (version == 16) { + if (cltype == 0) { + pcdata.sach = Number($(data).attr().achi); + pcdata.sp_opt = Number($(data).attr().opt); + } + else { + pcdata.dach = Number($(data).attr().achi); + pcdata.dp_opt = Number($(data).attr().opt); + pcdata.dp_opt2 = Number($(data).attr().opt2); + } + + pcdata.gno = Number($(data).attr().gno); + pcdata.sflg0 = Number($(data).attr().sflg0); + pcdata.sflg1 = Number($(data).attr().sflg1); + pcdata.sflg2 = Number($(data).attr().sflg2); + pcdata.sdhd = Number($(data).attr().sdhd); + pcdata.ncomb = Number($(data).attr().ncomb); + pcdata.mcomb = Number($(data).attr().mcomb); + pcdata.liflen = Number($(data).attr().lift); + pcdata.fcombo[cltype] = Number($(data).attr().fcombo); + + if (!_.isNil($(data).element("tutorial"))) { + let clr = Number($(data).attr("tutorial").clr); + await DB.Upsert(refid, + { + collection: "tutorial", + version: version, + tid: Number($(data).attr("tutorial").tid), + }, + { + $set: { + clr + } + } + ); + } + + // bigint is returning convert error on sendPug so save as string // + if (!_.isNil($(data).element("jewel"))) { + pcdata.jewel_num = String($(data).element("jewel").bigint("jnum")); + pcdata.jewel_bnum = $(data).element("jewel").numbers("bjnum"); + } + } + else if (version == 17) { + if (cltype == 0) { + pcdata.sach = Number($(data).attr().achi); + pcdata.sp_opt = Number($(data).attr().opt); + } + else { + pcdata.dach = Number($(data).attr().achi); + pcdata.dp_opt = Number($(data).attr().opt); + pcdata.dp_opt2 = Number($(data).attr().opt2); + } + + pcdata.gno = Number($(data).attr().gno); + pcdata.timing = Number($(data).attr().timing); + pcdata.sflg0 = Number($(data).attr().sflg0); + pcdata.sflg1 = Number($(data).attr().sflg1); + pcdata.sdhd = Number($(data).attr().sdhd); + pcdata.ncomb = Number($(data).attr().ncomb); + pcdata.mcomb = Number($(data).attr().mcomb); + pcdata.liflen = Number($(data).attr().lift); + pcdata.fcombo[cltype] = Number($(data).attr().fcombo); + + if (!_.isNil($(data).element("tutorial"))) { + let clr = Number($(data).attr("tutorial").clr); + await DB.Upsert(refid, + { + collection: "tutorial", + version: version, + tid: Number($(data).attr("tutorial").tid), + }, + { + $set: { + clr + } + } + ); + } + if (!_.isNil($(data).element("party"))) pcdata.party = $(data).element("party").numbers("fnum"); + } + else if (version == 18) { + if (cltype == 0) { + pcdata.sach = Number($(data).attr().achi); + pcdata.sp_opt = Number($(data).attr().opt); + } + else { + pcdata.dach = Number($(data).attr().achi); + pcdata.dp_opt = Number($(data).attr().opt); + pcdata.dp_opt2 = Number($(data).attr().opt2); + } + + pcdata.gno = Number($(data).attr().gno); + pcdata.timing = Number($(data).attr().timing); + pcdata.sflg0 = Number($(data).attr().sflg0); + pcdata.sflg1 = Number($(data).attr().sflg1); + pcdata.sdhd = Number($(data).attr().sdhd); + pcdata.ncomb = Number($(data).attr().ncomb); + pcdata.mcomb = Number($(data).attr().mcomb); + pcdata.liflen = Number($(data).attr().lift); + pcdata.fcombo[cltype] = Number($(data).attr().fcombo); + + // TODO:: STORY/LEAGUE // + + if (!_.isNil($(data).element("tour"))) { + let event_data = { + cf: $(data).element("tour").buffer("cf").toString("base64"), + pf: $(data).element("tour").buffer("pf").toString("base64"), + mf: $(data).element("tour").buffer("mf").toString("base64"), + pt: Number($(data).attr("tour").pt), + rsv: Number($(data).attr("tour").rsv), + r0: Number($(data).attr("tour").r0), + r1: Number($(data).attr("tour").r1), + r2: Number($(data).attr("tour").r2), + r3: Number($(data).attr("tour").r3), + r4: Number($(data).attr("tour").r4), + r5: Number($(data).attr("tour").r5), + r6: Number($(data).attr("tour").r6), + r7: Number($(data).attr("tour").r7), + } + + await DB.Upsert(refid, + { + collection: "event_1", + version: version, + }, + { + $set: event_data, + } + ); + } + } + else if (version == 19) { + if (cltype == 0) { + pcdata.sach = Number($(data).attr().achi); + pcdata.sp_opt = Number($(data).attr().opt); + } + else { + pcdata.dach = Number($(data).attr().achi); + pcdata.dp_opt = Number($(data).attr().opt); + pcdata.dp_opt2 = Number($(data).attr().opt2); + } + + pcdata.notes = parseFloat($(data).attr().notes); + pcdata.gno = Number($(data).attr().gno); + pcdata.help = Number($(data).attr().help); + pcdata.liflen = Number($(data).attr().lift); + pcdata.fcombo[cltype] = Number($(data).attr().fcombo); + pcdata.pase = Number($(data).attr().pase); + pcdata.sdhd = Number($(data).attr().sdhd); + pcdata.sdtype = Number($(data).attr().sdtype); + pcdata.sflg0 = Number($(data).attr().sflg0); + pcdata.sflg1 = Number($(data).attr().sflg1); + pcdata.timing = Number($(data).attr().timing); + + if (!_.isNil($(data).element("jpoint"))) { + pcdata.jpoint += Number($(data).attr("jpoint").point); + } + + // TODO:: parsing (element type is binary) // + if (hasStepUpData) { + // hand0, hand1, hand2, hand3, hand4 (attr) // + // binary (content) // + if (cltype == 0) { + pcdata.st_sp_ach = Number($(data).attr("step").sp_ach); + pcdata.st_sp_dif = Number($(data).attr("step").sp_dif); + } else { + pcdata.st_dp_ach = Number($(data).attr("step").dp_ach); + pcdata.st_dp_dif = Number($(data).attr("step").dp_dif); + } + } + + if (!_.isNil($(data).element("kingdom"))) { + let event_data = { + level: Number($(data).attr("kingdom").level), + exp: Number($(data).attr("kingdom").exp), + deller: Number($(data).attr("kingdom").deller), + place: Number($(data).attr("kingdom").place), + tower: Number($(data).attr("kingdom").tower), + boss: Number($(data).attr("kingdom").boss), + combo: Number($(data).attr("kingdom").combo), + jewel: Number($(data).attr("kingdom").jewel), + generic: Number($(data).attr("kingdom").generic), + cf: $(data).element("kingdom").buffer("cf").toString("base64"), + qcf: $(data).element("kingdom").buffer("qcf").toString("base64"), + piece: $(data).element("kingdom").buffer("piece").toString("base64"), + } + + await DB.Upsert(refid, + { + collection: "event_1", + version: version, + }, + { + $set: event_data, + } + ); + } + + if (!_.isNil($(data).element("history"))) { + pcdata.type = $(data).element("history").numbers("type"); + pcdata.time = $(data).element("history").numbers("time"); + pcdata.p0 = $(data).element("history").numbers("p0"); + pcdata.p1 = $(data).element("history").numbers("p1"); + pcdata.p2 = $(data).element("history").numbers("p2"); + pcdata.p3 = $(data).element("history").numbers("p3"); + pcdata.p4 = $(data).element("history").numbers("p4"); + } + } + else if (version == 20) { + if (cltype == 0) { + pcdata.sach = Number($(data).attr().achi); + pcdata.sp_opt = Number($(data).attr().opt); + } + else { + pcdata.dach = Number($(data).attr().achi); + pcdata.dp_opt = Number($(data).attr().opt); + pcdata.dp_opt2 = Number($(data).attr().opt2); + } + + pcdata.gno = Number($(data).attr().gno); + pcdata.gpos = Number($(data).attr().gpos); + pcdata.timing = Number($(data).attr().timing); + pcdata.help = Number($(data).attr().help); + pcdata.sdhd = Number($(data).attr().sdhd); + pcdata.sdtype = Number($(data).attr().sdtype); + pcdata.notes = parseFloat($(data).attr().notes); + pcdata.pase = Number($(data).attr().pase); + pcdata.judge = Number($(data).attr().judge); + pcdata.opstyle = Number($(data).attr().opstyle); + pcdata.hispeed = parseFloat($(data).attr().hispeed); + pcdata.judgeAdj = Number($(data).attr().judgeAdj); + pcdata.liflen = Number($(data).attr().lift); + pcdata.fcombo[cltype] = Number($(data).attr().fcombo); + + 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("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 (hasStepUpData) { + if (cltype == 0) { + pcdata.st_sp_ach = Number($(data).attr("step").sp_ach); + pcdata.st_sp_hdpt = Number($(data).attr("step").sp_hdpt); + pcdata.st_sp_level = Number($(data).attr("step").sp_level); + pcdata.st_sp_round = Number($(data).attr("step").sp_round); + pcdata.st_sp_mplay = Number($(data).attr("step").sp_mplay); + + } else { + pcdata.st_dp_ach = Number($(data).attr("step").dp_ach); + pcdata.st_dp_hdpt = Number($(data).attr("step").dp_hdpt); + pcdata.st_dp_level = Number($(data).attr("step").dp_level); + pcdata.st_dp_round = Number($(data).attr("step").dp_round); + pcdata.st_dp_mplay = Number($(data).attr("step").dp_mplay); + } + pcdata.st_review = Number($(data).attr("step").review); + pcdata.st_stamp = $(data).buffer("step").toString("base64"); // TODO:: verify // + pcdata.st_help = $(data).element("step").buffer("help").toString("base64"); + } + + if (!_.isNil($(data).element("achievements"))) { + // TODO:: achi_packflg, achi_packid, achi_playpack // + pcdata.achi_lastweekly = Number($(data).attr("achievements").last_weekly); + pcdata.achi_packcomp = Number($(data).attr("achievements").pack_comp); + pcdata.achi_visitflg = Number($(data).attr("achievements").visit_flg); + pcdata.achi_weeklynum = Number($(data).attr("achievements").weekly_num); + pcdata.achi_trophy = $(data).element("achievements").bigints("trophy").map(String); + } + + // TODO:: fix event saving, these event savings are broken. // + if (!_.isNil($(data).element("link5"))) { + let link5 = await DB.FindOne(refid, { collection: "event_1", version: version, event_name: "link5" }); + let event_data; + + if (_.isNil(link5)) { + event_data = { + qpro: Number($(data).attr("link5").qpro), // add + glass: Number($(data).attr("link5").glass), // add + beautiful: Number($(data).attr("link5").beautiful), + quaver: Number($(data).attr("link5").quaver), + castle: Number($(data).attr("link5").castle), + flip: Number($(data).attr("link5").flip), + titans: Number($(data).attr("link5").titans), + exusia: Number($(data).attr("link5").exusia), + waxing: Number($(data).attr("link5").waxing), + sampling: Number($(data).attr("link5").sampling), + beachside: Number($(data).attr("link5").beachside), + cuvelia: Number($(data).attr("link5").cuvelia), + reunion: Number($(data).attr("link5").reunion), + bad: Number($(data).attr("link5").bad), + turii: Number($(data).attr("link5").turii), + anisakis: Number($(data).attr("link5").anisakis), + second: Number($(data).attr("link5").second), + whydidyou: Number($(data).attr("link5").whydidyou), + china: Number($(data).attr("link5").china), + fallen: Number($(data).attr("link5").fallen), + broken: Number($(data).attr("link5").broken), + summer: Number($(data).attr("link5").summer), + sakura: Number($(data).attr("link5").sakura), + wuv: Number($(data).attr("link5").wuv), + survival: Number($(data).attr("link5").survival), + thunder: Number($(data).attr("link5").thunder), + } + } + else { + event_data = link5; + + event_data.qpro += Number($(data).attr("link5").qpro); + event_data.glass += Number($(data).attr("link5").glass); + event_data.beautiful = Number($(data).attr("link5").beautiful); + event_data.quaver = Number($(data).attr("link5").quaver); + event_data.castle = Number($(data).attr("link5").castle); + event_data.flip = Number($(data).attr("link5").flip); + event_data.titans = Number($(data).attr("link5").titans); + event_data.exusia = Number($(data).attr("link5").exusia); + event_data.waxing = Number($(data).attr("link5").waxing); + event_data.sampling = Number($(data).attr("link5").sampling); + event_data.beachside = Number($(data).attr("link5").beachside); + event_data.cuvelia = Number($(data).attr("link5").cuvelia); + event_data.reunion = Number($(data).attr("link5").reunion); + event_data.bad = Number($(data).attr("link5").bad); + event_data.turii = Number($(data).attr("link5").turii); + event_data.anisakis = Number($(data).attr("link5").anisakis); + event_data.second = Number($(data).attr("link5").second); + event_data.whydidyou = Number($(data).attr("link5").whydidyou); + event_data.china = Number($(data).attr("link5").china); + event_data.fallen = Number($(data).attr("link5").fallen); + event_data.broken = Number($(data).attr("link5").broken); + event_data.summer = Number($(data).attr("link5").summer); + event_data.sakura = Number($(data).attr("link5").sakura); + event_data.wuv = Number($(data).attr("link5").wuv); + event_data.survival = Number($(data).attr("link5").survival); + event_data.thunder = Number($(data).attr("link5").thunder); + } + + await DB.Upsert(refid, + { + collection: "event_1", + version: version, + event_name: "link5", + }, + { + $set: event_data, + } + ); + } + + if (!_.isNil($(data).element("tricolettepark"))) { + let tricolettepark = await DB.FindOne(refid, { collection: "event_1", version: version, event_name: "tricolettepark" }); + let event_data; + + if (_.isNil(tricolettepark)) { + event_data = { + open_music: Number($(data).attr("tricolettepark").open_music), + boss0_damage: Number($(data).attr("tricolettepark").boss0_damage), // add + boss1_damage: Number($(data).attr("tricolettepark").boss1_damage), + boss2_damage: Number($(data).attr("tricolettepark").boss2_damage), + boss3_damage: Number($(data).attr("tricolettepark").boss3_damage), + boss0_stun: Number($(data).attr("tricolettepark").boss0_stun), + boss1_stun: Number($(data).attr("tricolettepark").boss1_stun), + boss2_stun: Number($(data).attr("tricolettepark").boss2_stun), + boss3_stun: Number($(data).attr("tricolettepark").boss3_stun), + union_magic_used: Number($(data).attr("tricolettepark").union_magic_used), + } + } + else { + event_data = tricolettepark; + + event_data.open_music = Number($(data).attr("tricolettepark").open_music), + event_data.boss0_damage += Number($(data).attr("tricolettepark").boss0_damage); + event_data.boss1_damage += Number($(data).attr("tricolettepark").boss1_damage); + event_data.boss2_damage += Number($(data).attr("tricolettepark").boss2_damage); + event_data.boss3_damage += Number($(data).attr("tricolettepark").boss3_damage); + event_data.boss0_stun = Number($(data).attr("tricolettepark").boss0_stun); + event_data.boss1_stun = Number($(data).attr("tricolettepark").boss1_stun); + event_data.boss2_stun = Number($(data).attr("tricolettepark").boss2_stun); + event_data.boss3_stun = Number($(data).attr("tricolettepark").boss3_stun); + event_data.union_magic_used = Number($(data).attr("tricolettepark").union_magic_used); + } + + await DB.Upsert(refid, + { + collection: "event_1", + version: version, + event_name: "tricolettepark", + }, + { + $set: event_data, + } + ); + } + + if (!_.isNil($(data).element("commonboss"))) { + pcdata.deller += Number($(data).attr("commonboss").deller); + pcdata.orb += Number($(data).attr("commonboss").orb); + } + + if (!_.isNil($(data).element("redboss"))) { + let event_data = { + progress: Number($(data).attr("redboss").progress), + crush: Number($(data).attr("redboss").crush), + open: Number($(data).attr("redboss").open), + } + + await DB.Upsert(refid, + { + collection: "event_1", + version: version, + event_name: "redboss", + }, + { + $set: event_data, + } + ); + } + + if (!_.isNil($(data).element("blueboss"))) { + let event_data: blueboss = { + level: Number($(data).attr("blueboss").level), + gauge: Number($(data).attr("blueboss").gauge), + item: Number($(data).attr("blueboss").item), + item_flg: Number($(data).attr("blueboss").item_flg), + row0: Number($(data).attr("blueboss").row0), + row1: Number($(data).attr("blueboss").row1), + column0: Number($(data).attr("blueboss").column0), + column1: Number($(data).attr("blueboss").column1), + general: Number($(data).attr("blueboss").general), + first_flg: Number($(data).element("blueboss").bool("first_flg")), + sector: Number($(data).element("blueboss").bool("sector")), + durability: $(data).element("blueboss").buffer("durability").toString("base64"), + } + + await DB.Upsert(refid, + { + collection: "event_1", + version: version, + event_name: "blueboss", + }, + { + $set: event_data, + } + ); + } + + if (!_.isNil($(data).element("yellowboss"))) { + let yellowboss = await DB.FindOne(refid, { collection: "event_1", version: version, event_name: "yellowboss" }); + let event_data; + + if (_.isNil(yellowboss)) { + event_data = { + level: Number($(data).attr("yellowboss").level), + heroic0: Number($(data).attr("yellowboss").heroic0), + heroic1: Number($(data).attr("yellowboss").heroic1), + critical: Number($(data).attr("yellowboss").critical), + last_select: Number($(data).attr("yellowboss").last_select), + p_attack: $(data).element("yellowboss").numbers("p_attack"), + pbest_attack: $(data).element("yellowboss").numbers("pbest_attack"), + defeat: $(data).element("yellowboss").numbers("defeat"), // <- bools // + first_flg: 0, // <- bool // + } + } else { + event_data = yellowboss; + + event_data.level = Number($(data).attr("yellowboss").level); + event_data.heroic0 = Number($(data).attr("yellowboss").heroic0); + event_data.heroic1 = Number($(data).attr("yellowboss").heroic1); + event_data.critical = Number($(data).attr("yellowboss").critical); + event_data.last_select = Number($(data).attr("yellowboss").last_select); + + let p_attack = $(data).element("yellowboss").numbers("p_attack"); + for (let a = 0; a < 7; a++) { + event_data.p_attack[a] += p_attack[a]; + event_data.pbest_attack[a] = Math.max(event_data.pbest_attack[a], p_attack[a]); + } + } + + + await DB.Upsert(refid, + { + collection: "event_1", + version: version, + event_name: "yellowboss", + }, + { + $set: event_data, + } + ); + } + } + else if (version == 21) { + pcdata.rtype = Number($(data).attr().rtype); + pcdata.sach = Number($(data).attr().s_achi); + pcdata.dach = Number($(data).attr().d_achi); + pcdata.sp_opt = Number($(data).attr().sp_opt); + pcdata.dp_opt = Number($(data).attr().dp_opt); + pcdata.dp_opt2 = Number($(data).attr().dp_opt2); + pcdata.gpos = Number($(data).attr().gpos); + pcdata.s_sorttype = Number($(data).attr().s_sorttype); + pcdata.d_sorttype = Number($(data).attr().d_sorttype); + pcdata.s_disp_judge = Number($(data).attr().s_disp_judge); + pcdata.d_disp_judge = Number($(data).attr().d_disp_judge); + pcdata.s_pace = Number($(data).attr().s_pace); + pcdata.d_pace = Number($(data).attr().d_pace); + pcdata.s_gno = Number($(data).attr().s_gno); + pcdata.d_gno = Number($(data).attr().d_gno); + pcdata.s_gtype = Number($(data).attr().s_gtype); + pcdata.d_gtype = Number($(data).attr().d_gtype); + pcdata.s_sdlen = Number($(data).attr().s_sdlen); + pcdata.d_sdlen = Number($(data).attr().d_sdlen); + pcdata.s_sdtype = Number($(data).attr().s_sdtype); + pcdata.d_sdtype = Number($(data).attr().d_sdtype); + pcdata.s_timing = Number($(data).attr().s_timing); + pcdata.d_timing = Number($(data).attr().d_timing); + pcdata.s_notes = parseFloat($(data).attr().s_notes); + pcdata.d_notes = parseFloat($(data).attr().d_notes); + pcdata.s_judge = Number($(data).attr().s_judge); + pcdata.d_judge = Number($(data).attr().d_judge); + pcdata.s_judgeAdj = Number($(data).attr().s_judgeAdj); + pcdata.d_judgeAdj = Number($(data).attr().d_judgeAdj); + pcdata.s_hispeed = parseFloat($(data).attr().s_hispeed); + pcdata.d_hispeed = parseFloat($(data).attr().d_hispeed); + pcdata.s_opstyle = Number($(data).attr().s_opstyle); + pcdata.d_opstyle = Number($(data).attr().d_opstyle); + + if (!_.isNil($(data).attr().s_lift)) pcdata.s_liflen = Number($(data).attr().s_lift); + if (!_.isNil($(data).attr().d_lift)) pcdata.s_liflen = Number($(data).attr().d_lift); + + 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 = Number($(data).attr("achievements").last_weekly); + pcdata.achi_packcomp = Number($(data).attr("achievements").pack_comp); + pcdata.achi_visitflg = Number($(data).attr("achievements").visit_flg); + pcdata.achi_weeklynum = Number($(data).attr("achievements").weekly_num); + pcdata.achi_trophy = $(data).element("achievements").bigints("trophy").map(String); + } + + if (hasStepUpData) { + pcdata.st_damage = Number($(data).attr("step").damage); + pcdata.st_defeat = Number($(data).attr("step").defeat); + pcdata.st_progress = Number($(data).attr("step").progress); + pcdata.st_round = Number($(data).attr("step").round); + pcdata.st_sp_mission = Number($(data).attr("step").sp_mission); + pcdata.st_dp_mission = Number($(data).attr("step").dp_mission); + pcdata.st_sp_level = Number($(data).attr("step").sp_level); + pcdata.st_dp_level = Number($(data).attr("step").dp_level); + pcdata.st_sp_mplay = Number($(data).attr("step").sp_mplay); + pcdata.st_dp_mplay = Number($(data).attr("step").dp_mplay); + pcdata.st_last_select = Number($(data).attr("step").last_select); + pcdata.st_album = $(data).buffer("step").toString("base64"); // TODO:: verify // + } + + if (!_.isNil($(data).element("deller"))) pcdata.deller += Number($(data).attr("deller").deller); + if (!_.isNil($(data).element("orb_data"))) pcdata.orb += Number($(data).attr("orb_data").add_orb); + + // TODO:: fix event saving, these event savings are broken. // + if (!_.isNil($(data).element("boss1"))) { + let event_data = { + stamina: Number($(data).attr("boss1").stamina), + attack: Number($(data).attr("boss1").attack), + item_flg: Number($(data).attr("boss1").item_flg), + item_flg2: Number($(data).attr("boss1").item_flg2), + pick: Number($(data).attr("boss1").pick), + row0: Number($(data).attr("boss1").row0), + row1: Number($(data).attr("boss1").row1), + row2: Number($(data).attr("boss1").row2), + row3: Number($(data).attr("boss1").row3), + column0: Number($(data).attr("boss1").column0), + column1: Number($(data).attr("boss1").column1), + column2: Number($(data).attr("boss1").column2), + column3: Number($(data).attr("boss1").column3), + map: Number($(data).attr("boss1").map), + job: Number($(data).attr("boss1").job), + general: Number($(data).attr("boss1").general), + battle: Number($(data).attr("boss1").battle), + boss0_n: Number($(data).attr("boss1").boss0_n), + boss0_h: Number($(data).attr("boss1").boss0_h), + boss0_a: Number($(data).attr("boss1").boss0_a), + boss1_n: Number($(data).attr("boss1").boss1_n), + boss1_h: Number($(data).attr("boss1").boss1_h), + boss1_a: Number($(data).attr("boss1").boss1_a), + boss2_n: Number($(data).attr("boss1").boss2_n), + boss2_h: Number($(data).attr("boss1").boss2_h), + boss2_a: Number($(data).attr("boss1").boss2_a), + boss_scene: Number($(data).attr("boss1").boss_scene), + boss0_damage: Number($(data).attr("boss1").boss0_damage), + boss1_damage: Number($(data).attr("boss1").boss1_damage), + boss2_damage: Number($(data).attr("boss1").boss2_damage), + boss3_damage: Number($(data).attr("boss1").boss3_damage), + boss4_damage: Number($(data).attr("boss1").boss4_damage), + boss5_damage: Number($(data).attr("boss1").boss5_damage), + boss6_damage: Number($(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: Number($(data).attr("link5").qpro), // add + glass: Number($(data).attr("link5").glass), // add + beautiful: Number($(data).attr("link5").beautiful), + quaver: Number($(data).attr("link5").quaver), + castle: Number($(data).attr("link5").castle), + flip: Number($(data).attr("link5").flip), + titans: Number($(data).attr("link5").titans), + exusia: Number($(data).attr("link5").exusia), + waxing: Number($(data).attr("link5").waxing), + sampling: Number($(data).attr("link5").sampling), + beachside: Number($(data).attr("link5").beachside), + cuvelia: Number($(data).attr("link5").cuvelia), + reunion: Number($(data).attr("link5").reunion), + bad: Number($(data).attr("link5").bad), + turii: Number($(data).attr("link5").turii), + anisakis: Number($(data).attr("link5").anisakis), + second: Number($(data).attr("link5").second), + whydidyou: Number($(data).attr("link5").whydidyou), + china: Number($(data).attr("link5").china), + fallen: Number($(data).attr("link5").fallen), + broken: Number($(data).attr("link5").broken), + summer: Number($(data).attr("link5").summer), + sakura: Number($(data).attr("link5").sakura), + wuv: Number($(data).attr("link5").wuv), + survival: Number($(data).attr("link5").survival), + thunder: Number($(data).attr("link5").thunder), + } + } + else { + event_data = link5; + + event_data.qpro += Number($(data).attr("link5").qpro); + event_data.glass += Number($(data).attr("link5").glass); + event_data.beautiful = Number($(data).attr("link5").beautiful); + event_data.quaver = Number($(data).attr("link5").quaver); + event_data.castle = Number($(data).attr("link5").castle); + event_data.flip = Number($(data).attr("link5").flip); + event_data.titans = Number($(data).attr("link5").titans); + event_data.exusia = Number($(data).attr("link5").exusia); + event_data.waxing = Number($(data).attr("link5").waxing); + event_data.sampling = Number($(data).attr("link5").sampling); + event_data.beachside = Number($(data).attr("link5").beachside); + event_data.cuvelia = Number($(data).attr("link5").cuvelia); + event_data.reunion = Number($(data).attr("link5").reunion); + event_data.bad = Number($(data).attr("link5").bad); + event_data.turii = Number($(data).attr("link5").turii); + event_data.anisakis = Number($(data).attr("link5").anisakis); + event_data.second = Number($(data).attr("link5").second); + event_data.whydidyou = Number($(data).attr("link5").whydidyou); + event_data.china = Number($(data).attr("link5").china); + event_data.fallen = Number($(data).attr("link5").fallen); + event_data.broken = Number($(data).attr("link5").broken); + event_data.summer = Number($(data).attr("link5").summer); + event_data.sakura = Number($(data).attr("link5").sakura); + event_data.wuv = Number($(data).attr("link5").wuv); + event_data.survival = Number($(data).attr("link5").survival); + event_data.thunder = Number($(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: Number($(data).attr("tricolettepark").open_music), + boss0_damage: Number($(data).attr("tricolettepark").boss0_damage), // add + boss1_damage: Number($(data).attr("tricolettepark").boss1_damage), + boss2_damage: Number($(data).attr("tricolettepark").boss2_damage), + boss3_damage: Number($(data).attr("tricolettepark").boss3_damage), + boss0_stun: Number($(data).attr("tricolettepark").boss0_stun), + boss1_stun: Number($(data).attr("tricolettepark").boss1_stun), + boss2_stun: Number($(data).attr("tricolettepark").boss2_stun), + boss3_stun: Number($(data).attr("tricolettepark").boss3_stun), + union_magic_used: Number($(data).attr("tricolettepark").union_magic_used), + } + } + else { + event_data = tricolettepark; + + event_data.open_music = Number($(data).attr("tricolettepark").open_music), + event_data.boss0_damage += Number($(data).attr("tricolettepark").boss0_damage); + event_data.boss1_damage += Number($(data).attr("tricolettepark").boss1_damage); + event_data.boss2_damage += Number($(data).attr("tricolettepark").boss2_damage); + event_data.boss3_damage += Number($(data).attr("tricolettepark").boss3_damage); + event_data.boss0_stun = Number($(data).attr("tricolettepark").boss0_stun); + event_data.boss1_stun = Number($(data).attr("tricolettepark").boss1_stun); + event_data.boss2_stun = Number($(data).attr("tricolettepark").boss2_stun); + event_data.boss3_stun = Number($(data).attr("tricolettepark").boss3_stun); + event_data.union_magic_used = Number($(data).attr("tricolettepark").union_magic_used); + } + + await DB.Upsert(refid, + { + collection: "event_1", + version: 20, + event_name: "tricolettepark", + }, + { + $set: event_data, + } + ); + } + } + else if (version == 22) { + pcdata.rtype = Number($(data).attr().rtype); + pcdata.sach = Number($(data).attr().s_achi); + pcdata.dach = Number($(data).attr().d_achi); + pcdata.sp_opt = Number($(data).attr().sp_opt); + pcdata.dp_opt = Number($(data).attr().dp_opt); + pcdata.dp_opt2 = Number($(data).attr().dp_opt2); + pcdata.gpos = Number($(data).attr().gpos); + pcdata.s_sorttype = Number($(data).attr().s_sorttype); + pcdata.d_sorttype = Number($(data).attr().d_sorttype); + pcdata.s_disp_judge = Number($(data).attr().s_disp_judge); + pcdata.d_disp_judge = Number($(data).attr().d_disp_judge); + pcdata.s_pace = Number($(data).attr().s_pace); + pcdata.d_pace = Number($(data).attr().d_pace); + pcdata.s_gno = Number($(data).attr().s_gno); + pcdata.d_gno = Number($(data).attr().d_gno); + pcdata.s_gtype = Number($(data).attr().s_gtype); + pcdata.d_gtype = Number($(data).attr().d_gtype); + pcdata.s_sdlen = Number($(data).attr().s_sdlen); + pcdata.d_sdlen = Number($(data).attr().d_sdlen); + pcdata.s_sdtype = Number($(data).attr().s_sdtype); + pcdata.d_sdtype = Number($(data).attr().d_sdtype); + pcdata.s_timing = Number($(data).attr().s_timing); + pcdata.d_timing = Number($(data).attr().d_timing); + pcdata.s_notes = parseFloat($(data).attr().s_notes); + pcdata.d_notes = parseFloat($(data).attr().d_notes); + pcdata.s_judge = Number($(data).attr().s_judge); + pcdata.d_judge = Number($(data).attr().d_judge); + pcdata.s_judgeAdj = Number($(data).attr().s_judgeAdj); + pcdata.d_judgeAdj = Number($(data).attr().d_judgeAdj); + pcdata.s_hispeed = parseFloat($(data).attr().s_hispeed); + pcdata.d_hispeed = parseFloat($(data).attr().d_hispeed); + pcdata.s_opstyle = Number($(data).attr().s_opstyle); + pcdata.d_opstyle = Number($(data).attr().d_opstyle); + pcdata.s_exscore = Number($(data).attr().s_exscore); + pcdata.d_exscore = Number($(data).attr().d_exscore); + pcdata.s_largejudge = Number($(data).attr().s_largejudge); + pcdata.d_largejudge = Number($(data).attr().d_largejudge); + + if (!_.isNil($(data).attr().s_lift)) pcdata.s_liflen = Number($(data).attr().s_lift); + if (!_.isNil($(data).attr().d_lift)) pcdata.s_liflen = Number($(data).attr().d_lift); + + 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("qpro_equip"))) { + custom.qpro_head = Number($(data).attr("qpro_equip").head); + custom.qpro_hair = Number($(data).attr("qpro_equip").hair); + custom.qpro_face = Number($(data).attr("qpro_equip").face); + custom.qpro_body = Number($(data).attr("qpro_equip").body); + custom.qpro_hand = Number($(data).attr("qpro_equip").hand); + } + + if (!_.isNil($(data).element("achievements"))) { + // TODO:: achi_packflg, achi_packid, achi_playpack // + pcdata.achi_lastweekly = Number($(data).attr("achievements").last_weekly); + pcdata.achi_packcomp = Number($(data).attr("achievements").pack_comp); + pcdata.achi_visitflg = Number($(data).attr("achievements").visit_flg); + pcdata.achi_weeklynum = Number($(data).attr("achievements").weekly_num); + pcdata.achi_trophy = $(data).element("achievements").bigints("trophy").map(String); + } + + if (hasStepUpData) { + pcdata.st_damage = Number($(data).attr("step").damage); + pcdata.st_defeat = Number($(data).attr("step").defeat); + pcdata.st_progress = Number($(data).attr("step").progress); + pcdata.st_is_secret = Number($(data).attr("step").is_secret); + pcdata.st_sp_mission = Number($(data).attr("step").sp_mission); + pcdata.st_dp_mission = Number($(data).attr("step").dp_mission); + pcdata.st_sp_level = Number($(data).attr("step").sp_level); + pcdata.st_dp_level = Number($(data).attr("step").dp_level); + pcdata.st_sp_mplay = Number($(data).attr("step").sp_mplay); + pcdata.st_dp_mplay = Number($(data).attr("step").dp_mplay); + pcdata.st_age_list = Number($(data).attr("step").age_list); + pcdata.st_album = $(data).buffer("step").toString("base64"); // TODO:: verify // + pcdata.st_is_present = Number($(data).attr("step").is_present); + pcdata.st_is_future = Number($(data).attr("step").is_future); + } + + if (!_.isNil($(data).element("deller"))) pcdata.deller += Number($(data).attr("deller").deller); + if (!_.isNil($(data).element("orb_data"))) pcdata.orb += Number($(data).attr("orb_data").add_orb); + + // TODO:: fix event saving, these event savings are broken. // + if (!_.isNil($(data).element("chrono_diver"))) { + let event_data = { + play_count: Number($(data).attr("chrono_diver").play_count), + present_unlock: Number($(data).attr("chrono_diver").present_unlock), + future_unlock: Number($(data).attr("chrono_diver").future_unlock), + success_count_0_n: Number($(data).attr("chrono_diver").success_count_0_n), + success_count_0_h: Number($(data).attr("chrono_diver").success_count_0_h), + success_count_0_a: Number($(data).attr("chrono_diver").success_count_0_a), + success_count_1_n: Number($(data).attr("chrono_diver").success_count_1_n), + success_count_1_h: Number($(data).attr("chrono_diver").success_count_1_h), + success_count_1_a: Number($(data).attr("chrono_diver").success_count_1_a), + success_count_2_n: Number($(data).attr("chrono_diver").success_count_2_n), + success_count_2_h: Number($(data).attr("chrono_diver").success_count_2_h), + success_count_2_a: Number($(data).attr("chrono_diver").success_count_2_a), + success_count_3_n: Number($(data).attr("chrono_diver").success_count_3_n), + success_count_3_h: Number($(data).attr("chrono_diver").success_count_3_h), + success_count_3_a: Number($(data).attr("chrono_diver").success_count_3_a), + story_list: Number($(data).attr("chrono_diver").story_list) + }; + + await DB.Upsert(refid, + { + collection: "event_1", + version: version, + event_name: "chrono_diver", + }, + { + $set: event_data, + } + ); + } + + if (!_.isNil($(data).element("qpronicle_chord"))) { + let event_data = { + is_first_select_map: Number($(data).attr("qpronicle_chord").is_first_select_map), + last_select_map: Number($(data).attr("qpronicle_chord").last_select_map), + story_view_list: Number($(data).attr("qpronicle_chord").story_view_list), + is_use_login_bonus: Number($(data).attr("qpronicle_chord").is_use_login_bonus), + patona_leader: Number($(data).attr("qpronicle_chord").patona_leader), + patona_sub_1: Number($(data).attr("qpronicle_chord").patona_sub_1), + patona_sub_2: Number($(data).attr("qpronicle_chord").patona_sub_2), + rare_enemy_damage1: Number($(data).attr("qpronicle_chord").rare_enemy_damage1), + rare_enemy_damage2: Number($(data).attr("qpronicle_chord").rare_enemy_damage2), + rare_enemy_damage3: Number($(data).attr("qpronicle_chord").rare_enemy_damage3), + rare_enemy_damage4: Number($(data).attr("qpronicle_chord").rare_enemy_damage4), + rare_enemy_damage5: Number($(data).attr("qpronicle_chord").rare_enemy_damage5), + }; + + await DB.Upsert(refid, + { + collection: "event_1", + version: version, + event_name: "qpronicle_chord", + }, + { + $set: event_data, + } + ); + + // TODO:: verify // + $(data).element("qpronicle_chord").elements("patona_data").forEach((res) => { + DB.Upsert(refid, + { + collection: "event_1_sub", + version: version, + event_name: "qpronicle_chord", + patona_id: Number(res.attr().patona_id), + }, + { + $set: { + level: Number(res.attr().level), + exp: Number(res.attr().exp), + affection: Number(res.attr().affection), + dissatisfaction: Number(res.attr().dissatisfaction), + } + } + ); + }); + } + + if (!_.isNil($(data).element("qpronicle_phase3"))) { + let event_data = { + stairs_num: Number($(data).attr("qpronicle_phase3").stairs_num), + flame_list: Number($(data).attr("qpronicle_phase3").flame_list), + lane_list: Number($(data).attr("qpronicle_phase3").lane_list), + map0_select: Number($(data).attr("qpronicle_phase3").map0_select), + map1_select: Number($(data).attr("qpronicle_phase3").map1_select), + map2_select: Number($(data).attr("qpronicle_phase3").map2_select), + map3_select: Number($(data).attr("qpronicle_phase3").map3_select), + map4_select: Number($(data).attr("qpronicle_phase3").map4_select), + map5_select: Number($(data).attr("qpronicle_phase3").map5_select), + map6_select: Number($(data).attr("qpronicle_phase3").map6_select), + }; + + await DB.Upsert(refid, + { + collection: "event_1", + version: version, + event_name: "qpronicle_phase3", + }, + { + $set: event_data, + } + ); + } + + if (!_.isNil($(data).element("boss_event_3"))) { + let boss_event_3 = await DB.FindOne(refid, { collection: "event_1", version: version, event_name: "boss_event_3" }); + let event_data = null; + let point = Number($(data).attr("boss_event_3").add_bonus_point); + + if (_.isNil(boss_event_3)) { + event_data = { + point: point, + } + } + else { + event_data = boss_event_3; + event_data.point += point; + } + + await DB.Upsert(refid, + { + collection: "event_1", + version: version, + event_name: "boss_event_3", + }, + { + $set: event_data, + } + ); + } + + // chaser // + } + else if (version == 23) { + pcdata.rtype = Number($(data).attr().rtype); + pcdata.sach = Number($(data).attr().s_achi); + pcdata.dach = Number($(data).attr().d_achi); + pcdata.sp_opt = Number($(data).attr().sp_opt); + pcdata.dp_opt = Number($(data).attr().dp_opt); + pcdata.dp_opt2 = Number($(data).attr().dp_opt2); + pcdata.gpos = Number($(data).attr().gpos); + pcdata.s_sorttype = Number($(data).attr().s_sorttype); + pcdata.d_sorttype = Number($(data).attr().d_sorttype); + pcdata.s_disp_judge = Number($(data).attr().s_disp_judge); + pcdata.d_disp_judge = Number($(data).attr().d_disp_judge); + pcdata.s_pace = Number($(data).attr().s_pace); + pcdata.d_pace = Number($(data).attr().d_pace); + pcdata.s_gno = Number($(data).attr().s_gno); + pcdata.d_gno = Number($(data).attr().d_gno); + pcdata.s_gtype = Number($(data).attr().s_gtype); + pcdata.d_gtype = Number($(data).attr().d_gtype); + pcdata.s_sdlen = Number($(data).attr().s_sdlen); + pcdata.d_sdlen = Number($(data).attr().d_sdlen); + pcdata.s_sdtype = Number($(data).attr().s_sdtype); + pcdata.d_sdtype = Number($(data).attr().d_sdtype); + pcdata.s_notes = parseFloat($(data).attr().s_notes); + pcdata.d_notes = parseFloat($(data).attr().d_notes); + pcdata.s_timing = Number($(data).attr().s_timing); + pcdata.d_timing = Number($(data).attr().d_timing); + pcdata.s_judge = Number($(data).attr().s_judge); + pcdata.d_judge = Number($(data).attr().d_judge); + pcdata.s_judgeAdj = Number($(data).attr().s_judgeAdj); + pcdata.d_judgeAdj = Number($(data).attr().d_judgeAdj); + pcdata.s_hispeed = parseFloat($(data).attr().s_hispeed); + pcdata.d_hispeed = parseFloat($(data).attr().d_hispeed); + pcdata.s_opstyle = Number($(data).attr().s_opstyle); + pcdata.d_opstyle = Number($(data).attr().d_opstyle); + pcdata.s_exscore = Number($(data).attr().s_exscore); + pcdata.d_exscore = Number($(data).attr().d_exscore); + pcdata.s_largejudge = Number($(data).attr().s_largejudge); + pcdata.d_largejudge = Number($(data).attr().d_largejudge); + + if (!_.isNil($(data).attr().s_lift)) pcdata.s_liflen = Number($(data).attr().s_lift); + if (!_.isNil($(data).attr().d_lift)) pcdata.s_liflen = Number($(data).attr().d_lift); + + 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"); + } + + let extra_favorite = $(data).elements("extra_favorite"); + if (extra_favorite.length > 0) { + extra_favorite.forEach((res) => { + DB.Upsert(refid, + { + collection: "extra_favorite", + version: version, + folder_id: Number(res.attr().folder_id), + }, + { + $set: { + sp_mlist: res.buffer("sp_mlist").toString("base64"), + sp_clist: res.buffer("sp_clist").toString("base64"), + dp_mlist: res.buffer("dp_mlist").toString("base64"), + dp_clist: res.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("qpro_equip"))) { + custom.qpro_head = Number($(data).attr("qpro_equip").head); + custom.qpro_hair = Number($(data).attr("qpro_equip").hair); + custom.qpro_face = Number($(data).attr("qpro_equip").face); + custom.qpro_body = Number($(data).attr("qpro_equip").body); + custom.qpro_hand = Number($(data).attr("qpro_equip").hand); + } + + if (!_.isNil($(data).element("achievements"))) { + // TODO:: achi_packflg, achi_packid, achi_playpack // + pcdata.achi_lastweekly = Number($(data).attr("achievements").last_weekly); + pcdata.achi_packcomp = Number($(data).attr("achievements").pack_comp); + pcdata.achi_visitflg = Number($(data).attr("achievements").visit_flg); + pcdata.achi_weeklynum = Number($(data).attr("achievements").weekly_num); + pcdata.achi_trophy = $(data).element("achievements").bigints("trophy").map(String); + } + + if (hasStepUpData) { + pcdata.st_friendship = Number($(data).attr("step").friendship); + pcdata.st_progress = Number($(data).attr("step").progress); + pcdata.st_station_clear = Number($(data).attr("step").station_clear); + pcdata.st_station_play = Number($(data).attr("step").station_play); + pcdata.st_sp_mission = Number($(data).attr("step").sp_mission); + pcdata.st_dp_mission = Number($(data).attr("step").dp_mission); + pcdata.st_sp_level = Number($(data).attr("step").sp_level); + pcdata.st_dp_level = Number($(data).attr("step").dp_level); + pcdata.st_sp_mplay = Number($(data).attr("step").sp_mplay); + pcdata.st_dp_mplay = Number($(data).attr("step").dp_mplay); + pcdata.st_mission_gauge = Number($(data).attr("step").mission_gauge); + pcdata.st_tokimeki = $(data).buffer("step").toString("base64"); // TODO:: verify // + } + + if (!_.isNil($(data).element("deller"))) pcdata.deller += Number($(data).attr("deller").deller); + if (!_.isNil($(data).element("orb_data"))) pcdata.orb += Number($(data).attr("orb_data").add_orb); + + // TODO:: fix event saving, these event savings are broken. // + if (!_.isNil($(data).element("event1_data"))) { + let event_data = { + point_map_0: Number($(data).attr("event1_data").point_map_0), + point_map_1: Number($(data).attr("event1_data").point_map_1), + point_map_2: Number($(data).attr("event1_data").point_map_2), + point_map_3: Number($(data).attr("event1_data").point_map_3), + point_map_4: Number($(data).attr("event1_data").point_map_4), + last_map: Number($(data).attr("event1_data").last_map), + hold_point: Number($(data).attr("event1_data").hold_point), + rank_point: Number($(data).attr("event1_data").rank_point), + tips_list: Number($(data).attr("event1_data").tips_list), + }; + + await DB.Upsert(refid, + { + collection: "event_1", + version: version, + event_name: "event1_data", + }, + { + $set: event_data, + } + ); + } + + if (!_.isNil($(data).element("event2_data"))) { + let event_data = { + now_stay_area: Number($(data).attr("event2_data").now_stay_area), + now_stay_note_grade: Number($(data).attr("event2_data").now_stay_note_grade), + play_num: Number($(data).attr("event2_data").play_num), + stop_area_time: Number($(data).attr("event2_data").stop_area_time), + }; + + await DB.Upsert(refid, + { + collection: "event_1", + version: version, + event_name: "event2_data", + }, + { + $set: event_data, + } + ); + + // TODO:: verify // + $(data).element("event2_data").elements("event2_area_data").forEach((res) => { + DB.Upsert(refid, + { + collection: "event_1_sub", + version: version, + event_name: "event2_data", + area_no: Number(res.attr().area_no), + }, + { + $set: { + area_play_num: Number(res.attr().area_play_num), + normal_point: Number(res.attr().normal_point), + hyper_point: Number(res.attr().hyper_point), + another_point: Number(res.attr().another_point), + } + } + ); + }); + } + } + else if (version == 24) { + pcdata.sach = Number($(data).attr().s_achi); + pcdata.dach = Number($(data).attr().d_achi); + + pcdata.d_disp_judge = Number($(data).attr().d_disp_judge); + pcdata.d_exscore = Number($(data).attr().d_exscore); + pcdata.d_gno = Number($(data).attr().d_gno); + pcdata.d_graph_score = Number($(data).attr().d_graph_score); + pcdata.d_gtype = Number($(data).attr().d_gtype); + pcdata.d_hispeed = parseFloat($(data).attr().d_hispeed); + pcdata.d_judge = Number($(data).attr().d_judge); + pcdata.d_judgeAdj = Number($(data).attr().d_judgeAdj); + pcdata.d_notes = parseFloat($(data).attr().d_notes); + pcdata.d_opstyle = Number($(data).attr().d_opstyle); + pcdata.d_pace = Number($(data).attr().d_pace); + pcdata.d_sdlen = Number($(data).attr().d_sdlen); + pcdata.d_sdtype = Number($(data).attr().d_sdtype); + pcdata.d_sorttype = Number($(data).attr().d_sorttype); + pcdata.d_timing = Number($(data).attr().d_timing); + pcdata.dp_opt = Number($(data).attr().dp_opt); + pcdata.dp_opt2 = Number($(data).attr().dp_opt2); + pcdata.gpos = Number($(data).attr().gpos); + pcdata.mode = Number($(data).attr().mode); + pcdata.pmode = Number($(data).attr().pmode); + pcdata.rtype = Number($(data).attr().rtype); + pcdata.s_disp_judge = Number($(data).attr().s_disp_judge); + pcdata.s_exscore = Number($(data).attr().s_exscore); + pcdata.s_gno = Number($(data).attr().s_gno); + pcdata.s_graph_score = Number($(data).attr().s_graph_score); + pcdata.s_gtype = Number($(data).attr().s_gtype); + pcdata.s_hispeed = parseFloat($(data).attr().s_hispeed); + pcdata.s_judge = Number($(data).attr().s_judge); + pcdata.s_judgeAdj = Number($(data).attr().s_judgeAdj); + pcdata.s_notes = parseFloat($(data).attr().s_notes); + pcdata.s_opstyle = Number($(data).attr().s_opstyle); + pcdata.s_pace = Number($(data).attr().s_pace); + pcdata.s_sdlen = Number($(data).attr().s_sdlen); + pcdata.s_sdtype = Number($(data).attr().s_sdtype); + pcdata.s_sorttype = Number($(data).attr().s_sorttype); + pcdata.s_timing = Number($(data).attr().s_timing); + pcdata.sp_opt = Number($(data).attr().sp_opt); + + if (cltype == 0) { + pcdata.s_liflen = Number($(data).attr().s_lift); + } else { + pcdata.d_liflen = Number($(data).attr().d_lift); + } + + 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"); + } + + let extra_favorite = $(data).elements("extra_favorite"); + if (extra_favorite.length > 0) { + extra_favorite.forEach((res) => { + DB.Upsert(refid, + { + collection: "extra_favorite", + version: version, + folder_id: Number(res.attr().folder_id), + }, + { + $set: { + sp_mlist: res.buffer("sp_mlist").toString("base64"), + sp_clist: res.buffer("sp_clist").toString("base64"), + dp_mlist: res.buffer("dp_mlist").toString("base64"), + dp_clist: res.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("qpro_equip"))) { + custom.qpro_head = Number($(data).attr("qpro_equip").head); + custom.qpro_hair = Number($(data).attr("qpro_equip").hair); + custom.qpro_face = Number($(data).attr("qpro_equip").face); + custom.qpro_body = Number($(data).attr("qpro_equip").body); + custom.qpro_hand = Number($(data).attr("qpro_equip").hand); + } + + if (hasStepUpData) { + pcdata.st_enemy_damage = Number($(data).attr("step").enemy_damage); + pcdata.st_progress = Number($(data).attr("step").progress); + pcdata.st_enemy_defeat_flg = Number($(data).attr("step").enemy_defeat_flg); + pcdata.st_sp_level = Number($(data).attr("step").sp_level); + pcdata.st_dp_level = Number($(data).attr("step").dp_level); + pcdata.st_sp_mplay = Number($(data).attr("step").sp_mplay); + pcdata.st_dp_mplay = Number($(data).attr("step").dp_mplay); + } + + if (!_.isNil($(data).element("achievements"))) { + // TODO:: achi_packflg, achi_packid, achi_playpack // + pcdata.achi_lastweekly = Number($(data).attr("achievements").last_weekly); + pcdata.achi_packcomp = Number($(data).attr("achievements").pack_comp); + pcdata.achi_visitflg = Number($(data).attr("achievements").visit_flg); + pcdata.achi_weeklynum = Number($(data).attr("achievements").weekly_num); + pcdata.achi_trophy = $(data).element("achievements").bigints("trophy").map(String); + } + + if ($(data).attr("ninja_rank.1").style == "1") { + pcdata.dr_sprank = $(data).element("ninja_rank").numbers("rank"); + pcdata.dr_sppoint = $(data).element("ninja_rank").numbers("point"); + pcdata.dr_dprank = $(data).element("ninja_rank.1").numbers("rank"); + pcdata.dr_dppoint = $(data).element("ninja_rank.1").numbers("point"); + } else if ($(data).attr("ninja_rank").style == "0") { + pcdata.dr_sprank = $(data).element("ninja_rank").numbers("rank"); + pcdata.dr_sppoint = $(data).element("ninja_rank").numbers("point"); + } else if ($(data).attr("ninja_rank").style == "1") { + pcdata.dr_dprank = $(data).element("ninja_rank").numbers("rank"); + pcdata.dr_dppoint = $(data).element("ninja_rank").numbers("point"); + } + + // TODO:: fix event saving, these event savings hasn't fully tested // + if (hasEventData) { + let event_data = { + last_select_map: Number($(data).attr("event1").last_select_map), + hold_rice: Number($(data).attr("event1").hold_rice), + tax_rice: Number($(data).attr("event1").tax_rice), + tipls_read: Number($(data).attr("event1").tipls_read), + play_gift: Number($(data).attr("event1").play_gift) + }; + + await DB.Upsert(refid, + { + collection: "event_1", + version: version, + event_name: "event1_data", + }, + { + $set: event_data, + } + ); + + $(data).element("event1").elements("map_data").forEach((res) => { + DB.Upsert(refid, + { + collection: "event_1_sub", + version: version, + event_name: "event1_data", + map_id: Number(res.attr().map_id), + }, + { + $set: { + play_num: Number(res.attr().play_num), + progress: Number(res.attr().progress), + battle_point: Number(res.attr().battle_point), + rice_point: Number(res.attr().rice_point), + is_clear: res.bool("is_clear"), + ninjyutsu: res.buffer("ninjyutsu").toString("base64"), + card_damage: res.buffer("card_damage").toString("base64"), + card_clear: res.buffer("card_clear").toString("base64"), + } + } + ); + }); + } + + if (hasEvent2Data) { + let event_data = { + play_num: Number($(data).attr("event2").play_num), + chakra_point: Number($(data).attr("event2").chakra_point), + last_select_ryuha: Number($(data).attr("event2").last_select_ryuha), + last_select_dojo: $(data).element("event2").buffer("last_select_dojo").toString("base64"), + enemy_damage: $(data).element("event2").buffer("enemy_damage").toString("base64"), + }; + + await DB.Upsert(refid, + { + collection: "event_1", + version: version, + event_name: "event2_data", + }, + { + $set: event_data, + } + ); + } + // onemore // + + if (!_.isNil($(data).element("deller"))) pcdata.deller += Number($(data).attr("deller").deller); + if (!_.isNil($(data).element("orb_data"))) pcdata.orb += Number($(data).attr("orb_data").add_orb); + } + else if (version == 25) { + pcdata.sach = Number($(data).attr().s_achi); + pcdata.dach = Number($(data).attr().d_achi); + + pcdata.d_auto_scrach = Number($(data).attr().d_auto_scrach); + pcdata.d_camera_layout = Number($(data).attr().d_camera_layout); + pcdata.d_disp_judge = Number($(data).attr().d_disp_judge); + pcdata.d_exscore = Number($(data).attr().d_exscore); + pcdata.d_gauge_disp = Number($(data).attr().d_gauge_disp); + pcdata.d_gno = Number($(data).attr().d_gno); + pcdata.d_graph_score = Number($(data).attr().d_graph_score); + pcdata.d_gtype = Number($(data).attr().d_gtype); + pcdata.d_hispeed = parseFloat($(data).attr().d_hispeed); + pcdata.d_judge = Number($(data).attr().d_judge); + pcdata.d_judgeAdj = Number($(data).attr().d_judgeAdj); + pcdata.d_lane_brignt = Number($(data).attr().d_lane_brignt); + pcdata.d_notes = parseFloat($(data).attr().d_notes); + pcdata.d_opstyle = Number($(data).attr().d_opstyle); + pcdata.d_pace = Number($(data).attr().d_pace); + pcdata.d_sdlen = Number($(data).attr().d_sdlen); + pcdata.d_sdtype = Number($(data).attr().d_sdtype); + pcdata.d_sorttype = Number($(data).attr().d_sorttype); + pcdata.d_timing = Number($(data).attr().d_timing); + pcdata.dp_opt = Number($(data).attr().dp_opt); + pcdata.dp_opt2 = Number($(data).attr().dp_opt2); + pcdata.gpos = Number($(data).attr().gpos); + pcdata.mode = Number($(data).attr().mode); + pcdata.pmode = Number($(data).attr().pmode); + pcdata.rtype = Number($(data).attr().rtype); + pcdata.s_auto_scrach = Number($(data).attr().s_auto_scrach); + pcdata.s_camera_layout = Number($(data).attr().s_camera_layout); + pcdata.s_disp_judge = Number($(data).attr().s_disp_judge); + pcdata.s_exscore = Number($(data).attr().s_exscore); + pcdata.s_gauge_disp = Number($(data).attr().s_gauge_disp); + pcdata.s_gno = Number($(data).attr().s_gno); + pcdata.s_graph_score = Number($(data).attr().s_graph_score); + pcdata.s_gtype = Number($(data).attr().s_gtype); + pcdata.s_hispeed = parseFloat($(data).attr().s_hispeed); + pcdata.s_judge = Number($(data).attr().s_judge); + pcdata.s_judgeAdj = Number($(data).attr().s_judgeAdj); + pcdata.s_lane_brignt = Number($(data).attr().s_lane_brignt); + pcdata.s_notes = parseFloat($(data).attr().s_notes); + pcdata.s_opstyle = Number($(data).attr().s_opstyle); + pcdata.s_pace = Number($(data).attr().s_pace); + pcdata.s_sdlen = Number($(data).attr().s_sdlen); + pcdata.s_sdtype = Number($(data).attr().s_sdtype); + pcdata.s_sorttype = Number($(data).attr().s_sorttype); + pcdata.s_timing = Number($(data).attr().s_timing); + pcdata.sp_opt = Number($(data).attr().sp_opt); + + if (cltype == 0) { + pcdata.s_liflen = Number($(data).attr().s_lift); + } else { + pcdata.d_liflen = Number($(data).attr().d_lift); + } + + 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"); + } + + let extra_favorite = $(data).elements("extra_favorite"); + if (extra_favorite.length > 0) { + extra_favorite.forEach((res) => { + DB.Upsert(refid, + { + collection: "extra_favorite", + version: version, + folder_id: Number(res.attr().folder_id), + }, + { + $set: { + sp_mlist: res.buffer("sp_mlist").toString("base64"), + sp_clist: res.buffer("sp_clist").toString("base64"), + dp_mlist: res.buffer("dp_mlist").toString("base64"), + dp_clist: res.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("qpro_equip"))) { + custom.qpro_head = Number($(data).attr("qpro_equip").head); + custom.qpro_hair = Number($(data).attr("qpro_equip").hair); + custom.qpro_face = Number($(data).attr("qpro_equip").face); + custom.qpro_body = Number($(data).attr("qpro_equip").body); + custom.qpro_hand = Number($(data).attr("qpro_equip").hand); + } + + if (hasStepUpData) { + pcdata.st_enemy_damage = Number($(data).attr("step").enemy_damage); + pcdata.st_progress = Number($(data).attr("step").progress); + pcdata.st_point = Number($(data).attr("step").point); + pcdata.st_enemy_defeat_flg = Number($(data).attr("step").enemy_defeat_flg); + pcdata.st_sp_level = Number($(data).attr("step").sp_level); + pcdata.st_dp_level = Number($(data).attr("step").dp_level); + pcdata.st_sp_mplay = Number($(data).attr("step").sp_mplay); + pcdata.st_dp_mplay = Number($(data).attr("step").dp_mplay); + } + + if (!_.isNil($(data).element("achievements"))) { + // TODO:: achi_packflg, achi_packid, achi_playpack // + pcdata.achi_lastweekly = Number($(data).attr("achievements").last_weekly); + pcdata.achi_packcomp = Number($(data).attr("achievements").pack_comp); + pcdata.achi_visitflg = Number($(data).attr("achievements").visit_flg); + pcdata.achi_weeklynum = Number($(data).attr("achievements").weekly_num); + pcdata.achi_trophy = $(data).element("achievements").bigints("trophy").map(String); + } + + if ($(data).attr("dj_rank.1").style == "1") { + pcdata.dr_sprank = $(data).element("dj_rank").numbers("rank"); + pcdata.dr_sppoint = $(data).element("dj_rank").numbers("point"); + pcdata.dr_dprank = $(data).element("dj_rank.1").numbers("rank"); + pcdata.dr_dppoint = $(data).element("dj_rank.1").numbers("point"); + } else if ($(data).attr("dj_rank").style == "0") { + pcdata.dr_sprank = $(data).element("dj_rank").numbers("rank"); + pcdata.dr_sppoint = $(data).element("dj_rank").numbers("point"); + } else if ($(data).attr("dj_rank").style == "1") { + pcdata.dr_dprank = $(data).element("dj_rank").numbers("rank"); + pcdata.dr_dppoint = $(data).element("dj_rank").numbers("point"); + } + + if (!_.isNil($(data).element("deller"))) pcdata.deller += Number($(data).attr("deller").deller); + if (!_.isNil($(data).element("orb_data"))) pcdata.orb += Number($(data).attr("orb_data").add_orb); + + // TODO:: fix event saving, these event savings hasn't fully tested // + if (!_.isNil($(data).element("event1"))) { + let event_data = { + tuneup_point: Number($(data).attr("event1").tuneup_point), + body_parts_list: Number($(data).attr("event1").body_parts_list), + engine_parts_list: Number($(data).attr("event1").engine_parts_list), + tire_parts_list: Number($(data).attr("event1").tire_parts_list), + body_equip_parts: Number($(data).attr("event1").body_equip_parts), + engine_equip_parts: Number($(data).attr("event1").engine_equip_parts), + tire_equip_parts: Number($(data).attr("event1").tire_equip_parts), + play_gift: Number($(data).attr("event1").play_gift) + }; + + await DB.Upsert(refid, + { + collection: "event_1", + version: version, + event_name: "event1_data", + }, + { + $set: event_data, + } + ); + + $(data).element("event1").elements("map_data").forEach((res) => { + DB.Upsert(refid, + { + collection: "event_1_sub", + version: version, + event_name: "event1_data", + map_id: Number(res.attr().map_id), + }, + { + $set: { + play_num: Number(res.attr().play_num), + progress: Number(res.attr().progress), + boost_fuel: Number(res.attr().boost_fuel), + rare1_appearance: Number(res.attr().rare1_appearance), + rare2_appearance: Number(res.attr().rare2_appearance), + rare3_appearance: Number(res.attr().rare3_appearance), + rare4_appearance: Number(res.attr().rare4_appearance), + rare5_appearance: Number(res.attr().rare5_appearance), + rare6_appearance: Number(res.attr().rare6_appearance), + rare_defeat_list: Number(res.attr().rare_defeat_list), + is_clear: res.bool("is_clear"), + } + } + ); + }); + } + } + else if (version == 26) { + pcdata.rtype = Number($(data).attr().rtype); + pcdata.sach = Number($(data).attr().s_achi); + pcdata.dach = Number($(data).attr().d_achi); + pcdata.sp_opt = Number($(data).attr().sp_opt); + pcdata.dp_opt = Number($(data).attr().dp_opt); + pcdata.dp_opt2 = Number($(data).attr().dp_opt2); + pcdata.gpos = Number($(data).attr().gpos); + pcdata.s_sorttype = Number($(data).attr().s_sorttype); + pcdata.d_sorttype = Number($(data).attr().d_sorttype); + pcdata.s_disp_judge = Number($(data).attr().s_disp_judge); + pcdata.d_disp_judge = Number($(data).attr().d_disp_judge); + pcdata.s_pace = Number($(data).attr().s_pace); + pcdata.d_pace = Number($(data).attr().d_pace); + pcdata.s_gno = Number($(data).attr().s_gno); + pcdata.d_gno = Number($(data).attr().d_gno); + pcdata.s_gtype = Number($(data).attr().s_gtype); + pcdata.d_gtype = Number($(data).attr().d_gtype); + pcdata.s_sdlen = Number($(data).attr().s_sdlen); + pcdata.d_sdlen = Number($(data).attr().d_sdlen); + pcdata.s_sdtype = Number($(data).attr().s_sdtype); + pcdata.d_sdtype = Number($(data).attr().d_sdtype); + pcdata.s_timing = Number($(data).attr().s_timing); + pcdata.d_timing = Number($(data).attr().d_timing); + pcdata.s_notes = parseFloat($(data).attr().s_notes); + pcdata.d_notes = parseFloat($(data).attr().d_notes); + pcdata.s_judge = Number($(data).attr().s_judge); + pcdata.d_judge = Number($(data).attr().d_judge); + pcdata.s_judgeAdj = Number($(data).attr().s_judgeAdj); + pcdata.d_judgeAdj = Number($(data).attr().d_judgeAdj); + pcdata.s_hispeed = parseFloat($(data).attr().s_hispeed); + pcdata.d_hispeed = parseFloat($(data).attr().d_hispeed); + pcdata.s_opstyle = Number($(data).attr().s_opstyle); + pcdata.d_opstyle = Number($(data).attr().d_opstyle); + pcdata.s_graph_score = Number($(data).attr().s_graph_score); + pcdata.d_graph_score = Number($(data).attr().d_graph_score); + pcdata.s_auto_scrach = Number($(data).attr().s_auto_scrach); + pcdata.d_auto_scrach = Number($(data).attr().d_auto_scrach); + pcdata.s_gauge_disp = Number($(data).attr().s_gauge_disp); + pcdata.d_gauge_disp = Number($(data).attr().d_gauge_disp); + pcdata.s_lane_brignt = Number($(data).attr().s_lane_brignt); + pcdata.d_lane_brignt = Number($(data).attr().d_lane_brignt); + pcdata.s_camera_layout = Number($(data).attr().s_camera_layout); + pcdata.d_camera_layout = Number($(data).attr().d_camera_layout); + pcdata.s_ghost_score = Number($(data).attr().s_ghost_score); + pcdata.d_ghost_score = Number($(data).attr().d_ghost_score); + pcdata.s_tsujigiri_disp = Number($(data).attr().s_tsujigiri_disp); + pcdata.d_tsujigiri_disp = Number($(data).attr().d_tsujigiri_disp); + + if (cltype == 0) { + pcdata.s_liflen = Number($(data).attr().s_lift); + } else { + pcdata.d_liflen = Number($(data).attr().d_lift); + } + + 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("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("qpro_equip"))) { + custom.qpro_head = Number($(data).attr("qpro_equip").head); + custom.qpro_hair = Number($(data).attr("qpro_equip").hair); + custom.qpro_face = Number($(data).attr("qpro_equip").face); + custom.qpro_body = Number($(data).attr("qpro_equip").body); + custom.qpro_hand = Number($(data).attr("qpro_equip").hand); + } + + if (hasStepUpData) { + pcdata.st_enemy_damage = Number($(data).attr("step").enemy_damage); + pcdata.st_progress = Number($(data).attr("step").progress); + pcdata.st_is_track_ticket = $(data).element("step").bool("is_track_ticket"); + pcdata.st_sp_level = Number($(data).attr("step").sp_level); + pcdata.st_dp_level = Number($(data).attr("step").dp_level); + pcdata.st_sp_mission_point = Number($(data).attr("step").sp_mission_point); + pcdata.st_dp_mission_point = Number($(data).attr("step").dp_mission_point); + pcdata.st_sp_dj_mission_level = Number($(data).attr("step").sp_dj_mission_level); + pcdata.st_dp_dj_mission_level = Number($(data).attr("step").dp_dj_mission_level); + pcdata.st_sp_clear_mission_level = Number($(data).attr("step").sp_clear_mission_level); + pcdata.st_dp_clear_mission_level = Number($(data).attr("step").dp_clear_mission_level); + pcdata.st_sp_dj_mission_clear = Number($(data).attr("step").sp_dj_mission_clear); + pcdata.st_dp_dj_mission_clear = Number($(data).attr("step").dp_dj_mission_clear); + pcdata.st_sp_clear_mission_clear = Number($(data).attr("step").sp_clear_mission_clear); + pcdata.st_dp_clear_mission_clear = Number($(data).attr("step").dp_clear_mission_clear); + pcdata.st_sp_mplay = Number($(data).attr("step").sp_mplay); + pcdata.st_dp_mplay = Number($(data).attr("step").dp_mplay); + pcdata.st_tips_read_list = Number($(data).attr("step").tips_read_list); + } + + if (!_.isNil($(data).element("achievements"))) { + // TODO:: achi_packflg, achi_packid, achi_playpack // + pcdata.achi_lastweekly = Number($(data).attr("achievements").last_weekly); + pcdata.achi_packcomp = Number($(data).attr("achievements").pack_comp); + pcdata.achi_visitflg = Number($(data).attr("achievements").visit_flg); + pcdata.achi_weeklynum = Number($(data).attr("achievements").weekly_num); + pcdata.achi_trophy = $(data).element("achievements").bigints("trophy").map(String); + } + + if ($(data).attr("dj_rank.1").style == "1") { + pcdata.dr_sprank = $(data).element("dj_rank").numbers("rank"); + pcdata.dr_sppoint = $(data).element("dj_rank").numbers("point"); + pcdata.dr_dprank = $(data).element("dj_rank.1").numbers("rank"); + pcdata.dr_dppoint = $(data).element("dj_rank.1").numbers("point"); + } + else if ($(data).attr("dj_rank").style == "0") { + pcdata.dr_sprank = $(data).element("dj_rank").numbers("rank"); + pcdata.dr_sppoint = $(data).element("dj_rank").numbers("point"); + } + else if ($(data).attr("dj_rank").style == "1") { + pcdata.dr_dprank = $(data).element("dj_rank").numbers("rank"); + pcdata.dr_dppoint = $(data).element("dj_rank").numbers("point"); + } + + if (!_.isNil($(data).element("extra_boss_event"))) { + pcdata.eb_bossorb0 = Number($(data).attr("extra_boss_event").orb_0); + pcdata.eb_bossorb1 = Number($(data).attr("extra_boss_event").orb_1); + pcdata.eb_bossorb2 = Number($(data).attr("extra_boss_event").orb_2); + pcdata.eb_bossorb3 = Number($(data).attr("extra_boss_event").orb_3); + pcdata.eb_bossorb4 = Number($(data).attr("extra_boss_event").orb_4); + pcdata.eb_bossorb5 = Number($(data).attr("extra_boss_event").orb_5); + pcdata.eb_bossorb6 = Number($(data).attr("extra_boss_event").orb_6); + pcdata.eb_bossorb7 = Number($(data).attr("extra_boss_event").orb_7); + pcdata.eb_bossorb8 = Number($(data).attr("extra_boss_event").orb_8); + } + + if (!_.isNil($(data).element("deller"))) pcdata.deller += Number($(data).attr("deller").deller); + if (!_.isNil($(data).element("orb_data"))) { + pcdata.orb += Number($(data).attr("orb_data").add_orb); + pcdata.present_orb += Number($(data).attr("orb_data").present_orb); + } + + // skin_customize_flg (attr: skin_frame_flg, skin_bgm_flg, ...) // + + // TODO:: fix event saving, these event savings hasn't fully tested // + if (hasEventData) { + pcdata.event_play_num += 1; + + let event_data = { + fragment_num: Number($(data).attr("event1").fragment_num), + last_select_map_id: Number($(data).attr("event1").last_select_map_id), + read_tips_list: Number($(data).attr("event1").read_tips_list), + continuous_correct: Number($(data).attr("event1").continuous_correct), + bookshelf_release_num: Number($(data).attr("event1").bookshelf_release_num), + play_gift: Number($(data).attr("event1").play_gift), + quiz_control_list: $(data).element("event1").buffer("quiz_control_list").toString("base64"), + }; + + await DB.Upsert(refid, + { + collection: "event_1", + version: version, + event_name: "event1_data", + }, + { + $set: event_data, + } + ); + + $(data).element("event1").elements("map_data").forEach((res) => { + DB.Upsert(refid, + { + collection: "event_1_sub", + version: version, + event_name: "event1_data", + map_id: Number(res.attr().map_id), + }, + { + $set: { + play_num: Number(res.attr().play_num), + last_select_route_id: Number(res.attr().last_select_route_id), + bookshelf_release_num: Number(res.attr().bookshelf_release_num), + is_clear: res.bool("is_clear"), + map_route_damage: res.buffer("map_route_damage").toString("base64"), + } + } + ); + }); + + // skipping quiz_log as it doesn't display anywhere // + } + + if (hasEvent2Data) { + let event_data = { + play_num: Number($(data).attr("event2").play_num), + last_select_floor: Number($(data).attr("event2").last_select_floor), + delabity: Number($(data).attr("event2").delabity), + tips_list: Number($(data).attr("event2").tips_list), + floor_clear_flg_list: Number($(data).attr("event2").floor_clear_flg_list), + floor_0_last_area: Number($(data).attr("event2").floor_0_last_area), + floor_1_last_area: Number($(data).attr("event2").floor_1_last_area), + floor_2_last_area: Number($(data).attr("event2").floor_2_last_area), + floor_3_last_area: Number($(data).attr("event2").floor_3_last_area), + floor_4_last_area: Number($(data).attr("event2").floor_4_last_area), + }; + + await DB.Upsert(refid, + { + collection: "event_1", + version: version, + event_name: "event2_data", + }, + { + $set: event_data, + } + ); + + $(data).element("event2").elements("area_data").forEach((res) => { + DB.Upsert(refid, + { + collection: "event_1_sub", + version: version, + event_name: "event2_data", + floor_id: Number(res.attr().floor_id), + area_id: Number(res.attr().area_id), + }, + { + $set: { + last_select_note: Number(res.attr().last_select_note), + normal_play_num: Number(res.attr().normal_play_num), + hyper_play_num: Number(res.attr().hyper_play_num), + another_play_num: Number(res.attr().another_play_num), + area_clear_flg_list: Number(res.attr().area_clear_flg_list), + normal_grade_point: Number(res.attr().normal_grade_point), + hyper_grade_point: Number(res.attr().hyper_grade_point), + another_grade_point: Number(res.attr().another_grade_point), + } + } + ); + }); + } + + if (!_.isNil($(data).element("anniv20_event"))) { + let event_data = { + damage_0: Number($(data).attr("anniv20_event").damage_0), + damage_1: Number($(data).attr("anniv20_event").damage_1), + damage_2: Number($(data).attr("anniv20_event").damage_2), + challenge_0: Number($(data).attr("anniv20_event").challenge_0), + challenge_1: Number($(data).attr("anniv20_event").challenge_1), + challenge_2: Number($(data).attr("anniv20_event").challenge_2) + }; + + await DB.Upsert(refid, + { + collection: "event_1", + version: version, + event_name: "anniv20_data", + }, + { + $set: event_data, + } + ); + } + } + else if (version >= 27) { + // lid bookkeep cid ctype ccode + pcdata.rtype = Number($(data).attr().rtype); + pcdata.sach = Number($(data).attr().s_achi); + pcdata.dach = Number($(data).attr().d_achi); + pcdata.sp_opt = Number($(data).attr().sp_opt); + pcdata.dp_opt = Number($(data).attr().dp_opt); + pcdata.dp_opt2 = Number($(data).attr().dp_opt2); + pcdata.gpos = Number($(data).attr().gpos); + pcdata.s_sorttype = Number($(data).attr().s_sorttype); + pcdata.d_sorttype = Number($(data).attr().d_sorttype); + pcdata.s_disp_judge = Number($(data).attr().s_disp_judge); + pcdata.d_disp_judge = Number($(data).attr().d_disp_judge); + pcdata.s_pace = Number($(data).attr().s_pace); + pcdata.d_pace = Number($(data).attr().d_pace); + pcdata.s_gno = Number($(data).attr().s_gno); + pcdata.d_gno = Number($(data).attr().d_gno); + pcdata.s_sub_gno = Number($(data).attr().s_sub_gno); + pcdata.d_sub_gno = Number($(data).attr().d_sub_gno); + pcdata.s_gtype = Number($(data).attr().s_gtype); + pcdata.d_gtype = Number($(data).attr().d_gtype); + pcdata.s_sdlen = Number($(data).attr().s_sdlen); + pcdata.d_sdlen = Number($(data).attr().d_sdlen); + pcdata.s_sdtype = Number($(data).attr().s_sdtype); + pcdata.d_sdtype = Number($(data).attr().d_sdtype); + pcdata.s_timing = Number($(data).attr().s_timing); + pcdata.d_timing = Number($(data).attr().d_timing); + pcdata.s_notes = parseFloat($(data).attr().s_notes); + pcdata.d_notes = parseFloat($(data).attr().d_notes); + pcdata.s_judge = Number($(data).attr().s_judge); + pcdata.d_judge = Number($(data).attr().d_judge); + pcdata.s_judgeAdj = Number($(data).attr().s_judgeAdj); + pcdata.d_judgeAdj = Number($(data).attr().d_judgeAdj); + pcdata.s_hispeed = parseFloat($(data).attr().s_hispeed); + pcdata.d_hispeed = parseFloat($(data).attr().d_hispeed); + pcdata.s_opstyle = Number($(data).attr().s_opstyle); + pcdata.d_opstyle = Number($(data).attr().d_opstyle); + pcdata.s_graph_score = Number($(data).attr().s_graph_score); + pcdata.d_graph_score = Number($(data).attr().d_graph_score); + pcdata.s_auto_scrach = Number($(data).attr().s_auto_scrach); + pcdata.d_auto_scrach = Number($(data).attr().d_auto_scrach); + pcdata.s_gauge_disp = Number($(data).attr().s_gauge_disp); + pcdata.d_gauge_disp = Number($(data).attr().d_gauge_disp); + pcdata.s_lane_brignt = Number($(data).attr().s_lane_brignt); + pcdata.d_lane_brignt = Number($(data).attr().d_lane_brignt); + pcdata.s_camera_layout = Number($(data).attr().s_camera_layout); + pcdata.d_camera_layout = Number($(data).attr().d_camera_layout); + pcdata.s_ghost_score = Number($(data).attr().s_ghost_score); + pcdata.d_ghost_score = Number($(data).attr().d_ghost_score); + pcdata.s_tsujigiri_disp = Number($(data).attr().s_tsujigiri_disp); + pcdata.d_tsujigiri_disp = Number($(data).attr().d_tsujigiri_disp); + + if (version >= 28) { + pcdata.ngrade = Number($(data).attr().ngrade); + } + if (version >= 29) { + pcdata.s_auto_adjust = Number($(data).attr().s_auto_adjust); + pcdata.d_auto_adjust = Number($(data).attr().d_auto_adjust); + } + if (version >= 30) { + pcdata.s_timing_split = Number($(data).attr().s_timing_split); + pcdata.d_timing_split = Number($(data).attr().d_timing_split); + pcdata.s_visualization = Number($(data).attr().s_visualization); + pcdata.d_visualization = Number($(data).attr().d_visualization); + } + if (version >= 31) { + pcdata.s_classic_hispeed = Number($(data).attr().s_classic_hispeed); + pcdata.d_classic_hispeed = Number($(data).attr().d_classic_hispeed); + } + if (version >= 32) { + pcdata.category = Number($(data).attr().category); + pcdata.bgnflg = Number($(data).attr().bgnflg); + pcdata.movie_thumbnail = Number($(data).attr().movie_thumbnail); + } + + if (cltype == 0) { + pcdata.s_liflen = Number($(data).attr().s_lift); + } else { + pcdata.d_liflen = Number($(data).attr().d_lift); + } + + 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); + pcdata.secret_flg4 = $(data).element("secret").bigints("flg4").map(String); + + if (version >= 32) { + pcdata.secret_flg5 = $(data).element("secret").bigints("flg5").map(String); + } + } + + // use bigint if type is "s64", number may seems to work // + // but element will be removed when saving into DB once type is exceeded // + // however, bigint is returning convert error on sendPug so mapping as string // + 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 (version >= 32) { + custom.qpro_secret_back = $(data).element("qpro_secret").bigints("back").map(String); + } + } + + if (!_.isNil($(data).element("qpro_equip"))) { + custom.qpro_head = Number($(data).attr("qpro_equip").head); + custom.qpro_hair = Number($(data).attr("qpro_equip").hair); + custom.qpro_face = Number($(data).attr("qpro_equip").face); + custom.qpro_body = Number($(data).attr("qpro_equip").body); + custom.qpro_hand = Number($(data).attr("qpro_equip").hand); + + if (version >= 32) { + custom.qpro_back = Number($(data).attr("qpro_equip").back); + } + } + + if (hasStepUpData) { + pcdata.st_enemy_damage = Number($(data).attr("step").enemy_damage); + pcdata.st_progress = Number($(data).attr("step").progress); + pcdata.st_is_track_ticket = $(data).element("step").bool("is_track_ticket"); + pcdata.st_sp_level = Number($(data).attr("step").sp_level); + pcdata.st_dp_level = Number($(data).attr("step").dp_level); + pcdata.st_sp_mplay = Number($(data).attr("step").sp_mplay); + pcdata.st_dp_mplay = Number($(data).attr("step").dp_mplay); + pcdata.st_tips_read_list = Number($(data).attr("step").tips_read_list); + + if (version >= 29) { + pcdata.st_total_point = Number($(data).attr("step").total_point); + pcdata.st_enemy_defeat_flg = Number($(data).attr("step").enemy_defeat_flg); + pcdata.st_mission_clear_num = Number($(data).attr("step").mission_clear_num); + + if (version >= 30) { + pcdata.st_sp_fluctuation = Number($(data).attr("step").sp_fluctuation); + pcdata.st_dp_fluctuation = Number($(data).attr("step").dp_fluctuation); + } + + if (version >= 32) { + pcdata.st_sp_level_h = Number($(data).attr("step").sp_level_h); + pcdata.st_dp_level_h = Number($(data).attr("step").dp_level_h); + pcdata.st_sp_level_exh = Number($(data).attr("step").sp_level_exh); + pcdata.st_dp_level_exh = Number($(data).attr("step").dp_level_exh); + } + } else { + pcdata.st_dp_clear_mission_clear = Number($(data).attr("step").dp_clear_mission_clear); + pcdata.st_dp_clear_mission_level = Number($(data).attr("step").dp_clear_mission_level); + pcdata.st_dp_dj_mission_clear = Number($(data).attr("step").dp_dj_mission_clear); + pcdata.st_dp_dj_mission_level = Number($(data).attr("step").dp_dj_mission_level); + pcdata.st_dp_mission_point = Number($(data).attr("step").dp_mission_point); + + pcdata.st_sp_clear_mission_clear = Number($(data).attr("step").sp_clear_mission_clear); + pcdata.st_sp_clear_mission_level = Number($(data).attr("step").sp_clear_mission_level); + pcdata.st_sp_dj_mission_clear = Number($(data).attr("step").sp_dj_mission_clear); + pcdata.st_sp_dj_mission_level = Number($(data).attr("step").sp_dj_mission_level); + pcdata.st_sp_mission_point = Number($(data).attr("step").sp_mission_point); + } + } + + if (!_.isNil($(data).element("achievements"))) { + // TODO:: achi_pack, achi_rivalcrush // + pcdata.achi_lastweekly = Number($(data).attr("achievements").last_weekly); + pcdata.achi_packcomp = Number($(data).attr("achievements").pack_comp); + pcdata.achi_visitflg = Number($(data).attr("achievements").visit_flg); + pcdata.achi_weeklynum = Number($(data).attr("achievements").weekly_num); + if (!_.isNil($(data).element("achievements").bigints("trophy"))) // unavailable since epolis // + pcdata.achi_trophy = $(data).element("achievements").bigints("trophy").map(String); + } + + if ($(data).attr("dj_rank.1").style == "1") { + pcdata.dr_sprank = $(data).element("dj_rank").numbers("rank"); + pcdata.dr_sppoint = $(data).element("dj_rank").numbers("point"); + pcdata.dr_dprank = $(data).element("dj_rank.1").numbers("rank"); + pcdata.dr_dppoint = $(data).element("dj_rank.1").numbers("point"); + } else if ($(data).attr("dj_rank").style == "0") { + pcdata.dr_sprank = $(data).element("dj_rank").numbers("rank"); + pcdata.dr_sppoint = $(data).element("dj_rank").numbers("point"); + } else if ($(data).attr("dj_rank").style == "1") { + pcdata.dr_dprank = $(data).element("dj_rank").numbers("rank"); + pcdata.dr_dppoint = $(data).element("dj_rank").numbers("point"); + } + + if ($(data).attr("notes_radar.1").style == "1") { + pcdata.nr_spradar = $(data).element("notes_radar").numbers("radar_score"); + pcdata.nr_dpradar = $(data).element("notes_radar.1").numbers("radar_score"); + } else if ($(data).attr("notes_radar").style == "0") { + pcdata.nr_spradar = $(data).element("notes_radar").numbers("radar_score"); + } else if ($(data).attr("notes_radar").style == "1") { + pcdata.nr_dpradar = $(data).element("notes_radar").numbers("radar_score"); + } + + if (!_.isNil($(data).element("deller"))) pcdata.deller += Number($(data).attr("deller").deller); + if (!_.isNil($(data).element("orb_data"))) { + if (version >= 31) { + pcdata.orb += Number($(data).attr("orb_data").add_orb_normal); + pcdata.orb += Number($(data).attr("orb_data").add_orb_event); + pcdata.present_orb += Number($(data).attr("orb_data").rest_orb); + // use_present_orb // + } + else { + pcdata.orb += Number($(data).attr("orb_data").add_orb); + pcdata.orb += Number($(data).attr("orb_data").reward_orb); + pcdata.present_orb += Number($(data).attr("orb_data").present_orb); + } + } + + if (hasLanguageData) profile.language = Number($(data).attr("language_setting").language); + + if (!_.isNil($(data).element("extra_boss_event"))) { + pcdata.eb_keyorb = Number($(data).attr("extra_boss_event").key_orb); + pcdata.eb_bossorb0 = Number($(data).attr("extra_boss_event").boss_orb_0); + pcdata.eb_bossorb1 = Number($(data).attr("extra_boss_event").boss_orb_1); + pcdata.eb_bossorb2 = Number($(data).attr("extra_boss_event").boss_orb_2); + pcdata.eb_bossorb3 = Number($(data).attr("extra_boss_event").boss_orb_3); + pcdata.eb_bossorb4 = Number($(data).attr("extra_boss_event").boss_orb_4); + pcdata.eb_bossorb5 = Number($(data).attr("extra_boss_event").boss_orb_5); + pcdata.eb_bossorb6 = Number($(data).attr("extra_boss_event").boss_orb_6); + pcdata.eb_bossorb7 = Number($(data).attr("extra_boss_event").boss_orb_7); + } + + if (!_.isNil($(data).elements("extra_boss_event"))) { + $(data).elements("extra_boss_event").forEach((res) => { + DB.Upsert( + refid, + { + collection: "extra_boss", + version: version, + phase: Number(res.attr().phase) + }, + { + $set: { + extra: Number(res.attr().extra), + extra_b: Number(res.attr().extra_b), + onemore: Number(res.attr().onemore), + onemore_b: Number(res.attr().onemore_b), + }, + }); + }); + } + + if (hasEventData) { + let event_data, event_sub_data; + switch (version) { + case 27: + pcdata.event_play_num += 1; + pcdata.event_last_select_id = Number($(data).attr("event1").last_select_gym_id); + + $(data).element("event1").elements("gym_data").forEach((res) => { + event_data = { + gym_id: res.attr().gym_id, + play_num: res.attr().play_num, + gauge_spirit: res.attr().gauge_spirit, + gauge_technique: res.attr().gauge_technique, + gauge_body: res.attr().gauge_body, + boss_attack_num: res.attr().boss_attack_num, + boss_damage: res.attr().boss_damage, + disp_lounge_list: res.attr().disp_lounge_list, + stb_type: res.attr().stb_type, + is_complete: res.number("is_complete"), + is_gauge_max: res.number("is_gauge_max"), + } + + DB.Upsert( + refid, + { + collection: "event_1", + version: version, + gym_id: event_data.gym_id + }, + { + $set: event_data, + }); + }); + break; + case 28: + pcdata.event_play_num += 1; + pcdata.event_story_prog = Number($(data).attr("event_1").story_prog); + pcdata.event_last_select_id = Number($(data).attr("event_1").last_select_area_id); + pcdata.event_failed_num = Number($(data).attr("event_1").failed_num); + + $(data).element("event_1").elements("area_data").forEach((res) => { + event_data = { + area_id: res.attr().area_id, + play_num: res.attr().play_num, + recipe_prog0: res.attr().recipe_prog0, + recipe_prog1: res.attr().recipe_prog1, + recipe_prog2: res.attr().recipe_prog2, + recipe_prog3: res.attr().recipe_prog3, + recipe_prog4: res.attr().recipe_prog4, + operation_num: res.attr().operation_num, + operation_prog: res.attr().operation_prog, + last_select_recipe: res.attr().last_select_recipe, + area_prog: res.attr().area_prog, + is_complete: res.number("is_complete"), + } + + DB.Upsert( + refid, + { + collection: "event_1", + version: version, + area_id: event_data.area_id + }, + { + $set: event_data, + }); + }); + break; + case 29: + pcdata.event_play_num += 1; + pcdata.event_last_select_id = Number($(data).attr("event_1").last_select_platform_id); + pcdata.event_last_select_type = Number($(data).attr("event_1").last_select_platform_type); + + $(data).element("event_1").elements("watch_data").forEach((res) => { + if (!(_.isNil(res.element("channel")))) { + event_data = { + last_select_channel: res.attr().last_select_channel, + platform_id: res.attr().platform_id, + platform_prog: res.attr().platform_prog, + play_num: res.attr().play_num, + }; + + event_sub_data = { + platform_id: res.attr().platform_id, + channel_id: res.attr("channel").channel_id, + gauge: res.attr("channel").gauge, + channel_play_num: res.attr("channel").play_num, + is_complete: res.element("channel").number("is_complete"), + } + } else { + event_data = { + last_select_channel: res.attr().last_select_channel, + platform_id: res.attr().platform_id, + platform_prog: res.attr().platform_prog, + play_num: res.attr().play_num, + } + + event_sub_data = { + platform_id: res.attr().platform_id, + channel_id: 0, + gauge: 0, + channel_play_num: 0, + is_complete: 0, + } + } + + DB.Upsert(refid, + { + collection: "event_1", + version: version, + platform_id: event_data.platform_id + }, + { + $set: event_data, + } + ); + + DB.Upsert(refid, + { + collection: "event_1_sub", + version: version, + platform_id: event_sub_data.platform_id, + channel_id: event_sub_data.channel_id, + }, + { + $set: event_sub_data, + } + ); + }); + break; + case 30: + pcdata.event_play_num += 1; + pcdata.event_last_select_id = Number($(data).attr("event_1").last_select_flyer_id); + + $(data).element("event_1").elements("flyer_data").forEach((res) => { + if (!(_.isNil(res.element("genre_data")))) { + event_data = { + last_select_genre: res.attr().last_select_genre, + flyer_id: res.attr().flyer_id, + flyer_prog: res.attr().flyer_prog, + play_num: res.attr().play_num, + skill_param: res.attr().skill_param, + }; + + event_sub_data = { + flyer_id: res.attr().flyer_id, + genre_id: res.element("genre_data").attr().genre_id, + gauge: res.element("genre_data").attr().gauge, + genre_playnum: res.element("genre_data").attr().play_num, + is_complete: res.element("genre_data").number("is_complete"), + } + } else { + event_data = { + last_select_genre: res.attr().last_select_genre, + flyer_id: res.attr().flyer_id, + flyer_prog: res.attr().flyer_prog, + play_num: res.attr().play_num, + skill_param: res.attr().skill_param, + }; + + event_sub_data = { + flyer_id: res.attr().flyer_id, + genre_id: 0, + gauge: 0, + genre_playnum: 0, + is_complete: 0, + } + } + + DB.Upsert(refid, + { + collection: "event_1", + version: version, + flyer_id: event_data.flyer_id + }, + { + $set: event_data, + } + ); + + DB.Upsert(refid, + { + collection: "event_1_sub", + version: version, + flyer_id: event_sub_data.flyer_id, + genre_id: event_sub_data.genre_id, + }, + { + $set: event_sub_data, + } + ); + }); + break; + case 31: + pcdata.event_play_num += 1; + pcdata.event_last_select_id = Number($(data).attr("event_1").last_select_map_id); + pcdata.event_skip = false; + + if (!_.isNil($(data).element("event_1").element("is_skip"))) { + pcdata.event_skip = true; + } + + let mapArray = []; + $(data).element("event_1").elements("map_data").forEach((res) => { + let map_id = res.attr().map_id; + + let buildingArray = []; + res.elements("building_data").forEach((res) => { + let building_data = { + map_id, + + pos: res.attr().pos, + building: res.attr().building, + use_tile: res.attr().use_tile, + } + + buildingArray.push(building_data); + }); + + let shopArray = []; + res.elements("shop_data").forEach((res) => { + let shop_data = { + map_id, + + reward_id: res.attr().reward_id, + prog: res.attr().prog, + } + + shopArray.push(shop_data); + }); + + let musicArray = []; + res.elements("music").forEach((res) => { + let music_data = { + music_id: res.attr().music_id, + note_id: res.attr().note_id, + } + + musicArray.push(music_data); + }); // these are saved but will not used for now // + + let map_data = { + map_id, + + play_num: res.attr().play_num, + play_num_uc: res.attr().play_num_uc, + last_select_pos: res.attr().last_select_pos, + map_prog: res.attr().map_prog, + gauge: res.attr().gauge, + tile_num: res.attr().tile_num, + metron_total_get: res.attr().metron_total_get, + metron_total_use: res.attr().metron_total_use, + bank_date: res.attr().bank_date, + grade_bonus: res.attr().grade_bonus, + end_bonus: res.attr().end_bonus, + fbonus: res.attr().fbonus, + }; + + mapArray.push([map_data, buildingArray, shopArray, musicArray]); + }); + + mapArray.forEach((res) => { + // map_data // + DB.Upsert(refid, { + collection: "event_1", + version: version, + event_data: "myepo_map", + map_id: res[0].map_id, + }, + { + $set: res[0], + }); + + // building_data // + res[1].forEach((res) => { + DB.Upsert(refid, { + collection: "event_1_sub", + version: version, + event_data: "myepo_building", + map_id: res.map_id, + pos: res.pos, + }, + { + $set: res, + }); + }); + + // shop_data // + res[2].forEach((res) => { + DB.Upsert(refid, { + collection: "event_1_sub", + version: version, + event_data: "myepo_shop", + map_id: res.map_id, + reward_id: res.reward_id, + }, + { + $set: res, + }); + }); + + // music // + res[3].forEach((res) => { + DB.Upsert(refid, { + collection: "event_1_sub", + version: version, + event_data: "myepo_music", + }, + { + $set: res, + }); + }); + }); + break; + + case 32: + pcdata.event_play_num += 1; + pcdata.event_last_select_id = Number($(data).attr("event_1").last_select_booth_id); + pcdata.event_skip = false; + + if (!_.isNil($(data).element("event_1").element("is_skip"))) { + pcdata.event_skip = true; + } + + $(data).element("event_1").elements("booth_data").forEach((res) => { + event_data = { + booth_id: res.attr().booth_id, + play_num: res.attr().play_num, + play_num_uc: res.attr().play_num_uc, + success_num: res.attr().success_num, + last_select_qpro_index: res.attr().last_select_qpro_index, + booth_prog: res.attr().booth_prog, + customer_n: res.attr().customer_n, + customer_h: res.attr().customer_h, + customer_a: res.attr().customer_a, + customer_l: res.attr().customer_l, + } + + if (!_.isNil(res.attr().hire_num)) { + event_data = { + ...event_data, + hire_num: res.attr().hire_num, + flg_l: res.bool("flg_l"), + } + } + + res.elements("booth_qpro_data").forEach((res) => { + DB.Upsert( + refid, + { + collection: "event_1_sub", + version: version, + booth_id: event_data.booth_id, + index: res.attr().index, + }, + { + $set: { + head_parts: res.attr().head_parts, + hair_parts: res.attr().hair_parts, + face_parts: res.attr().face_parts, + body_parts: res.attr().body_parts, + hand_parts: res.attr().hand_parts, + param_n: res.attr().param_n, + param_h: res.attr().param_h, + param_a: res.attr().param_a, + param_l: res.attr().param_l, + level: res.attr().level, + exp: res.attr().exp, + performance_date: res.attr().performance_date, + // new_hire seems not referenced // + }, + }); + }); + + DB.Upsert( + refid, + { + collection: "event_1", + version: version, + booth_id: event_data.booth_id + }, + { + $set: event_data, + }); + }); + break; + + default: + break; + } + } + + if (hasEvent2Data) { + switch (version) { + case 31: + // TODO:: figure out pack_id, pack_flg, play_pack, erosion_play_num, erosion5_clear12_num // + await DB.Upsert(refid, + { + collection: "event_1", + version: version, + event_data: "epores", + }, + { + $set: { + event_play_num: $(data).attr("event_2").event_play_num, + after_play_num: $(data).attr("event_2").after_play_num, + last_select_system_id: $(data).attr("event_2").last_select_system_id, + gate_key: $(data).attr("event_2").gate_key, + after_gauge: $(data).attr("event_2").after_gauge, + last_select_erosion_level: $(data).attr("event_2").last_select_erosion_level, + } + } + ); + + $(data).element("event_2").elements("system_data").forEach((res) => { + DB.Upsert(refid, { + collection: "event_1_sub", + version: version, + event_data: "epores_system", + system_id: res.attr().system_id, + }, + { + $set: { + play_num: res.attr().play_num, + unlock_prog: res.attr().unlock_prog, + system_prog: res.attr().system_prog, + gauge: res.attr().gauge, + }, + }); + }); + break; + + case 32: + await DB.Upsert(refid, + { + collection: "event_1", + version: version, + event_data: "pinkyunderground", + }, + { + $set: { + event_play_num: pcdata.event_play_num, // just use pcdata event play num // + last_select_hall_id: $(data).attr("event_2").last_select_hall_id, + } + } + ); + + $(data).element("event_2").elements("hall_data").forEach((res) => { + DB.Upsert(refid, { + collection: "event_1_sub", + version: version, + event_data: "pinkyunderground_hall", + hall_id: res.attr().hall_id, + }, + { + $set: { + play_num: res.attr().play_num, + last_select_skill_index: res.attr().last_select_skill_index, + hall_prog: res.attr().hall_prog, + defeat_num: res.attr().defeat_num, + pp_0: res.attr().pp_0, + pp_1: res.attr().pp_1, + pp_2: res.attr().pp_2, + pp_3: res.attr().pp_3, + pp_4: res.attr().pp_4, + pp_5: res.attr().pp_5, + skill_1: res.attr().skill_1, + skill_2: res.attr().skill_2, + skill_3: res.attr().skill_3, + cool_1: res.attr().cool_1, + cool_2: res.attr().cool_2, + cool_3: res.attr().cool_3, + param_1: res.attr().param_1, + param_2: res.attr().param_2, + param_3: res.attr().param_3, + }, + }); + + res.elements("hall_qpro_data").forEach((res2) => { + DB.Upsert( + refid, + { + collection: "event_1_sub", + version: version, + event_data: "pinkyunderground_hall_qpro", + hall_id: res.attr().hall_id, + index: res2.attr().index, + }, + { + $set: { + head_parts: res2.attr().head_parts, + hair_parts: res2.attr().hair_parts, + face_parts: res2.attr().face_parts, + body_parts: res2.attr().body_parts, + hand_parts: res2.attr().hand_parts, + }, + }); + }); + }); + break; + } + } + + if (hasWorldTourism) { + if (version >= 28) { + $(data).elements("world_tourism_data").forEach((res) => { + let tourInfo = { + tour_id: Number(res.attr().tour_id), + progress: Number(res.attr().progress), + } + + DB.Upsert( + refid, + { + collection: "world_tourism", + version: version, + tour_id: tourInfo.tour_id + }, + { + $set: { + progress: tourInfo.progress, + } + } + ); + }); + } + } + + if (hasMusicMemo) { + if (version >= 30) { + $(data).element("music_memo").elements("folder").forEach((res) => { + DB.Upsert( + refid, + { + collection: "lightning_musicmemo_new", + version: version, + folder_idx: Number(res.attr().folder_id), + play_style: Number(res.attr().play_style), + }, + { + $set: { + folder_name: res.attr().name, + music_ids: res.numbers("music_id"), + }, + }); + }); + } + else if (version >= 27) { + $(data).element("music_memo").elements("music").forEach((res) => { + DB.Upsert( + refid, + { + collection: "lightning_musicmemo", + version: version, + music_idx: Number(res.attr().index), + play_style: Number(res.attr().play_style), + }, + { + $set: { + music_id: Number(res.attr().music_id), + }, + }); + }); + } + } + + if (hasTowerData) { + profile.total_kbd += Number($(data).attr("tower_data").keyboard); + profile.total_scr += Number($(data).attr("tower_data").scratch); + } + + // saving for future purpose // + if (hasBadgeData) { + let badge_data = []; + let badge = $(data).element("badge"); + + switch (version) { + case 30: + if (!(_.isNil(badge.element("today_recommend")))) { + let badgeInfo = { + category_id: "today_recommend", + flg_id: 0, + flg: Number(badge.element("today_recommend").attr().flg), + }; + + badge_data.push(badgeInfo); + } + + if (!(_.isNil(badge.element("weekly_ranking")))) { + let badgeInfo = { + category_id: "weekly_ranking", + flg_id: 0, + flg: Number(badge.element("weekly_ranking").attr().flg), + }; + + badge_data.push(badgeInfo); + } + + if (!(_.isNil(badge.element("visitor")))) { + badge.elements("visitor").forEach((res) => { + let badgeInfo = { + category_id: "visitor", + flg_id: Number(res.attr().flg_id), + flg: Number(res.attr().flg), + }; + + badge_data.push(badgeInfo); + }); + } + + if (!(_.isNil(badge.element("notes_radar")))) { + badge.elements("notes_radar").forEach((res) => { + let badgeInfo = { + category_id: "notes_radar", + flg_id: Number(res.attr().flg_id), + flg: Number(res.attr().flg), + }; + + badge_data.push(badgeInfo); + }); + } + + if (!(_.isNil(badge.element("world_tourism")))) { + let badgeInfo = { + category_id: "world_tourism", + flg_id: 0, + flg: Number(badge.element("world_tourism").attr().flg), + }; + + badge_data.push(badgeInfo); + } + + if (!(_.isNil(badge.element("event1")))) { + badge.elements("event1").forEach((res) => { + let badgeInfo = { + category_id: "event1", + flg_id: Number(res.attr().flg_id), + flg: Number(res.attr().flg), + }; + + badge_data.push(badgeInfo); + }); + } + + if (!(_.isNil(badge.element("arena")))) { + badge.elements("arena").forEach((res) => { + let badgeInfo = { + category_id: "arena", + flg_id: Number(res.attr().flg_id), + flg: Number(res.attr().flg), + }; + + badge_data.push(badgeInfo); + }); + } + + if (!(_.isNil(badge.element("iidx_exam")))) { + let badgeInfo = { + category_id: "iidx_exam", + flg_id: 0, + flg: Number(badge.element("iidx_exam").attr().flg), + }; + + badge_data.push(badgeInfo); + } + break; + case 31: + if (!(_.isNil(badge.element("step_up")))) { + badge.elements("step_up").forEach((res) => { + let badgeInfo = { + category_id: "step_up", + flg_id: Number(res.attr().flg_id), + flg: Number(res.attr().flg), + }; + + badge_data.push(badgeInfo); + }); + } + + if (!(_.isNil(badge.element("today_recommend")))) { + let badgeInfo = { + category_id: "today_recommend", + flg_id: 0, + flg: Number(badge.element("today_recommend").attr().flg), + }; + + badge_data.push(badgeInfo); + } + + if (!(_.isNil(badge.element("weekly_ranking")))) { + let badgeInfo = { + category_id: "weekly_ranking", + flg_id: 0, + flg: Number(badge.element("weekly_ranking").attr().flg), + }; + + badge_data.push(badgeInfo); + } + + if (!(_.isNil(badge.element("visitor")))) { + badge.elements("visitor").forEach((res) => { + let badgeInfo = { + category_id: "visitor", + flg_id: Number(res.attr().flg_id), + flg: Number(res.attr().flg), + }; + + badge_data.push(badgeInfo); + }); + } + + if (!(_.isNil(badge.element("notes_radar")))) { + badge.elements("notes_radar").forEach((res) => { + let badgeInfo = { + category_id: "notes_radar", + flg_id: Number(res.attr().flg_id), + flg: Number(res.attr().flg), + }; + + badge_data.push(badgeInfo); + }); + } + + if (!(_.isNil(badge.element("tsujigiri")))) { + let badgeInfo = { + category_id: "tsujigiri", + flg_id: 0, + flg: Number(badge.element("tsujigiri").attr().flg), + }; + + badge_data.push(badgeInfo); + } + + if (!(_.isNil(badge.element("iidx_exam")))) { + let badgeInfo = { + category_id: "iidx_exam", + flg_id: 0, + flg: Number(badge.element("iidx_exam").attr().flg), + }; + + badge_data.push(badgeInfo); + } + + if (!(_.isNil(badge.element("world_tourism")))) { + let badgeInfo = { + category_id: "world_tourism", + flg_id: 0, + flg: Number(badge.element("world_tourism").attr().flg), + }; + + badge_data.push(badgeInfo); + } + + if (!(_.isNil(badge.element("event1")))) { + badge.elements("event1").forEach((res) => { + let badgeInfo = { + category_id: "event1", + flg_id: 0, + flg: Number(res.attr().flg), + }; + + badge_data.push(badgeInfo); + }); + } + + if (!(_.isNil(badge.element("arena")))) { + badge.elements("arena").forEach((res) => { + let badgeInfo = { + category_id: "arena", + flg_id: Number(res.attr().flg_id), + flg: Number(res.attr().flg), + }; + + badge_data.push(badgeInfo); + }); + } + + if (!(_.isNil(badge.element("event2")))) { + badge.elements("event2").forEach((res) => { + let badgeInfo = { + category_id: "event2", + flg_id: 0, + flg: Number(res.attr().flg), + }; + + badge_data.push(badgeInfo); + }); + } + break; + case 32: + if (!(_.isNil(badge.element("step_up")))) { + badge.elements("step_up").forEach((res) => { + let badgeInfo = { + category_id: "step_up", + flg_id: Number(res.attr().flg_id), + flg: Number(res.attr().flg), + }; + + badge_data.push(badgeInfo); + }); + } + + if (!(_.isNil(badge.element("today_recommend")))) { + let badgeInfo = { + category_id: "today_recommend", + flg_id: 0, + flg: Number(badge.element("today_recommend").attr().flg), + }; + + badge_data.push(badgeInfo); + } + + if (!(_.isNil(badge.element("weekly_ranking")))) { + let badgeInfo = { + category_id: "weekly_ranking", + flg_id: 0, + flg: Number(badge.element("weekly_ranking").attr().flg), + }; + + badge_data.push(badgeInfo); + } + + if (!(_.isNil(badge.element("visitor")))) { + badge.elements("visitor").forEach((res) => { + let badgeInfo = { + category_id: "visitor", + flg_id: Number(res.attr().flg_id), + flg: Number(res.attr().flg), + }; + + badge_data.push(badgeInfo); + }); + } + + if (!(_.isNil(badge.element("notes_radar")))) { + badge.elements("notes_radar").forEach((res) => { + let badgeInfo = { + category_id: "notes_radar", + flg_id: Number(res.attr().flg_id), + flg: Number(res.attr().flg), + }; + + badge_data.push(badgeInfo); + }); + } + + if (!(_.isNil(badge.element("tsujigiri")))) { + let badgeInfo = { + category_id: "tsujigiri", + flg_id: 0, + flg: Number(badge.element("tsujigiri").attr().flg), + }; + + badge_data.push(badgeInfo); + } + + if (!(_.isNil(badge.element("iidx_exam")))) { + let badgeInfo = { + category_id: "iidx_exam", + flg_id: 0, + flg: Number(badge.element("iidx_exam").attr().flg), + }; + + badge_data.push(badgeInfo); + } + + if (!(_.isNil(badge.element("world_tourism")))) { + let badgeInfo = { + category_id: "world_tourism", + flg_id: 0, + flg: Number(badge.element("world_tourism").attr().flg), + }; + + badge_data.push(badgeInfo); + } + + if (!(_.isNil(badge.element("event1")))) { + badge.elements("event1").forEach((res) => { + let badgeInfo = { + category_id: "event1", + flg_id: 0, + flg: Number(res.attr().flg), + }; + + badge_data.push(badgeInfo); + }); + } + + if (!(_.isNil(badge.element("arena")))) { + badge.elements("arena").forEach((res) => { + let badgeInfo = { + category_id: "arena", + flg_id: Number(res.attr().flg_id), + flg: Number(res.attr().flg), + }; + + badge_data.push(badgeInfo); + }); + } + break; + + default: + break; + } + + badge_data.forEach((res) => { + DB.Upsert( + refid, + { + collection: "badge", + version: version, + category_name: res.category_id, + flg_id: res.flg_id, + }, + { + $set: { + flg: res.flg, + } + }); + }); + } + + if (hasMusicFilter) { + $(data).element("music_filter").elements("folder").forEach((res) => { + DB.Upsert( + refid, + { + collection: "lightning_musicfilter", + version: version, + play_style: Number(res.attr().play_style), + folder_id: Number(res.attr().folder_id), + filter_id: Number(res.attr().filter_id), + }, + { + $set: { + is_valid: res.bool("is_valid"), + value0: Number(res.attr().value0), + value1: Number(res.attr().value1), + }, + }); + }); + + let sort = $(data).element("music_filter").element("sort"); // Pinky Crush // + if (!_.isNil(sort)) { + DB.Upsert( + refid, + { + collection: "lightning_musicfilter_sort", + version: version, + play_style: Number(sort.attr().play_style), + folder_id: Number(sort.attr().folder_id), + }, + { + $set: { + sort: Number(sort.attr().sort) + }, + }); + } + } + + if (hasActivityData) { + const activityData = $(data).element("activity_data"); + const play_style = Number($(data).attr("activity_data").play_style); + let music_num = Number($(data).attr("activity_data").music_num); + let play_time = Number($(data).attr("activity_data").play_time); + let keyboard_num = Number($(data).attr("activity_data").keyboard_num); + let scratch_num = Number($(data).attr("activity_data").scratch_num); + let clear_update_num = $(data).numbers("activity_data.clear_update_num"); + let score_update_num = $(data).numbers("activity_data.score_update_num"); + + const date = new Date(); + const monthStr = `${date.getMonth() + 1}`.padStart(2, "0"); + const dayStr = `${date.getDate()}`.padStart(2, "0"); + const dateStr = `${date.getFullYear()}${monthStr}${dayStr}`; + + const dbData = await DB.FindOne(refid, { + collection: "activity", + version: version, + date: Number(dateStr), + play_style: play_style, + }); + + if (!_.isNil(dbData)) { + music_num += dbData.music_num; + play_time += dbData.play_time; + keyboard_num += dbData.keyboard_num; + scratch_num += dbData.scratch_num; + + for (let a = 0; a < 13; a++) { // TODO:: verify // + clear_update_num[a] += dbData.clear_update_num[a]; + score_update_num[a] += dbData.score_update_num[a]; + } + } + + await DB.Upsert( + refid, + { + collection: "activity", + version: version, + date: Number(dateStr), + play_style: play_style, + }, + { + $set: { + music_num, + play_time, + keyboard_num, + scratch_num, + clear_update_num, + score_update_num, + } + }); + } + + if (hasSkinData) { + let skinData = $(data).elements("skin_equip"); + let note_burst, bomb_size, turntable, judge_font, + note_skin, note_size, lane_cover, pacemaker_cover, + lift_cover, note_beam, note_beam_size, full_combo_splash, frame; + + skinData.forEach((res) => { + switch (Number(res.attr().skin_id)) { + case 1: + note_burst = Number(res.attr().skin_no); + break; + case 2: + bomb_size = Number(res.attr().skin_no); + break; + case 3: + turntable = Number(res.attr().skin_no); + break; + case 4: + judge_font = Number(res.attr().skin_no); + break; + case 5: + note_skin = Number(res.attr().skin_no); + break; + case 6: + note_size = Number(res.attr().skin_no); + break; + + case 13: + lane_cover = Number(res.attr().skin_no); + break; + case 14: + pacemaker_cover = Number(res.attr().skin_no); + break; + case 15: + lift_cover = Number(res.attr().skin_no); + break; + case 16: + note_beam = Number(res.attr().skin_no); + break; + case 17: + note_beam_size = Number(res.attr().skin_no); + break; + case 18: + full_combo_splash = Number(res.attr().skin_no); + break; + case 19: + frame = Number(res.attr().skin_no); + break; + } + }); + + custom.note_burst = note_burst; + custom.bomb_size = bomb_size; + custom.turntable = turntable; + custom.judge_font = judge_font; + custom.note_skin = note_skin; + custom.note_size = note_size; + + custom.lane_cover = lane_cover; + custom.pacemaker_cover = pacemaker_cover; + custom.lift_cover = lift_cover; + custom.note_beam = note_beam; + custom.note_beam_size = note_beam_size; + custom.full_combo_splash = full_combo_splash; + custom.frame = frame; + } + + if (isTDJ && hasTDJSkinData) { + let skinData = $(data).elements("tdjskin_equip"); + let premium_skin; + let premium_bg; + + skinData.forEach((res) => { + switch (Number(res.attr().skin_id)) { + case 0: + premium_skin = Number(res.attr().skin_no); + break; + case 1: + premium_bg = Number(res.attr().skin_no); + break; + } + }); + + await DB.Upsert( + refid, + { + collection: "lightning_custom", + version: version, + }, + { + $set: { + premium_skin, + premium_bg, + } + }); + } + } + + await DB.Upsert( + refid, + { + collection: "profile", + }, + { + $set: profile + } + ); + + await DB.Upsert( + refid, + { + collection: "pcdata", + version: version, + }, + { + $set: pcdata + } + ); + + await DB.Upsert( + refid, + { + collection: "custom", + version: version, + }, + { + $set: custom + } + ); + + return send.success(); +}; + +export const pcgetlanegacha: EPR = async (info, data, send) => { + let tArray = []; + for (let i = 0; i < 100; i++) { + let random = _.random(0, 5040); + + tArray.push( + K.ATTR({ + ticket_id: String(i + 1), + arrange_id: String(random), + expire_date: String(4102326000), + }) + ); + } + + // settings(sp, dp_left, dp_right), info(last_page) // + + return send.object({ + ticket: tArray, + free: K.ATTR({ + num: String(10), + }), + }); +}; + +export const pcshopregister: EPR = async (info, data, send) => { + let refid = IDtoRef(Number($(data).str("iidx_id"))); + let lid = $(data).str("location_id"); + + // TODO // + + return send.success(); +}; + +export const pcdrawlanegacha: EPR = async (info, data, send) => { + let drawNum = Number($(data).attr().draw_num); + let tArray = []; + + for (let i = 0; i < drawNum; i++) { + let random = _.random(0, 5040); + + tArray.push( + K.ATTR({ + ticket_id: String(_.random(101, 10000)), + arrange_id: String(random), + expire_date: String(4102326000), + }) + ); + } + + return send.object({ + ticket: tArray, + session: K.ATTR({ + session_id: String(0), + }), + }); +}; diff --git a/iidx@asphyxia/handlers/ranking.ts b/iidx@asphyxia/handlers/ranking.ts new file mode 100644 index 0000000..ffe3faa --- /dev/null +++ b/iidx@asphyxia/handlers/ranking.ts @@ -0,0 +1,173 @@ +import { expert, ranking } from "../models/ranking"; +import { profile } from "../models/profile"; +import { GetVersion, IDtoRef } from "../util"; + +export const rankingentry: EPR = async (info, data, send) => { + // pside // + const version = GetVersion(info); + const refid = await IDtoRef(Number($(data).attr().iidxid)); + + const coid = Number($(data).attr().coid); + const clid = Number($(data).attr().clid); + + const opname = $(data).attr().opname; + const oppid = Number($(data).attr().oppid); + const pgnum = Number($(data).attr().pgnum); + const gnum = Number($(data).attr().gnum); + const opt = Number($(data).attr().opt); + const opt2 = Number($(data).attr().opt2); + const clr = Number($(data).attr().clr); + + const exscore = (pgnum * 2 + gnum); + const cstage = Number($(data).attr().cstage); + + const expert_data = await DB.FindOne(refid, { + collection: "expert", + version: version, + coid: coid, + }); + + let pgArray = Array(6).fill(0); // PGREAT // + let gArray = Array(6).fill(0); // GREAT // + let cArray = Array(6).fill(0); // CLEAR FLAGS // + let optArray = Array(6).fill(0); // USED OPTION (SP/DP) // + let opt2Array = Array(6).fill(0); // USED OPTION (DP) // + let esArray = Array(6).fill(0); // EXSCORE // + if (_.isNil(expert_data)) { + cArray[clid] = clr; + pgArray[clid] = pgnum; + gArray[clid] = gnum; + optArray[clid] = opt; + opt2Array[clid] = opt2; + esArray[clid] = exscore; + } + else { + cArray = expert_data.cArray; + pgArray = expert_data.pgArray; + gArray = expert_data.gArray; + optArray = expert_data.optArray; + opt2Array = expert_data.opt2Array; + esArray = expert_data.esArray; + + const pExscore = esArray[clid]; + if (exscore > pExscore) { + pgArray[clid] = pgnum; + gArray[clid] = gnum; + optArray[clid] = opt; + opt2Array[clid] = opt2; + esArray[clid] = exscore; + } + + cArray[clid] = Math.max(cArray[clid], clr); + } + + await DB.Upsert( + refid, + { + collection: "expert", + version: version, + coid: coid, + }, + { + $set: { + cArray, + pgArray, + gArray, + optArray, + opt2Array, + esArray, + } + } + ); + + const profile = await DB.FindOne(refid, { + collection: "profile", + }); + const name = profile.name; + await DB.Upsert( + { + collection: "ranking", + version: version, + coid: coid, + clid: clid, + }, + { + $set: { + pgnum: pgnum, + gnum: gnum, + name: name, + opname: opname, + pid: oppid, + udate: 0, + + exscore: exscore, + maxStage: cstage, + } + } + ); + + let expertUser = await DB.Find({ + collection: "ranking", + version: version, + coid: coid, + clid: clid, + }); + expertUser.sort((a: ranking, b: ranking) => b.exscore - a.exscore); + let rankPos = expertUser.findIndex((a: ranking) => a.name == name); + + return send.object(K.ATTR({ + anum: String(expertUser.length), + jun: String(rankPos + 1), + })); +}; + +export const rankingoentry: EPR = async (info, data, send) => { + const version = GetVersion(info); + const refid = await IDtoRef(Number($(data).attr().iidxid)); + + const coid = Number($(data).attr().coid); + const clid = Number($(data).attr().clid); + + const pgnum = Number($(data).attr().pgnum); + const gnum = Number($(data).attr().gnum); + const opt = Number($(data).attr().opt); + const opt2 = Number($(data).attr().opt2); + const clr = Number($(data).attr().clr); + + const exscore = (pgnum * 2 + gnum); + + // TODO:: figure out what this does // + + return send.success(); +}; + +export const rankinggetranker: EPR = async (info, data, send) => { + const version = GetVersion(info); + const ranking = await DB.Find({ + collection: "ranking", + version: version, + coid: Number($(data).attr().coid), + clid: Number($(data).attr().clid), + }); + let result = { + ranker: [], + } + + if (_.isNil(ranking)) return send.success(); + + ranking.sort((a: ranking, b: ranking) => b.exscore - a.exscore); + ranking.forEach((res) => { + result.ranker.push( + K.ATTR({ + gnum: String(res.gnum), + pgnum: String(res.pgnum), + name: res.name, + opname: res.opname, + pid: String(res.pid), + udate: String(res.udate), + }) + ); + }); + + return send.object(result); +}; diff --git a/iidx@asphyxia/handlers/shop.ts b/iidx@asphyxia/handlers/shop.ts new file mode 100644 index 0000000..7388272 --- /dev/null +++ b/iidx@asphyxia/handlers/shop.ts @@ -0,0 +1,89 @@ +import { convention_data, shop_data } from "../models/shop"; +import { GetVersion } from "../util"; + +export const shopgetname: EPR = async (info, data, send) => { + const shop_data = await DB.FindOne({ + collection: "shop_data", + }); + + if (_.isNil(shop_data)) { + await DB.Insert({ + collection: "shop_data", + + opname: "CORE", + pid: 53, + cls_opt: 0, + }); + + return send.object( + K.ATTR({ + opname: "CORE", + pid: "53", + cls_opt: "0", + hr: "0", + mi: "0", + }), + { encoding: "shift_jis" } + ); + } + + return send.object( + K.ATTR({ + opname: shop_data.opname, + pid: String(shop_data.pid), + cls_opt: String(shop_data.cls_opt), + hr: "0", + mi: "0", + }), + { encoding: "shift_jis" } + ); +}; + +export const shopsavename: EPR = async (info, data, send) => { + // removed saving code as opname attribute being sent as shift_jis but KDataReader read as utf-8 // + return send.success(); +}; + +export const shopgetconvention: EPR = async (info, data, send) => { + const version = GetVersion(info); + + const convention_data = await DB.FindOne({ + collection: "shop_convention", + version: version, + }); + if (_.isNil(convention_data)) return send.deny(); + + return send.object( + K.ATTR({ + music_0: String(convention_data.music_0), + music_1: String(convention_data.music_1), + music_2: String(convention_data.music_2), + music_3: String(convention_data.music_3), + }, + { + valid: K.ITEM("bool", convention_data.valid), + }) + ); +}; + +export const shopsetconvention: EPR = async (info, data, send) => { + const version = GetVersion(info); + + await DB.Upsert( + { + collection: "shop_convention", + version: version, + }, + { + $set: { + music_0: $(data).number("music_0"), + music_1: $(data).number("music_1"), + music_2: $(data).number("music_2"), + music_3: $(data).number("music_3"), + valid: $(data).bool("valid"), + }, + } + ); + + return send.success(); +}; diff --git a/iidx@asphyxia/handlers/webui.ts b/iidx@asphyxia/handlers/webui.ts new file mode 100644 index 0000000..f0bf83a --- /dev/null +++ b/iidx@asphyxia/handlers/webui.ts @@ -0,0 +1,429 @@ +import { profile } from "../models/profile"; +import { rival } from "../models/rival"; +import { custom } from "../models/custom"; +import { score, old_score } from "../models/score"; +import { lightning_custom } from "../models/lightning"; + +export const updateRivalSettings = async (data) => { + let update_array = []; + + if (!(_.isEmpty(data.sp_rival1))) { + let update_data = { + play_style: 1, + index: 0, + rival_refid: data.sp_rival1, + }; + + update_array.push(update_data); + } else { + await DB.Remove(data.refid, + { + collection: "rival", + play_style: 1, + index: 0, + } + ) + } + + if (!(_.isEmpty(data.sp_rival2))) { + let update_data = { + play_style: 1, + index: 1, + rival_refid: data.sp_rival2, + }; + + update_array.push(update_data); + } else { + await DB.Remove(data.refid, + { + collection: "rival", + play_style: 1, + index: 1, + } + ) + } + + if (!(_.isEmpty(data.sp_rival3))) { + let update_data = { + play_style: 1, + index: 2, + rival_refid: data.sp_rival3, + }; + + update_array.push(update_data); + } else { + await DB.Remove(data.refid, + { + collection: "rival", + play_style: 1, + index: 2, + } + ) + } + + if (!(_.isEmpty(data.sp_rival4))) { + let update_data = { + play_style: 1, + index: 3, + rival_refid: data.sp_rival4, + }; + + update_array.push(update_data); + } else { + await DB.Remove(data.refid, + { + collection: "rival", + play_style: 1, + index: 3, + } + ) + } + + if (!(_.isEmpty(data.sp_rival5))) { + let update_data = { + play_style: 1, + index: 4, + rival_refid: data.sp_rival5, + }; + + update_array.push(update_data); + } else { + await DB.Remove(data.refid, + { + collection: "rival", + play_style: 1, + index: 4, + } + ) + } + + if (!(_.isEmpty(data.dp_rival1))) { + let update_data = { + play_style: 2, + index: 0, + rival_refid: data.dp_rival1, + }; + + update_array.push(update_data); + } else { + await DB.Remove(data.refid, + { + collection: "rival", + play_style: 2, + index: 0, + } + ) + } + + if (!(_.isEmpty(data.dp_rival2))) { + let update_data = { + play_style: 2, + index: 1, + rival_refid: data.dp_rival2, + }; + + update_array.push(update_data); + } else { + await DB.Remove(data.refid, + { + collection: "rival", + play_style: 2, + index: 1, + } + ) + } + + if (!(_.isEmpty(data.dp_rival3))) { + let update_data = { + play_style: 2, + index: 2, + rival_refid: data.dp_rival3, + }; + + update_array.push(update_data); + } else { + await DB.Remove(data.refid, + { + collection: "rival", + play_style: 2, + index: 2, + } + ) + } + + if (!(_.isEmpty(data.dp_rival4))) { + let update_data = { + play_style: 2, + index: 3, + rival_refid: data.dp_rival4, + }; + + update_array.push(update_data); + } else { + await DB.Remove(data.refid, + { + collection: "rival", + play_style: 2, + index: 3, + } + ) + } + + if (!(_.isEmpty(data.dp_rival5))) { + let update_data = { + play_style: 2, + index: 4, + rival_refid: data.dp_rival5, + }; + + update_array.push(update_data); + } else { + await DB.Remove(data.refid, + { + collection: "rival", + play_style: 2, + index: 4, + } + ) + } + + for (let i = 0; i < update_array.length; i++) { + await DB.Upsert(data.refid, { + collection: "rival", + play_style: update_array[i].play_style, + index: update_array[i].index, + }, { + $set: { + rival_refid: update_array[i].rival_refid, + } + } + ) + } +}; + +export const updateCustomSettings = async (data) => { + const profile = await DB.FindOne(data.refid, { + collection: "profile", + }); + + let customize = { + frame: Number(data.frame), + turntable: Number(data.turntable), + note_burst: Number(data.note_burst), + menu_music: Number(data.menu_music), + lane_cover: Number(data.lane_cover), + category_vox: Number(data.category_vox), + note_skin: Number(data.note_skin), + full_combo_splash: Number(data.full_combo_splash), + disable_musicpreview: StoB(data.disable_musicpreview), + + note_beam: Number(data.note_beam), + judge_font: Number(data.judge_font), + pacemaker_cover: Number(data.pacemaker_cover), + vefx_lock: StoB(data.vefx_lock), + effect: Number(data.effect), + bomb_size: Number(data.bomb_size), + disable_hcn_color: StoB(data.disable_hcn_color), + first_note_preview: Number(data.first_note_preview), + + rank_folder: StoB(data.rank_folder), + clear_folder: StoB(data.clear_folder), + diff_folder: StoB(data.diff_folder), + alpha_folder: StoB(data.alpha_folder), + rival_folder: StoB(data.rival_folder), + rival_battle_folder: StoB(data.rival_battle_folder), + rival_info: StoB(data.rival_info), + hide_playcount: StoB(data.hide_playcount), + disable_graph_cutin: StoB(data.disable_graph_cutin), + classic_hispeed: StoB(data.classic_hispeed), + rival_played_folder: StoB(data.rival_played_folder), + hide_iidxid: StoB(data.hide_iidxid), + disable_beginner_option: StoB(data.disable_beginner_option), + + qpro_head: Number(data.qpro_head), + qpro_hair: Number(data.qpro_hair), + qpro_face: Number(data.qpro_face), + qpro_hand: Number(data.qpro_hand), + qpro_body: Number(data.qpro_body), + qpro_back: Number(data.qpro_back), + } + + await DB.Upsert(data.refid, { + collection: "custom", + version: Number(data.version) + }, + { + $set: customize + }); + + if (!_.isEmpty(data.name) && data.name != profile.name) { + // TODO:: check name is in valid format // + await DB.Upsert(data.refid, { + collection: "profile", + }, { + $set: { + name: data.name + } + }); + } + + if (data.version > 27) { + await DB.Upsert(data.refid, { + collection: "lightning_custom", + version: Number(data.version) + }, + { + $set: { + premium_skin: Number(data.lm_skin), + premium_bg: Number(data.lm_bg), + } + }); + } +}; + +export const importScoreData = async (data, send: WebUISend) => { + if (_.isEmpty(data.data)) { + console.error("[Score Importer] Supplied data is empty"); + return send.error(400, "Empty data"); + } + + let content = null; + let version = 0; + let count = 0; + try { + content = JSON.parse(data.data); + version = content.version; + count = content.count; + } + catch { + console.error("[Score Importer] Invaild data has been supplied"); + return send.error(400, "Invalid data"); + } + + switch (version) { + case 1: + let sd_ver1: old_score[] = content.data; + for (let a = 0; a < count; a++) { + let result = { + pgArray: Array(10).fill(0), + gArray: Array(10).fill(0), + mArray: Array(10).fill(-1), + cArray: Array(10).fill(0), + rArray: Array(10).fill(-1), + esArray: Array(10).fill(0), + + optArray: Array(10).fill(0), + opt2Array: Array(10).fill(0), + } + + if (!_.isNil(sd_ver1[a].spmArray)) { + for (let b = 0; b < 5; b++) { + result.cArray[b] = sd_ver1[a].spmArray[2 + b]; + result.esArray[b] = sd_ver1[a].spmArray[7 + b]; + if (sd_ver1[a].spmArray[12 + b] != -1) result.mArray[b] = sd_ver1[a].spmArray[12 + b]; + } + } + + if (!_.isNil(sd_ver1[a].dpmArray)) { + for (let b = 5; b < 10; b++) { + result.cArray[b] = sd_ver1[a].dpmArray[2 + (b - 5)]; + result.esArray[b] = sd_ver1[a].dpmArray[7 + (b - 5)]; + if (sd_ver1[a].dpmArray[12 + (b - 5)] != -1) result.mArray[b] = sd_ver1[a].dpmArray[12 + (b - 5)]; + } + } + + if (!_.isNil(sd_ver1[a].optArray)) { + result.optArray = sd_ver1[a].optArray; + } + + if (!_.isNil(sd_ver1[a].opt2Array)) { + result.opt2Array = sd_ver1[a].opt2Array; + } + + for (let b = 0; b < 10; b++) { + if (_.isNil(sd_ver1[a][b])) continue; + result[b] = sd_ver1[a][b]; + + if (!_.isNil(sd_ver1[a][b + 10])) { + result[b + 10] = sd_ver1[a][b + 10]; + } + } + + await DB.Upsert(data.refid, + { + collection: "score", + mid: sd_ver1[a].music_id + }, + { + $set: { + ...result + } + } + ); + } + break; + case 2: + let sd_ver2: score[] = content.data; + for (let a = 0; a < count; a++) { + let result = { + pgArray: sd_ver2[a].pgArray, + gArray: sd_ver2[a].gArray, + mArray: sd_ver2[a].mArray, + cArray: sd_ver2[a].cArray, + rArray: sd_ver2[a].rArray, + esArray: sd_ver2[a].esArray, + + optArray: sd_ver2[a].optArray, + opt2Array: sd_ver2[a].opt2Array, + }; + + for (let b = 0; b < 10; b++) { + if (_.isNil(sd_ver2[a][b])) continue; + result[b] = sd_ver2[a][b]; + + if (!_.isNil(sd_ver2[a][b + 10])) { + result[b + 10] = sd_ver2[a][b + 10]; + } + } + + await DB.Upsert(data.refid, + { + collection: "score", + mid: sd_ver2[a].mid + }, + { + $set: { + ...result, + } + } + ); + } + break; + + default: + console.error("[Score Importer] Unregistered score data version"); + return send.error(400, "Invalid data version"); + } +} + +export const exportScoreData = async (data, send: WebUISend) => { + const score = await DB.Find(data.refid, { + collection: "score" + }); + + if (score == null) return send.error(400, "No data"); + + let result = { + version: 2, + count: score.length, + data: { + ...score, + } + } + + send.json(result); +} + +function StoB(value: string) { + return value == "on" ? true : false; +}; diff --git a/iidx@asphyxia/index.ts b/iidx@asphyxia/index.ts new file mode 100644 index 0000000..77b9ec0 --- /dev/null +++ b/iidx@asphyxia/index.ts @@ -0,0 +1,598 @@ +import { pccommon, pcreg, pcget, pcgetname, pctakeover, pcvisit, pcsave, pcoldget, pcgetlanegacha, pcdrawlanegacha, pcshopregister } from "./handlers/pc"; +import { shopgetname, shopsavename, shopgetconvention, shopsetconvention } from "./handlers/shop"; +import { musicreg, musicgetrank, musicappoint, musicarenacpu, musiccrate, musicbreg, musicgetralive } from "./handlers/music"; +import { graderaised } from "./handlers/grade"; +import { gssysteminfo } from "./handlers/gamesystem"; +import { updateRivalSettings, updateCustomSettings, importScoreData, exportScoreData } from "./handlers/webui"; +import { GetVersion } from "./util"; +import { rankingentry, rankinggetranker, rankingoentry } from "./handlers/ranking"; + +export function register() { + if (CORE_VERSION_MAJOR <= 1 && CORE_VERSION_MINOR < 31) { + console.error("The current version of Asphyxia Core is not supported. Requires version '1.31' or later."); + return; + } + + R.Contributor("duel0213"); + + R.GameCode("GLD"); + R.GameCode("HDD"); + R.GameCode("I00"); + R.GameCode("JDJ"); + R.GameCode("JDZ"); + R.GameCode("KDZ"); + R.GameCode("LDJ"); + + // common // + R.Config("BeatPhase", { + name: "Beat #", + desc: "1 / 2 / 3 / FREE", // This can be event phase on old versions // + type: "integer", + default: 3, // BEAT FREE // + }); + // ~ Resort Anthem (common) / / + R.Config("cmd_gmbl", { + name: "G.JUDGE", + desc: "Enable G.JUDGE Command (~ Resort Anthem)", + type: "boolean", + default: true, + }); + R.Config("cmd_gmbla", { + name: "G.JUDGE-A", + desc: "Enable G.JUDGE-A Command (~ Resort Anthem)", + type: "boolean", + default: true, + }); + R.Config("cmd_regl", { + name: "REGUL-SPEED", + desc: "Enable REGUL-SPEED Command (~ Resort Anthem)", + type: "boolean", + default: true, + }); + R.Config("cmd_rndp", { + name: "RANDOM+", + desc: "Enable RANDOM+ Command (~ Resort Anthem)", + type: "boolean", + default: true, + }); + R.Config("cmd_hrnd", { + name: "H-RANDOM", + desc: "Enable H-RANDOM Command (~ Resort Anthem)", + type: "boolean", + default: true, + }); + R.Config("cmd_alls", { + name: "ALL-SCRATCH", + desc: "Enable ALL-SCRATCH Command (~ Resort Anthem)", + type: "boolean", + default: true, + }); + // SPADA ~ (common) // + R.Config("NewSongAnother12", { + name: "New Song Another", + desc: "Enables ANOTHER difficulty of current version's new songs that has Level 12", + type: "boolean", + default: true, + }); + // PENDUAL ~ (common) // + R.Config("ExpertPhase", { + name: "Expert Phase", + type: "integer", + default: 2, + }); + R.Config("ExpertRandomPhase", { + name: "Expert Random Phase", + type: "integer", + default: 2, + }); + // HEROIC VERSE ~ (common) // + R.Config("ArenaPhase", { + name: "ARENA Phase", + type: "integer", + default: 2, // ADVERTISE // + }); + // BISTROVER ~ (common) // + R.Config("MovieUpload", { + name: "Movie Upload URL", + type: "string", + desc: "API address for play video uploading feature (JSON)", + default: "http://localhost/" + }); + R.Config("Eisei", { + name: "Eisei Grade Courses", + desc: "Enable EISEI/KIWAMI Grade Courses", + type: "boolean", + default: true, + }); + // CastHour ~ RESIDENT (common) // + R.Config("Grade", { + name: "Grade Open Phase", + desc: "RED / KAIDEN", + type: "integer", + default: 2, + }) + + // SIRIUS // + R.Config("sr_league", { + name: "League Phase (SR)", + type: "integer", + default: 0, + }); + + // Resort Anthem // + R.Config("ra_league", { + name: "League Phase (RA)", + type: "integer", + default: 0, + }); + R.Config("ra_story", { + name: "Story Phase (RA)", + type: "integer", + default: 0, + }); + R.Config("ra_event", { + name: "Tour Phase (RA)", + type: "integer", + default: 3, + }); + R.Config("ra_lincle", { + name: "Lincle LINK Phase (RA)", + type: "integer", + default: 1, + }); + + // Lincle // + R.Config("lc_lincle", { + name: "Lincle LINK Phase (LC)", + type: "integer", + default: 2, + }); + R.Config("lc_boss", { + name: "Lincle Kingdom Phase", + type: "integer", + default: 2, + }); + + // tricoro // + R.Config("tr_limit", { + name: "Limit Burst Phase (TR)", + type: "integer", + default: 24, // TODO:: verify // + }); + R.Config("tr_boss", { + name: "Event Phase (TR)", + desc: "RED / BLUE / YELLOW", + type: "integer", + default: 3, + }); + R.Config("tr_red", { + name: "RED Phase", + desc: "LEGEND CROSS Phase", + type: "integer", + default: 3, + }); + R.Config("tr_yellow", { + name: "YELLOW Phase", + desc: "ぼくらの宇宙戦争 Phase", + type: "integer", + default: 3, + }); + R.Config("tr_medal", { + name: "Medal Phase (TR)", + type: "integer", + default: 3, + }); + R.Config("tr_cafe", { + name: "Café de Tran", + desc: "Enable Café de Tran Event (tricoro)", + type: "boolean", + default: true, + }); + R.Config("tr_tripark", { + name: "Everyone's SPACEWAR!!", + desc: "Enable クプロ・ミミニャミ・パステルくんのみんなで宇宙戦争!! Event (tricoro)", + type: "boolean", + default: true, + }); + + // SPADA // + R.Config("sp_limit", { + name: "Limit Burst Phase (SP)", + type: "integer", + default: 24, + }); + R.Config("sp_boss", { + name: "Event Phase (SP)", + desc: "Spada†leggendaria Phase", + type: "integer", + default: 3, + }); + R.Config("sp_boss1", { + name: "Qprogue Phase (SP)", + type: "integer", + default: 4, + }); + R.Config("sp_cafe", { + name: "Café de Tran", + desc: "Enable Café de Tran Event (SPADA)", + type: "boolean", + default: true, + }); + R.Config("sp_tripark", { + name: "Everyone's SPACEWAR!!", + desc: "Enable クプロ・ミミニャミ・パステルくんのみんなで宇宙戦争!! Event (SPADA)", + type: "boolean", + default: true, + }); + R.Config("sp_triparkskip", { + name: "Everyone's SPACEWAR!! Skip", + desc: "Skips クプロ・ミミニャミ・パステルくんのみんなで宇宙戦争!! Event Scenes", + type: "integer", + default: 2, + }); + R.Config("sp_superstar", { + name: "SUPER STAR -MITSURU-", + desc: "SUPER STAR 満 -MITSURU- 完全復活祭 Phase", + type: "integer", + default: 2, + }); + + // PENDUAL // + R.Config("pd_preplay", { + name: "SUPER FUTURE 2323 Phase", + type: "integer", + default: 2, + }); + R.Config("pd_tohoremix", { + name: "BEMANI X TOHO", + desc: "BEMANI×TOHO REITAISAI 2015 project Phase", + type: "integer", + default: 2, + }); + R.Config("pd_limit", { + name: "Chrono Chaser Phase", + type: "integer", + default: 9, + }); + R.Config("pd_boss", { + name: "Event Phase (PD)", + desc: "Chrono Seeker / Qpronicle Chord / PENDUAL TALISMAN", + type: "integer", + default: 3, + }); + R.Config("pd_chronodiver", { + name: "Chrono Seeker", + type: "integer", + default: 3, + }); + R.Config("pd_qproniclechord", { + name: "Qpronicle Chord", + type: "integer", + default: 2, + }); + R.Config("pd_cccollabo", { + name: "Coca-Cola×BEMANI", + desc: "Coca-Cola×BEMANI 店舗限定ロケテスト Phase", + type: "integer", + default: 3, + }); + R.Config("pd_timephase", { + name: "Time Phase", + type: "integer", + desc: "Default / Present / Future", + default: 0, + }); + + // copula // + R.Config("cp_boss", { + name: "Event Phase (CP)", + desc: "開通!とことこライン / Mystery Line", + type: "integer", + default: 2, + }); + R.Config("cp_event1", { + name: "開通!とことこライン", + desc: "開通!とことこライン Phase", + type: "integer", + default: 1, + }); + R.Config("cp_event2", { + name: "Mystery Line", + desc: "Mystery Line Phase", + type: "integer", + default: 2, + }); + R.Config("cp_extraboss", + { + name: "Extra Boss Phase (CP)", + desc: "Extra Boss Phase", + type: "integer", + default: 30, + }); + R.Config("cp_bemanisummer", { + name: "BEMANI Summer 2016", + desc: "NEW Generation 夏の流星フェスタ2016 Phase", + type: "integer", + default: 2, + }); + + // SINOBUZ // + R.Config("sb_boss", { + name: "Event Phase (SB)", + desc: "攻城シノバズ伝 / 忍々七鍵伝", + type: "integer", + default: 2, + }); + R.Config("sb_event1", { + name: "攻城シノバズ伝", + desc: "攻城シノバズ伝 Phase", + type: "integer", + default: 2, + }); + R.Config("sb_event2", { + name: "忍々七鍵伝", + desc: "忍々七鍵伝 Phase", + type: "integer", + default: 1, + }); + R.Config("sb_extraboss", + { + name: "BUZRA ARTS", + desc: "BUZRA ARTS Phase", + type: "integer", + default: 35, + }); + + // CANNON BALLERS // + R.Config("cb_boss", { + name: "Event Phase (SB)", + desc: "激走!キャノンレーサー", + type: "integer", + default: 1, + }); + R.Config("cb_event1", { + name: "激走!キャノンレーサー", + desc: "激走!キャノンレーサー Phase", + type: "integer", + default: 3, + }); + R.Config("cb_extraboss", + { + name: "IIDX AIR RACE", + desc: "IIDX AIR RACE Phase", + type: "integer", + default: 35, + }); + + // Rootage // + R.Config("rt_boss", { + name: "Event Phase (RT)", + desc: "蜃気楼の図書館 / DELABITY LABORATORY", + type: "integer", + default: 2, + }); + R.Config("rt_event1", { + name: "蜃気楼の図書館", + desc: "蜃気楼の図書館 Phase", + type: "integer", + default: 3, + }); + R.Config("rt_event2", { + name: "DELABITY LABORATORY", + desc: "DELABITY LABORATORY Phase", + type: "integer", + default: 2, + }); + R.Config("rt_extraboss", + { + name: "ARC SCORE", + desc: "ARC SCORE Phase", + type: "integer", + default: 3, + }); + + // HEROIC VERSE // + R.Config("hv_boss", { + name: "Event Phase (HV)", + desc: "HEROIC WORKOUT!!", + type: "integer", + default: 1, + }); + R.Config("hv_event", { + name: "HEROIC WORKOUT!!", + desc: "HEROIC WORKOUT!! Phase", + type: "integer", + default: 4, + }); + R.Config("hv_extraboss", + { + name: "SHADOW REBELLION", + desc: "SHADOW REBELLION Phase", + type: "integer", + default: 1, + }); + + // BISTROVER // + R.Config("bo_boss", { + name: "Event Phase (BO)", + desc: "召しませ!BISTROVER", + type: "integer", + default: 1, + }); + R.Config("bo_extraboss", { + name: "BISTRO LANDING", + desc: "BISTRO LANDING Phase", + type: "integer", + default: 1, + }); + R.Config("bo_event", { + name: "召しませ!BISTROVER", + desc: "召しませ!BISTROVER Phase", + type: "integer", + default: 1, + }); + + // CastHour // + R.Config("ch_event", { + name: "CastHour Space", + desc: "CastHour Space Phase", + type: "integer", + default: 5, + }); + R.Config("ch_extraboss", { + name: "Extra Boss Phase (CH)", + type: "integer", + default: 3, + }); + + // RESIDENT // + R.Config("rs_event", { + name: "RESIDENT PARTY", + desc: "RESIDENT PARTY Phase", + type: "integer", + default: 5, + }); + R.Config("rs_extraboss", { + name: "Extra Boss Phase (RS)", + type: "integer", + default: 3, + }); + + // EPOLIS // + R.Config("ep_event", { + name: "Event Phase (EP)", + desc: "MY POLIS DESIGNER / EPOLIS RESTORATION", + type: "integer", + default: 2, + }); + R.Config("ep_event1", { + name: "MY POLIS DESIGNER", + desc: "MY POLIS DESIGNER Phase", + type: "integer", + default: 3, + }); + R.Config("ep_event2", { + name: "EPOLIS RESTORATION", + desc: "EPOLIS RESTORATION Phase", + type: "integer", + default: 3, + }); + R.Config("ep_extraboss", { + name: "EPOLIS SINGULARITY", + desc: "EPOLIS SINGULARITY Phase", + type: "integer", + default: 3, + }); + + // Pinky Crush // + R.Config("pc_event", { + name: "Event Phase (PC)", + desc: "ピンキージャンプアップ! / ピンキーアンダーグラウンド", + type: "integer", + default: 2, + }); + R.Config("pc_event1", { + name: "ピンキージャンプアップ!", + desc: "ピンキージャンプアップ! Phase", + type: "integer", + default: 3, + }); + R.Config("pc_event2", { + name: "ピンキーアンダーグラウンド", + desc: "ピンキーアンダーグラウンド Phase", + type: "integer", + default: 3, + }); + R.Config("pc_extraboss", { + name: "Extra Boss Phase (PC)", + type: "integer", + default: 3, + }); + + // TODO:: Make a list of customize items // + R.WebUIEvent("iidxGetProfile", async (data, send: WebUISend) => { + const pcdata = await DB.FindOne(data.refid, { + collection: "pcdata", + version: Number(data.version), + }); + + return send.json({ + pcdata, + }); + }); + R.WebUIEvent("iidxGetSetting", async (data, send: WebUISend) => { + const custom = await DB.FindOne(data.refid, { + collection: "custom", + version: Number(data.version), + }); + + const lm_custom = await DB.FindOne(data.refid, { + collection: "lightning_custom", + version: Number(data.version), + }); + + return send.json({ + custom, + lm_custom, + }); + }); + R.WebUIEvent("iidxUpdateRival", updateRivalSettings); + R.WebUIEvent("iidxUpdateCustom", updateCustomSettings); + R.WebUIEvent("iidxImportScoreData", importScoreData); + R.WebUIEvent("iidxExportScoreData", exportScoreData); + + const MultiRoute = (method: string, handler: EPR | boolean) => { + R.Route(`${method}`, handler); + R.Route(`IIDX21${method}`, handler); + R.Route(`IIDX22${method}`, handler); + R.Route(`IIDX23${method}`, handler); + R.Route(`IIDX24${method}`, handler); + R.Route(`IIDX25${method}`, handler); + R.Route(`IIDX26${method}`, handler); + R.Route(`IIDX27${method}`, handler); + R.Route(`IIDX28${method}`, handler); + R.Route(`IIDX29${method}`, handler); + R.Route(`IIDX30${method}`, handler); + R.Route(`IIDX31${method}`, handler); + R.Route(`IIDX32${method}`, handler); + }; + + MultiRoute("pc.common", pccommon); + MultiRoute("pc.reg", pcreg); + MultiRoute("pc.get", pcget); + MultiRoute("pc.getname", pcgetname); + MultiRoute("pc.oldget", pcoldget); + MultiRoute("pc.takeover", pctakeover); + MultiRoute("pc.visit", pcvisit); + MultiRoute("pc.save", pcsave); + MultiRoute("pc.shopregister", pcshopregister); + MultiRoute("pc.getLaneGachaTicket", pcgetlanegacha); + MultiRoute("pc.drawLaneGacha", pcdrawlanegacha); + MultiRoute("pc.consumeLaneGachaTicket", true); + + MultiRoute("shop.getname", shopgetname); + MultiRoute("shop.savename", shopsavename); + MultiRoute("shop.getconvention", shopgetconvention); + MultiRoute("shop.setconvention", shopsetconvention); + + MultiRoute("music.crate", musiccrate); + MultiRoute("music.getrank", musicgetrank); + MultiRoute("music.getralive", musicgetralive); + MultiRoute("music.appoint", musicappoint); + MultiRoute("music.reg", musicreg); + MultiRoute("music.breg", musicbreg); + MultiRoute("music.arenaCPU", musicarenacpu); + + MultiRoute("grade.raised", graderaised); + + MultiRoute("ranking.entry", rankingentry); + MultiRoute("ranking.oentry", rankingoentry); + MultiRoute("ranking.getranker", rankinggetranker); + + MultiRoute("gameSystem.systemInfo", gssysteminfo); + + R.Unhandled((req: EamuseInfo, data: any, send: EamuseSend) => { + console.warn(`Unhandled Request : [${GetVersion(req)}], ${req.module}.${req.method}, ${JSON.stringify(data)}`); + return send.success(); + }); +} diff --git a/iidx@asphyxia/models/activity.ts b/iidx@asphyxia/models/activity.ts new file mode 100644 index 0000000..a754ae3 --- /dev/null +++ b/iidx@asphyxia/models/activity.ts @@ -0,0 +1,50 @@ +export interface activity { + collection: "activity"; + version: number; + + date: number; + play_style: number; + + music_num: number; + play_time: number; + keyboard_num: number; + scratch_num: number; + clear_update_num: number[]; + score_update_num: number[]; +} + +export interface activity_mybest { + collection: "activity_mybest"; + version: number; + + play_style: number; + play_side: number; + music_id: number; + note_id: number; + + target_graph: number; + target_score: number; + pacemaker: number; + best_clear: number; + best_score: number; + best_misscount: number; + now_clear: number; + now_score: number; + now_misscount: number; + now_pgreat: number; + now_great: number; + now_good: number; + now_bad: number; + now_poor: number; + now_combo: number; + now_fast: number; + now_slow: number; + option: number; + option_2: number; + ghost_gauge_data: string; + gauge_type: number; + result_type: number; + is_special_result: number; + + update_date: number; +} diff --git a/iidx@asphyxia/models/arena.ts b/iidx@asphyxia/models/arena.ts new file mode 100644 index 0000000..fcfdc21 --- /dev/null +++ b/iidx@asphyxia/models/arena.ts @@ -0,0 +1,46 @@ +export const IIDX_CPUS = [ + [ + [6, 4, 5, 0], + [7, 5, 6, 0], + [8, 6, 6, 0], + [9, 6, 7, 0], + [10, 7, 7, 0], + [10, 7, 8, 0], + [11, 8, 8, 0], + [11, 8, 9, 0], + [12, 9, 9, 0], + [12, 9, 10, 0], + [13, 9, 10, 0], + [13, 10, 10, 0], + [14, 10, 11, 0], + [14, 10, 11, 1], + [15, 11, 11, 1], + [15, 11, 12, 1], + [16, 11, 12, 1], + [16, 11, 12, 1], + [17, 12, 12, 1], + [18, 12, 12, 1], + ], + [ + [6, 3, 5, 0], + [7, 3, 5, 0], + [8, 4, 5, 0], + [8, 4, 5, 0], + [9, 5, 6, 0], + [9, 5, 6, 0], + [10, 6, 6, 0], + [10, 6, 7, 0], + [11, 7, 7, 0], + [11, 7, 8, 0], + [12, 8, 8, 0], + [12, 8, 9, 0], + [13, 9, 9, 0], + [13, 9, 10, 0], + [14, 9, 10, 0], + [15, 10, 10, 0], + [15, 10, 11, 0], + [16, 11, 11, 1], + [17, 11, 12, 1], + [18, 12, 12, 1], + ], +]; diff --git a/iidx@asphyxia/models/badge.ts b/iidx@asphyxia/models/badge.ts new file mode 100644 index 0000000..5082980 --- /dev/null +++ b/iidx@asphyxia/models/badge.ts @@ -0,0 +1,8 @@ +export interface badge { + collection: "badge"; + version: number; + + category_name: string; + flg_id: number; + flg: number; +} diff --git a/iidx@asphyxia/models/custom.ts b/iidx@asphyxia/models/custom.ts new file mode 100644 index 0000000..a0fd75c --- /dev/null +++ b/iidx@asphyxia/models/custom.ts @@ -0,0 +1,117 @@ +export interface custom { + collection: "custom"; + + version: number; + + // skin // + frame: number; + turntable: number; + note_burst: number; + menu_music: number; + lane_cover: number; + category_vox: number; + note_skin: number; + full_combo_splash: number; + disable_musicpreview: boolean; + + note_beam: number; + judge_font: number; + pacemaker_cover: number; + vefx_lock: boolean; + effect: number; + bomb_size: number; + disable_hcn_color: boolean; + first_note_preview: number; + + skin_customize_flg: number[]; + + note_size: number; // epolis // + lift_cover: number; + note_beam_size: number; + + // appendsettings + rank_folder: boolean; + clear_folder: boolean; + diff_folder: boolean; + alpha_folder: boolean; + rival_folder: boolean; + rival_battle_folder: boolean; + rival_info: boolean; + hide_playcount: boolean; + disable_graph_cutin: boolean; + classic_hispeed: boolean; + rival_played_folder: boolean; + hide_iidxid: boolean; + disable_beginner_option: boolean; + + // qpro // + qpro_head: number; + qpro_hair: number; + qpro_face: number; + qpro_hand: number; + qpro_body: number; + qpro_back: number; // epolis // + + // qpro_secret (heroic verse) // + qpro_secret_head: string[]; + qpro_secret_hair: string[]; + qpro_secret_face: string[]; + qpro_secret_hand: string[]; + qpro_secret_body: string[]; + qpro_secret_back: string[]; // epolis // +} + +export const default_custom = { + frame: 0, + turntable: 0, + note_burst: 0, + menu_music: 0, + lane_cover: 0, + category_vox: 0, + note_skin: 0, + full_combo_splash: 0, + disable_musicpreview: false, + + note_beam: 0, + judge_font: 0, + pacemaker_cover: 0, + vefx_lock: false, + effect: 0, + bomb_size: 0, + disable_hcn_color: false, + first_note_preview: 0, + + skin_customize_flg: Array(3).fill(-1), + + note_size: 0, + lift_cover: 0, + note_beam_size: 0, + + rank_folder: true, + clear_folder: true, + diff_folder: true, + alpha_folder: true, + rival_folder: true, + rival_battle_folder: true, + rival_info: true, + hide_playcount: false, + disable_graph_cutin: false, + classic_hispeed: false, + rival_played_folder: true, + hide_iidxid: false, + disable_beginner_option: false, + + qpro_head: 0, + qpro_hair: 0, + qpro_face: 0, + qpro_hand: 0, + qpro_body: 0, + qpro_back: 0, + + qpro_secret_head: Array(7).fill("-1"), + qpro_secret_hair: Array(7).fill("-1"), + qpro_secret_face: Array(7).fill("-1"), + qpro_secret_hand: Array(7).fill("-1"), + qpro_secret_body: Array(7).fill("-1"), + qpro_secret_back: Array(7).fill("-1"), +} diff --git a/iidx@asphyxia/models/event.ts b/iidx@asphyxia/models/event.ts new file mode 100644 index 0000000..784db38 --- /dev/null +++ b/iidx@asphyxia/models/event.ts @@ -0,0 +1,14 @@ +export interface blueboss { + level: number; + gauge: number; + item: number; + item_flg: number; + row0: number; + row1: number; + column0: number; + column1: number; + general: number; + first_flg: number; + sector: number; + durability: string; +} diff --git a/iidx@asphyxia/models/extraboss.ts b/iidx@asphyxia/models/extraboss.ts new file mode 100644 index 0000000..bf3e7cc --- /dev/null +++ b/iidx@asphyxia/models/extraboss.ts @@ -0,0 +1,10 @@ +export interface extra_boss { + collection: "extra_boss"; + version: number; + phase: number; + + extra: number; + extra_b: number; + onemore: number; + onemore_b: number; +} diff --git a/iidx@asphyxia/models/favorite.ts b/iidx@asphyxia/models/favorite.ts new file mode 100644 index 0000000..0837c26 --- /dev/null +++ b/iidx@asphyxia/models/favorite.ts @@ -0,0 +1,10 @@ +export interface extra_favorite { + collection: "extra_favorite"; + version: number; + folder_id: number; + + sp_mlist: string | Buffer; + sp_clist: string | Buffer; + dp_mlist: string | Buffer; + dp_clist: string | Buffer; +} diff --git a/iidx@asphyxia/models/grade.ts b/iidx@asphyxia/models/grade.ts new file mode 100644 index 0000000..442de49 --- /dev/null +++ b/iidx@asphyxia/models/grade.ts @@ -0,0 +1,10 @@ +export interface grade { + collection: "grade"; + version: number; + + style: number; + gradeId: number; + + maxStage: number; + archive: number; // typo: achieve // +} diff --git a/iidx@asphyxia/models/lightning.ts b/iidx@asphyxia/models/lightning.ts new file mode 100644 index 0000000..19f39df --- /dev/null +++ b/iidx@asphyxia/models/lightning.ts @@ -0,0 +1,171 @@ +export interface lightning_settings { + collection: "lightning_settings"; + version: number; + + headphone_vol: number; + + resistance_sp_left: number; + resistance_sp_right: number; + resistance_dp_left: number; + resistance_dp_right: number; + + slider: number[]; + light: number[]; + concentration: number; + + keyboard_kind: number; // epolis // + brightness: number; +} + +export interface lightning_playdata { + collection: "lightning_playdata"; + + version: number; + + sp_num: number; + dp_num: number; +} + +export interface lightning_custom { + collection: "lightning_custom"; + version: number; + + premium_skin: number; + premium_bg: number; +} + +export interface eisei_grade { + collection: "eisei_grade"; + version: number; + + clear_type: number; + grade_id: number; + grade_type: number; + stage_num: number; + option: number; + + past_achievement: number[]; + past_selected_course: number[]; + max_past_achievement: number[]; + max_past_selected_course: number[]; +} + +export interface eisei_grade_data { + clear_type: number; + grade_id: number; + grade_type: number; + stage_num: number; + option: number; + + past: number[]; + selected_course: number[]; + max_past: number[]; + max_selected_course: number[]; +} + +export interface lightning_musicmemo { + collection: "lightning_musicmemo"; + version: number; + + music_idx: number; + play_style: number; + music_id: number; +} + +export interface musicmemo_data { + music_idx: number; + play_style: number; + music_id: number; +} + +export interface lightning_musicmemo_new { + collection: "lightning_musicmemo_new"; + version: number; + + folder_idx: number; + folder_name: string; + play_style: number; + music_ids: number[]; +} + +export interface musicmemo_data_new { + folder_idx: number; + folder_name: string; + play_style: number; + music_ids: number[]; +} + +export interface lightning_musicfilter { + collection: "lightning_musicfilter"; + version: number; + + play_style: number; + folder_id: number; + filter_id: number; + is_valid: boolean; + value0: number; + value1: number; +} + +export interface lightning_musicfilter_sort { + collection: "lightning_musicfilter_sort"; + version: number; + + play_style: number; + folder_id: number; + sort: number; +} + +export interface musicfilter_data { + play_style: number; + folder_id: number; + filter_id: number; + is_valid: number; + value0: number; + value1: number; +} + +export interface musicfilter_sort_data { + play_style: number; + folder_id: number; + sort: number; +} + +export const lm_playdata = { + sp_num: 0, + dp_num: 0, +}; + +export const lm_settings = { + headphone_vol: 10, + + resistance_sp_left: 4, + resistance_sp_right: 4, + resistance_dp_left: 4, + resistance_dp_right: 4, + + slider: [7, 7, 7, 7, 7, 15, 15], + light: [1, 1, 1, 1, 1, 1], + concentration: 0, +}; + +export const lm_settings_new = { + headphone_vol: 10, + + resistance_sp_left: 4, + resistance_sp_right: 4, + resistance_dp_left: 4, + resistance_dp_right: 4, + + slider: [7, 7, 7, 7, 7, 15, 15], + light: [1, 1, 1, 1, 1, 1, 1, 1, 1, 1], + concentration: 0, + + keyboard_kind: 10, // epolis // + brightness: 2, +} + +export const lm_customdata = { + premium_skin: 0, // Icons // + premium_bg: 0, // Background (epolis) // +} diff --git a/iidx@asphyxia/models/pcdata.ts b/iidx@asphyxia/models/pcdata.ts new file mode 100644 index 0000000..3118ab2 --- /dev/null +++ b/iidx@asphyxia/models/pcdata.ts @@ -0,0 +1,1710 @@ +export interface pcdata { + collection: "pcdata"; + + version: number; + + spnum: number; + dpnum: number; + sach: number; + dach: number; + sflg0: number; + sflg1: number; + sflg2: number; + gno: number; + timing: number; + sdhd: number; + sp_opt: number; + dp_opt: number; + dp_opt2: number; + mcomb: number; + ncomb: number; + mode: number; + category: number; // attribute (Pinky Crush) // + pmode: number; + liflen: number; + judge: number; // attribute (tricoro) // + opstyle: number; + hispeed: number; + judgeAdj: number; + + notes: number; // attribute (Lincle) // + pase: number; + sdtype: number; + help: number; + fcombo: number[]; + ngrade: number; // attribute (BISTROVER) // + rtype: number; // attribute (Heroic Verse) // + bgnflg: number; // attribute (Pinky Crush) // + player_kind: number; // attribute (EPOLIS) // + gpos: number; + + s_sorttype: number; + d_sorttype: number; + s_pace: number; + d_pace: number; + s_gno: number; + d_gno: number; + s_sub_gno: number; + d_sub_gno: number; + s_gtype: number; + d_gtype: number; + s_sdlen: number; + d_sdlen: number; + s_sdtype: number; + d_sdtype: number; + s_timing: number; + d_timing: number; + s_notes: number; + d_notes: number; + s_judge: number; + d_judge: number; + s_judgeAdj: number; + d_judgeAdj: number; + s_hispeed: number; + d_hispeed: number; + s_liflen: number; + d_liflen: number; + s_disp_judge: number; + d_disp_judge: number; + s_opstyle: number; + d_opstyle: number; + s_exscore: number; // PENDUAL // + d_exscore: number; + s_largejudge: number; + d_largejudge: number; + s_graph_score: number; + d_graph_score: number; + s_auto_scrach: number; + d_auto_scrach: number; + s_gauge_disp: number; + d_gauge_disp: number; + s_lane_brignt: number; + d_lane_brignt: number; + s_camera_layout: number; + d_camera_layout: number; + s_ghost_score: number; + d_ghost_score: number; + s_tsujigiri_disp: number; + d_tsujigiri_disp: number; + s_auto_adjust: number; // CastHour // + d_auto_adjust: number; + s_timing_split: number; // RESIDENT // + d_timing_split: number; + s_visualization: number; + d_visualization: number; + s_classic_hispeed: number; // EPOLIS // + d_classic_hispeed: number; + movie_thumbnail: number; // Pinky Crush // + + secret_flg1: string[]; // secret (Heroic Verse) // + secret_flg2: string[]; + secret_flg3: string[]; + secret_flg4: string[]; + secret_flg5: string[]; // secret (Pinky Crush) // + + leggendaria_flg1: string[]; // leggendaria (BISTROVER) // + leggendaria_flg2: string[]; // leggendaria (Pinky Crush) // + + dr_sprank: number[]; // djrank (Heroic Verse) // + dr_sppoint: number[]; + dr_dprank: number[]; + dr_dppoint: number[]; + + nr_spradar: number[]; // notes_radar (Heroic Verse) // + nr_dpradar: number[]; + + achi_lastweekly: number; // achievement (Heroic Verse) // + achi_pack: number; + achi_packcomp: number; + achi_rivalcrush: number; + achi_visitflg: number; + achi_weeklynum: number; + achi_trophy: string[]; // for somewhat reason save throws lots of elements but sending it as-is throws error // + + deller: number; // in-game currency (Lincle) // + orb: number; // v-disc (SPADA) // + present_orb: number; // v-disc but not sure what it does (Rootage) // + + sgid: number; // grade // + dgid: number; + + gold_now: number; + gold_all: number; + gold_use: number; + + jewel_num: string; + jewel_bnum: number[]; + party: number[]; + + jpoint: number; // jpoint (Lincle) // + + st_sp_ach: number; // step (Lincle) // + st_sp_dif: number; + st_dp_ach: number; + st_dp_dif: number; + + st_sp_hdpt: number; // tricoro // + st_dp_hdpt: number; + st_sp_round: number; + st_dp_round: number; + st_review: number; + st_stamp: string | Buffer; // save as base64 string, sent as buffer // + st_help: string | Buffer; + + st_damage: number; // 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_level_h: number; // Pinky Crush // + st_dp_level_h: number; + st_sp_level_exh: number; // Pinky Crush // + st_dp_level_exh: number; + st_sp_mplay: number; + st_dp_mplay: number; + st_last_select: number; + st_album: string | Buffer; // save as base64 string, sent as buffer // + + st_is_secret: number; // PENDUAL // + st_age_list: number; + st_is_present: number; + st_is_future: number; + + st_friendship: number; // copula // + st_station_clear: number; + st_station_play: number; + st_mission_gauge: number; + st_tokimeki: string | Buffer; // save as base64 string, sent as buffer // + + st_point: number; // Cannon Ballers // + + st_enemy_damage: number; // Heroic Verse // + st_progress: number; + st_is_track_ticket: boolean; + st_sp_mission_point: number; + st_dp_mission_point: number; + st_sp_dj_mission_level: number; + st_dp_dj_mission_level: number; + st_sp_clear_mission_level: number; + st_dp_clear_mission_level: number; + st_sp_dj_mission_clear: number; + st_dp_dj_mission_clear: number; + st_sp_clear_mission_clear: number; + st_dp_clear_mission_clear: number; + st_tips_read_list: number; + + st_total_point: number; // CastHour // + st_enemy_defeat_flg: number; + st_mission_clear_num: number; + + st_sp_fluctuation: number; // RESIDENT // + st_dp_fluctuation: number; + + event_play_num: number; // event (HEROIC VERSE) // + event_last_select_id: number; + event_last_select_type: number; // CastHour // + event_story_prog: number; // BISTROVER // + event_failed_num: number; + event_skip: boolean; + + type: number[]; // history (Lincle) // + time: number[]; + p0: number[]; + p1: number[]; + p2: number[]; + p3: number[]; + p4: number[]; + + sp_mlist: string | Buffer; // favorite (SPADA), save as base64 string, sent as buffer // + sp_clist: string | Buffer; + dp_mlist: string | Buffer; + dp_clist: string | Buffer; + + eb_keyorb: number; // extra boss (Heroic Verse) // + eb_bossorb0: number; + eb_bossorb1: number; + eb_bossorb2: number; + eb_bossorb3: number; + eb_bossorb4: number; + eb_bossorb5: number; + eb_bossorb6: number; + eb_bossorb7: number; + eb_bossorb8: number; + + tourism_secret_flg1: string[]; + tourism_secret_flg2: string[]; +} + +export const GLD_pcdata = { + version: 14, + + spnum: 0, + dpnum: 0, + sach: 0, + dach: 0, + sflg0: 0, + sflg1: 0, + sflg2: 0, + gno: 0, + sdhd: 0, + sp_opt: 0, + dp_opt: 0, + dp_opt2: 0, + mcomb: 0, + ncomb: 0, + mode: 0, + pmode: 0, + + sgid: -1, + dgid: -1, + + gold_now: 0, + gold_all: 0, + gold_use: 0, +} + +export const HDD_pcdata = { + version: 15, + + spnum: 0, + dpnum: 0, + sach: 0, + dach: 0, + sflg0: 0, + sflg1: 0, + sflg2: 0, + gno: 0, + sdhd: 0, + sp_opt: 0, + dp_opt: 0, + dp_opt2: 0, + mcomb: 0, + ncomb: 0, + mode: 0, + pmode: 0, + + sgid: -1, + dgid: -1, +} + +export const I00_pcdata = { + version: 16, + + spnum: 0, + dpnum: 0, + sach: 0, + dach: 0, + sflg0: 0, + sflg1: 0, + sflg2: 0, + gno: 0, + sdhd: 0, + sp_opt: 0, + dp_opt: 0, + dp_opt2: 0, + mcomb: 0, + ncomb: 0, + mode: 0, + pmode: 0, + liflen: 0, + + jewel_num: "0", + jewel_bnum: Array(18).fill(0), + fcombo: Array(2).fill(0), + + sgid: -1, + dgid: -1, +} + +export const JDJ_pcdata = { + version: 17, + + spnum: 0, + dpnum: 0, + sach: 0, + dach: 0, + sflg0: 0, + sflg1: 0, + gno: 0, + timing: 0, + sdhd: 0, + sp_opt: 0, + dp_opt: 0, + dp_opt2: 0, + mcomb: 0, + ncomb: 0, + mode: 0, + pmode: 0, + liflen: 0, + + fcombo: Array(2).fill(0), + party: Array(24).fill(0), + + sgid: -1, + dgid: -1, +} + +export const JDZ_pcdata = { + version: 18, + + spnum: 0, + dpnum: 0, + sach: 0, + dach: 0, + sflg0: 0, + sflg1: 0, + gno: 0, + timing: 0, + sdhd: 0, + sp_opt: 0, + dp_opt: 0, + dp_opt2: 0, + mcomb: 0, + ncomb: 0, + mode: 0, + pmode: 0, + liflen: 0, + + fcombo: Array(2).fill(0), + + sgid: -1, + dgid: -1, +} + +export const KDZ_pcdata = { + version: 19, + + spnum: 0, + dpnum: 0, + sach: 0, + dach: 0, + sflg0: 0, + sflg1: 0, + help: 1, + gno: 0, + timing: 0, + sdhd: 0, + sdtype: 0, + notes: 0, + pase: 0, + sp_opt: 0, + dp_opt: 0, + dp_opt2: 0, + mode: 0, + pmode: 0, + fcombo: Array(2).fill(0), + liflen: 0, + + sgid: -1, + dgid: -1, + + jpoint: 0, + + st_sp_ach: -1, + st_sp_dif: -1, + st_dp_ach: -1, + st_dp_dif: -1, + + type: Array(30).fill(255), + time: Array(30).fill(0), + p0: Array(30).fill(-1), + p1: Array(30).fill(-1), + p2: Array(30).fill(-1), + p3: Array(30).fill(-1), + p4: Array(30).fill(-1), +} + +export const LDJ_pcdata = { + version: 20, + + spnum: 0, + dpnum: 0, + sach: 0, + dach: 0, + help: 0, + gno: 0, + gpos: 0, + timing: 0, + sdhd: 0, + sdtype: 0, + notes: 0, + pase: 0, + sp_opt: 0, + dp_opt: 0, + dp_opt2: 0, + mode: 0, + pmode: 0, + liflen: 0, + judge: 0, + opstyle: 0, + hispeed: 0, + judgeAdj: 0, + fcombo: Array(2).fill(0), + + sgid: -1, + dgid: -1, + + st_sp_ach: 0, + st_sp_hdpt: 0, + st_sp_level: 0, + st_sp_round: 0, + st_sp_mplay: 0, + st_dp_ach: 0, + st_dp_hdpt: 0, + st_dp_level: 0, + st_dp_round: 0, + st_dp_mplay: 0, + st_review: 0, + st_stamp: null, + st_help: null, + + achi_lastweekly: 0, + achi_pack: 0, + achi_packcomp: 0, + achi_rivalcrush: 0, + achi_visitflg: 0, + achi_weeklynum: 0, + achi_trophy: Array(20).fill("0"), + + deller: 0, + 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(3).fill("-1"), + secret_flg2: Array(3).fill("-1"), + secret_flg3: Array(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: null, + + achi_pack: 0, + achi_packcomp: 0, + achi_lastweekly: 0, + achi_weeklynum: 0, + achi_visitflg: 0, + achi_rivalcrush: 0, + achi_trophy: Array(20).fill("0"), + + deller: 0, + orb: 0, +} + +export const IIDX22_pcdata = { + version: 22, + + 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_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, + s_exscore: 0, + d_exscore: 0, + s_largejudge: 0, + d_largejudge: 0, + + secret_flg1: Array(3).fill("-1"), + secret_flg2: Array(3).fill("-1"), + secret_flg3: Array(3).fill("-1"), + + sgid: -1, + dgid: -1, + + st_damage: 0, + st_defeat: 0, + st_progress: 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_age_list: 0, + st_is_secret: 0, + st_is_present: 0, + st_is_future: 0, + st_album: null, + + achi_pack: 0, + achi_packcomp: 0, + achi_lastweekly: 0, + achi_weeklynum: 0, + achi_visitflg: 0, + achi_rivalcrush: 0, + achi_trophy: Array(20).fill("0"), + + deller: 0, + orb: 0, +} + +export const IIDX23_pcdata = { + version: 23, + + 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_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, + s_exscore: 0, + d_exscore: 0, + s_largejudge: 0, + d_largejudge: 0, + + secret_flg1: Array(3).fill("-1"), + secret_flg2: Array(3).fill("-1"), + secret_flg3: Array(3).fill("-1"), + + sgid: -1, + dgid: -1, + + st_friendship: 0, + st_progress: 0, + st_station_clear: 0, + st_station_play: 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_mission_gauge: 0, + st_tokimeki: null, + + achi_pack: 0, + achi_packcomp: 0, + achi_lastweekly: 0, + achi_weeklynum: 0, + achi_visitflg: 0, + achi_rivalcrush: 0, + achi_trophy: Array(20).fill("0"), + + deller: 0, + orb: 0, +} + +export const IIDX24_pcdata = { + version: 24, + + spnum: 0, + dpnum: 0, + sach: 0, + dach: 0, + + d_disp_judge: 0, + d_exscore: 0, + d_gno: 0, + d_graph_score: 0, + d_gtype: 0, + d_hispeed: 0, + d_judge: 0, + d_judgeAdj: 0, + d_liflen: 0, + d_notes: 0, + d_opstyle: 0, + d_pace: 0, + d_sdlen: 0, + d_sdtype: 0, + d_sorttype: 0, + d_timing: 0, + dp_opt: 0, + dp_opt2: 0, + gpos: 0, + mode: 0, + pmode: 0, + rtype: 0, + s_disp_judge: 0, + s_exscore: 0, + s_gno: 0, + s_graph_score: 0, + s_gtype: 0, + s_hispeed: 0, + s_judge: 0, + s_judgeAdj: 0, + s_liflen: 0, + s_notes: 0, + s_opstyle: 0, + s_pace: 0, + s_sdlen: 0, + s_sdtype: 0, + s_sorttype: 0, + s_timing: 0, + sp_opt: 0, + + secret_flg1: Array(3).fill("-1"), + secret_flg2: Array(3).fill("-1"), + secret_flg3: Array(3).fill("-1"), + + sgid: -1, + dgid: -1, + + dr_sprank: Array(15).fill(0), + dr_sppoint: Array(15).fill(0), + dr_dprank: Array(15).fill(0), + dr_dppoint: Array(15).fill(0), + + event_play_num: 0, + event_last_select_id: -1, + event2_play_num: 0, + event2_last_select_id: -1, + + st_enemy_damage: 0, + st_progress: 0, + st_enemy_defeat_flg: 0, + st_sp_level: 0, + st_dp_level: 0, + st_sp_mplay: 0, + st_dp_mplay: 0, + + achi_pack: 0, + achi_packcomp: 0, + achi_lastweekly: 0, + achi_weeklynum: 0, + achi_visitflg: 0, + achi_rivalcrush: 0, + achi_trophy: Array(20).fill("0"), + + deller: 0, + orb: 0, +} + +export const IIDX25_pcdata = { + version: 25, + + spnum: 0, + dpnum: 0, + sach: 0, + dach: 0, + + d_auto_scrach: 0, + d_camera_layout: 0, + d_disp_judge: 0, + d_exscore: 0, + d_gauge_disp: 0, + d_gno: 0, + d_graph_score: 0, + d_gtype: 0, + d_hispeed: 0, + d_judge: 0, + d_judgeAdj: 0, + d_lane_brignt: 0, + d_liflen: 0, + d_notes: 0, + d_opstyle: 0, + d_pace: 0, + d_sdlen: 0, + d_sdtype: 0, + d_sorttype: 0, + d_timing: 0, + dp_opt: 0, + dp_opt2: 0, + gpos: 0, + mode: 0, + pmode: 0, + rtype: 0, + s_auto_scrach: 0, + s_camera_layout: 0, + s_disp_judge: 0, + s_exscore: 0, + s_gauge_disp: 0, + s_gno: 0, + s_graph_score: 0, + s_gtype: 0, + s_hispeed: 0, + s_judge: 0, + s_judgeAdj: 0, + s_lane_brignt: 0, + s_liflen: 0, + s_notes: 0, + s_opstyle: 0, + s_pace: 0, + s_sdlen: 0, + s_sdtype: 0, + s_sorttype: 0, + s_timing: 0, + sp_opt: 0, + + secret_flg1: Array(3).fill("-1"), + secret_flg2: Array(3).fill("-1"), + secret_flg3: Array(3).fill("-1"), + + sgid: -1, + dgid: -1, + + dr_sprank: Array(15).fill(0), + dr_sppoint: Array(15).fill(0), + dr_dprank: Array(15).fill(0), + dr_dppoint: Array(15).fill(0), + + st_enemy_damage: 0, + st_progress: 0, + st_point: 0, + st_enemy_defeat_flg: 0, + st_sp_level: 0, + st_dp_level: 0, + st_sp_mplay: 0, + st_dp_mplay: 0, + + achi_lastweekly: 0, + achi_pack: 0, + achi_packcomp: 0, + achi_rivalcrush: 0, + achi_visitflg: 0, + achi_weeklynum: 0, + achi_trophy: Array(20).fill("0"), + + deller: 0, + orb: 0, +} + +export const IIDX26_pcdata = { + version: 26, + + spnum: 0, + dpnum: 0, + sach: 0, + dach: 0, + + d_auto_scrach: 0, + d_camera_layout: 0, + d_disp_judge: 0, + d_gauge_disp: 0, + d_ghost_score: 0, + d_gno: 0, + d_graph_score: 0, + d_gtype: 0, + d_hispeed: 0, + d_judge: 0, + d_judgeAdj: 0, + d_lane_brignt: 0, + d_liflen: 0, + d_notes: 0, + d_opstyle: 0, + d_pace: 0, + d_sdlen: 0, + d_sdtype: 0, + d_sorttype: 0, + d_timing: 0, + d_tsujigiri_disp: 0, + dp_opt: 0, + dp_opt2: 0, + gpos: 0, + mode: 0, + pmode: 0, + rtype: 0, + s_auto_scrach: 0, + s_camera_layout: 0, + s_disp_judge: 0, + s_gauge_disp: 0, + s_ghost_score: 0, + s_gno: 0, + s_graph_score: 0, + s_gtype: 0, + s_hispeed: 0, + s_judge: 0, + s_judgeAdj: 0, + s_lane_brignt: 0, + s_liflen: 0, + s_notes: 0, + s_opstyle: 0, + s_pace: 0, + s_sdlen: 0, + s_sdtype: 0, + s_sorttype: 0, + s_timing: 0, + s_tsujigiri_disp: 0, + sp_opt: 0, + + secret_flg1: Array(3).fill("-1"), + secret_flg2: Array(3).fill("-1"), + secret_flg3: Array(3).fill("-1"), + + sgid: -1, + dgid: -1, + + dr_sprank: Array(15).fill(0), + dr_sppoint: Array(15).fill(0), + dr_dprank: Array(15).fill(0), + dr_dppoint: Array(15).fill(0), + + st_enemy_damage: 0, + st_progress: 0, + st_is_track_ticket: false, + st_sp_level: 0, + st_dp_level: 0, + st_sp_mission_point: 0, + st_dp_mission_point: 0, + st_sp_dj_mission_level: 0, + st_dp_dj_mission_level: 0, + st_sp_clear_mission_level: 0, + st_dp_clear_mission_level: 0, + st_sp_dj_mission_clear: 0, + st_dp_dj_mission_clear: 0, + st_sp_clear_mission_clear: 0, + st_dp_clear_mission_clear: 0, + st_sp_mplay: 0, + st_dp_mplay: 0, + st_tips_read_list: 0, + + achi_lastweekly: 0, + achi_pack: 0, + achi_packcomp: 0, + achi_rivalcrush: 0, + achi_visitflg: 0, + achi_weeklynum: 0, + achi_trophy: Array(20).fill("0"), + + deller: 0, + orb: 0, + present_orb: 0, + + eb_bossorb0: 0, + eb_bossorb1: 0, + eb_bossorb2: 0, + eb_bossorb3: 0, + eb_bossorb4: 0, + eb_bossorb5: 0, + eb_bossorb6: 0, + eb_bossorb7: 0, + eb_bossorb8: 0, + + event_play_num: 0, + event_last_select_id: -1, + event2_play_num: 0, + event2_last_select_id: -1, +} + +export const IIDX27_pcdata = { + version: 27, + + 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, + s_graph_score: 0, + d_graph_score: 0, + s_auto_scrach: 0, + d_auto_scrach: 0, + s_gauge_disp: 0, + d_gauge_disp: 0, + s_lane_brignt: 0, + d_lane_brignt: 0, + s_camera_layout: 0, + d_camera_layout: 0, + s_ghost_score: 0, + d_ghost_score: 0, + s_tsujigiri_disp: 0, + d_tsujigiri_disp: 0, + + secret_flg1: Array(3).fill("-1"), + secret_flg2: Array(3).fill("-1"), + secret_flg3: Array(3).fill("-1"), + secret_flg4: Array(3).fill("-1"), + + dr_sprank: Array(15).fill(0), + dr_sppoint: Array(15).fill(0), + dr_dprank: Array(15).fill(0), + dr_dppoint: Array(15).fill(0), + + nr_spradar: Array(6).fill(0), + nr_dpradar: Array(6).fill(0), + + st_enemy_damage: 0, + st_progress: 0, + st_is_track_ticket: false, + st_sp_level: 0, + st_dp_level: 0, + st_sp_mission_point: 0, + st_dp_mission_point: 0, + st_sp_dj_mission_level: 0, + st_dp_dj_mission_level: 0, + st_sp_clear_mission_level: 0, + st_dp_clear_mission_level: 0, + st_sp_dj_mission_clear: 0, + st_dp_dj_mission_clear: 0, + st_sp_clear_mission_clear: 0, + st_dp_clear_mission_clear: 0, + st_sp_mplay: 0, + st_dp_mplay: 0, + st_tips_read_list: 0, + + sgid: -1, + dgid: -1, + + achi_lastweekly: 0, + achi_pack: 0, + achi_packcomp: 0, + achi_rivalcrush: 0, + achi_visitflg: 0, + achi_weeklynum: 0, + achi_trophy: Array(20).fill("0"), + + deller: 0, + orb: 0, + present_orb: 0, + + event_play_num: 0, + event_last_select_id: -1, + + eb_keyorb: 0, + eb_bossorb0: 0, + eb_bossorb1: 0, + eb_bossorb2: 0, + eb_bossorb3: 0, + eb_bossorb4: 0, + eb_bossorb5: 0, + eb_bossorb6: 0, + eb_bossorb7: 0, +} + +export const IIDX28_pcdata = { + version: 28, + + spnum: 0, + dpnum: 0, + sach: 0, + dach: 0, + mode: 0, + pmode: 0, + ngrade: 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, + s_graph_score: 0, + d_graph_score: 0, + s_auto_scrach: 0, + d_auto_scrach: 0, + s_gauge_disp: 0, + d_gauge_disp: 0, + s_lane_brignt: 0, + d_lane_brignt: 0, + s_camera_layout: 0, + d_camera_layout: 0, + s_ghost_score: 0, + d_ghost_score: 0, + s_tsujigiri_disp: 0, + d_tsujigiri_disp: 0, + + secret_flg1: Array(3).fill("-1"), + secret_flg2: Array(3).fill("-1"), + secret_flg3: Array(3).fill("-1"), + secret_flg4: Array(3).fill("-1"), + + leggendaria_flg1: Array(3).fill("-1"), + + dr_sprank: Array(15).fill(0), + dr_sppoint: Array(15).fill(0), + dr_dprank: Array(15).fill(0), + dr_dppoint: Array(15).fill(0), + + nr_spradar: Array(6).fill(0), + nr_dpradar: Array(6).fill(0), + + st_enemy_damage: 0, + st_progress: 0, + st_is_track_ticket: false, + st_sp_level: 0, + st_dp_level: 0, + st_sp_mission_point: 0, + st_dp_mission_point: 0, + st_sp_dj_mission_level: 0, + st_dp_dj_mission_level: 0, + st_sp_clear_mission_level: 0, + st_dp_clear_mission_level: 0, + st_sp_dj_mission_clear: 0, + st_dp_dj_mission_clear: 0, + st_sp_clear_mission_clear: 0, + st_dp_clear_mission_clear: 0, + st_sp_mplay: 0, + st_dp_mplay: 0, + st_tips_read_list: 0, + + sgid: -1, + dgid: -1, + + achi_lastweekly: 0, + achi_pack: 0, + achi_packcomp: 0, + achi_rivalcrush: 0, + achi_visitflg: 0, + achi_weeklynum: 0, + achi_trophy: Array(20).fill("0"), + + deller: 0, + orb: 0, + present_orb: 0, + + event_play_num: 0, + event_last_select_id: -1, + event_story_prog: 0, + event_failed_num: 0, + + eb_keyorb: 0, + eb_bossorb0: 0, + eb_bossorb1: 0, + eb_bossorb2: 0, + eb_bossorb3: 0, + eb_bossorb4: 0, + eb_bossorb5: 0, + eb_bossorb6: 0, + eb_bossorb7: 0, +} + +export const IIDX29_pcdata = { + version: 29, + + spnum: 0, + dpnum: 0, + sach: 0, + dach: 0, + mode: 0, + pmode: 0, + ngrade: 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, + s_graph_score: 0, + d_graph_score: 0, + s_auto_scrach: 0, + d_auto_scrach: 0, + s_gauge_disp: 0, + d_gauge_disp: 0, + s_lane_brignt: 0, + d_lane_brignt: 0, + s_camera_layout: 0, + d_camera_layout: 0, + s_ghost_score: 0, + d_ghost_score: 0, + s_tsujigiri_disp: 0, + d_tsujigiri_disp: 0, + s_auto_adjust: 0, + d_auto_adjust: 0, + + secret_flg1: Array(3).fill("-1"), + secret_flg2: Array(3).fill("-1"), + secret_flg3: Array(3).fill("-1"), + secret_flg4: Array(3).fill("-1"), + + leggendaria_flg1: Array(3).fill("-1"), + + dr_sprank: Array(15).fill(0), + dr_sppoint: Array(15).fill(0), + dr_dprank: Array(15).fill(0), + dr_dppoint: Array(15).fill(0), + + nr_spradar: Array(6).fill(0), + nr_dpradar: Array(6).fill(0), + + st_enemy_damage: 0, + st_progress: 0, + st_total_point: 0, + st_enemy_defeat_flg: 0, + st_is_track_ticket: false, + st_sp_level: 0, + st_dp_level: 0, + st_sp_mplay: 0, + st_dp_mplay: 0, + st_tips_read_list: 0, + st_mission_clear_num: 0, + + sgid: -1, + dgid: -1, + + achi_lastweekly: 0, + achi_pack: 0, + achi_packcomp: 0, + achi_rivalcrush: 0, + achi_visitflg: 0, + achi_weeklynum: 0, + achi_trophy: Array(20).fill("0"), + + deller: 0, + orb: 0, + present_orb: 0, + + event_play_num: 0, + event_last_select_id: -1, + event_last_select_type: -1, +} + +export const IIDX30_pcdata = { + version: 30, + + spnum: 0, + dpnum: 0, + sach: 0, + dach: 0, + mode: 0, + pmode: 0, + ngrade: 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, + s_graph_score: 0, + d_graph_score: 0, + s_auto_scrach: 0, + d_auto_scrach: 0, + s_gauge_disp: 0, + d_gauge_disp: 0, + s_lane_brignt: 0, + d_lane_brignt: 0, + s_camera_layout: 0, + d_camera_layout: 0, + s_ghost_score: 0, + d_ghost_score: 0, + s_tsujigiri_disp: 0, + d_tsujigiri_disp: 0, + s_auto_adjust: 0, + d_auto_adjust: 0, + s_timing_split: 0, + d_timing_split: 0, + s_visualization: 0, + d_visualization: 0, + + secret_flg1: Array(3).fill("-1"), + secret_flg2: Array(3).fill("-1"), + secret_flg3: Array(3).fill("-1"), + secret_flg4: Array(3).fill("-1"), + + leggendaria_flg1: Array(3).fill("-1"), + + tourism_secret_flg1: Array(3).fill("-1"), + tourism_secret_flg2: Array(3).fill("-1"), + + dr_sprank: Array(15).fill(0), + dr_sppoint: Array(15).fill(0), + dr_dprank: Array(15).fill(0), + dr_dppoint: Array(15).fill(0), + + nr_spradar: Array(6).fill(0), + nr_dpradar: Array(6).fill(0), + + st_enemy_damage: 0, + st_progress: 0, + st_total_point: 0, + st_enemy_defeat_flg: 0, + st_is_track_ticket: false, + st_sp_level: 0, + st_dp_level: 0, + st_sp_fluctuation: 0, + st_dp_fluctuation: 0, + st_mission_clear_num: 0, + st_sp_mplay: 0, + st_dp_mplay: 0, + st_tips_read_list: 0, + + sgid: -1, + dgid: -1, + + achi_lastweekly: 0, + achi_pack: 0, + achi_packcomp: 0, + achi_rivalcrush: 0, + achi_visitflg: 0, + achi_weeklynum: 0, + achi_trophy: Array(20).fill("0"), + + deller: 0, + orb: 0, + present_orb: 0, + + event_play_num: 0, + event_last_select_id: -1, +} + +export const IIDX31_pcdata = { + version: 31, + + spnum: 0, + dpnum: 0, + sach: 0, + dach: 0, + mode: 0, + pmode: 0, + ngrade: 0, + rtype: 0, + player_kind: 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, + s_graph_score: 0, + d_graph_score: 0, + s_auto_scrach: 0, + d_auto_scrach: 0, + s_gauge_disp: 0, + d_gauge_disp: 0, + s_lane_brignt: 0, + d_lane_brignt: 0, + s_camera_layout: 0, + d_camera_layout: 0, + s_ghost_score: 0, + d_ghost_score: 0, + s_tsujigiri_disp: 0, + d_tsujigiri_disp: 0, + s_auto_adjust: 0, + d_auto_adjust: 0, + s_timing_split: 0, + d_timing_split: 0, + s_visualization: 0, + d_visualization: 0, + s_classic_hispeed: 0, + d_classic_hispeed: 0, + + secret_flg1: Array(3).fill("-1"), + secret_flg2: Array(3).fill("-1"), + secret_flg3: Array(3).fill("-1"), + secret_flg4: Array(3).fill("-1"), + + leggendaria_flg1: Array(3).fill("-1"), + + tourism_secret_flg1: Array(3).fill("-1"), + tourism_secret_flg2: Array(3).fill("-1"), + + nr_spradar: Array(6).fill(0), + nr_dpradar: Array(6).fill(0), + + st_enemy_damage: 0, + st_progress: 0, + st_total_point: 0, + st_enemy_defeat_flg: 0, + st_is_track_ticket: false, + st_sp_level: 0, + st_dp_level: 0, + st_sp_fluctuation: 0, + st_dp_fluctuation: 0, + st_mission_clear_num: 0, + st_sp_mplay: 0, + st_dp_mplay: 0, + st_tips_read_list: 0, + + sgid: -1, + dgid: -1, + + achi_lastweekly: 0, + achi_pack: 0, + achi_packcomp: 0, + achi_rivalcrush: 0, + achi_visitflg: 0, + achi_weeklynum: 0, + + deller: 0, + orb: 0, + present_orb: 0, + + event_play_num: 0, + event_last_select_id: -1, + event_skip: false, +} + +export const IIDX32_pcdata = { + version: 32, + + spnum: 0, + dpnum: 0, + sach: 0, + dach: 0, + mode: 0, + category: 0, + pmode: 0, + ngrade: 0, + rtype: 0, + bgnflg: 0, + player_kind: 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, + s_graph_score: 0, + d_graph_score: 0, + s_auto_scrach: 0, + d_auto_scrach: 0, + s_gauge_disp: 0, + d_gauge_disp: 0, + s_lane_brignt: 0, + d_lane_brignt: 0, + s_camera_layout: 0, + d_camera_layout: 0, + s_ghost_score: 0, + d_ghost_score: 0, + s_tsujigiri_disp: 0, + d_tsujigiri_disp: 0, + s_auto_adjust: 0, + d_auto_adjust: 0, + s_timing_split: 0, + d_timing_split: 0, + s_visualization: 0, + d_visualization: 0, + s_classic_hispeed: 0, + d_classic_hispeed: 0, + movie_thumbnail: 0, + + secret_flg1: Array(3).fill("-1"), + secret_flg2: Array(3).fill("-1"), + secret_flg3: Array(3).fill("-1"), + secret_flg4: Array(3).fill("-1"), + secret_flg5: Array(3).fill("-1"), + + leggendaria_flg1: Array(3).fill("-1"), + leggendaria_flg2: Array(3).fill("-1"), + + tourism_secret_flg1: Array(3).fill("-1"), + tourism_secret_flg2: Array(3).fill("-1"), + + nr_spradar: Array(6).fill(0), + nr_dpradar: Array(6).fill(0), + + st_enemy_damage: 0, + st_progress: 0, + st_total_point: 0, + st_enemy_defeat_flg: 0, + st_is_track_ticket: false, + st_sp_level: 0, + st_dp_level: 0, + st_sp_level_h: 0, + st_dp_level_h: 0, + st_sp_level_exh: 0, + st_dp_level_exh: 0, + st_sp_fluctuation: 0, + st_dp_fluctuation: 0, + st_mission_clear_num: 0, + st_sp_mplay: 0, + st_dp_mplay: 0, + st_tips_read_list: 0, + + sgid: -1, + dgid: -1, + + achi_lastweekly: 0, + achi_pack: 0, + achi_packcomp: 0, + achi_rivalcrush: 0, + achi_visitflg: 0, + achi_weeklynum: 0, + + deller: 0, + orb: 0, + present_orb: 0, + + event_play_num: 0, + event_last_select_id: -1, +} diff --git a/iidx@asphyxia/models/profile.ts b/iidx@asphyxia/models/profile.ts new file mode 100644 index 0000000..6150363 --- /dev/null +++ b/iidx@asphyxia/models/profile.ts @@ -0,0 +1,22 @@ +export interface profile { + collection: "profile"; + + refid: string; + id: number; + idstr: string; + name: string; + pid: number; + + language: number; + total_pc: number; + total_kbd: number; + total_scr: number; +} + +export const default_profile = { + language: -1, + + total_pc: 0, + total_kbd: 0, + total_scr: 0, +} diff --git a/iidx@asphyxia/models/ranking.ts b/iidx@asphyxia/models/ranking.ts new file mode 100644 index 0000000..0dbd7af --- /dev/null +++ b/iidx@asphyxia/models/ranking.ts @@ -0,0 +1,29 @@ +export interface expert { + collection: "expert"; + version: number; + coid: number; + + cArray: number[]; + pgArray: number[]; + gArray: number[]; + optArray: number[]; + opt2Array: number[]; + esArray: number[]; +} + +export interface ranking { + collection: "ranking"; + version: number; + clid: number; + coid: number; + + gnum: number; + pgnum: number; + name: string; + opname: string; + pid: number; + udate: number; + + exscore: number; // <- for sort // + maxStage: number; +} diff --git a/iidx@asphyxia/models/rival.ts b/iidx@asphyxia/models/rival.ts new file mode 100644 index 0000000..d3f5ac9 --- /dev/null +++ b/iidx@asphyxia/models/rival.ts @@ -0,0 +1,17 @@ +export interface rival { + collection: "rival"; + + play_style: number; + + index: number; + rival_refid: string; +}; + +export interface rival_data { + play_style: number; + index: number; + + qprodata: number[]; + profile: (string | number)[]; + pcdata: number[]; +} diff --git a/iidx@asphyxia/models/score.ts b/iidx@asphyxia/models/score.ts new file mode 100644 index 0000000..6f51f58 --- /dev/null +++ b/iidx@asphyxia/models/score.ts @@ -0,0 +1,39 @@ +export interface score { + collection: "score"; + + mid: number; + + pgArray: number[]; + gArray: number[]; + mArray: number[]; + cArray: number[]; + rArray: number[]; + esArray: number[]; + + optArray: number[]; + opt2Array: number[]; +} + +export interface score_top { + collection: "score_top"; + + play_style: number; + mid: number; + + names: string[]; + scores: number[]; + clflgs: number[]; +} + +export interface old_score { + music_id: number; + + spmArray: number[]; + dpmArray: number[]; + + optArray: number[]; + opt2Array: number[]; + + option_1: number; + option_2: number; +} diff --git a/iidx@asphyxia/models/shop.ts b/iidx@asphyxia/models/shop.ts new file mode 100644 index 0000000..2d45498 --- /dev/null +++ b/iidx@asphyxia/models/shop.ts @@ -0,0 +1,19 @@ +export interface shop_data { + collection: "shop_data"; + + opname: string; + pid: number; + cls_opt: number; +} + +export interface convention_data { + collection: "shop_convention"; + + version: number; + + music_0: number; + music_1: number; + music_2: number; + music_3: number; + valid: boolean; +} diff --git a/iidx@asphyxia/models/tutorial.ts b/iidx@asphyxia/models/tutorial.ts new file mode 100644 index 0000000..4fdc40e --- /dev/null +++ b/iidx@asphyxia/models/tutorial.ts @@ -0,0 +1,7 @@ +export interface tutorial { + collection: "tutorial"; + version: number; + tid: number; + + clr: number; +} diff --git a/iidx@asphyxia/models/worldtourism.ts b/iidx@asphyxia/models/worldtourism.ts new file mode 100644 index 0000000..81902a3 --- /dev/null +++ b/iidx@asphyxia/models/worldtourism.ts @@ -0,0 +1,7 @@ +export interface world_tourism { + collection: "world_tourism"; + version: number; + + tour_id: number; + progress: number; +} diff --git a/iidx@asphyxia/pug/GLD/pcget.pug b/iidx@asphyxia/pug/GLD/pcget.pug new file mode 100644 index 0000000..01ace8d --- /dev/null +++ b/iidx@asphyxia/pug/GLD/pcget.pug @@ -0,0 +1,9 @@ +pc(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 sflg0=pcdata.sflg0 sflg1=pcdata.sflg1 sflg2=pcdata.sflg2 gno=pcdata.gno sdhd=pcdata.sdhd sp_opt=pcdata.sp_opt dp_opt=pcdata.dp_opt dp_opt2=pcdata.dp_opt2 mcomb=pcdata.mcomb ncomb=pcdata.ncomb mode=pcdata.mode pmode=pcdata.pmode) + grade(sgid=pcdata.sgid dgid=pcdata.dgid __type="str") #{gradeStr} + ex(__type="str") #{exStr} + skin(__type="str") #{skinStr} + rlist + - for (let rd of rArray) + rival(rno=rd.index 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]) + gold(now_g=pcdata.gold_now all_g=pcdata.gold_all use_g=pcdata.gold_use) diff --git a/iidx@asphyxia/pug/HDD/pcget.pug b/iidx@asphyxia/pug/HDD/pcget.pug new file mode 100644 index 0000000..98623be --- /dev/null +++ b/iidx@asphyxia/pug/HDD/pcget.pug @@ -0,0 +1,9 @@ +pc(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 sflg0=pcdata.sflg0 sflg1=pcdata.sflg1 sflg2=pcdata.sflg2 gno=pcdata.gno sdhd=pcdata.sdhd sp_opt=pcdata.sp_opt dp_opt=pcdata.dp_opt dp_opt2=pcdata.dp_opt2 mcomb=pcdata.mcomb ncomb=pcdata.ncomb mode=pcdata.mode pmode=pcdata.pmode) + grade(sgid=pcdata.sgid dgid=pcdata.dgid __type="str") #{gradeStr} + ex(__type="str") #{exStr} + skin(__type="str") #{skinStr} + 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]) + visitor(anum="10" snum="10" pnum="10" vs_flg="1") diff --git a/iidx@asphyxia/pug/I00/pcget.pug b/iidx@asphyxia/pug/I00/pcget.pug new file mode 100644 index 0000000..b005f96 --- /dev/null +++ b/iidx@asphyxia/pug/I00/pcget.pug @@ -0,0 +1,17 @@ +pc(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 sflg0=pcdata.sflg0 sflg1=pcdata.sflg1 sflg2=pcdata.sflg2 gno=pcdata.gno sdhd=pcdata.sdhd sp_opt=pcdata.sp_opt dp_opt=pcdata.dp_opt dp_opt2=pcdata.dp_opt2 mcomb=pcdata.mcomb ncomb=pcdata.ncomb mode=pcdata.mode pmode=pcdata.pmode lift_len=pcdata.liflen) + 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]} + ex + - for (let e of eArray) + e(__type="u32" __count="5") #{e[0]} #{e[1]} #{e[2]} #{e[3]} #{e[4]} + skin(__type="u16" __count="12") #{custom.frame} #{custom.turntable} #{custom.note_burst} #{custom.menu_music} #{appendsettings} #{custom.lane_cover} 0 #{custom.category_vox} 0 0 0 0 + 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]) + visitor(anum="10" snum="10" pnum="10" vs_flg="1") + fcombo(__type="s16" __count="2") #{pcdata.fcombo[0]} #{pcdata.fcombo[1]} + jewel(rate="100") + jnum(__type="s64") #{pcdata.jewel_num} + bjnum(__type="s32" __count="18") #{pcdata.jewel_bnum[0]} #{pcdata.jewel_bnum[1]} #{pcdata.jewel_bnum[2]} #{pcdata.jewel_bnum[3]} #{pcdata.jewel_bnum[4]} #{pcdata.jewel_bnum[5]} #{pcdata.jewel_bnum[6]} #{pcdata.jewel_bnum[7]} #{pcdata.jewel_bnum[8]} #{pcdata.jewel_bnum[9]} #{pcdata.jewel_bnum[10]} #{pcdata.jewel_bnum[11]} #{pcdata.jewel_bnum[12]} #{pcdata.jewel_bnum[13]} #{pcdata.jewel_bnum[14]} #{pcdata.jewel_bnum[15]} #{pcdata.jewel_bnum[16]} #{pcdata.jewel_bnum[17]} diff --git a/iidx@asphyxia/pug/JDJ/pcget.pug b/iidx@asphyxia/pug/JDJ/pcget.pug new file mode 100644 index 0000000..acda4f0 --- /dev/null +++ b/iidx@asphyxia/pug/JDJ/pcget.pug @@ -0,0 +1,17 @@ +pc(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 sflg0=pcdata.sflg0 sflg1=pcdata.sflg1 gno=pcdata.gno timing=pcdata.timing sdhd=pcdata.sdhd sp_opt=pcdata.sp_opt dp_opt=pcdata.dp_opt dp_opt2=pcdata.dp_opt2 mcomb=pcdata.mcomb ncomb=pcdata.ncomb mode=pcdata.mode pmode=pcdata.pmode liflen=pcdata.liflen) + 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]} + ex + - for (let e of eArray) + e(__type="u32" __count="5") #{e[0]} #{e[1]} #{e[2]} #{e[3]} #{e[4]} + skin(__type="u16" __count="12") #{custom.frame} #{custom.turntable} #{custom.note_burst} #{custom.menu_music} #{appendsettings} #{custom.lane_cover} 0 #{custom.category_vox} 0 0 0 0 + 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]) + visitor(anum="10" snum="10" pnum="10" vs_flg="1") + fcombo(__type="s16" __count="2") #{pcdata.fcombo[0]} #{pcdata.fcombo[1]} + party + fnum(__type="s32" __count="24") #{pcdata.party[0]} #{pcdata.party[1]} #{pcdata.party[2]} #{pcdata.party[3]} #{pcdata.party[4]} #{pcdata.party[5]} #{pcdata.party[6]} #{pcdata.party[7]} #{pcdata.party[8]} #{pcdata.party[9]} #{pcdata.party[10]} #{pcdata.party[11]} #{pcdata.party[12]} #{pcdata.party[13]} #{pcdata.party[14]} #{pcdata.party[15]} #{pcdata.party[16]} #{pcdata.party[17]} #{pcdata.party[18]} #{pcdata.party[19]} #{pcdata.party[20]} #{pcdata.party[21]} #{pcdata.party[22]} #{pcdata.party[23]} + jubeat(jflg_0="-1" jflg_1="-1" jflg_2="-1" jflg_3="-1") diff --git a/iidx@asphyxia/pug/JDZ/pcget.pug b/iidx@asphyxia/pug/JDZ/pcget.pug new file mode 100644 index 0000000..68446e8 --- /dev/null +++ b/iidx@asphyxia/pug/JDZ/pcget.pug @@ -0,0 +1,20 @@ +pc(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 sflg0=pcdata.sflg0 sflg1=pcdata.sflg1 gno=pcdata.gno timing=pcdata.timing sdhd=pcdata.sdhd sp_opt=pcdata.sp_opt dp_opt=pcdata.dp_opt dp_opt2=pcdata.dp_opt2 mcomb=pcdata.mcomb ncomb=pcdata.ncomb mode=pcdata.mode pmode=pcdata.pmode liflen=pcdata.liflen) + 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]} + ex + skin(__type="u16" __count="12") #{custom.frame} #{custom.turntable} #{custom.note_burst} #{custom.menu_music} #{appendsettings} #{custom.lane_cover} 0 #{custom.category_vox} 0 0 0 0 + 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]) + visitor(anum="10" snum="10" pnum="10" vs_flg="1") + fcombo(__type="s16" __count="2") #{pcdata.fcombo[0]} #{pcdata.fcombo[1]} + lincle(comflg="1" flg1="-1" flg2="-1" flg3="-1" flg4="-1" flg5="-1" flg6="-1" flg7="-1" refcomp="1") + reflec(tf="1" br="1" ssc="1" sr="1" wu="1" sg="1" tb="1") + jubeat(jflg_0="-1" jflg_1="-1" jflg_2="-1" jflg_3="-1") + if event != null + tour(pt=event.pt rsv=event.rsv r0=event.r0 r1=event.r1 r2=event.r2 r3=event.r3 r4=event.r4 r5=event.r5 r6=event.r6 r7=event.r7) + cf(__type="bin") #{event.cf} + pf(__type="bin") #{event.pf} + mf(__type="bin") #{event.mf} diff --git a/iidx@asphyxia/pug/KDZ/pcget.pug b/iidx@asphyxia/pug/KDZ/pcget.pug new file mode 100644 index 0000000..820e22d --- /dev/null +++ b/iidx@asphyxia/pug/KDZ/pcget.pug @@ -0,0 +1,33 @@ +pc(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 sflg0=pcdata.sflg0 sflg1=pcdata.sflg1 help=pcdata.help gno=pcdata.gno timing=pcdata.timing sdhd=pcdata.sdhd sdtype=pcdata.sdtype notes=pcdata.notes pase=pcdata.pase sp_opt=pcdata.sp_opt dp_opt=pcdata.dp_opt dp_opt2=pcdata.dp_opt2 mode=pcdata.mode pmode=pcdata.pmode liflen=pcdata.liflen) + 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]} + ex + 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 #{Number(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]) + qprodata(body=rd.qprodata[3] face=rd.qprodata[2] hair=rd.qprodata[0] hand=rd.qprodata[4] head=rd.qprodata[1]) + ocrs + //-weekly(wid="-1" mid="-1") + visitor(anum="10" snum="10" pnum="10" vs_flg="1") + fcombo(__type="s16" __count="2") #{pcdata.fcombo[0]} #{pcdata.fcombo[1]} + step(sp_ach=pcdata.st_sp_ach dp_ach=pcdata.st_dp_ach sp_dif=pcdata.st_sp_dif dp_dif=pcdata.st_dp_dif) + lincle(comflg="1" flg1="-1" flg2="-1" flg3="-1" flg4="-1" flg5="-1" flg6="-1" flg7="-1") + reflec(tf="1" br="1" ssc="1" sr="1" wu="1" sg="1" tb="1") + jubeat(point="0" bonus="0" jbonus=pcdata.jpoint open="1") + if event != null + kingdom(level=event.level exp=event.exp deller=event.deller place=event.place tower=event.tower boss=event.boss combo=event.combo jewel=event.jewel generic=event.generic) + cf(__type="bin") #{event.cf} + qcf(__type="bin") #{event.qcf} + piece(__type="bin") #{event.piece} + history + type(__type="u8" __count="30") #{pcdata.type[0]} #{pcdata.type[1]} #{pcdata.type[2]} #{pcdata.type[3]} #{pcdata.type[4]} #{pcdata.type[5]} #{pcdata.type[6]} #{pcdata.type[7]} #{pcdata.type[8]} #{pcdata.type[9]} #{pcdata.type[10]} #{pcdata.type[11]} #{pcdata.type[12]} #{pcdata.type[13]} #{pcdata.type[14]} #{pcdata.type[15]} #{pcdata.type[16]} #{pcdata.type[17]} #{pcdata.type[18]} #{pcdata.type[19]} #{pcdata.type[20]} #{pcdata.type[21]} #{pcdata.type[22]} #{pcdata.type[23]} #{pcdata.type[24]} #{pcdata.type[25]} #{pcdata.type[26]} #{pcdata.type[27]} #{pcdata.type[28]} #{pcdata.type[29]} + time(__type="time" __count="30") #{pcdata.time[0]} #{pcdata.time[1]} #{pcdata.time[2]} #{pcdata.time[3]} #{pcdata.time[4]} #{pcdata.time[5]} #{pcdata.time[6]} #{pcdata.time[7]} #{pcdata.time[8]} #{pcdata.time[9]} #{pcdata.time[10]} #{pcdata.time[11]} #{pcdata.time[12]} #{pcdata.time[13]} #{pcdata.time[14]} #{pcdata.time[15]} #{pcdata.time[16]} #{pcdata.time[17]} #{pcdata.time[18]} #{pcdata.time[19]} #{pcdata.time[20]} #{pcdata.time[21]} #{pcdata.time[22]} #{pcdata.time[23]} #{pcdata.time[24]} #{pcdata.time[25]} #{pcdata.time[26]} #{pcdata.time[27]} #{pcdata.time[28]} #{pcdata.time[29]} + param0(__type="s32" __count="30") #{pcdata.p0[0]} #{pcdata.p0[1]} #{pcdata.p0[2]} #{pcdata.p0[3]} #{pcdata.p0[4]} #{pcdata.p0[5]} #{pcdata.p0[6]} #{pcdata.p0[7]} #{pcdata.p0[8]} #{pcdata.p0[9]} #{pcdata.p0[10]} #{pcdata.p0[11]} #{pcdata.p0[12]} #{pcdata.p0[13]} #{pcdata.p0[14]} #{pcdata.p0[15]} #{pcdata.p0[16]} #{pcdata.p0[17]} #{pcdata.p0[18]} #{pcdata.p0[19]} #{pcdata.p0[20]} #{pcdata.p0[21]} #{pcdata.p0[22]} #{pcdata.p0[23]} #{pcdata.p0[24]} #{pcdata.p0[25]} #{pcdata.p0[26]} #{pcdata.p0[27]} #{pcdata.p0[28]} #{pcdata.p0[29]} + param1(__type="s32" __count="30") #{pcdata.p1[0]} #{pcdata.p1[1]} #{pcdata.p1[2]} #{pcdata.p1[3]} #{pcdata.p1[4]} #{pcdata.p1[5]} #{pcdata.p1[6]} #{pcdata.p1[7]} #{pcdata.p1[8]} #{pcdata.p1[9]} #{pcdata.p1[10]} #{pcdata.p1[11]} #{pcdata.p1[12]} #{pcdata.p1[13]} #{pcdata.p1[14]} #{pcdata.p1[15]} #{pcdata.p1[16]} #{pcdata.p1[17]} #{pcdata.p1[18]} #{pcdata.p1[19]} #{pcdata.p1[20]} #{pcdata.p1[21]} #{pcdata.p1[22]} #{pcdata.p1[23]} #{pcdata.p1[24]} #{pcdata.p1[25]} #{pcdata.p1[26]} #{pcdata.p1[27]} #{pcdata.p1[28]} #{pcdata.p1[29]} + param2(__type="s32" __count="30") #{pcdata.p2[0]} #{pcdata.p2[1]} #{pcdata.p2[2]} #{pcdata.p2[3]} #{pcdata.p2[4]} #{pcdata.p2[5]} #{pcdata.p2[6]} #{pcdata.p2[7]} #{pcdata.p2[8]} #{pcdata.p2[9]} #{pcdata.p2[10]} #{pcdata.p2[11]} #{pcdata.p2[12]} #{pcdata.p2[13]} #{pcdata.p2[14]} #{pcdata.p2[15]} #{pcdata.p2[16]} #{pcdata.p2[17]} #{pcdata.p2[18]} #{pcdata.p2[19]} #{pcdata.p2[20]} #{pcdata.p2[21]} #{pcdata.p2[22]} #{pcdata.p2[23]} #{pcdata.p2[24]} #{pcdata.p2[25]} #{pcdata.p2[26]} #{pcdata.p2[27]} #{pcdata.p2[28]} #{pcdata.p2[29]} + param3(__type="s32" __count="30") #{pcdata.p3[0]} #{pcdata.p3[1]} #{pcdata.p3[2]} #{pcdata.p3[3]} #{pcdata.p3[4]} #{pcdata.p3[5]} #{pcdata.p3[6]} #{pcdata.p3[7]} #{pcdata.p3[8]} #{pcdata.p3[9]} #{pcdata.p3[10]} #{pcdata.p3[11]} #{pcdata.p3[12]} #{pcdata.p3[13]} #{pcdata.p3[14]} #{pcdata.p3[15]} #{pcdata.p3[16]} #{pcdata.p3[17]} #{pcdata.p3[18]} #{pcdata.p3[19]} #{pcdata.p3[20]} #{pcdata.p3[21]} #{pcdata.p3[22]} #{pcdata.p3[23]} #{pcdata.p3[24]} #{pcdata.p3[25]} #{pcdata.p3[26]} #{pcdata.p3[27]} #{pcdata.p3[28]} #{pcdata.p3[29]} + param4(__type="s32" __count="30") #{pcdata.p4[0]} #{pcdata.p4[1]} #{pcdata.p4[2]} #{pcdata.p4[3]} #{pcdata.p4[4]} #{pcdata.p4[5]} #{pcdata.p4[6]} #{pcdata.p4[7]} #{pcdata.p4[8]} #{pcdata.p4[9]} #{pcdata.p4[10]} #{pcdata.p4[11]} #{pcdata.p4[12]} #{pcdata.p4[13]} #{pcdata.p4[14]} #{pcdata.p4[15]} #{pcdata.p4[16]} #{pcdata.p4[17]} #{pcdata.p4[18]} #{pcdata.p4[19]} #{pcdata.p4[20]} #{pcdata.p4[21]} #{pcdata.p4[22]} #{pcdata.p4[23]} #{pcdata.p4[24]} #{pcdata.p4[25]} #{pcdata.p4[26]} #{pcdata.p4[27]} #{pcdata.p4[28]} #{pcdata.p4[29]} diff --git a/iidx@asphyxia/pug/LDJ/21pcget.pug b/iidx@asphyxia/pug/LDJ/21pcget.pug new file mode 100644 index 0000000..2037923 --- /dev/null +++ b/iidx@asphyxia/pug/LDJ/21pcget.pug @@ -0,0 +1,56 @@ +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 #{Number(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=rd.pcdata[4] step_dach=rd.pcdata[5]) + qprodata(body=rd.qprodata[3] face=rd.qprodata[2] hair=rd.qprodata[0] hand=rd.qprodata[4] head=rd.qprodata[1]) + shop(name=shop_data.opname) + join_shop(joinflg="1" join_cflg="1" join_id="ea" join_name=shop_data.opname) + visitor(anum="10" snum="10" pnum="10" vs_flg="1") + 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) diff --git a/iidx@asphyxia/pug/LDJ/22pcget.pug b/iidx@asphyxia/pug/LDJ/22pcget.pug new file mode 100644 index 0000000..75531ff --- /dev/null +++ b/iidx@asphyxia/pug/LDJ/22pcget.pug @@ -0,0 +1,67 @@ +IIDX22pc(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 s_exscore=pcdata.s_exscore d_exscore=pcdata.d_exscore s_largejudge=pcdata.s_largejudge d_largejudge=pcdata.d_largejudge) + spdp_rival(flg="-1") + bind_eaappli + secret + flg1(__type="s64" __count="3") -1 -1 -1 + flg2(__type="s64" __count="3") -1 -1 -1 + flg3(__type="s64" __count="3") -1 -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="4") -1 -1 -1 -1 + hair(__type="s64" __count="4") -1 -1 -1 -1 + face(__type="s64" __count="4") -1 -1 -1 -1 + body(__type="s64" __count="4") -1 -1 -1 -1 + hand(__type="s64" __count="4") -1 -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 #{Number(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=rd.pcdata[4] step_dach=rd.pcdata[5]) + qprodata(body=rd.qprodata[3] face=rd.qprodata[2] hair=rd.qprodata[0] hand=rd.qprodata[4] head=rd.qprodata[1]) + shop(name=shop_data.opname) + join_shop(joinflg="1" join_cflg="1" join_id="ea" join_name=shop_data.opname) + visitor(anum="10" snum="10" pnum="10" vs_flg="1") + 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 age_list=pcdata.st_age_list is_secret=pcdata.st_is_secret is_present=pcdata.st_is_present is_future=pcdata.st_is_future) + album(__type="bin") #{pcdata.st_album} + //-step_assist(iidx_id iidx_id_str name hair head face body hand) + if chrono_diver != null + chrono_diver(play_count=chrono_diver.play_count present_unlock=chrono_diver.present_unlock future_unlock=chrono_diver.future_unlock success_count_0_n=chrono_diver.success_count_0_n success_count_0_h=chrono_diver.success_count_0_h success_count_0_a=chrono_diver.success_count_0_a success_count_1_n=chrono_diver.success_count_1_n success_count_1_h=chrono_diver.success_count_1_h success_count_1_a=chrono_diver.success_count_1_a success_count_2_n=chrono_diver.success_count_2_n success_count_2_h=chrono_diver.success_count_2_h success_count_2_a=chrono_diver.success_count_2_a success_count_3_n=chrono_diver.success_count_3_n success_count_3_h=chrono_diver.success_count_3_h success_count_3_a=chrono_diver.success_count_3_a story_list=chrono_diver.story_list) + if qpronicle_chord != null + qpronicle_chord(is_first_select_map=qpronicle_chord.is_first_select_map last_select_map=qpronicle_chord.last_select_map story_view_list=qpronicle_chord.story_view_list is_login_bonus=qpronicle_chord.is_use_login_bonus patona_leader=qpronicle_chord.patona_leader patona_sub_1=qpronicle_chord.patona_sub_1 patona_sub_2=qpronicle_chord.patona_sub_2 rare_enemy_damage1=qpronicle_chord.rare_enemy_damage1 rare_enemy_damage2=qpronicle_chord.rare_enemy_damage2 rare_enemy_damage3=qpronicle_chord.rare_enemy_damage3 rare_enemy_damage4=qpronicle_chord.rare_enemy_damage4 rare_enemy_damage5=qpronicle_chord.rare_enemy_damage5) + - for (let evt of qpronicle_chord_sub) + patona_data(patona_no=evt.patona_id level=evt.level exp=evt.exp affection=evt.affection dissatisfaction=evt.dissatisfaction) + if qpronicle_phase3 != null + qpronicle_phase3(stairs_num=qpronicle_phase3.stairs_num flame_list=qpronicle_phase3.flame_list lane_list=qpronicle_phase3.lane_list map0_select=qpronicle_phase3.map0_select map1_select=qpronicle_phase3.map1_select map2_select=qpronicle_phase3.map2_select map3_select=qpronicle_phase3.map3_select map4_select=qpronicle_phase3.map4_select map5_select=qpronicle_phase3.map5_select map6_select=qpronicle_phase3.map6_select is_love_scene_skip="1") + qpronicle_love(music_list="-1") + boss_event_3(music_list="-1" bonus_point=pendual_talis.point) + //-chaser(phase attack exist_age summon_gate success failed damage_point boss_hp) + ues_music(__type="u32" __count="40") + 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]} + old_linked_event(gakuen_list="-1" baseball_list="-1" tricolette_list="-1" cafedetran_list="-1") + pyramid(music_list="-1" item_list="-1" statue_0="0" statue_1="0" statue_2="0") + reflec_collabo(collabo_phase="2" phase1_iidx_play="10" phase2_iidx_play="10" phase1_reflec_play="10" phase2_reflec_play="10" phase1_music_list="-1" phase2_music_list="-1" phase1_iidx_item="-1" phase2_iidx_item="-1" phase1_reflec_item="-1" phase2_reflec_item="-1") + destiny_catharsis(music_bit="-1") + bemani_summer_collabo(music_bit="-1") + deller(deller=pcdata.deller rate="1") + orb_data(rest_orb=pcdata.orb) + time_sandglass(item_num="10") + present_time_sandglass(item_num="10") + sound_holic(music_list="-1" announce_list="-1") + cc_collabo_music(music_list="-1") + cc_collabo_data(customize_list="-1" new_get_customize="1" new_open_music="1" new_consume_drink="1") + beatstream_collabo(music_list="-1") + konami_stytle + is_skip(__type="bool") 1 + floor_infection(music_list="-1") diff --git a/iidx@asphyxia/pug/LDJ/23pcget.pug b/iidx@asphyxia/pug/LDJ/23pcget.pug new file mode 100644 index 0000000..55210e4 --- /dev/null +++ b/iidx@asphyxia/pug/LDJ/23pcget.pug @@ -0,0 +1,64 @@ +IIDX23pc(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 s_exscore=pcdata.s_exscore d_exscore=pcdata.d_exscore s_largejudge=pcdata.s_largejudge d_largejudge=pcdata.d_largejudge) + spdp_rival(flg="-1") + bind_eaappli + ea_premium_course + secret + flg1(__type="s64" __count="3") -1 -1 -1 + flg2(__type="s64" __count="3") -1 -1 -1 + flg3(__type="s64" __count="3") -1 -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} + - for (let ef of efArray) + extra_favorite(folder_id=ef.folder_id) + sp_mlist(__type="bin") #{ef.sp_mlist} + sp_clist(__type="bin") #{ef.sp_clist} + dp_mlist(__type="bin") #{ef.dp_mlist} + dp_clist(__type="bin") #{ef.dp_clist} + qpro_secret + head(__type="s64" __count="4") -1 -1 -1 -1 + hair(__type="s64" __count="4") -1 -1 -1 -1 + face(__type="s64" __count="4") -1 -1 -1 -1 + body(__type="s64" __count="4") -1 -1 -1 -1 + hand(__type="s64" __count="4") -1 -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 #{Number(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=rd.pcdata[4] step_dach=rd.pcdata[5]) + qprodata(body=rd.qprodata[3] face=rd.qprodata[2] hair=rd.qprodata[0] hand=rd.qprodata[4] head=rd.qprodata[1]) + shop(name=shop_data.opname) + join_shop(joinflg="1" join_cflg="1" join_id="ea" join_name=shop_data.opname) + visitor(anum="10" snum="10" pnum="10" vs_flg="1") + if pcdata.st_tokimeki != null + step(friendship=pcdata.st_friendship progress=pcdata.st_progress station_clear=pcdata.st_station_clear station_play=pcdata.st_station_play 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 mission_gauge=pcdata.st_mission_gauge) + tokimeki(__type="bin") #{pcdata.st_tokimeki} + //-step_assist(iidx_id iidx_id_str name hair head face body hand) + qpronicle_love(music_list="-1") + 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 open_tokotoko != null + event1_data(point_map_0=open_tokotoko.point_map_0 point_map_1=open_tokotoko.point_map_1 point_map_2=open_tokotoko.point_map_2 point_map_3=open_tokotoko.point_map_3 point_map_4=open_tokotoko.point_map_4 last_map=open_tokotoko.last_map hold_point=open_tokotoko.hold_point rank_point=open_tokotoko.rank_point tips_list=open_tokotoko.tips_list gift_point="0") + //-event1_assist(iidx_id iidx_id_str name hair head face body hand) + if mystery_line != null + event2_data(play_num=mystery_line.play_num now_area=mystery_line.now_stay_area now_note_grade=mystery_line.now_stay_note_grade stop_area_time=mystery_line.stop_area_time) + - for (let evt of mystery_line_sub) + event2_area_data(area_no=evt.area_no area_play=evt.area_play_num normal_point=evt.normal_point hyper_point=evt.hyper_point another_point=evt.another_point) + //-onemore_data(defeat_0 defeat_1 defeat_2 defeat_3 defeat_4 defeat_5 challenge_num_n challenge_num_h challenge_num_a) + reflec_collabo(phase1_music_list="-1" phase2_music_list="-1") + destiny_catharsis(music_bit="-1") + bemani_summer_collabo(music_bit="-1") + deller(deller=pcdata.deller rate="1") + orb_data(rest_orb=pcdata.orb) + rainbow_ticket(item_num="10") + beatstream_collabo(music_list="-1") + floor_infection(music_list="-1") + reflec_volzza_collabo(iidx_music_list="-1" reflec_music_list="-1") diff --git a/iidx@asphyxia/pug/LDJ/24pcget.pug b/iidx@asphyxia/pug/LDJ/24pcget.pug new file mode 100644 index 0000000..b4d6889 --- /dev/null +++ b/iidx@asphyxia/pug/LDJ/24pcget.pug @@ -0,0 +1,70 @@ +IIDX24pc(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 s_exscore=pcdata.s_exscore d_exscore=pcdata.d_exscore s_graph_score=pcdata.s_graph_score d_graph_score=pcdata.d_graph_score) + spdp_rival(flg="0") + bind_eaappli + ea_premium_course + leggendaria_open + secret + flg1(__type="s64" __count="3") -1 -1 -1 + flg2(__type="s64" __count="3") -1 -1 -1 + flg3(__type="s64" __count="3") -1 -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} + - for (let ef of efArray) + extra_favorite(folder_id=ef.folder_id) + sp_mlist(__type="bin") #{ef.sp_mlist} + sp_clist(__type="bin") #{ef.sp_clist} + dp_mlist(__type="bin") #{ef.dp_mlist} + dp_clist(__type="bin") #{ef.dp_clist} + qpro_secret + head(__type="s64" __count="4") -1 -1 -1 -1 + hair(__type="s64" __count="4") -1 -1 -1 -1 + face(__type="s64" __count="4") -1 -1 -1 -1 + body(__type="s64" __count="4") -1 -1 -1 -1 + hand(__type="s64" __count="4") -1 -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="17") #{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 #{Number(custom.disable_musicpreview)} 0 0 0 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=rd.pcdata[4] step_dach=rd.pcdata[5]) + qprodata(body=rd.qprodata[3] face=rd.qprodata[2] hair=rd.qprodata[0] hand=rd.qprodata[4] head=rd.qprodata[1]) + shop(name=shop_data.opname) + is_robo(__type="bool") 0 + ninja_rank(style="0") + rank(__type="s32" __count="13") #{pcdata.dr_sprank[0]} #{pcdata.dr_sprank[1]} #{pcdata.dr_sprank[2]} #{pcdata.dr_sprank[3]} #{pcdata.dr_sprank[4]} #{pcdata.dr_sprank[5]} #{pcdata.dr_sprank[6]} #{pcdata.dr_sprank[7]} #{pcdata.dr_sprank[8]} #{pcdata.dr_sprank[9]} #{pcdata.dr_sprank[10]} #{pcdata.dr_sprank[11]} #{pcdata.dr_sprank[12]} + point(__type="s32" __count="13") #{pcdata.dr_sppoint[0]} #{pcdata.dr_sppoint[1]} #{pcdata.dr_sppoint[2]} #{pcdata.dr_sppoint[3]} #{pcdata.dr_sppoint[4]} #{pcdata.dr_sppoint[5]} #{pcdata.dr_sppoint[6]} #{pcdata.dr_sppoint[7]} #{pcdata.dr_sppoint[8]} #{pcdata.dr_sppoint[9]} #{pcdata.dr_sppoint[10]} #{pcdata.dr_sppoint[11]} #{pcdata.dr_sppoint[12]} + ninja_rank(style="1") + rank(__type="s32" __count="13") #{pcdata.dr_dprank[0]} #{pcdata.dr_dprank[1]} #{pcdata.dr_dprank[2]} #{pcdata.dr_dprank[3]} #{pcdata.dr_dprank[4]} #{pcdata.dr_dprank[5]} #{pcdata.dr_dprank[6]} #{pcdata.dr_dprank[7]} #{pcdata.dr_dprank[8]} #{pcdata.dr_dprank[9]} #{pcdata.dr_dprank[10]} #{pcdata.dr_dprank[11]} #{pcdata.dr_dprank[12]} + point(__type="s32" __count="13") #{pcdata.dr_dppoint[0]} #{pcdata.dr_dppoint[1]} #{pcdata.dr_dppoint[2]} #{pcdata.dr_dppoint[3]} #{pcdata.dr_dppoint[4]} #{pcdata.dr_dppoint[5]} #{pcdata.dr_dppoint[6]} #{pcdata.dr_dppoint[7]} #{pcdata.dr_dppoint[8]} #{pcdata.dr_dppoint[9]} #{pcdata.dr_dppoint[10]} #{pcdata.dr_dppoint[11]} #{pcdata.dr_dppoint[12]} + if siege_sinobuz != null + event1(last_select_map=siege_sinobuz.last_select_map hold_rice=siege_sinobuz.hold_rice tax_rice=siege_sinobuz.tax_rice tips_list=siege_sinobuz.tipls_read) + - for (let evt of siege_sinobuz_sub) + map_data(map_id=evt.map_id play_num=evt.play_num progress=evt.progress battle_point=evt.battle_point rice_point=evt.rice_point is_clear=evt.is_clear) + ninjyutsu(__type="bin") #{evt.ninjyutsu} + map_card_damage(__type="bin") #{evt.card_damage} + map_card_clear(__type="bin") #{evt.card_clear} + if ninja_shichikyoden != null + event2(play_num=ninja_shichikyoden.play_num chakra_point=ninja_shichikyoden.chakra_point last_select_ryuha=ninja_shichikyoden.last_select_ryuha) + last_select_dojo(__type="bin") #{ninja_shichikyoden.last_select_dojo} + enemy_damage(__type="bin") #{ninja_shichikyoden.enemy_damage} + //-onemore_data(defeat_0 defeat_1 defeat_2 defeat_3 defeat_4 defeat_5 defeat_6 challenge_num_n challenge_num_h challenge_num_a) + join_shop(joinflg="1" join_cflg="1" join_id="ea" join_name=shop_data.opname) + visitor(anum="10" snum="10" pnum="10" vs_flg="1") + step(enemy_damage=pcdata.st_enemy_damage progress=pcdata.st_progress enemy_defeat_flg=pcdata.st_enemy_defeat_flg sp_level=pcdata.st_sp_level dp_level=pcdata.st_dp_level sp_mplay=pcdata.st_sp_mplay dp_mplay=pcdata.st_dp_mplay) + 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]} + deller(deller=pcdata.deller rate="1") + orb_data(rest_orb=pcdata.orb) + pay_per_use(item_num="5") + present_pay_per_use(item_num="5") + old_linkage_secret_flg(bemani_diary="-1" floor_infection="-1" beatstream="-1" destiny_catharsis="-1" reflec_gw="-1" link_track="-1" qpronicle_love="-1") + nostalgia_open + konami_stytle(skip_flg="0") diff --git a/iidx@asphyxia/pug/LDJ/25pcget.pug b/iidx@asphyxia/pug/LDJ/25pcget.pug new file mode 100644 index 0000000..8c6bf22 --- /dev/null +++ b/iidx@asphyxia/pug/LDJ/25pcget.pug @@ -0,0 +1,70 @@ +IIDX25pc(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 s_exscore=pcdata.s_exscore d_exscore=pcdata.d_exscore s_graph_score=pcdata.s_graph_score d_graph_score=pcdata.d_graph_score s_auto_scrach=pcdata.s_auto_scrach d_auto_scrach=pcdata.d_auto_scrach s_gauge_disp=pcdata.s_gauge_disp d_gauge_disp=pcdata.d_gauge_disp s_lane_brignt=pcdata.s_lane_brignt d_lane_brignt=pcdata.d_lane_brignt s_camera_layout=pcdata.s_camera_layout d_camera_layout=pcdata.d_camera_layout) + spdp_rival(flg="0") + bind_eaappli + ea_premium_course + leggendaria_open + secret + flg1(__type="s64" __count="3") -1 -1 -1 + flg2(__type="s64" __count="3") -1 -1 -1 + flg3(__type="s64" __count="3") -1 -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} + - for (let ef of efArray) + extra_favorite(folder_id=ef.folder_id) + sp_mlist(__type="bin") #{ef.sp_mlist} + sp_clist(__type="bin") #{ef.sp_clist} + dp_mlist(__type="bin") #{ef.dp_mlist} + dp_clist(__type="bin") #{ef.dp_clist} + qpro_secret + head(__type="s64" __count="4") -1 -1 -1 -1 + hair(__type="s64" __count="4") -1 -1 -1 -1 + face(__type="s64" __count="4") -1 -1 -1 -1 + body(__type="s64" __count="4") -1 -1 -1 -1 + hand(__type="s64" __count="4") -1 -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 #{Number(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=rd.pcdata[4] step_dach=rd.pcdata[5]) + qprodata(body=rd.qprodata[3] face=rd.qprodata[2] hair=rd.qprodata[0] hand=rd.qprodata[4] head=rd.qprodata[1]) + shop(name=shop_data.opname) + is_robo(__type="bool") 0 + dj_rank(style="0") + rank(__type="s32" __count="15") #{pcdata.dr_sprank[0]} #{pcdata.dr_sprank[1]} #{pcdata.dr_sprank[2]} #{pcdata.dr_sprank[3]} #{pcdata.dr_sprank[4]} #{pcdata.dr_sprank[5]} #{pcdata.dr_sprank[6]} #{pcdata.dr_sprank[7]} #{pcdata.dr_sprank[8]} #{pcdata.dr_sprank[9]} #{pcdata.dr_sprank[10]} #{pcdata.dr_sprank[11]} #{pcdata.dr_sprank[12]} #{pcdata.dr_sprank[13]} #{pcdata.dr_sprank[14]} + point(__type="s32" __count="15") #{pcdata.dr_sppoint[0]} #{pcdata.dr_sppoint[1]} #{pcdata.dr_sppoint[2]} #{pcdata.dr_sppoint[3]} #{pcdata.dr_sppoint[4]} #{pcdata.dr_sppoint[5]} #{pcdata.dr_sppoint[6]} #{pcdata.dr_sppoint[7]} #{pcdata.dr_sppoint[8]} #{pcdata.dr_sppoint[9]} #{pcdata.dr_sppoint[10]} #{pcdata.dr_sppoint[11]} #{pcdata.dr_sppoint[12]} #{pcdata.dr_sppoint[13]} #{pcdata.dr_sppoint[14]} + dj_rank(style="1") + rank(__type="s32" __count="15") #{pcdata.dr_dprank[0]} #{pcdata.dr_dprank[1]} #{pcdata.dr_dprank[2]} #{pcdata.dr_dprank[3]} #{pcdata.dr_dprank[4]} #{pcdata.dr_dprank[5]} #{pcdata.dr_dprank[6]} #{pcdata.dr_dprank[7]} #{pcdata.dr_dprank[8]} #{pcdata.dr_dprank[9]} #{pcdata.dr_dprank[10]} #{pcdata.dr_dprank[11]} #{pcdata.dr_dprank[12]} #{pcdata.dr_dprank[13]} #{pcdata.dr_dprank[14]} + point(__type="s32" __count="15") #{pcdata.dr_dppoint[0]} #{pcdata.dr_dppoint[1]} #{pcdata.dr_dppoint[2]} #{pcdata.dr_dppoint[3]} #{pcdata.dr_dppoint[4]} #{pcdata.dr_dppoint[5]} #{pcdata.dr_dppoint[6]} #{pcdata.dr_dppoint[7]} #{pcdata.dr_dppoint[8]} #{pcdata.dr_dppoint[9]} #{pcdata.dr_dppoint[10]} #{pcdata.dr_dppoint[11]} #{pcdata.dr_dppoint[12]} #{pcdata.dr_dppoint[13]} #{pcdata.dr_dppoint[14]} + //-onemore_event(defeat_0-5 channelge_num_1-3_n-a) + join_shop(joinflg="1" join_cflg="1" join_id="ea" join_name=shop_data.opname) + visitor(anum="10" snum="10" pnum="10" vs_flg="1") + step(enemy_damage=pcdata.st_enemy_damage progress=pcdata.st_progress point=pcdata.st_point enemy_defeat_flg=pcdata.st_enemy_defeat_flg sp_level=pcdata.st_sp_level dp_level=pcdata.st_dp_level sp_mplay=pcdata.st_sp_mplay dp_mplay=pcdata.st_dp_mplay) + 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]} + deller(deller=pcdata.deller rate="1") + orb_data(rest_orb=pcdata.orb) + pay_per_use(item_num="5") + present_pay_per_use(item_num="5") + old_linkage_secret_flg(floor_infection="-1" link_track="-1") + nostalgia_open + leggendaria_semi_open(flg="-1") + konami_stytle(skip_flg="0") + if rush_cannonracer != null + event1(tuneup_point=rush_cannonracer.tuneup_point body_parts_list=rush_cannonracer.body_parts_list engine_parts_list=rush_cannonracer.engine_parts_list tire_parts_list=rush_cannonracer.tire_parts_list body_equip_parts=rush_cannonracer.body_equip_parts engine_equip_parts=rush_cannonracer.engine_equip_parts tire_equip_parts=rush_cannonracer.tire_equip_parts gift_point="0") + - for (let evt of rush_cannonracer_sub) + map_data(map_id=evt.map_id play_num=evt.play_num progress=evt.progress boost_fuel=evt.boost_fuel is_clear=evt.is_clear rare1_appearance=evt.rare1_appearance rare2_appearance=evt.rare2_appearance rare3_appearance=evt.rare3_appearance rare4_appearance=evt.rare4_appearance rare5_appearance=evt.rare5_appearance rare6_appearance=evt.rare6_appearance rare_defeat_list=evt.rare_defeat_list) + arena_data(play_num="2" play_num_dp="1" play_num_sp="1") + achieve_data(arena_class="20" best_top_class_continuing="0" now_top_class_continuing="0" play_style="0" rating_value="20") + achieve_data(arena_class="20" best_top_class_continuing="0" now_top_class_continuing="0" play_style="1" rating_value="20") + cube_data(cube="0" season_id="0") + floor_infection(music_list="-1") + qma_collabo(music_list="-1") diff --git a/iidx@asphyxia/pug/LDJ/26pcget.pug b/iidx@asphyxia/pug/LDJ/26pcget.pug new file mode 100644 index 0000000..3764f7b --- /dev/null +++ b/iidx@asphyxia/pug/LDJ/26pcget.pug @@ -0,0 +1,83 @@ +IIDX26pc(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 s_graph_score=pcdata.s_graph_score d_graph_score=pcdata.d_graph_score s_auto_scrach=pcdata.s_auto_scrach d_auto_scrach=pcdata.d_auto_scrach s_gauge_disp=pcdata.s_gauge_disp d_gauge_disp=pcdata.d_gauge_disp s_lane_brignt=pcdata.s_lane_brignt d_lane_brignt=pcdata.d_lane_brignt s_camera_layout=pcdata.s_camera_layout d_camera_layout=pcdata.d_camera_layout s_ghost_score=pcdata.s_ghost_score d_ghost_score=pcdata.d_ghost_score s_tsujigiri_disp=pcdata.s_tsujigiri_disp d_tsujigiri_disp=pcdata.d_tsujigiri_disp) + bind_eaappli + ea_premium_course + enable_qr_reward + leggendaria_open + secret + flg1(__type="s64" __count="3") -1 -1 -1 + flg2(__type="s64" __count="3") -1 -1 -1 + flg3(__type="s64" __count="3") -1 -1 -1 + flg4(__type="s64" __count="3") -1 -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="4") -1 -1 -1 -1 + hair(__type="s64" __count="4") -1 -1 -1 -1 + face(__type="s64" __count="4") -1 -1 -1 -1 + body(__type="s64" __count="4") -1 -1 -1 -1 + hand(__type="s64" __count="4") -1 -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 #{Number(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=rd.pcdata[4] step_dach=rd.pcdata[5]) + qprodata(body=rd.qprodata[3] face=rd.qprodata[2] hair=rd.qprodata[0] hand=rd.qprodata[4] head=rd.qprodata[1]) + shop(name=shop_data.opname) + is_robo(__type="bool") 0 + dj_rank(style="0") + rank(__type="s32" __count="15") #{pcdata.dr_sprank[0]} #{pcdata.dr_sprank[1]} #{pcdata.dr_sprank[2]} #{pcdata.dr_sprank[3]} #{pcdata.dr_sprank[4]} #{pcdata.dr_sprank[5]} #{pcdata.dr_sprank[6]} #{pcdata.dr_sprank[7]} #{pcdata.dr_sprank[8]} #{pcdata.dr_sprank[9]} #{pcdata.dr_sprank[10]} #{pcdata.dr_sprank[11]} #{pcdata.dr_sprank[12]} #{pcdata.dr_sprank[13]} #{pcdata.dr_sprank[14]} + point(__type="s32" __count="15") #{pcdata.dr_sppoint[0]} #{pcdata.dr_sppoint[1]} #{pcdata.dr_sppoint[2]} #{pcdata.dr_sppoint[3]} #{pcdata.dr_sppoint[4]} #{pcdata.dr_sppoint[5]} #{pcdata.dr_sppoint[6]} #{pcdata.dr_sppoint[7]} #{pcdata.dr_sppoint[8]} #{pcdata.dr_sppoint[9]} #{pcdata.dr_sppoint[10]} #{pcdata.dr_sppoint[11]} #{pcdata.dr_sppoint[12]} #{pcdata.dr_sppoint[13]} #{pcdata.dr_sppoint[14]} + dj_rank(style="1") + rank(__type="s32" __count="15") #{pcdata.dr_dprank[0]} #{pcdata.dr_dprank[1]} #{pcdata.dr_dprank[2]} #{pcdata.dr_dprank[3]} #{pcdata.dr_dprank[4]} #{pcdata.dr_dprank[5]} #{pcdata.dr_dprank[6]} #{pcdata.dr_dprank[7]} #{pcdata.dr_dprank[8]} #{pcdata.dr_dprank[9]} #{pcdata.dr_dprank[10]} #{pcdata.dr_dprank[11]} #{pcdata.dr_dprank[12]} #{pcdata.dr_dprank[13]} #{pcdata.dr_dprank[14]} + point(__type="s32" __count="15") #{pcdata.dr_dppoint[0]} #{pcdata.dr_dppoint[1]} #{pcdata.dr_dppoint[2]} #{pcdata.dr_dppoint[3]} #{pcdata.dr_dppoint[4]} #{pcdata.dr_dppoint[5]} #{pcdata.dr_dppoint[6]} #{pcdata.dr_dppoint[7]} #{pcdata.dr_dppoint[8]} #{pcdata.dr_dppoint[9]} #{pcdata.dr_dppoint[10]} #{pcdata.dr_dppoint[11]} #{pcdata.dr_dppoint[12]} #{pcdata.dr_dppoint[13]} #{pcdata.dr_dppoint[14]} + extra_boss_event(orb_0=pcdata.eb_bossorb0 orb_1=pcdata.eb_bossorb1 orb_2=pcdata.eb_bossorb2 orb_3=pcdata.eb_bossorb3 orb_4=pcdata.eb_bossorb4 orb_5=pcdata.eb_bossorb5 orb_6=pcdata.eb_bossorb6 orb_7=pcdata.eb_bossorb7 orb_8=pcdata.eb_bossorb8) + join_shop(joinflg="1" join_cflg="1" join_id="ea" join_name=shop_data.opname) + visitor(anum="10" snum="10" pnum="10" vs_flg="1") + step(enemy_damage=pcdata.st_enemy_damage progress=pcdata.st_progress sp_level=pcdata.st_sp_level dp_level=pcdata.st_dp_level sp_mission_point=pcdata.st_sp_mission_point dp_mission_point=pcdata.st_dp_mission_point sp_dj_mission_level=pcdata.st_sp_dj_mission_level dp_dj_mission_level=pcdata.st_dp_dj_mission_level sp_clear_mission_level=pcdata.st_sp_clear_mission_level dp_clear_mission_level=pcdata.st_dp_clear_mission_level sp_dj_mission_clear=pcdata.st_sp_dj_mission_clear dp_dj_mission_clear=pcdata.st_dp_dj_mission_clear sp_clear_mission_clear=pcdata.st_sp_clear_mission_clear dp_clear_mission_clear=pcdata.st_dp_clear_mission_clear sp_mplay=pcdata.st_sp_mplay dp_mplay=pcdata.st_dp_mplay tips_read_list=pcdata.st_tips_read_list) + is_track_ticket(__type="bool") #{pcdata.st_is_track_ticket} + 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="20") #{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]} #{pcdata.achi_trophy[10]} #{pcdata.achi_trophy[11]} #{pcdata.achi_trophy[12]} #{pcdata.achi_trophy[13]} #{pcdata.achi_trophy[14]} #{pcdata.achi_trophy[15]} #{pcdata.achi_trophy[16]} #{pcdata.achi_trophy[17]} #{pcdata.achi_trophy[18]} #{pcdata.achi_trophy[19]} + deller(deller=pcdata.deller rate="1") + orb_data(rest_orb=pcdata.orb present_orb=pcdata.present_orb) + pay_per_use_item(item_num="5") + present_pay_per_use_item(item_num="5") + qpro_ticket(ticket_num="10" total_ticket_num="10") + old_linkage_secret_flg(floor_infection="-1" floor_infection2="-1" qma_collabo_music="-1") + is_nostalgia(__type="bool") 1 + is_kac(__type="bool") 1 + leggendaria_semi_open(flg="-1") + konami_stytle(skip_flg="0") + arena_data(play_num="2" play_num_dp="1" play_num_sp="1") + achieve_data(arena_class="20" best_top_class_continuing="0" now_top_class_continuing="0" play_style="0" rating_value="20") + achieve_data(arena_class="20" best_top_class_continuing="0" now_top_class_continuing="0" play_style="1" rating_value="20") + cube_data(cube="0" season_id="0") + chat_data(chat_type_0="CHAT CUSTOM 1" chat_type_1="CHAT CUSTOM 2" chat_type_2="CHAT CUSTOM 3" chat_type_3="CHAT CUSTOM 4") + is_chat_0(__type="bool") 1 + is_chat_1(__type="bool") 1 + is_chat_2(__type="bool") 1 + is_chat_3(__type="bool") 1 + skin_customize_flg(skin_frame_flg="-1" skin_bgm_flg="-1") + if mirage_lib != null + event1(event_play_num=pcdata.event_play_num fragment_num=mirage_lib.fragment_num last_select_map_id=mirage_lib.last_select_map_id read_tips_list=mirage_lib.read_tips_list continuous_correct=mirage_lib.continuous_correct bookshelf_release_num=mirage_lib.bookshelf_release_num) + quiz_control_list(__type="bin") #{mirage_lib.quiz_control_list} + - for (let evt of mirage_lib_sub) + map_data(map_id=evt.map_id play_num=evt.play_num last_select_route_id=evt.last_select_route_id bookshelf_release_num=evt.bookshelf_release_num) + map_route_damage(__type="bin") #{evt.map_route_damage} + is_clear(__type="bool") #{evt.is_clear} + if delabity_lab != null + event2(play_num=delabity_lab.play_num last_select_floor=delabity_lab.last_select_floor delabity=delabity_lab.delabity tips_list=delabity_lab.tips_list floor_clear_flg_list=delabity_lab.floor_clear_flg_list floor_0_last_area=delabity_lab.floor_0_last_area floor_1_last_area=delabity_lab.floor_1_last_area floor_2_last_area=delabity_lab.floor_2_last_area floor_3_last_area=delabity_lab.floor_3_last_area floor_4_last_area=delabity_lab.floor_4_last_area) + - for (let evt of delabity_lab_sub) + area_data(floor_id=evt.floor_id area_id=evt.area_id last_select_note=evt.last_select_note normal_play_num=evt.normal_play_num hyper_play_num=evt.hyper_play_num another_play_num=evt.another_play_num area_clear_flg_list=evt.area_clear_flg_list normal_grade_point=evt.normal_grade_point hyper_grade_point=evt.hyper_grade_point another_grade_point=evt.another_grade_point) + floor_infection3(music_list="-1") + if anniv20 != null + anniv20_event(damage_0=anniv20.damage_0 damage_1=anniv20.damage_1 damage_2=anniv20.damage_2 challenge_0=anniv20.challenge_0 challenge_1=anniv20.challenge_1 challenge_2=anniv20.challenge_2) + bemani_vote(music_list="-1") diff --git a/iidx@asphyxia/pug/LDJ/27pcget.pug b/iidx@asphyxia/pug/LDJ/27pcget.pug new file mode 100644 index 0000000..fe85483 --- /dev/null +++ b/iidx@asphyxia/pug/LDJ/27pcget.pug @@ -0,0 +1,79 @@ +IIDX27pc(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_sub_gno=pcdata.s_sub_gno d_sub_gno=pcdata.d_sub_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 s_graph_score=pcdata.s_graph_score d_graph_score=pcdata.d_graph_score s_auto_scrach=pcdata.s_auto_scrach d_auto_scrach=pcdata.d_auto_scrach s_gauge_disp=pcdata.s_gauge_disp d_gauge_disp=pcdata.d_gauge_disp s_lane_brignt=pcdata.s_lane_brignt d_lane_brignt=pcdata.d_lane_brignt s_camera_layout=pcdata.s_camera_layout d_camera_layout=pcdata.d_camera_layout s_ghost_score=pcdata.s_ghost_score d_ghost_score=pcdata.d_ghost_score s_tsujigiri_disp=pcdata.s_tsujigiri_disp d_tsujigiri_disp=pcdata.d_tsujigiri_disp) + lightning_play_data(dpnum=lm_playdata.dp_num spnum=lm_playdata.sp_num) + lightning_setting(headphone_vol=lm_settings.headphone_vol resistance_dp_left=lm_settings.resistance_dp_left resistance_dp_right=lm_settings.resistance_dp_right resistance_sp_left=lm_settings.resistance_sp_left resistance_sp_right=lm_settings.resistance_sp_right) + slider(__type="s32" __count="7") #{lm_settings.slider[0]} #{lm_settings.slider[1]} #{lm_settings.slider[2]} #{lm_settings.slider[3]} #{lm_settings.slider[4]} #{lm_settings.slider[5]} #{lm_settings.slider[6]} + light(__type="bool" __count="6") #{lm_settings.light[0]} #{lm_settings.light[1]} #{lm_settings.light[2]} #{lm_settings.light[3]} #{lm_settings.light[4]} #{lm_settings.light[5]} + concentration(__type="bool") #{lm_settings.concentration} + bind_eaappli + ea_premium_course + enable_qr_reward + leggendaria_open + qpro_secret + head(__type="s64" __count="7") #{custom.qpro_secret_head[0]} #{custom.qpro_secret_head[1]} #{custom.qpro_secret_head[2]} #{custom.qpro_secret_head[3]} #{custom.qpro_secret_head[4]} #{custom.qpro_secret_head[5]} #{custom.qpro_secret_head[6]} + hair(__type="s64" __count="7") #{custom.qpro_secret_hair[0]} #{custom.qpro_secret_hair[1]} #{custom.qpro_secret_hair[2]} #{custom.qpro_secret_hair[3]} #{custom.qpro_secret_hair[4]} #{custom.qpro_secret_hair[5]} #{custom.qpro_secret_hair[6]} + face(__type="s64" __count="7") #{custom.qpro_secret_face[0]} #{custom.qpro_secret_face[1]} #{custom.qpro_secret_face[2]} #{custom.qpro_secret_face[3]} #{custom.qpro_secret_face[4]} #{custom.qpro_secret_face[5]} #{custom.qpro_secret_face[6]} + body(__type="s64" __count="7") #{custom.qpro_secret_body[0]} #{custom.qpro_secret_body[1]} #{custom.qpro_secret_body[2]} #{custom.qpro_secret_body[3]} #{custom.qpro_secret_body[4]} #{custom.qpro_secret_body[5]} #{custom.qpro_secret_body[6]} + hand(__type="s64" __count="7") #{custom.qpro_secret_hand[0]} #{custom.qpro_secret_hand[1]} #{custom.qpro_secret_hand[2]} #{custom.qpro_secret_hand[3]} #{custom.qpro_secret_hand[4]} #{custom.qpro_secret_hand[5]} #{custom.qpro_secret_hand[6]} + secret + flg1(__type="s64" __count="3") -1 -1 -1 + flg2(__type="s64" __count="3") -1 -1 -1 + flg3(__type="s64" __count="3") -1 -1 -1 + flg4(__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]} + eisei_grade + - for (let ed of eArray) + detail(grade_type=ed.grade_type grade_id=ed.grade_id stage_num=ed.stage_num clear_type=ed.clear_type) + past(__type="s32" __count="5") #{ed.past[0]} #{ed.past[1]} #{ed.past[2]} #{ed.past[3]} #{ed.past[4]} + max_past(__type="s32" __count="5") #{ed.max_past[0]} #{ed.max_past[1]} #{ed.max_past[2]} #{ed.max_past[3]} #{ed.max_past[4]} + skin(__type="s16" __count="20") #{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} #{custom.note_beam} #{custom.judge_font} 0 #{Number(custom.disable_musicpreview)} #{custom.pacemaker_cover} #{Number(custom.vefx_lock)} #{custom.effect} #{custom.bomb_size} #{Number(custom.disable_hcn_color)} #{custom.first_note_preview} + 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]) + is_robo(__type="bool") 0 + qprodata(body=rd.qprodata[3] face=rd.qprodata[2] hair=rd.qprodata[0] hand=rd.qprodata[4] head=rd.qprodata[1]) + shop(name=shop_data.opname) + dj_rank(style="0") + rank(__type="s32" __count="15") #{pcdata.dr_sprank[0]} #{pcdata.dr_sprank[1]} #{pcdata.dr_sprank[2]} #{pcdata.dr_sprank[3]} #{pcdata.dr_sprank[4]} #{pcdata.dr_sprank[5]} #{pcdata.dr_sprank[6]} #{pcdata.dr_sprank[7]} #{pcdata.dr_sprank[8]} #{pcdata.dr_sprank[9]} #{pcdata.dr_sprank[10]} #{pcdata.dr_sprank[11]} #{pcdata.dr_sprank[12]} #{pcdata.dr_sprank[13]} #{pcdata.dr_sprank[14]} + point(__type="s32" __count="15") #{pcdata.dr_sppoint[0]} #{pcdata.dr_sppoint[1]} #{pcdata.dr_sppoint[2]} #{pcdata.dr_sppoint[3]} #{pcdata.dr_sppoint[4]} #{pcdata.dr_sppoint[5]} #{pcdata.dr_sppoint[6]} #{pcdata.dr_sppoint[7]} #{pcdata.dr_sppoint[8]} #{pcdata.dr_sppoint[9]} #{pcdata.dr_sppoint[10]} #{pcdata.dr_sppoint[11]} #{pcdata.dr_sppoint[12]} #{pcdata.dr_sppoint[13]} #{pcdata.dr_sppoint[14]} + dj_rank(style="1") + rank(__type="s32" __count="15") #{pcdata.dr_dprank[0]} #{pcdata.dr_dprank[1]} #{pcdata.dr_dprank[2]} #{pcdata.dr_dprank[3]} #{pcdata.dr_dprank[4]} #{pcdata.dr_dprank[5]} #{pcdata.dr_dprank[6]} #{pcdata.dr_dprank[7]} #{pcdata.dr_dprank[8]} #{pcdata.dr_dprank[9]} #{pcdata.dr_dprank[10]} #{pcdata.dr_dprank[11]} #{pcdata.dr_dprank[12]} #{pcdata.dr_dprank[13]} #{pcdata.dr_dprank[14]} + point(__type="s32" __count="15") #{pcdata.dr_dppoint[0]} #{pcdata.dr_dppoint[1]} #{pcdata.dr_dppoint[2]} #{pcdata.dr_dppoint[3]} #{pcdata.dr_dppoint[4]} #{pcdata.dr_dppoint[5]} #{pcdata.dr_dppoint[6]} #{pcdata.dr_dppoint[7]} #{pcdata.dr_dppoint[8]} #{pcdata.dr_dppoint[9]} #{pcdata.dr_dppoint[10]} #{pcdata.dr_dppoint[11]} #{pcdata.dr_dppoint[12]} #{pcdata.dr_dppoint[13]} #{pcdata.dr_dppoint[14]} + notes_radar(style="0") + radar_score(__type="s32" __count="6") #{pcdata.nr_spradar[0]} #{pcdata.nr_spradar[1]} #{pcdata.nr_spradar[2]} #{pcdata.nr_spradar[3]} #{pcdata.nr_spradar[4]} #{pcdata.nr_spradar[5]} + notes_radar(style="1") + radar_score(__type="s32" __count="6") #{pcdata.nr_dpradar[0]} #{pcdata.nr_dpradar[1]} #{pcdata.nr_dpradar[2]} #{pcdata.nr_dpradar[3]} #{pcdata.nr_dpradar[4]} #{pcdata.nr_dpradar[5]} + visitor(anum="10" snum="10" pnum="10" vs_flg="1") + step(dp_clear_mission_clear=pcdata.st_dp_clear_mission_clear dp_clear_mission_level=pcdata.st_dp_clear_mission_level dp_dj_mission_clear=pcdata.st_dp_dj_mission_clear dp_dj_mission_level=pcdata.st_dp_dj_mission_level dp_level=pcdata.st_dp_level dp_mission_point=pcdata.st_dp_mission_point dp_mplay=pcdata.st_dp_mplay enemy_damage=pcdata.st_enemy_damage progress=pcdata.st_progress sp_clear_mission_clear=pcdata.st_sp_clear_mission_clear sp_clear_mission_level=pcdata.st_sp_clear_mission_level sp_dj_mission_clear=pcdata.st_sp_dj_mission_clear sp_dj_mission_level=pcdata.st_sp_dj_mission_level sp_level=pcdata.st_sp_level sp_mission_point=pcdata.st_sp_mission_point sp_mplay=pcdata.st_sp_mplay tips_read_list=pcdata.st_tips_read_list) + is_track_ticket(__type="bool") #{pcdata.st_is_track_ticket} + achievements(last_weekly=pcdata.achi_lastweekly pack=pcdata.achi_pack pack_comp=pcdata.achi_packcomp rival_crush=pcdata.achi_rivalcrush visit_flg=pcdata.achi_visitflg weekly_num=pcdata.achi_weeklynum) + trophy(__type="s64" __count="20") #{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]} #{pcdata.achi_trophy[10]} #{pcdata.achi_trophy[11]} #{pcdata.achi_trophy[12]} #{pcdata.achi_trophy[13]} #{pcdata.achi_trophy[14]} #{pcdata.achi_trophy[15]} #{pcdata.achi_trophy[16]} #{pcdata.achi_trophy[17]} #{pcdata.achi_trophy[18]} #{pcdata.achi_trophy[19]} + deller(deller=pcdata.deller rate="1") + orb_data(rest_orb=pcdata.orb present_orb=pcdata.present_orb) + leggendaria_semi_open(flg="-1") + arena_data(play_num="2" play_num_dp="1" play_num_sp="1") + achieve_data(arena_class="20" best_top_class_continuing="0" now_top_class_continuing="0" play_style="0" rating_value="20") + achieve_data(arena_class="20" best_top_class_continuing="0" now_top_class_continuing="0" play_style="1" rating_value="20") + cube_data(cube="0" season_id="0") + chat_data(chat_type_0="CHAT CUSTOM 1" chat_type_1="CHAT CUSTOM 2" chat_type_2="CHAT CUSTOM 3" chat_type_3="CHAT CUSTOM 4") + is_chat_0(__type="bool") 1 + is_chat_1(__type="bool") 1 + is_chat_2(__type="bool") 1 + is_chat_3(__type="bool") 1 + skin_customize_flg(skin_frame_flg="-1" skin_bgm_flg="-1") + event1(event_play_num=pcdata.event_play_num last_select_gym_id=pcdata.event_last_select_id) + - for (let evt of evtArray) + gym_data(gym_id=evt.gym_id play_num=evt.play_num gauge_spirit=evt.gauge_spirit gauge_technique=evt.gauge_technique gauge_body=evt.gauge_body boss_attack_num=evt.boss_attack_num boss_damage=evt.boss_damage disp_lounge_list=evt.disp_lounge_list stb_type=evt.stb_type) + is_complete(__type="bool") #{evt.is_complete} + is_gauge_max(__type="bool") #{evt.is_gauge_max} + floor_infection4(music_list="-1") + bemani_vote(music_list="-1") + bemani_janken_meeting(music_list="-1") + bemani_rush(music_list_ichika="-1" music_list_nono="-1") + ultimate_mobile_link(music_list="-1") + language_setting(language=profile.language) + movie_agreement(agreement_version="1") + extra_boss_event(key_orb="0" boss_orb_0="0" boss_orb_1="0" boss_orb_2="0" boss_orb_3="0" boss_orb_4="0" boss_orb_5="0" boss_orb_6="0" boss_orb_7="0") diff --git a/iidx@asphyxia/pug/LDJ/28pcget.pug b/iidx@asphyxia/pug/LDJ/28pcget.pug new file mode 100644 index 0000000..cbc055d --- /dev/null +++ b/iidx@asphyxia/pug/LDJ/28pcget.pug @@ -0,0 +1,94 @@ +IIDX28pc(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 ngrade=pcdata.ngrade 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_sub_gno=pcdata.s_sub_gno d_sub_gno=pcdata.d_sub_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 s_graph_score=pcdata.s_graph_score d_graph_score=pcdata.d_graph_score s_auto_scrach=pcdata.s_auto_scrach d_auto_scrach=pcdata.d_auto_scrach s_gauge_disp=pcdata.s_gauge_disp d_gauge_disp=pcdata.d_gauge_disp s_lane_brignt=pcdata.s_lane_brignt d_lane_brignt=pcdata.d_lane_brignt s_camera_layout=pcdata.s_camera_layout d_camera_layout=pcdata.d_camera_layout s_ghost_score=pcdata.s_ghost_score d_ghost_score=pcdata.d_ghost_score s_tsujigiri_disp=pcdata.s_tsujigiri_disp d_tsujigiri_disp=pcdata.d_tsujigiri_disp) + lightning_play_data(dpnum=lm_playdata.dp_num spnum=lm_playdata.sp_num) + lightning_setting(headphone_vol=lm_settings.headphone_vol resistance_dp_left=lm_settings.resistance_dp_left resistance_dp_right=lm_settings.resistance_dp_right resistance_sp_left=lm_settings.resistance_sp_left resistance_sp_right=lm_settings.resistance_sp_right skin_0=lm_custom.premium_skin flg_skin_0="-1") + slider(__type="s32" __count="7") #{lm_settings.slider[0]} #{lm_settings.slider[1]} #{lm_settings.slider[2]} #{lm_settings.slider[3]} #{lm_settings.slider[4]} #{lm_settings.slider[5]} #{lm_settings.slider[6]} + light(__type="bool" __count="6") #{lm_settings.light[0]} #{lm_settings.light[1]} #{lm_settings.light[2]} #{lm_settings.light[3]} #{lm_settings.light[4]} #{lm_settings.light[5]} + concentration(__type="bool") #{lm_settings.concentration} + spdp_rival(flg="-1") + bind_eaappli + ea_premium_course + enable_qr_reward + secret + flg1(__type="s64" __count="3") -1 -1 -1 + flg2(__type="s64" __count="3") -1 -1 -1 + flg3(__type="s64" __count="3") -1 -1 -1 + flg4(__type="s64" __count="3") -1 -1 -1 + leggendaria + flg1(__type="s64" __count="3") -1 -1 -1 + music_memo + - for (let m of mArray) + music(index=m.music_idx play_style=m.play_style music_id=m.music_id) + qpro_secret + head(__type="s64" __count="7") #{custom.qpro_secret_head[0]} #{custom.qpro_secret_head[1]} #{custom.qpro_secret_head[2]} #{custom.qpro_secret_head[3]} #{custom.qpro_secret_head[4]} #{custom.qpro_secret_head[5]} #{custom.qpro_secret_head[6]} + hair(__type="s64" __count="7") #{custom.qpro_secret_hair[0]} #{custom.qpro_secret_hair[1]} #{custom.qpro_secret_hair[2]} #{custom.qpro_secret_hair[3]} #{custom.qpro_secret_hair[4]} #{custom.qpro_secret_hair[5]} #{custom.qpro_secret_hair[6]} + face(__type="s64" __count="7") #{custom.qpro_secret_face[0]} #{custom.qpro_secret_face[1]} #{custom.qpro_secret_face[2]} #{custom.qpro_secret_face[3]} #{custom.qpro_secret_face[4]} #{custom.qpro_secret_face[5]} #{custom.qpro_secret_face[6]} + body(__type="s64" __count="7") #{custom.qpro_secret_body[0]} #{custom.qpro_secret_body[1]} #{custom.qpro_secret_body[2]} #{custom.qpro_secret_body[3]} #{custom.qpro_secret_body[4]} #{custom.qpro_secret_body[5]} #{custom.qpro_secret_body[6]} + hand(__type="s64" __count="7") #{custom.qpro_secret_hand[0]} #{custom.qpro_secret_hand[1]} #{custom.qpro_secret_hand[2]} #{custom.qpro_secret_hand[3]} #{custom.qpro_secret_hand[4]} #{custom.qpro_secret_hand[5]} #{custom.qpro_secret_hand[6]} + 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]} + eisei_grade_data + - for (let ed of eArray) + detail(grade_type=ed.grade_type grade_id=ed.grade_id stage_num=ed.stage_num clear_type=ed.clear_type) + past(__type="s32" __count="5") #{ed.past[0]} #{ed.past[1]} #{ed.past[2]} #{ed.past[3]} #{ed.past[4]} + selected_course(__type="s32" __count="5") #{ed.selected_course[0]} #{ed.selected_course[1]} #{ed.selected_course[2]} #{ed.selected_course[3]} #{ed.selected_course[4]} + max_past(__type="s32" __count="5") #{ed.max_past[0]} #{ed.max_past[1]} #{ed.max_past[2]} #{ed.max_past[3]} #{ed.max_past[4]} + max_selected_course(__type="s32" __count="5") #{ed.max_selected_course[0]} #{ed.max_selected_course[1]} #{ed.max_selected_course[2]} #{ed.max_selected_course[3]} #{ed.max_selected_course[4]} + skin(__type="s16" __count="20") #{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} #{custom.note_beam} #{custom.judge_font} 0 #{Number(custom.disable_musicpreview)} #{custom.pacemaker_cover} #{Number(custom.vefx_lock)} #{custom.effect} #{custom.bomb_size} #{Number(custom.disable_hcn_color)} #{custom.first_note_preview} + 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]) + is_robo(__type="bool") 0 + qprodata(body=rd.qprodata[3] face=rd.qprodata[2] hair=rd.qprodata[0] hand=rd.qprodata[4] head=rd.qprodata[1]) + shop(name=shop_data.opname) + dj_rank(style="0") + rank(__type="s32" __count="15") #{pcdata.dr_sprank[0]} #{pcdata.dr_sprank[1]} #{pcdata.dr_sprank[2]} #{pcdata.dr_sprank[3]} #{pcdata.dr_sprank[4]} #{pcdata.dr_sprank[5]} #{pcdata.dr_sprank[6]} #{pcdata.dr_sprank[7]} #{pcdata.dr_sprank[8]} #{pcdata.dr_sprank[9]} #{pcdata.dr_sprank[10]} #{pcdata.dr_sprank[11]} #{pcdata.dr_sprank[12]} #{pcdata.dr_sprank[13]} #{pcdata.dr_sprank[14]} + point(__type="s32" __count="15") #{pcdata.dr_sppoint[0]} #{pcdata.dr_sppoint[1]} #{pcdata.dr_sppoint[2]} #{pcdata.dr_sppoint[3]} #{pcdata.dr_sppoint[4]} #{pcdata.dr_sppoint[5]} #{pcdata.dr_sppoint[6]} #{pcdata.dr_sppoint[7]} #{pcdata.dr_sppoint[8]} #{pcdata.dr_sppoint[9]} #{pcdata.dr_sppoint[10]} #{pcdata.dr_sppoint[11]} #{pcdata.dr_sppoint[12]} #{pcdata.dr_sppoint[13]} #{pcdata.dr_sppoint[14]} + dj_rank(style="1") + rank(__type="s32" __count="15") #{pcdata.dr_dprank[0]} #{pcdata.dr_dprank[1]} #{pcdata.dr_dprank[2]} #{pcdata.dr_dprank[3]} #{pcdata.dr_dprank[4]} #{pcdata.dr_dprank[5]} #{pcdata.dr_dprank[6]} #{pcdata.dr_dprank[7]} #{pcdata.dr_dprank[8]} #{pcdata.dr_dprank[9]} #{pcdata.dr_dprank[10]} #{pcdata.dr_dprank[11]} #{pcdata.dr_dprank[12]} #{pcdata.dr_dprank[13]} #{pcdata.dr_dprank[14]} + point(__type="s32" __count="15") #{pcdata.dr_dppoint[0]} #{pcdata.dr_dppoint[1]} #{pcdata.dr_dppoint[2]} #{pcdata.dr_dppoint[3]} #{pcdata.dr_dppoint[4]} #{pcdata.dr_dppoint[5]} #{pcdata.dr_dppoint[6]} #{pcdata.dr_dppoint[7]} #{pcdata.dr_dppoint[8]} #{pcdata.dr_dppoint[9]} #{pcdata.dr_dppoint[10]} #{pcdata.dr_dppoint[11]} #{pcdata.dr_dppoint[12]} #{pcdata.dr_dppoint[13]} #{pcdata.dr_dppoint[14]} + notes_radar(style="0") + radar_score(__type="s32" __count="6") #{pcdata.nr_spradar[0]} #{pcdata.nr_spradar[1]} #{pcdata.nr_spradar[2]} #{pcdata.nr_spradar[3]} #{pcdata.nr_spradar[4]} #{pcdata.nr_spradar[5]} + notes_radar(style="1") + radar_score(__type="s32" __count="6") #{pcdata.nr_dpradar[0]} #{pcdata.nr_dpradar[1]} #{pcdata.nr_dpradar[2]} #{pcdata.nr_dpradar[3]} #{pcdata.nr_dpradar[4]} #{pcdata.nr_dpradar[5]} + visitor(anum="10" snum="10" pnum="10" vs_flg="1") + step(dp_clear_mission_clear=pcdata.st_dp_clear_mission_clear dp_clear_mission_level=pcdata.st_dp_clear_mission_level dp_dj_mission_clear=pcdata.st_dp_dj_mission_clear dp_dj_mission_level=pcdata.st_dp_dj_mission_level dp_level=pcdata.st_dp_level dp_mission_point=pcdata.st_dp_mission_point dp_mplay=pcdata.st_dp_mplay enemy_damage=pcdata.st_enemy_damage progress=pcdata.st_progress sp_clear_mission_clear=pcdata.st_sp_clear_mission_clear sp_clear_mission_level=pcdata.st_sp_clear_mission_level sp_dj_mission_clear=pcdata.st_sp_dj_mission_clear sp_dj_mission_level=pcdata.st_sp_dj_mission_level sp_level=pcdata.st_sp_level sp_mission_point=pcdata.st_sp_mission_point sp_mplay=pcdata.st_sp_mplay tips_read_list=pcdata.st_tips_read_list) + is_track_ticket(__type="bool") #{pcdata.st_is_track_ticket} + achievements(last_weekly=pcdata.achi_lastweekly pack=pcdata.achi_pack pack_comp=pcdata.achi_packcomp rival_crush=pcdata.achi_rivalcrush visit_flg=pcdata.achi_visitflg weekly_num=pcdata.achi_weeklynum) + trophy(__type="s64" __count="20") #{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]} #{pcdata.achi_trophy[10]} #{pcdata.achi_trophy[11]} #{pcdata.achi_trophy[12]} #{pcdata.achi_trophy[13]} #{pcdata.achi_trophy[14]} #{pcdata.achi_trophy[15]} #{pcdata.achi_trophy[16]} #{pcdata.achi_trophy[17]} #{pcdata.achi_trophy[18]} #{pcdata.achi_trophy[19]} + deller(deller=pcdata.deller rate="1") + orb_data(rest_orb=pcdata.orb present_orb=pcdata.present_orb) + arena_data(play_num="2" play_num_dp="1" play_num_sp="1" prev_best_class_sp="20" prev_best_class_dp="20") + achieve_data(arena_class="20" best_top_class_continuing="0" now_top_class_continuing="0" counterattack_num="0" play_style="0" rating_value="20") + achieve_data(arena_class="20" best_top_class_continuing="0" now_top_class_continuing="0" counterattack_num="0" play_style="1" rating_value="20") + cube_data(cube="0" season_id="0") + chat_data(chat_type_0="CHAT CUSTOM 1" chat_type_1="CHAT CUSTOM 2" chat_type_2="CHAT CUSTOM 3" chat_type_3="CHAT CUSTOM 4") + is_chat_0(__type="bool") 1 + is_chat_1(__type="bool") 1 + is_chat_2(__type="bool") 1 + is_chat_3(__type="bool") 1 + skin_customize_flg(skin_frame_flg="-1" skin_bgm_flg="-1") + event_1(event_play_num=pcdata.event_play_num story_prog=pcdata.event_story_prog last_select_area_id=pcdata.event_last_select_id failed_num=pcdata.event_failed_num) + - for (let evt of evtArray) + area_data(area_id=evt.area_id play_num=evt.play_num recipe_prog0=evt.recipe_prog0 recipe_prog1=evt.recipe_prog1 recipe_prog2=evt.recipe_prog2 recipe_prog3=evt.recipe_prog3 recipe_prog4=evt.recipe_prog4 operation_num=evt.operation_num operation_prog=evt.operation_prog last_select_recipe=evt.last_select_recipe area_prog=evt.area_prog) + is_complete(__type="bool") #{evt.is_complete} + floor_infection4(music_list="-1") + bemani_vote(music_list="-1") + bemani_janken_meeting(music_list="-1") + bemani_rush(music_list_ichika="-1" music_list_nono="-1") + ultimate_mobile_link(music_list="-1") + link_flag + bemani_musiq_fes(music_list="-1") + busou_linkage(music_list="-1") + busou_linkage_2(music_list="-1") + valkyrie_linkage_data(progress="100") + bemani_song_battle(music_list="-1") + language_setting(language=profile.language) + movie_agreement(agreement_version="1") + extra_boss_event(key_orb="0" boss_orb_0="0" boss_orb_1="0" boss_orb_2="0" boss_orb_3="0" boss_orb_4="0" boss_orb_5="0" boss_orb_6="0" boss_orb_7="0") + world_tourism + - for (let wd of wArray) + tour_data(tour_id=wd.tour_id progress=wd.progress) + world_tourism_secret(music_list="-1") diff --git a/iidx@asphyxia/pug/LDJ/29pcget.pug b/iidx@asphyxia/pug/LDJ/29pcget.pug new file mode 100644 index 0000000..539b6aa --- /dev/null +++ b/iidx@asphyxia/pug/LDJ/29pcget.pug @@ -0,0 +1,99 @@ +IIDX29pc(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 ngrade=pcdata.ngrade 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_sub_gno=pcdata.s_sub_gno d_sub_gno=pcdata.d_sub_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 s_graph_score=pcdata.s_graph_score d_graph_score=pcdata.d_graph_score s_auto_scrach=pcdata.s_auto_scrach d_auto_scrach=pcdata.d_auto_scrach s_gauge_disp=pcdata.s_gauge_disp d_gauge_disp=pcdata.d_gauge_disp s_lane_brignt=pcdata.s_lane_brignt d_lane_brignt=pcdata.d_lane_brignt s_camera_layout=pcdata.s_camera_layout d_camera_layout=pcdata.d_camera_layout s_ghost_score=pcdata.s_ghost_score d_ghost_score=pcdata.d_ghost_score s_tsujigiri_disp=pcdata.s_tsujigiri_disp d_tsujigiri_disp=pcdata.d_tsujigiri_disp s_auto_adjust=pcdata.s_auto_adjust d_auto_adjust=pcdata.d_auto_adjust) + lightning_play_data(dpnum=lm_playdata.dp_num spnum=lm_playdata.sp_num) + lightning_setting(headphone_vol=lm_settings.headphone_vol resistance_dp_left=lm_settings.resistance_dp_left resistance_dp_right=lm_settings.resistance_dp_right resistance_sp_left=lm_settings.resistance_sp_left resistance_sp_right=lm_settings.resistance_sp_right skin_0=lm_custom.premium_skin flg_skin_0="-1") + slider(__type="s32" __count="7") #{lm_settings.slider[0]} #{lm_settings.slider[1]} #{lm_settings.slider[2]} #{lm_settings.slider[3]} #{lm_settings.slider[4]} #{lm_settings.slider[5]} #{lm_settings.slider[6]} + light(__type="bool" __count="10") #{lm_settings.light[0]} #{lm_settings.light[1]} #{lm_settings.light[2]} #{lm_settings.light[3]} #{lm_settings.light[4]} #{lm_settings.light[5]} #{lm_settings.light[6]} #{lm_settings.light[7]} #{lm_settings.light[8]} #{lm_settings.light[9]} + concentration(__type="bool") #{lm_settings.concentration} + spdp_rival(flg="-1") + bind_eaappli + ea_premium_course + enable_qr_reward + secret + flg1(__type="s64" __count="3") -1 -1 -1 + flg2(__type="s64" __count="3") -1 -1 -1 + flg3(__type="s64" __count="3") -1 -1 -1 + flg4(__type="s64" __count="3") -1 -1 -1 + leggendaria + flg1(__type="s64" __count="3") -1 -1 -1 + music_memo + - for (let m of mArray) + music(index=m.music_idx play_style=m.play_style music_id=m.music_id) + qpro_secret + head(__type="s64" __count="7") #{custom.qpro_secret_head[0]} #{custom.qpro_secret_head[1]} #{custom.qpro_secret_head[2]} #{custom.qpro_secret_head[3]} #{custom.qpro_secret_head[4]} #{custom.qpro_secret_head[5]} #{custom.qpro_secret_head[6]} + hair(__type="s64" __count="7") #{custom.qpro_secret_hair[0]} #{custom.qpro_secret_hair[1]} #{custom.qpro_secret_hair[2]} #{custom.qpro_secret_hair[3]} #{custom.qpro_secret_hair[4]} #{custom.qpro_secret_hair[5]} #{custom.qpro_secret_hair[6]} + face(__type="s64" __count="7") #{custom.qpro_secret_face[0]} #{custom.qpro_secret_face[1]} #{custom.qpro_secret_face[2]} #{custom.qpro_secret_face[3]} #{custom.qpro_secret_face[4]} #{custom.qpro_secret_face[5]} #{custom.qpro_secret_face[6]} + body(__type="s64" __count="7") #{custom.qpro_secret_body[0]} #{custom.qpro_secret_body[1]} #{custom.qpro_secret_body[2]} #{custom.qpro_secret_body[3]} #{custom.qpro_secret_body[4]} #{custom.qpro_secret_body[5]} #{custom.qpro_secret_body[6]} + hand(__type="s64" __count="7") #{custom.qpro_secret_hand[0]} #{custom.qpro_secret_hand[1]} #{custom.qpro_secret_hand[2]} #{custom.qpro_secret_hand[3]} #{custom.qpro_secret_hand[4]} #{custom.qpro_secret_hand[5]} #{custom.qpro_secret_hand[6]} + 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]} + eisei_grade_data + - for (let ed of eArray) + detail(grade_type=ed.grade_type grade_id=ed.grade_id stage_num=ed.stage_num clear_type=ed.clear_type) + past(__type="s32" __count="3") #{ed.past[0]} #{ed.past[1]} #{ed.past[2]} + selected_course(__type="s32" __count="3") #{ed.selected_course[0]} #{ed.selected_course[1]} #{ed.selected_course[2]} + max_past(__type="s32" __count="3") #{ed.max_past[0]} #{ed.max_past[1]} #{ed.max_past[2]} + max_selected_course(__type="s32" __count="3") #{ed.max_selected_course[0]} #{ed.max_selected_course[1]} #{ed.max_selected_course[2]} + skin(__type="s16" __count="20") #{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} #{custom.note_beam} #{custom.judge_font} 0 #{Number(custom.disable_musicpreview)} #{custom.pacemaker_cover} #{Number(custom.vefx_lock)} #{custom.effect} #{custom.bomb_size} #{Number(custom.disable_hcn_color)} #{custom.first_note_preview} + 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]) + is_robo(__type="bool") 0 + qprodata(body=rd.qprodata[3] face=rd.qprodata[2] hair=rd.qprodata[0] hand=rd.qprodata[4] head=rd.qprodata[1]) + shop(name=shop_data.opname) + dj_rank(style="0") + rank(__type="s32" __count="15") #{pcdata.dr_sprank[0]} #{pcdata.dr_sprank[1]} #{pcdata.dr_sprank[2]} #{pcdata.dr_sprank[3]} #{pcdata.dr_sprank[4]} #{pcdata.dr_sprank[5]} #{pcdata.dr_sprank[6]} #{pcdata.dr_sprank[7]} #{pcdata.dr_sprank[8]} #{pcdata.dr_sprank[9]} #{pcdata.dr_sprank[10]} #{pcdata.dr_sprank[11]} #{pcdata.dr_sprank[12]} #{pcdata.dr_sprank[13]} #{pcdata.dr_sprank[14]} + point(__type="s32" __count="15") #{pcdata.dr_sppoint[0]} #{pcdata.dr_sppoint[1]} #{pcdata.dr_sppoint[2]} #{pcdata.dr_sppoint[3]} #{pcdata.dr_sppoint[4]} #{pcdata.dr_sppoint[5]} #{pcdata.dr_sppoint[6]} #{pcdata.dr_sppoint[7]} #{pcdata.dr_sppoint[8]} #{pcdata.dr_sppoint[9]} #{pcdata.dr_sppoint[10]} #{pcdata.dr_sppoint[11]} #{pcdata.dr_sppoint[12]} #{pcdata.dr_sppoint[13]} #{pcdata.dr_sppoint[14]} + dj_rank(style="1") + rank(__type="s32" __count="15") #{pcdata.dr_dprank[0]} #{pcdata.dr_dprank[1]} #{pcdata.dr_dprank[2]} #{pcdata.dr_dprank[3]} #{pcdata.dr_dprank[4]} #{pcdata.dr_dprank[5]} #{pcdata.dr_dprank[6]} #{pcdata.dr_dprank[7]} #{pcdata.dr_dprank[8]} #{pcdata.dr_dprank[9]} #{pcdata.dr_dprank[10]} #{pcdata.dr_dprank[11]} #{pcdata.dr_dprank[12]} #{pcdata.dr_dprank[13]} #{pcdata.dr_dprank[14]} + point(__type="s32" __count="15") #{pcdata.dr_dppoint[0]} #{pcdata.dr_dppoint[1]} #{pcdata.dr_dppoint[2]} #{pcdata.dr_dppoint[3]} #{pcdata.dr_dppoint[4]} #{pcdata.dr_dppoint[5]} #{pcdata.dr_dppoint[6]} #{pcdata.dr_dppoint[7]} #{pcdata.dr_dppoint[8]} #{pcdata.dr_dppoint[9]} #{pcdata.dr_dppoint[10]} #{pcdata.dr_dppoint[11]} #{pcdata.dr_dppoint[12]} #{pcdata.dr_dppoint[13]} #{pcdata.dr_dppoint[14]} + notes_radar(style="0") + radar_score(__type="s32" __count="6") #{pcdata.nr_spradar[0]} #{pcdata.nr_spradar[1]} #{pcdata.nr_spradar[2]} #{pcdata.nr_spradar[3]} #{pcdata.nr_spradar[4]} #{pcdata.nr_spradar[5]} + notes_radar(style="1") + radar_score(__type="s32" __count="6") #{pcdata.nr_dpradar[0]} #{pcdata.nr_dpradar[1]} #{pcdata.nr_dpradar[2]} #{pcdata.nr_dpradar[3]} #{pcdata.nr_dpradar[4]} #{pcdata.nr_dpradar[5]} + visitor(anum="10" snum="10" pnum="10" vs_flg="1") + step(enemy_damage=pcdata.st_enemy_damage progress=pcdata.st_progress total_point=pcdata.st_total_point enemy_defeat_flg=pcdata.st_enemy_defeat_flg sp_level=pcdata.st_sp_level dp_level=pcdata.st_dp_level mission_clear_num=pcdata.st_mission_clear_num sp_mplay=pcdata.st_sp_mplay dp_mplay=pcdata.st_dp_mplay tips_read_list=pcdata.st_tips_read_list) + is_track_ticket(__type="bool") #{pcdata.st_is_track_ticket} + achievements(last_weekly=pcdata.achi_lastweekly pack=pcdata.achi_pack pack_comp=pcdata.achi_packcomp rival_crush=pcdata.achi_rivalcrush visit_flg=pcdata.achi_visitflg weekly_num=pcdata.achi_weeklynum) + trophy(__type="s64" __count="20") #{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]} #{pcdata.achi_trophy[10]} #{pcdata.achi_trophy[11]} #{pcdata.achi_trophy[12]} #{pcdata.achi_trophy[13]} #{pcdata.achi_trophy[14]} #{pcdata.achi_trophy[15]} #{pcdata.achi_trophy[16]} #{pcdata.achi_trophy[17]} #{pcdata.achi_trophy[18]} #{pcdata.achi_trophy[19]} + deller(deller=pcdata.deller rate="1") + orb_data(rest_orb=pcdata.orb present_orb=pcdata.present_orb) + arena_data(play_num="2" play_num_dp="1" play_num_sp="1" prev_best_class_sp="20" prev_best_class_dp="20") + achieve_data(arena_class="20" best_top_class_continuing="0" now_top_class_continuing="0" counterattack_num="0" play_style="0" rating_value="20") + achieve_data(arena_class="20" best_top_class_continuing="0" now_top_class_continuing="0" counterattack_num="0" play_style="1" rating_value="20") + cube_data(cube="0" season_id="0") + chat_data(chat_type_0="CHAT CUSTOM 1" chat_type_1="CHAT CUSTOM 2" chat_type_2="CHAT CUSTOM 3" chat_type_3="CHAT CUSTOM 4") + is_chat_0(__type="bool") 1 + is_chat_1(__type="bool") 1 + is_chat_2(__type="bool") 1 + is_chat_3(__type="bool") 1 + skin_customize_flg(skin_frame_flg="-1" skin_bgm_flg="-1" skin_lane_flg3="-1") + event_1(event_play_num=pcdata.event_play_num last_select_platform_type=pcdata.event_last_select_type last_select_platform_id=pcdata.event_last_select_id) + - for (let evt of evtArray) + plat_watch_data(platform_id=evt.platform_id play_num=evt.play_num last_select_channel=evt.last_select_channel platform_prog=evt.platform_prog) + - for (let evt2 of evtArray2) + ch_watch_data(platform_id=evt2.platform_id channel_id=evt2.channel_id play_num=evt2.channel_play_num gauge=evt2.gauge) + is_complete(__type="bool") #{evt2.is_complete} + floor_infection4(music_list="-1") + bemani_vote(music_list="-1") + bemani_janken_meeting(music_list="-1") + bemani_rush(music_list_ichika="-1" music_list_nono="-1") + ultimate_mobile_link(music_list="-1") + link_flag + bemani_musiq_fes(music_list="-1") + busou_linkage(music_list="-1") + busou_linkage_2(music_list="-1") + valkyrie_linkage_2_data(progress="100") + bemani_song_battle(music_list="-1") + language_setting(language=profile.language) + movie_agreement(agreement_version="1") + movie_setting + hide_name(__type="bool") 0 + world_tourism + - for (let wd of wArray) + tour_data(tour_id=wd.tour_id progress=wd.progress) + world_tourism_secrfet_flg + flg1(__type="s64" __count="3") -1 -1 -1 + flg2(__type="s64" __count="3") -1 -1 -1 diff --git a/iidx@asphyxia/pug/LDJ/30pcget.pug b/iidx@asphyxia/pug/LDJ/30pcget.pug new file mode 100644 index 0000000..6e00673 --- /dev/null +++ b/iidx@asphyxia/pug/LDJ/30pcget.pug @@ -0,0 +1,101 @@ +IIDX30pc(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 ngrade=pcdata.ngrade 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_sub_gno=pcdata.s_sub_gno d_sub_gno=pcdata.d_sub_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 s_graph_score=pcdata.s_graph_score d_graph_score=pcdata.d_graph_score s_auto_scrach=pcdata.s_auto_scrach d_auto_scrach=pcdata.d_auto_scrach s_gauge_disp=pcdata.s_gauge_disp d_gauge_disp=pcdata.d_gauge_disp s_lane_brignt=pcdata.s_lane_brignt d_lane_brignt=pcdata.d_lane_brignt s_camera_layout=pcdata.s_camera_layout d_camera_layout=pcdata.d_camera_layout s_ghost_score=pcdata.s_ghost_score d_ghost_score=pcdata.d_ghost_score s_tsujigiri_disp=pcdata.s_tsujigiri_disp d_tsujigiri_disp=pcdata.d_tsujigiri_disp s_auto_adjust=pcdata.s_auto_adjust d_auto_adjust=pcdata.d_auto_adjust s_timing_split=pcdata.s_timing_split d_timing_split=pcdata.d_timing_split s_visualization=pcdata.s_visualization d_visualization=pcdata.d_visualization) + lightning_play_data(dpnum=lm_playdata.dp_num spnum=lm_playdata.sp_num) + lightning_setting(headphone_vol=lm_settings.headphone_vol resistance_dp_left=lm_settings.resistance_dp_left resistance_dp_right=lm_settings.resistance_dp_right resistance_sp_left=lm_settings.resistance_sp_left resistance_sp_right=lm_settings.resistance_sp_right skin_0=lm_custom.premium_skin flg_skin_0="-1") + slider(__type="s32" __count="7") #{lm_settings.slider[0]} #{lm_settings.slider[1]} #{lm_settings.slider[2]} #{lm_settings.slider[3]} #{lm_settings.slider[4]} #{lm_settings.slider[5]} #{lm_settings.slider[6]} + light(__type="bool" __count="10") #{lm_settings.light[0]} #{lm_settings.light[1]} #{lm_settings.light[2]} #{lm_settings.light[3]} #{lm_settings.light[4]} #{lm_settings.light[5]} #{lm_settings.light[6]} #{lm_settings.light[7]} #{lm_settings.light[8]} #{lm_settings.light[9]} + concentration(__type="bool") #{lm_settings.concentration} + spdp_rival(flg="-1") + bind_eaappli + ea_premium_course + secret + flg1(__type="s64" __count="3") -1 -1 -1 + flg2(__type="s64" __count="3") -1 -1 -1 + flg3(__type="s64" __count="3") -1 -1 -1 + flg4(__type="s64" __count="3") -1 -1 -1 + leggendaria + flg1(__type="s64" __count="3") -1 -1 -1 + music_memo + - for (let m of mArray) + folder(play_style=m.play_style folder_id=m.folder_idx name=m.folder_name) + music_id(__type="s32" __count="10") #{m.music_ids[0]} #{m.music_ids[1]} #{m.music_ids[2]} #{m.music_ids[3]} #{m.music_ids[4]} #{m.music_ids[5]} #{m.music_ids[6]} #{m.music_ids[7]} #{m.music_ids[8]} #{m.music_ids[9]} + qpro_secret + head(__type="s64" __count="7") #{custom.qpro_secret_head[0]} #{custom.qpro_secret_head[1]} #{custom.qpro_secret_head[2]} #{custom.qpro_secret_head[3]} #{custom.qpro_secret_head[4]} #{custom.qpro_secret_head[5]} #{custom.qpro_secret_head[6]} + hair(__type="s64" __count="7") #{custom.qpro_secret_hair[0]} #{custom.qpro_secret_hair[1]} #{custom.qpro_secret_hair[2]} #{custom.qpro_secret_hair[3]} #{custom.qpro_secret_hair[4]} #{custom.qpro_secret_hair[5]} #{custom.qpro_secret_hair[6]} + face(__type="s64" __count="7") #{custom.qpro_secret_face[0]} #{custom.qpro_secret_face[1]} #{custom.qpro_secret_face[2]} #{custom.qpro_secret_face[3]} #{custom.qpro_secret_face[4]} #{custom.qpro_secret_face[5]} #{custom.qpro_secret_face[6]} + body(__type="s64" __count="7") #{custom.qpro_secret_body[0]} #{custom.qpro_secret_body[1]} #{custom.qpro_secret_body[2]} #{custom.qpro_secret_body[3]} #{custom.qpro_secret_body[4]} #{custom.qpro_secret_body[5]} #{custom.qpro_secret_body[6]} + hand(__type="s64" __count="7") #{custom.qpro_secret_hand[0]} #{custom.qpro_secret_hand[1]} #{custom.qpro_secret_hand[2]} #{custom.qpro_secret_hand[3]} #{custom.qpro_secret_hand[4]} #{custom.qpro_secret_hand[5]} #{custom.qpro_secret_hand[6]} + 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]} + eisei_data + - for (let ed of eArray) + detail(grade_type=ed.grade_type grade_id=ed.grade_id stage_num=ed.stage_num clear_type=ed.clear_type option=ed.option) + past(__type="s32" __count="3") #{ed.past[0]} #{ed.past[1]} #{ed.past[2]} + selected_course(__type="s32" __count="3") #{ed.selected_course[0]} #{ed.selected_course[1]} #{ed.selected_course[2]} + max_past(__type="s32" __count="3") #{ed.max_past[0]} #{ed.max_past[1]} #{ed.max_past[2]} + max_selected_course(__type="s32" __count="3") #{ed.max_selected_course[0]} #{ed.max_selected_course[1]} #{ed.max_selected_course[2]} + skin(__type="s16" __count="20") #{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} #{custom.note_beam} #{custom.judge_font} 0 #{Number(custom.disable_musicpreview)} #{custom.pacemaker_cover} #{Number(custom.vefx_lock)} #{custom.effect} #{custom.bomb_size} #{Number(custom.disable_hcn_color)} #{custom.first_note_preview} + 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]) + is_robo(__type="bool") 0 + qprodata(body=rd.qprodata[3] face=rd.qprodata[2] hair=rd.qprodata[0] hand=rd.qprodata[4] head=rd.qprodata[1]) + shop(name=shop_data.opname) + notes_radar(style="0") + radar_score(__type="s32" __count="6") #{pcdata.nr_spradar[0]} #{pcdata.nr_spradar[1]} #{pcdata.nr_spradar[2]} #{pcdata.nr_spradar[3]} #{pcdata.nr_spradar[4]} #{pcdata.nr_spradar[5]} + notes_radar(style="1") + radar_score(__type="s32" __count="6") #{pcdata.nr_dpradar[0]} #{pcdata.nr_dpradar[1]} #{pcdata.nr_dpradar[2]} #{pcdata.nr_dpradar[3]} #{pcdata.nr_dpradar[4]} #{pcdata.nr_dpradar[5]} + visitor(anum="10" snum="10" pnum="10" vs_flg="1") + step(enemy_damage=pcdata.st_enemy_damage progress=pcdata.st_progress total_point=pcdata.st_total_point enemy_defeat_flg=pcdata.st_enemy_defeat_flg sp_level=pcdata.st_sp_level dp_level=pcdata.st_dp_level sp_fluctuation=pcdata.st_sp_fluctuation dp_fluctuation=pcdata.st_dp_fluctuation mission_clear_num=pcdata.st_mission_clear_num sp_mplay=pcdata.st_sp_mplay dp_mplay=pcdata.st_dp_mplay tips_read_list=pcdata.st_tips_read_list) + is_track_ticket(__type="bool") #{pcdata.st_is_track_ticket} + achievements(last_weekly=pcdata.achi_lastweekly pack=pcdata.achi_pack pack_comp=pcdata.achi_packcomp rival_crush=pcdata.achi_rivalcrush visit_flg=pcdata.achi_visitflg weekly_num=pcdata.achi_weeklynum) + //- i have no idea why this now needs to be 10 instead of 20 + 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]} + deller(deller=pcdata.deller rate="1") + orb_data(rest_orb=pcdata.orb present_orb=pcdata.present_orb) + old_linkage_secret_flg(song_battle="-1") + arena_data(play_num="2" play_num_dp="1" play_num_sp="1" prev_best_class_sp="20" prev_best_class_dp="20") + achieve_data(play_style="0" arena_class="20" rating_value="20" win_count="0" now_winning_streak_count="0" best_winning_streak_count="0" perfect_win_count="0" counterattack_num="0" mission_clear_num="0") + achieve_data(play_style="1" arena_class="20" rating_value="20" win_count="0" now_winning_streak_count="0" best_winning_streak_count="0" perfect_win_count="0" counterattack_num="0" mission_clear_num="0") + cube_data(cube="0" season_id="0") + chat_data(chat_type_0="CHAT CUSTOM 1" chat_type_1="CHAT CUSTOM 2" chat_type_2="CHAT CUSTOM 3" chat_type_3="CHAT CUSTOM 4") + is_chat_0(__type="bool") 1 + is_chat_1(__type="bool") 1 + is_chat_2(__type="bool") 1 + is_chat_3(__type="bool") 1 + skin_customize_flg(skin_frame_flg="-1" skin_bgm_flg="-1" skin_lane_flg3="-1") + event_1(event_play_num=pcdata.event_play_num last_select_flyer_id=pcdata.event_last_select_id) + - for (let evt of evtArray) + flyer_data(flyer_id=evt.flyer_id play_num=evt.play_num last_select_genre=evt.last_select_genre flyer_prog=evt.flyer_prog skill_param=evt.skill_param) + - for (let evt2 of evtArray2) + genre_data(flyer_id=evt2.flyer_id genre_id=evt2.genre_id play_num=evt2.genre_playnum gauge=evt2.gauge) + is_complete(__type="bool") #{evt2.is_complete} + floor_infection4(music_list="-1") + bemani_vote(music_list="-1") + bemani_janken_meeting(music_list="-1") + bemani_rush(music_list_ichika="-1" music_list_nono="-1") + ultimate_mobile_link(music_list="-1") + link_flag + bemani_musiq_fes(music_list="-1") + busou_linkage(music_list="-1") + busou_linkage_2(music_list="-1") + valkyrie_linkage(music_list_1="-1" music_list_2="-1" music_list_3="-1") + bemani_song_battle(music_list="-1") + bemani_mixup(music_list="-1") + ccj_linkage(music_list="-1") + triple_tribe(music_list="-1") + language_setting(language=profile.language) + movie_agreement(agreement_version="1") + movie_setting + hide_name(__type="bool") 0 + world_tourism + - for (let wd of wArray) + tour_data(tour_id=wd.tour_id progress=wd.progress) + world_tourism_secret_flg + flg1(__type="s64" __count="3") -1 -1 -1 + flg2(__type="s64" __count="3") -1 -1 -1 + badge + - for (let b of bArray) + badge_data(category_id=b.id badge_flg_id=b.flg_id badge_flg=b.flg) diff --git a/iidx@asphyxia/pug/LDJ/31pcget.pug b/iidx@asphyxia/pug/LDJ/31pcget.pug new file mode 100644 index 0000000..ff4f999 --- /dev/null +++ b/iidx@asphyxia/pug/LDJ/31pcget.pug @@ -0,0 +1,108 @@ +IIDX31pc(status="0" qproback=custom.qpro_back) + 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 ngrade=pcdata.ngrade rtype=pcdata.rtype player_kind=pcdata.player_kind 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_sub_gno=pcdata.s_sub_gno d_sub_gno=pcdata.d_sub_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 s_graph_score=pcdata.s_graph_score d_graph_score=pcdata.d_graph_score s_auto_scrach=pcdata.s_auto_scrach d_auto_scrach=pcdata.d_auto_scrach s_gauge_disp=pcdata.s_gauge_disp d_gauge_disp=pcdata.d_gauge_disp s_lane_brignt=pcdata.s_lane_brignt d_lane_brignt=pcdata.d_lane_brignt s_camera_layout=pcdata.s_camera_layout d_camera_layout=pcdata.d_camera_layout s_ghost_score=pcdata.s_ghost_score d_ghost_score=pcdata.d_ghost_score s_tsujigiri_disp=pcdata.s_tsujigiri_disp d_tsujigiri_disp=pcdata.d_tsujigiri_disp s_auto_adjust=pcdata.s_auto_adjust d_auto_adjust=pcdata.d_auto_adjust s_timing_split=pcdata.s_timing_split d_timing_split=pcdata.d_timing_split s_visualization=pcdata.s_visualization d_visualization=pcdata.d_visualization s_classic_hispeed=pcdata.s_classic_hispeed d_classic_hispeed=pcdata.d_classic_hispeed) + lightning_play_data(dpnum=lm_playdata.dp_num spnum=lm_playdata.sp_num) + lightning_setting(headphone_vol=lm_settings.headphone_vol resistance_dp_left=lm_settings.resistance_dp_left resistance_dp_right=lm_settings.resistance_dp_right resistance_sp_left=lm_settings.resistance_sp_left resistance_sp_right=lm_settings.resistance_sp_right keyboard_kind=lm_settings.keyboard_kind brightness=lm_settings.brightness) + slider(__type="s32" __count="7") #{lm_settings.slider[0]} #{lm_settings.slider[1]} #{lm_settings.slider[2]} #{lm_settings.slider[3]} #{lm_settings.slider[4]} #{lm_settings.slider[5]} #{lm_settings.slider[6]} + light(__type="bool" __count="10") #{lm_settings.light[0]} #{lm_settings.light[1]} #{lm_settings.light[2]} #{lm_settings.light[3]} #{lm_settings.light[4]} #{lm_settings.light[5]} #{lm_settings.light[6]} #{lm_settings.light[7]} #{lm_settings.light[8]} #{lm_settings.light[9]} + concentration(__type="bool") #{lm_settings.concentration} + spdp_rival(flg="-1") + bind_eaappli + ea_premium_course + secret + flg1(__type="s64" __count="3") -1 -1 -1 + flg2(__type="s64" __count="3") -1 -1 -1 + flg3(__type="s64" __count="3") -1 -1 -1 + flg4(__type="s64" __count="3") -1 -1 -1 + leggendaria + flg1(__type="s64" __count="3") -1 -1 -1 + music_memo + - for (let m of mArray) + folder(play_style=m.play_style folder_id=m.folder_idx name=m.folder_name) + music_id(__type="s32" __count="10") #{m.music_ids[0]} #{m.music_ids[1]} #{m.music_ids[2]} #{m.music_ids[3]} #{m.music_ids[4]} #{m.music_ids[5]} #{m.music_ids[6]} #{m.music_ids[7]} #{m.music_ids[8]} #{m.music_ids[9]} + music_filter + - for (let f of fArray) + folder(play_style=f.play_style folder_id=f.folder_id filter_id=f.filter_id value0=f.value0 value1=f.value1) + is_valid(__type="bool") #{f.is_valid} + qpro_secret + head(__type="s64" __count="7") #{custom.qpro_secret_head[0]} #{custom.qpro_secret_head[1]} #{custom.qpro_secret_head[2]} #{custom.qpro_secret_head[3]} #{custom.qpro_secret_head[4]} #{custom.qpro_secret_head[5]} #{custom.qpro_secret_head[6]} + hair(__type="s64" __count="7") #{custom.qpro_secret_hair[0]} #{custom.qpro_secret_hair[1]} #{custom.qpro_secret_hair[2]} #{custom.qpro_secret_hair[3]} #{custom.qpro_secret_hair[4]} #{custom.qpro_secret_hair[5]} #{custom.qpro_secret_hair[6]} + face(__type="s64" __count="7") #{custom.qpro_secret_face[0]} #{custom.qpro_secret_face[1]} #{custom.qpro_secret_face[2]} #{custom.qpro_secret_face[3]} #{custom.qpro_secret_face[4]} #{custom.qpro_secret_face[5]} #{custom.qpro_secret_face[6]} + body(__type="s64" __count="7") #{custom.qpro_secret_body[0]} #{custom.qpro_secret_body[1]} #{custom.qpro_secret_body[2]} #{custom.qpro_secret_body[3]} #{custom.qpro_secret_body[4]} #{custom.qpro_secret_body[5]} #{custom.qpro_secret_body[6]} + hand(__type="s64" __count="7") #{custom.qpro_secret_hand[0]} #{custom.qpro_secret_hand[1]} #{custom.qpro_secret_hand[2]} #{custom.qpro_secret_hand[3]} #{custom.qpro_secret_hand[4]} #{custom.qpro_secret_hand[5]} #{custom.qpro_secret_hand[6]} + back(__type="s64" __count="7") #{custom.qpro_secret_back[0]} #{custom.qpro_secret_back[1]} #{custom.qpro_secret_back[2]} #{custom.qpro_secret_back[3]} #{custom.qpro_secret_back[4]} #{custom.qpro_secret_back[5]} #{custom.qpro_secret_back[6]} + 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]} + kiwami_data + - for (let ed of eArray) + detail(grade_type=ed.grade_type grade_id=ed.grade_id option=ed.option stage_num=ed.stage_num clear_type=ed.clear_type) + past(__type="s32" __count="3") #{ed.past[0]} #{ed.past[1]} #{ed.past[2]} + selected_course(__type="s32" __count="3") #{ed.selected_course[0]} #{ed.selected_course[1]} #{ed.selected_course[2]} + max_past(__type="s32" __count="3") #{ed.max_past[0]} #{ed.max_past[1]} #{ed.max_past[2]} + max_selected_course(__type="s32" __count="3") #{ed.max_selected_course[0]} #{ed.max_selected_course[1]} #{ed.max_selected_course[2]} + skin(__type="s32" __count="20") #{appendsettings} #{custom.note_burst} #{custom.bomb_size} #{custom.turntable} #{custom.judge_font} #{custom.note_skin} #{custom.note_size} #{Number(custom.disable_musicpreview)} #{Number(custom.vefx_lock)} #{custom.effect} #{custom.menu_music} #{Number(custom.disable_hcn_color)} #{custom.first_note_preview} #{custom.lane_cover} #{custom.pacemaker_cover} #{custom.lift_cover} #{custom.note_beam} #{custom.note_beam_size} #{custom.full_combo_splash} #{custom.frame} + tdjskin(__type="s16" __count="4") #{lm_custom.premium_skin} #{lm_custom.premium_bg} 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]) + is_robo(__type="bool") 0 + qprodata(body=rd.qprodata[3] face=rd.qprodata[2] hair=rd.qprodata[0] hand=rd.qprodata[4] head=rd.qprodata[1] back=rd.qprodata[5]) + shop(name=shop_data.opname) + notes_radar(style="0") + radar_score(__type="s32" __count="6") #{pcdata.nr_spradar[0]} #{pcdata.nr_spradar[1]} #{pcdata.nr_spradar[2]} #{pcdata.nr_spradar[3]} #{pcdata.nr_spradar[4]} #{pcdata.nr_spradar[5]} + notes_radar(style="1") + radar_score(__type="s32" __count="6") #{pcdata.nr_dpradar[0]} #{pcdata.nr_dpradar[1]} #{pcdata.nr_dpradar[2]} #{pcdata.nr_dpradar[3]} #{pcdata.nr_dpradar[4]} #{pcdata.nr_dpradar[5]} + visitor(anum="10" snum="10" pnum="10" vs_flg="1") + step(enemy_damage=pcdata.st_enemy_damage progress=pcdata.st_progress total_point=pcdata.st_total_point enemy_defeat_flg=pcdata.st_enemy_defeat_flg sp_level=pcdata.st_sp_level dp_level=pcdata.st_dp_level sp_fluctuation=pcdata.st_sp_fluctuation dp_fluctuation=pcdata.st_dp_fluctuation mission_clear_num=pcdata.st_mission_clear_num sp_mplay=pcdata.st_sp_mplay dp_mplay=pcdata.st_dp_mplay tips_read_list=pcdata.st_tips_read_list) + is_track_ticket(__type="bool") #{pcdata.st_is_track_ticket} + packinfo(music_0="-1" music_1="-1" music_2="-1" pack_id="1") + achievements(last_weekly=pcdata.achi_lastweekly pack=pcdata.achi_pack pack_comp=pcdata.achi_packcomp rival_crush=pcdata.achi_rivalcrush visit_flg=pcdata.achi_visitflg weekly_num=pcdata.achi_weeklynum) + deller(deller=pcdata.deller rate="1") + orb_data(rest_orb=pcdata.orb present_orb=pcdata.present_orb) + old_linkage_secret_flg(bemani_mixup="-1" ccj_linkage="-1" triple_tribe="-1") + arena_data(play_num="2" play_num_dp="1" play_num_sp="1" prev_best_class_sp="20" prev_best_class_dp="20") + achieve_data(play_style="0" arena_class="20" rating_value="20" now_top_class_continuing="0" best_top_class_continuing="0" win_count="0" now_winning_streak_count="0" best_winning_streak_count="0" perfect_win_count="0" counterattack_num="0" mission_clear_num="0") + achieve_data(play_style="1" arena_class="20" rating_value="20" now_top_class_continuing="0" best_top_class_continuing="0" win_count="0" now_winning_streak_count="0" best_winning_streak_count="0" perfect_win_count="0" counterattack_num="0" mission_clear_num="0") + cube_data(cube="0" season_id="0") + chat_data(chat_type_0="CHAT CUSTOM 1" chat_type_1="CHAT CUSTOM 2" chat_type_2="CHAT CUSTOM 3" chat_type_3="CHAT CUSTOM 4") + is_chat_0(__type="bool") 1 + is_chat_1(__type="bool") 1 + is_chat_2(__type="bool") 1 + is_chat_3(__type="bool") 1 + skin_customize_flg(skin_frame_flg="-1" skin_turntable_flg="-1" skin_bomb_flg="-1" skin_bgm_flg="-1" skin_lane_flg0="-1" skin_lane_flg1="-1" skin_lane_flg2="-1" skin_lane_flg3="-1" skin_lane_flg4="-1" skin_lane_flg5="-1" skin_notes_flg="-1" skin_fullcombo_flg="-1" skin_keybeam_flg="-1" skin_judgestring_flg="-1") + tdjskin_customize_flg(skin_submonitor_flg="-1" skin_subbg_flg="-1") + event_1(event_play_num=pcdata.event_play_num last_select_map_id=pcdata.event_last_select_id) + if pcdata.event_skip == true + is_skip + - for (let evt of evtArray) + map_data(map_id=evt.map_id play_num=evt.play_num play_num_uc=evt.play_num_uc last_select_pos=evt.last_select_pos map_prog=evt.map_prog gauge=evt.gauge tile_num=evt.tile_num metron_total_get=evt.metron_total_get metron_total_use=evt.metron_total_use bank_date=evt.bank_date grade_bonus=evt.grade_bonus end_bonus=evt.end_bonus carryover_use=evt.carryover_use) + - for (let evt2 of evtArray2) + building_data(map_id=evt2.map_id pos=evt2.pos building=evt2.building use_tile=evt2.use_tile) + - for (let evt3 of evtArray3) + shop_data(map_id=evt3.map_id reward_id=evt3.reward_id prog=evt3.prog) + if epo_res != null + event_2(event_play_num=epo_res.event_play_num after_play_num=epo_res.after_play_num last_select_system_id=epo_res.last_select_system_id gate_key=epo_res.gate_key after_gauge=epo_res.after_gauge last_select_erosion_level=epo_res.last_select_erosion_level pack="-1" erosion_play_num="10" erosion5_clear12_num="10") + - for (let data of epo_res_sub) + system_data(system_id=data.system_id play_num=data.play_num unlock_prog=data.unlock_prog system_prog=data.system_prog gauge=data.gauge) + ultimate_mobile_link(music_list="-1") + link_flag + valkyrie_linkage(music_list_1="-1" music_list_2="-1" music_list_3="-1") + ccj_linkage(music_list="-1") + triple_tribe_2(music_list="-1") + language_setting(language=profile.language) + movie_agreement(agreement_version="1") + movie_setting + hide_name(__type="bool") 0 + world_tourism + - for (let wd of wArray) + tour_data(tour_id=wd.tour_id progress=wd.progress) + world_tourism_secret_flg + flg1(__type="s64" __count="3") -1 -1 -1 + flg2(__type="s64" __count="3") -1 -1 -1 + world_tourism_setting + booster(__type="bool") 1 + bpl_s4_music_unlock + badge + - for (let b of bArray) + badge_data(category_id=b.id badge_flg_id=b.flg_id badge_flg=b.flg) diff --git a/iidx@asphyxia/pug/LDJ/32pcget.pug b/iidx@asphyxia/pug/LDJ/32pcget.pug new file mode 100644 index 0000000..05c4af4 --- /dev/null +++ b/iidx@asphyxia/pug/LDJ/32pcget.pug @@ -0,0 +1,155 @@ +IIDX32pc(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 category=pcdata.category pmode=pcdata.pmode ngrade=pcdata.ngrade rtype=pcdata.rtype bgnflg=pcdata.bgnflg player_kind=pcdata.player_kind 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_sub_gno=pcdata.s_sub_gno d_sub_gno=pcdata.d_sub_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 s_graph_score=pcdata.s_graph_score d_graph_score=pcdata.d_graph_score s_auto_scrach=pcdata.s_auto_scrach d_auto_scrach=pcdata.d_auto_scrach s_gauge_disp=pcdata.s_gauge_disp d_gauge_disp=pcdata.d_gauge_disp s_lane_brignt=pcdata.s_lane_brignt d_lane_brignt=pcdata.d_lane_brignt s_camera_layout=pcdata.s_camera_layout d_camera_layout=pcdata.d_camera_layout s_ghost_score=pcdata.s_ghost_score d_ghost_score=pcdata.d_ghost_score s_tsujigiri_disp=pcdata.s_tsujigiri_disp d_tsujigiri_disp=pcdata.d_tsujigiri_disp s_auto_adjust=pcdata.s_auto_adjust d_auto_adjust=pcdata.d_auto_adjust s_timing_split=pcdata.s_timing_split d_timing_split=pcdata.d_timing_split s_visualization=pcdata.s_visualization d_visualization=pcdata.d_visualization s_classic_hispeed=pcdata.s_classic_hispeed d_classic_hispeed=pcdata.d_classic_hispeed movie_thumbnail=pcdata.movie_thumbnail) + lightning_play_data(dpnum=lm_playdata.dp_num spnum=lm_playdata.sp_num) + lightning_setting(headphone_vol=lm_settings.headphone_vol resistance_dp_left=lm_settings.resistance_dp_left resistance_dp_right=lm_settings.resistance_dp_right resistance_sp_left=lm_settings.resistance_sp_left resistance_sp_right=lm_settings.resistance_sp_right keyboard_kind=lm_settings.keyboard_kind brightness=lm_settings.brightness) + slider(__type="s32" __count="7") #{lm_settings.slider[0]} #{lm_settings.slider[1]} #{lm_settings.slider[2]} #{lm_settings.slider[3]} #{lm_settings.slider[4]} #{lm_settings.slider[5]} #{lm_settings.slider[6]} + light(__type="bool" __count="10") #{lm_settings.light[0]} #{lm_settings.light[1]} #{lm_settings.light[2]} #{lm_settings.light[3]} #{lm_settings.light[4]} #{lm_settings.light[5]} #{lm_settings.light[6]} #{lm_settings.light[7]} #{lm_settings.light[8]} #{lm_settings.light[9]} + concentration(__type="bool") #{lm_settings.concentration} + spdp_rival(flg="-1") + bind_eaappli + ea_premium_course + dellar_bonus(rate="100") + secret + flg1(__type="s64" __count="3") -1 -1 -1 + flg2(__type="s64" __count="3") -1 -1 -1 + flg3(__type="s64" __count="3") -1 -1 -1 + flg4(__type="s64" __count="3") -1 -1 -1 + flg5(__type="s64" __count="3") -1 -1 -1 + leggendaria + flg1(__type="s64" __count="3") -1 -1 -1 + flg2(__type="s64" __count="3") -1 -1 -1 + music_memo + - for (let m of mArray) + folder(play_style=m.play_style folder_id=m.folder_idx name=m.folder_name) + music_id(__type="s32" __count="10") #{m.music_ids[0]} #{m.music_ids[1]} #{m.music_ids[2]} #{m.music_ids[3]} #{m.music_ids[4]} #{m.music_ids[5]} #{m.music_ids[6]} #{m.music_ids[7]} #{m.music_ids[8]} #{m.music_ids[9]} + music_filter + - for (let f of fArray) + folder(play_style=f.play_style folder_id=f.folder_id filter_id=f.filter_id value0=f.value0 value1=f.value1) + is_valid(__type="bool") #{f.is_valid} + - for (let fs of fsArray) + sort(play_style=fs.play_style folder_id=fs.folder_id sort=fs.sort) + qpro_secret + head(__type="s64" __count="7") #{custom.qpro_secret_head[0]} #{custom.qpro_secret_head[1]} #{custom.qpro_secret_head[2]} #{custom.qpro_secret_head[3]} #{custom.qpro_secret_head[4]} #{custom.qpro_secret_head[5]} #{custom.qpro_secret_head[6]} + hair(__type="s64" __count="7") #{custom.qpro_secret_hair[0]} #{custom.qpro_secret_hair[1]} #{custom.qpro_secret_hair[2]} #{custom.qpro_secret_hair[3]} #{custom.qpro_secret_hair[4]} #{custom.qpro_secret_hair[5]} #{custom.qpro_secret_hair[6]} + face(__type="s64" __count="7") #{custom.qpro_secret_face[0]} #{custom.qpro_secret_face[1]} #{custom.qpro_secret_face[2]} #{custom.qpro_secret_face[3]} #{custom.qpro_secret_face[4]} #{custom.qpro_secret_face[5]} #{custom.qpro_secret_face[6]} + body(__type="s64" __count="7") #{custom.qpro_secret_body[0]} #{custom.qpro_secret_body[1]} #{custom.qpro_secret_body[2]} #{custom.qpro_secret_body[3]} #{custom.qpro_secret_body[4]} #{custom.qpro_secret_body[5]} #{custom.qpro_secret_body[6]} + hand(__type="s64" __count="7") #{custom.qpro_secret_hand[0]} #{custom.qpro_secret_hand[1]} #{custom.qpro_secret_hand[2]} #{custom.qpro_secret_hand[3]} #{custom.qpro_secret_hand[4]} #{custom.qpro_secret_hand[5]} #{custom.qpro_secret_hand[6]} + back(__type="s64" __count="7") #{custom.qpro_secret_back[0]} #{custom.qpro_secret_back[1]} #{custom.qpro_secret_back[2]} #{custom.qpro_secret_back[3]} #{custom.qpro_secret_back[4]} #{custom.qpro_secret_back[5]} #{custom.qpro_secret_back[6]} + 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]} + kiwami_data + - for (let ed of eArray) + detail(grade_type=ed.grade_type grade_id=ed.grade_id option=ed.option stage_num=ed.stage_num clear_type=ed.clear_type) + past(__type="s32" __count="3") #{ed.past[0]} #{ed.past[1]} #{ed.past[2]} + selected_course(__type="s32" __count="3") #{ed.selected_course[0]} #{ed.selected_course[1]} #{ed.selected_course[2]} + max_past(__type="s32" __count="3") #{ed.max_past[0]} #{ed.max_past[1]} #{ed.max_past[2]} + max_selected_course(__type="s32" __count="3") #{ed.max_selected_course[0]} #{ed.max_selected_course[1]} #{ed.max_selected_course[2]} + skin(__type="s32" __count="20") #{appendsettings} #{custom.note_burst} #{custom.bomb_size} #{custom.turntable} #{custom.judge_font} #{custom.note_skin} #{custom.note_size} #{Number(custom.disable_musicpreview)} #{Number(custom.vefx_lock)} #{custom.effect} #{custom.menu_music} #{Number(custom.disable_hcn_color)} #{custom.first_note_preview} #{custom.lane_cover} #{custom.pacemaker_cover} #{custom.lift_cover} #{custom.note_beam} #{custom.note_beam_size} #{custom.full_combo_splash} #{custom.frame} + tdjskin(__type="s32" __count="4") #{lm_custom.premium_skin} #{lm_custom.premium_bg} 0 0 + qprodata(__type="u32" __count="6") #{custom.qpro_head} #{custom.qpro_hair} #{custom.qpro_face} #{custom.qpro_hand} #{custom.qpro_body} #{custom.qpro_back} + 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]) + is_robo(__type="bool") 0 + qprodata(body=rd.qprodata[3] face=rd.qprodata[2] hair=rd.qprodata[0] hand=rd.qprodata[4] head=rd.qprodata[1] back=rd.qprodata[5]) + shop(name=shop_data.opname) + rlist_sub + notes_radar(style="0") + radar_score(__type="s32" __count="6") #{pcdata.nr_spradar[0]} #{pcdata.nr_spradar[1]} #{pcdata.nr_spradar[2]} #{pcdata.nr_spradar[3]} #{pcdata.nr_spradar[4]} #{pcdata.nr_spradar[5]} + notes_radar(style="1") + radar_score(__type="s32" __count="6") #{pcdata.nr_dpradar[0]} #{pcdata.nr_dpradar[1]} #{pcdata.nr_dpradar[2]} #{pcdata.nr_dpradar[3]} #{pcdata.nr_dpradar[4]} #{pcdata.nr_dpradar[5]} + visitor(anum="10" snum="10" pnum="10" vs_flg="1") + step(enemy_damage=pcdata.st_enemy_damage progress=pcdata.st_progress total_point=pcdata.st_total_point enemy_defeat_flg=pcdata.st_enemy_defeat_flg sp_level=pcdata.st_sp_level dp_level=pcdata.st_dp_level sp_level_h=pcdata.st_sp_level_h dp_level_h=pcdata.st_dp_level_h sp_level_exh=pcdata.st_sp_level_exh dp_level_exh=pcdata.st_dp_level_exh sp_fluctuation=pcdata.st_sp_fluctuation dp_fluctuation=pcdata.st_dp_fluctuation mission_clear_num=pcdata.st_mission_clear_num sp_mplay=pcdata.st_sp_mplay dp_mplay=pcdata.st_dp_mplay tips_read_list=pcdata.st_tips_read_list) + is_track_ticket(__type="bool") #{pcdata.st_is_track_ticket} + packinfo(music_0="-1" music_1="-1" music_2="-1" pack_id="1") + 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) + deller(deller=pcdata.deller) + orb_data(rest_orb=pcdata.orb present_orb=pcdata.present_orb) + old_linkage_secret_flg(triple_tribe="-1" triple_tribe_2="-1") + arena_data(play_num="2" play_num_dp="1" play_num_sp="1" prev_best_class_sp="20" prev_best_class_dp="20") + achieve_data(play_style="0" arena_class="20" rating_value="20" now_top_class_continuing="0" best_top_class_continuing="0" win_count="0" now_winning_streak_count="0" best_winning_streak_count="0" perfect_win_count="0" counterattack_num="0" mission_clear_num="0") + achieve_data(play_style="1" arena_class="20" rating_value="20" now_top_class_continuing="0" best_top_class_continuing="0" win_count="0" now_winning_streak_count="0" best_winning_streak_count="0" perfect_win_count="0" counterattack_num="0" mission_clear_num="0") + cube_data(cube="0" season_id="0") + //-chat_data(chat_type_0="CHAT CUSTOM 1" chat_type_1="CHAT CUSTOM 2" chat_type_2="CHAT CUSTOM 3" chat_type_3="CHAT CUSTOM 4") + is_chat_0(__type="bool") 1 + is_chat_1(__type="bool") 1 + is_chat_2(__type="bool") 1 + is_chat_3(__type="bool") 1 + default_chat + skin_customize_flg(skin_frame_flg="-1" skin_turntable_flg="-1" skin_bomb_flg="-1" skin_bgm_flg="-1" skin_lane_flg0="-1" skin_lane_flg1="-1" skin_lane_flg2="-1" skin_lane_flg3="-1" skin_lane_flg4="-1" skin_lane_flg5="-1" skin_notes_flg="-1" skin_fullcombo_flg="-1" skin_keybeam_flg="-1" skin_judgestring_flg="-1") + tdjskin_customize_flg(skin_submonitor_flg="-1" skin_subbg_flg="-1") + event_1(event_play_num=pcdata.event_play_num last_select_booth_id=pcdata.event_last_select_id) + if pcdata.event_skip == true + is_skip + - for (let evt of evtArray) + booth_data(booth_id=evt.booth_id play_num=evt.play_num play_num_uc=evt.play_num_uc success_num=evt.success_num last_select_qpro_index=evt.last_select_qpro_index booth_prog=evt.booth_prog customer_n=evt.customer_n customer_h=evt.customer_h customer_a=evt.customer_a customer_l=evt.customer_l hire_num=evt.hire_num) + flg_l(__type="bool") #{evt.flg_l} + - for (let evt2 of evtArray2) + booth_qpro_data(booth_id=evt2.booth_id index=evt2.index head_parts=evt2.head_parts hair_parts=evt2.hair_parts face_parts=evt2.face_parts body_parts=evt2.body_parts hand_parts=evt2.hand_parts param_n=evt2.param_n param_h=evt2.param_h param_a=evt2.param_a param_l=evt2.param_l exp=evt2.exp performance_date=evt2.performance_date) + - for (let evtRival of evtArray3) + rival(index=evtRival.index name=evtRival.name iidx_id=evtRival.iidx_id head=evtRival.head hair=evtRival.hair face=evtRival.face body=evtRival.body hand=evtRival.hand back=evtRival.back) + if pinky_ug != null + event_2(event_play_num=pinky_ug.event_play_num last_select_hall_id=pinky_ug.last_select_hall_id) + - for (let evt4 of pinky_ug_hall) + hall_data(hall_id=evt4.hall_id play_num=evt4.play_num last_select_skill_index=evt4.last_select_skill_index hall_prog=evt4.hall_prog defeat_num=evt4.defeat_num pp_0=evt4.pp_0 pp_1=evt4.pp_1 pp_2=evt4.pp_2 pp_3=evt4.pp_3 pp_4=evt4.pp_4 pp_5=evt4.pp_5 skill_1=evt4.skill_1 skill_2=evt4.skill_2 skill_3=evt4.skill_3 cool_1=evt4.cool_1 cool_2=evt4.cool_2 cool_3=evt4.cool_3 param_1=evt4.param_1 param_2=evt4.param_2 param_3=evt4.param_3) + - for (let evt5 of pinky_ug_qpro) + hall_qpro_data(hall_id=evt5.hall_id index=evt5.index head_parts=evt5.head_parts hair_parts=evt5.hair_parts face_parts=evt5.face_parts body_parts=evt5.body_parts hand_parts=evt5.hand_parts) + - for (let evtRival of evtArray3) + rival(index=evtRival.index name=evtRival.name iidx_id=evtRival.iidx_id head=evtRival.head hair=evtRival.hair face=evtRival.face body=evtRival.body hand=evtRival.hand back=evtRival.back) + ultimate_mobile_link(music_list="-1") + link_flag + valkyrie_linkage(music_list_1="-1" music_list_2="-1" music_list_3="-1") + ccj_linkage(music_list="-1") + triple_tribe_3(music_list="-1") + triple_tribe_4(music_list="-1") + //-reflecbeat_event(music_list="-1") + //-beatstream_event(music_list="-1") + //-museca_event(music_list="-1") + //-pawapuro(prog="" power="") + language_setting(language=profile.language) + movie_agreement(agreement_version="1") + movie_setting + hide_name(__type="bool") 0 + - for (let ebe of ebeArray) + extra_boss_event(phase=ebe.phase extra=ebe.extra extra_b=ebe.extra_b onemore=ebe.onemore onemore_b=ebe.onemore_b) + world_tourism + - for (let wd of wArray) + tour_data(tour_id=wd.tour_id progress=wd.progress) + world_tourism_secret_flg + flg1(__type="s64" __count="3") -1 -1 -1 + flg2(__type="s64" __count="3") -1 -1 -1 + world_tourism_setting + booster(__type="bool") 1 + badge + - for (let b of bArray) + badge_data(category_id=b.id badge_flg_id=b.flg_id badge_flg=b.flg) + activity + today(day_id=activityDayId date=activityTimestamp) + if activityTodaySP != null + today_data(play_style=activityTodaySP.play_style music_num=activityTodaySP.music_num play_time=activityTodaySP.play_time keyboard_num=activityTodaySP.keyboard_num scratch_num=activityTodaySP.scratch_num) + clear_update_num(__type="s32" __count="13") #{activityTodaySP.clear_update_num[0]} #{activityTodaySP.clear_update_num[1]} #{activityTodaySP.clear_update_num[2]} #{activityTodaySP.clear_update_num[3]} #{activityTodaySP.clear_update_num[4]} #{activityTodaySP.clear_update_num[5]} #{activityTodaySP.clear_update_num[6]} #{activityTodaySP.clear_update_num[7]} #{activityTodaySP.clear_update_num[8]} #{activityTodaySP.clear_update_num[9]} #{activityTodaySP.clear_update_num[10]} #{activityTodaySP.clear_update_num[11]} #{activityTodaySP.clear_update_num[12]} + score_update_num(__type="s32" __count="13") #{activityTodaySP.score_update_num[0]} #{activityTodaySP.score_update_num[1]} #{activityTodaySP.score_update_num[2]} #{activityTodaySP.score_update_num[3]} #{activityTodaySP.score_update_num[4]} #{activityTodaySP.score_update_num[5]} #{activityTodaySP.score_update_num[6]} #{activityTodaySP.score_update_num[7]} #{activityTodaySP.score_update_num[8]} #{activityTodaySP.score_update_num[9]} #{activityTodaySP.score_update_num[10]} #{activityTodaySP.score_update_num[11]} #{activityTodaySP.score_update_num[12]} + if activityTodayDP != null + today_data(play_style=activityTodayDP.play_style music_num=activityTodayDP.music_num play_time=activityTodayDP.play_time keyboard_num=activityTodayDP.keyboard_num scratch_num=activityTodayDP.scratch_num) + clear_update_num(__type="s32" __count="13") #{activityTodayDP.clear_update_num[0]} #{activityTodayDP.clear_update_num[1]} #{activityTodayDP.clear_update_num[2]} #{activityTodayDP.clear_update_num[3]} #{activityTodayDP.clear_update_num[4]} #{activityTodayDP.clear_update_num[5]} #{activityTodayDP.clear_update_num[6]} #{activityTodayDP.clear_update_num[7]} #{activityTodayDP.clear_update_num[8]} #{activityTodayDP.clear_update_num[9]} #{activityTodayDP.clear_update_num[10]} #{activityTodayDP.clear_update_num[11]} #{activityTodayDP.clear_update_num[12]} + score_update_num(__type="s32" __count="13") #{activityTodayDP.score_update_num[0]} #{activityTodayDP.score_update_num[1]} #{activityTodayDP.score_update_num[2]} #{activityTodayDP.score_update_num[3]} #{activityTodayDP.score_update_num[4]} #{activityTodayDP.score_update_num[5]} #{activityTodayDP.score_update_num[6]} #{activityTodayDP.score_update_num[7]} #{activityTodayDP.score_update_num[8]} #{activityTodayDP.score_update_num[9]} #{activityTodayDP.score_update_num[10]} #{activityTodayDP.score_update_num[11]} #{activityTodayDP.score_update_num[12]} + weekly + week_data(play_style="0") + - for (let a of activityWeekSP) + week(week_index=a.week_index week_id=a.week_id date=a.date music_num=a.music_num play_time=a.play_time keyboard_num=a.keyboard_num scratch_num=a.scratch_num) + clear_update_num(__type="s32" __count="13") #{a.clear_update_num[0]} #{a.clear_update_num[1]} #{a.clear_update_num[2]} #{a.clear_update_num[3]} #{a.clear_update_num[4]} #{a.clear_update_num[5]} #{a.clear_update_num[6]} #{a.clear_update_num[7]} #{a.clear_update_num[8]} #{a.clear_update_num[9]} #{a.clear_update_num[10]} #{a.clear_update_num[11]} #{a.clear_update_num[12]} + score_update_num(__type="s32" __count="13") #{a.score_update_num[0]} #{a.score_update_num[1]} #{a.score_update_num[2]} #{a.score_update_num[3]} #{a.score_update_num[4]} #{a.score_update_num[5]} #{a.score_update_num[6]} #{a.score_update_num[7]} #{a.score_update_num[8]} #{a.score_update_num[9]} #{a.score_update_num[10]} #{a.score_update_num[11]} #{a.score_update_num[12]} + week_data(play_style="1") + - for (let b of activityWeekDP) + week(week_index=b.week_index week_id=b.week_id date=b.date music_num=b.music_num play_time=b.play_time keyboard_num=b.keyboard_num scratch_num=b.scratch_num) + clear_update_num(__type="s32" __count="13") #{b.clear_update_num[0]} #{b.clear_update_num[1]} #{b.clear_update_num[2]} #{b.clear_update_num[3]} #{b.clear_update_num[4]} #{b.clear_update_num[5]} #{b.clear_update_num[6]} #{b.clear_update_num[7]} #{b.clear_update_num[8]} #{b.clear_update_num[9]} #{b.clear_update_num[10]} #{b.clear_update_num[11]} #{b.clear_update_num[12]} + score_update_num(__type="s32" __count="13") #{b.score_update_num[0]} #{b.score_update_num[1]} #{b.score_update_num[2]} #{b.score_update_num[3]} #{b.score_update_num[4]} #{b.score_update_num[5]} #{b.score_update_num[6]} #{b.score_update_num[7]} #{b.score_update_num[8]} #{b.score_update_num[9]} #{b.score_update_num[10]} #{b.score_update_num[11]} #{b.score_update_num[12]} + mynews + - for (let a of activityMynews) + detail(play_style=a.play_style kind=a.kind news_no=a.news_no index=a.index day_id=a.day_id music_id=a.music_id note_id=a.note_id best_score=a.best_score now_score=a.now_score now_clear=a.now_clear news_time=a.news_time) + best_result + - for (let a of activityMybest) + best_data(play_style=a.play_style kind=a.kind play_side=a.play_side music_id=a.music_id note_id=a.note_id target_graph=a.target_graph target_score=a.target_score pacemaker=a.pacemaker best_clear=a.best_clear best_score=a.best_score best_misscount=a.best_misscount now_clear=a.now_clear now_score=a.now_score now_misscount=a.now_misscount now_pgreat=a.now_pgreat now_great=a.now_great now_good=a.now_good now_bad=a.now_bad now_poor=a.now_poor now_combo=a.now_combo now_fast=a.now_fast now_slow=a.now_slow option=a.option option2=a.option_2 gauge_type=a.gauge_type result_type=a.result_type update_date=a.update_date) + ghost_gauge_data(__type="bin") #{a.ghost_gauge_data} + is_special_result(__type="bool") #{a.is_special_result} diff --git a/iidx@asphyxia/pug/LDJ/pcget.pug b/iidx@asphyxia/pug/LDJ/pcget.pug new file mode 100644 index 0000000..3a1d916 --- /dev/null +++ b/iidx@asphyxia/pug/LDJ/pcget.pug @@ -0,0 +1,51 @@ +pc(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 help=pcdata.help gno=pcdata.gno gpos=pcdata.gpos timing=pcdata.timing sdhd=pcdata.sdhd sdtype=pcdata.sdtype notes=pcdata.notes pase=pcdata.pase sp_opt=pcdata.sp_opt dp_opt=pcdata.dp_opt dp_opt2=pcdata.dp_opt2 mode=pcdata.mode pmode=pcdata.pmode liflen=pcdata.liflen judge=pcdata.judge opstyle=pcdata.opstyle hispeed=pcdata.hispeed judgeAdj=pcdata.judgeAdj) + secret + flg1(__type="s64" __count="1") -1 + flg2(__type="s64" __count="1") -1 + flg3(__type="s64" __count="1") -1 + qpro_secret + head(__type="s64" __count="2") -1 -1 + hair(__type="s64" __count="2") -1 -1 + face(__type="s64" __count="2") -1 -1 + body(__type="s64" __count="2") -1 -1 + hand(__type="s64" __count="2") -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 #{Number(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=rd.pcdata[4] step_dach=rd.pcdata[5]) + qprodata(body=rd.qprodata[3] face=rd.qprodata[2] hair=rd.qprodata[0] hand=rd.qprodata[4] head=rd.qprodata[1]) + shop(name=shop_data.opname) + join_shop(joinflg="1" join_cflg="1" join_id="ea" join_name=shop_data.opname) + visitor(anum="10" snum="10" pnum="10" vs_flg="1") + fcombo(__type="s16" __count="2") #{pcdata.fcombo[0]} #{pcdata.fcombo[1]} + step(sp_ach=pcdata.st_sp_ach dp_ach=pcdata.st_dp_ach sp_hdpt=pcdata.st_sp_hdpt dp_hdpt=pcdata.st_dp_hdpt sp_level=pcdata.st_sp_level dp_level=pcdata.st_dp_level sp_round=pcdata.st_sp_round dp_round=pcdata.st_dp_round sp_mplay=pcdata.st_sp_mplay dp_mplay=pcdata.st_dp_mplay review=pcdata.st_review) + stamp(__type="bin") #{pcdata.st_stamp} + help(__type="bin") #{pcdata.st_help} + achievements(last_weekly=pcdata.achi_lastweekly pack=pcdata.achi_pack pack_comp=pcdata.achi_packcomp rival_crush=pcdata.achi_rivalcrush visit_flg=pcdata.achi_visitflg weekly_num=pcdata.achi_weeklynum) + 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") + 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") + commonboss(deller=pcdata.deller orb=pcdata.orb baron="0") + if redboss != null + redboss(progress=redboss.progress crush=redboss.crush open=redboss.open) + if blueboss != null + blueboss(level=blueboss.level gauge=blueboss.gauge item=blueboss.item item_flg=blueboss.item_flg row0=blueboss.row0 row1=blueboss.row1 column0=blueboss.column0 column1=blueboss.column1 sector=blueboss.sector first_flg=blueboss.first_flg general=blueboss.general) + durability(__type="bin") #{blueboss.durability} + if yellowboss != null + yellowboss(join_num="1" first_flg=yellowboss.first_flg level=yellowboss.level heroic0=yellowboss.heroic0 heroic1=yellowboss.heroic1 critical=yellowboss.critical destiny="0" last_select=yellowboss.last_select shop_message="SHOP MESSAGE" special_move="SPECIAL MOVE") + //-shop_damage(__type="s32" __count="7") + p_attack(__type="s32" __count="7") #{yellowboss.p_attack[0]} #{yellowboss.p_attack[1]} #{yellowboss.p_attack[2]} #{yellowboss.p_attack[3]} #{yellowboss.p_attack[4]} #{yellowboss.p_attack[5]} #{yellowboss.p_attack[6]} + pbest_attack(__type="s32" __count="7") #{yellowboss.pbest_attack[0]} #{yellowboss.pbest_attack[1]} #{yellowboss.pbest_attack[2]} #{yellowboss.pbest_attack[3]} #{yellowboss.pbest_attack[4]} #{yellowboss.pbest_attack[5]} #{yellowboss.pbest_attack[6]} + defeat(__type="bool" __count="7") #{yellowboss.defeat[0]} #{yellowboss.defeat[1]} #{yellowboss.defeat[2]} #{yellowboss.defeat[3]} #{yellowboss.defeat[4]} #{yellowboss.defeat[5]} #{yellowboss.defeat[6]} + //-contribution(bno rank contribution head_parts hair_parts face_parts body_parts hand_parts myflg message name) (loop) + //-random_qpro(head_parts hair_parts face_parts body_parts hand_parts) (loop) diff --git a/iidx@asphyxia/util.ts b/iidx@asphyxia/util.ts new file mode 100644 index 0000000..3e1898b --- /dev/null +++ b/iidx@asphyxia/util.ts @@ -0,0 +1,246 @@ +import { custom } from "./models/custom"; +import { pcdata } from "./models/pcdata"; +import { profile } from "./models/profile"; + +export function IDtoCode(id: number) { + const padded = _.padStart(String(id), 8); + + return `${padded.slice(0, 4)}-${padded.slice(4)}`; +} + +export async function IDtoRef(iidxid: number) { + const profile = await DB.FindOne(null, { + collection: "profile", + id: iidxid, + }); + + if (_.isNil(profile)) return null; + + return profile.__refid; +} + +export function OldMidToVerMid(mid: number) { + return [Math.floor(mid / 100), mid % 100]; +} + +export function OldMidToNewMid(mid: number) { + const numberString = String(mid); + + return Number(`${numberString.slice(0, -2)}0${numberString.slice(-2)}`); +} + +export function NewMidToOldMid(mid: number) { + const numberString = String(mid); + if (numberString.length == 4) return Number(`${numberString.slice(0, 1)}${numberString.slice(-2)}`); + + return Number(`${numberString.slice(0, 2)}${numberString.slice(3)}`); +} + +export function ClidToPlaySide(clid: number) { + return clid < 5 ? 0 : 1; +} + +export function NumArrayToString(bits: number[], numArray: number[]): string { + const characters = "0123456789:;abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"; + let byteSum = 0; + let byteIndex = 0; + if (bits.length > 0) { + do { + byteSum = bits[byteIndex] + byteSum; + byteIndex++; + } while (byteIndex < bits.length); + } + + let result = ""; + let numIdx = 0; + if (!_.isNil(numArray) && !_.isNaN(numArray[0])) { + let numArrayIdx = 0; + if (numArray.length > 0) { + let combined = 0; + do { + if (numIdx == 0) combined = 0; + + const b = bits[numArrayIdx]; + combined = ((numArray[numIdx] & (1 << b) - 1) | combined << b); + numArrayIdx++; + if (numArrayIdx == bits.length) { + combined <<= 32 - byteSum; + + const characterCount = Math.floor((byteSum + 5) / 6); + if (characterCount > 0) { + let charaIdx = 26; + let charaLoopCnt = characterCount; + do { + const character = (combined >> charaIdx) & 63; + result += characters.charAt(character); + + charaIdx -= 6; + charaLoopCnt--; + } while (charaLoopCnt > 0); + } + numArrayIdx = 0; + } + numIdx++; + } while (numIdx < numArray.length); + } + } + + return result; +} + +export function GetVersion(info: EamuseInfo) { + let version = -1; + switch (info.model.slice(0, 3)) { + case "GLD": return 14; + case "HDD": return 15; + case "I00": return 16; + case "JDJ": return 17; + case "JDZ": return 18; + case "KDZ": return 19; + case "LDJ": + version = Number(info.module.slice(4, 6)); + if (_.isNaN(version)) version = 20; + break; + } + + return version; +} + +export function appendSettingConverter( + rf: boolean, + cf: boolean, + df: boolean, + af: boolean, + rsf: boolean, + rbf: boolean, + ri: boolean, + hpc: boolean, + dgc: boolean, + chs: boolean, + rpf: boolean, + hii: boolean, + dbo: boolean, +) { + const result = + Number(rf) << 0 | + Number(cf) << 1 | + Number(df) << 2 | + Number(af) << 3 | + Number(rsf) << 4 | + Number(rbf) << 6 | + Number(ri) << 7 | + Number(hpc) << 8 | + Number(dgc) << 9 | + Number(chs) << 10 | + Number(rpf) << 11 | + Number(hii) << 12 | + Number(dbo) << 14; + + return result; +} + +export async function ReftoProfile(refid: string) { + const profile = await DB.FindOne(refid, { + collection: "profile", + }); + + let profile_data = []; + + try { + profile_data = [ + profile.name, + profile.pid, + profile.id, + profile.idstr, + ]; + } catch { + profile_data = ["", 0, 0, ""]; + } + + return profile_data; +} + +export async function ReftoPcdata(refid: string, version: number) { + const pcdata = await DB.FindOne(refid, { + collection: "pcdata", + version: version, + }); + + let p_data = []; + try { + switch (version) { + case 20: + case 21: + case 22: + case 23: + case 24: + case 25: + case 26: + p_data = [ + pcdata.sgid, + pcdata.dgid, + pcdata.sach, + pcdata.dach, + pcdata.st_sp_ach, + pcdata.st_dp_ach, + ]; + break; + default: + p_data = [ + pcdata.sgid, + pcdata.dgid, + pcdata.sach, + pcdata.dach, + ]; + break; + } + + // this seems leftover from tricoro but still being referenced until HEROIC VERSE [st_sp_ach/st_dp_ach] // + for (let a = 0; a < p_data.length; a++) { + if (_.isNil(p_data[a])) p_data[a] = 0; + } + + } catch { + p_data = [0, 0, 0, 0, 0, 0]; + } + + return p_data; +} + +export async function ReftoQPRO(refid: string, version: number) { + const custom = await DB.FindOne(refid, { + collection: "custom", + version: version, + }); + + let qpro_data = []; + try { + if (version >= 31) { + qpro_data = [ + custom.qpro_hair, + custom.qpro_head, + custom.qpro_face, + custom.qpro_body, + custom.qpro_hand, + custom.qpro_back, + ]; + } + else { + qpro_data = [ + custom.qpro_hair, + custom.qpro_head, + custom.qpro_face, + custom.qpro_body, + custom.qpro_hand, + ]; + } + } catch { + qpro_data = [0, 0, 0, 0, 0, 0]; + } + + return qpro_data; +} + +export function GetWeekId(date: Date) { + return Math.ceil((((date.getTime() - Date.UTC(date.getFullYear(), 0, 1)) / 86400000) + new Date(date.getFullYear(), 0, 1).getDay()) / 7); +} diff --git a/iidx@asphyxia/webui/asset/js/detail.js b/iidx@asphyxia/webui/asset/js/detail.js new file mode 100644 index 0000000..a50f9f7 --- /dev/null +++ b/iidx@asphyxia/webui/asset/js/detail.js @@ -0,0 +1,31 @@ +$("#version").on("change", function () { + $.ajax({ + type: "post", + url: "/emit/iidxGetProfile", + data: { + refid: refid, + version: this.value, + }, + dataType: "text", + success: function (result) { + let data = JSON.parse(result); + + if (data["pcdata"] == null) { + alert("Theres no profile data available on this version!"); + return; + } + + let sp_grade = data["pcdata"].sgid; + let dp_grade = data["pcdata"].dgid; + + if (sp_grade == -1) sp_grade = "----"; + if (dp_grade == -1) dp_grade = "----"; + + $("#sp_grade").text(sp_grade); + $("#dp_grade").text(dp_grade); + }, + error: function () { + alert("Unable to process data"); + } + }); +}); diff --git a/iidx@asphyxia/webui/asset/js/setting.js b/iidx@asphyxia/webui/asset/js/setting.js new file mode 100644 index 0000000..b1ac8f2 --- /dev/null +++ b/iidx@asphyxia/webui/asset/js/setting.js @@ -0,0 +1,80 @@ +$("#version").on("change", function () { + $.ajax({ + type: "post", + url: "/emit/iidxGetSetting", + data: { + refid: refid, + version: this.value, + }, + dataType: "text", + success: function (result) { + let data = JSON.parse(result); + + if (data["custom"] == null) { + alert("Theres no customize data available on this version!"); + return; + } + + $("#frame").val(data["custom"].frame); + $("#turntable").val(data["custom"].turntable); + $("#note_burst").val(data["custom"].note_burst); + $("#menu_music").val(data["custom"].menu_music); + $("#lane_cover").val(data["custom"].lane_cover); + $("#category_vox").val(data["custom"].category_vox); + $("#note_skin").val(data["custom"].note_skin); + $("#full_combo_splash").val(data["custom"].full_combo_splash); + $("#note_beam").val(data["custom"].note_beam); + $("#judge_font").val(data["custom"].judge_font); + $("#disable_musicpreview").prop("checked", data["custom"].disable_musicpreview); + $("#pacemaker_cover").val(data["custom"].pacemaker_cover); + $("#vefx_lock").prop("checked", data["custom"].vefx_lock); + $("#effect").val(data["custom"].effect); + $("#bomb_size").val(data["custom"].bomb_size); + $("#disable_hcn_color").prop("checked", data["custom"].disable_hcn_color); + $("#first_note_preview").val(data["custom"].first_note_preview); + + if (data["custom"].note_size == undefined) $("#note_size").val(0); + else $("#note_size").val(data["custom"].note_size); + if (data["custom"].lift_cover == undefined) $("#lift_cover").val(0); + else $("#lift_cover").val(data["custom"].lift_cover); + if (data["custom"].note_beam_size == undefined) $("#note_beam_size").val(0); + else $("#note_beam_size").val(data["custom"].note_beam_size); + + $("#rank_folder").prop("checked", data["custom"].rank_folder); + $("#clear_folder").prop("checked", data["custom"].clear_folder); + $("#diff_folder").prop("checked", data["custom"].diff_folder); + $("#alpha_folder").prop("checked", data["custom"].alpha_folder); + $("#rival_folder").prop("checked", data["custom"].rival_folder); + $("#rival_battle_folder").prop("checked", data["custom"].rival_battle_folder); + $("#rival_info").prop("checked", data["custom"].rival_info); + $("#hide_playcount").prop("checked", data["custom"].hide_playcount); + $("#disable_graph_cutin").prop("checked", data["custom"].disable_graph_cutin); + $("#class_hispeed").prop("checked", data["custom"].class_hispeed); + $("#rival_played_folder").prop("checked", data["custom"].rival_played_folder); + $("#hide_iidxid").prop("checked", data["custom"].hide_iidxid); + + if (data["custom"].disable_beginner_option == undefined) $("#disable_beginner_option").prop("checked", false); + else $("#disable_beginner_option").prop("checked", data["custom"].disable_beginner_option); + + $("#qpro_head").val(data["custom"].qpro_head); + $("#qpro_hair").val(data["custom"].qpro_hair); + $("#qpro_hand").val(data["custom"].qpro_hand); + $("#qpro_face").val(data["custom"].qpro_face); + $("#qpro_body").val(data["custom"].qpro_body); + + if (data["custom"].qpro_back == undefined) $("#qpro_back").val(0); + else $("#qpro_back").val(data["custom"].qpro_back); + + if (data["lm_custom"] == null) { + $("#lm_skin").val(0); + $("#lm_bg").val(0); + } else { + $("#lm_skin").val(data["lm_custom"].premium_skin); + $("#lm_bg").val(data["lm_custom"].premium_bg); + } + }, + error: function () { + alert("Unable to process data"); + } + }); +}); diff --git a/iidx@asphyxia/webui/profile_-----detail.pug b/iidx@asphyxia/webui/profile_-----detail.pug new file mode 100644 index 0000000..945e645 --- /dev/null +++ b/iidx@asphyxia/webui/profile_-----detail.pug @@ -0,0 +1,68 @@ +//DATA// + profile: DB.FindOne(refid, { collection: 'profile' }) + pcdata: DB.FindOne(refid, { collection: 'pcdata' }) + +- + const version = [ + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32 + ]; + +div + .card + .card-header + p.card-header-title + span.icon + i.mdi.mdi-account-edit + | Profile + .card-content + .field + label.label Version + .ver-select + .control + .select + select(id="version") + each i in version + option(selected=(i==pcdata.version)) #{i} + .field + label.label Name + .body + p(id="name") #{profile.name} + .field + label.label IIDX ID + .body + p(id="iidxid") #{profile.idstr} + .field + label.label SP Grade + .body + - const a = pcdata.sgid + if a==-1 + p(id="sp_grade") ---- + else + p(id="sp_grade") #{pcdata.sgid} + .field + label.label DP Grade + .body + - const b = pcdata.dgid + if b==-1 + p(id="dp_grade") ---- + else + p(id="dp_grade") #{pcdata.dgid} +script(src="static/asset/js/detail.js") diff --git a/iidx@asphyxia/webui/profile_----setting.pug b/iidx@asphyxia/webui/profile_----setting.pug new file mode 100644 index 0000000..a962e28 --- /dev/null +++ b/iidx@asphyxia/webui/profile_----setting.pug @@ -0,0 +1,241 @@ +//DATA// + profile: DB.FindOne(refid, { collection: "profile" }) + pcdata: DB.FindOne(refid, { collection: "pcdata" }) + custom: DB.FindOne(refid, { collection: "custom" }) + lm_custom: DB.FindOne(refid, { collection: "lightning_custom" }) + +- + const version = [ + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32 + ]; + +div + .card + .card-header + p.card-header-title + span.icon + i.mdi.mdi-account-edit + | Settings + .card-content + form(method="post" action="/emit/iidxUpdateCustom") + .field + input(type="text" name="refid", value=refid readonly hidden) + label.label IIDX ID + .control + input.input(type="text" name="iidxid", value=profile.idstr readonly) + .field + label.label Version + .control + .select + select(name="version", id="version") + each i in version + option(selected=(i==pcdata.version)) #{i} + .field + label.label Name + .control + input.input(type="text" name="name", id="name", value=profile.name) + //- SKIN + .field + label.label Frame + .control + input.input(type="number" name="frame", id="frame", value=custom.frame) + .field + label.label Turntable + .control + input.input(type="number" name="turntable", id="turntable", value=custom.turntable) + .field + label.label Note Burst + .control + input.input(type="number" name="note_burst", id="note_burst", value=custom.note_burst) + .field + label.label Menu Music + .control + input.input(type="number" name="menu_music", id="menu_music", value=custom.menu_music) + .field + label.label Lane Cover + .control + input.input(type="number" name="lane_cover", id="lane_cover", value=custom.lane_cover) + .field + label.label Category Voice + .control + input.input(type="number" name="category_vox", id="category_vox", value=custom.category_vox) + .field + label.label Note Skin + .control + input.input(type="number" name="note_skin", id="note_skin", value=custom.note_skin) + .field + label.label Full Combo Splash + .control + input.input(type="number" name="full_combo_splash", id="full_combo_splash", value=custom.full_combo_splash) + .field + label.label Note Beam + .control + input.input(type="number" name="note_beam", id="note_beam", value=custom.note_beam) + .field + label.label Judgement Font + .control + input.input(type="number" name="judge_font", id="judge_font", value=custom.judge_font) + .field + label.label Disable Music Preview + .control + input(type="checkbox" name="disable_musicpreview", id="disable_musicpreview", checked=Boolean(custom.disable_musicpreview)) + .field + label.label Pacemaker Cover + .control + input.input(type="number" name="pacemaker_cover", id="pacemaker_cover", value=custom.pacemaker_cover) + .field + label.label VEFX Lock + .control + input(type="checkbox" name="vefx_lock", id="vefx_lock", checked=Boolean(custom.vefx_lock)) + .field + label.label VEFX Lock (Effector) + .control + input.input(type="number" name="effect", id="effect", value=custom.effect) + .field + label.label Note Burst Size + .control + input.input(type="number" name="bomb_size", id="bomb_size", value=custom.bomb_size) + .field + label.label Disable HCN Color + .control + input(type="checkbox" name="disable_hcn_color", id="disable_hcn_color", checked=Boolean(custom.disable_hcn_color)) + .field + label.label First Note Preview + .control + input.input(type="number" name="first_note_preview", id="first_note_preview", value=custom.first_note_preview) + .field + label.label Note Size + .control + if custom.note_size === undefined + input.input(type="number" name="note_size", id="note_size", value="0") + else + input.input(type="number" name="note_size", id="note_size", value=custom.note_size) + .field + label.label Lift Cover + .control + if custom.lift_cover === undefined + input.input(type="number" name="lift_cover", id="lift_cover", value="0") + else + input.input(type="number" name="lift_cover", id="lift_cover", value=custom.lift_cover) + .field + label.label Note Beam Size + .control + if custom.note_beam_size === undefined + input.input(type="number" name="note_beam_size", id="note_beam_size", value="0") + else + input.input(type="number" name="note_beam_size", id="note_beam_size", value=custom.note_beam_size) + //- APPEND SETTINGS + .field + label.label Rank Folder + .control + input(type="checkbox" name="rank_folder", id="rank_folder", checked=Boolean(custom.rank_folder)) + .field + label.label Clear State Folder + .control + input(type="checkbox" name="clear_folder", id="clear_folder", checked=Boolean(custom.clear_folder)) + .field + label.label Difficulty Folder + .control + input(type="checkbox" name="diff_folder", id="diff_folder", checked=Boolean(custom.diff_folder)) + .field + label.label Alphabet Folder + .control + input(type="checkbox" name="alpha_folder", id="alpha_folder", checked=Boolean(custom.alpha_folder)) + .field + label.label Rival Folder + .control + input(type="checkbox" name="rival_folder", id="rival_folder", checked=Boolean(custom.rival_folder)) + .field + label.label Rival WIN/LOSE Folder + .control + input(type="checkbox" name="rival_battle_folder", id="rival_battle_folder", checked=Boolean(custom.rival_battle_folder)) + .field + label.label Rival Info / Venue Top Display + .control + input(type="checkbox" name="rival_info", id="rival_info", checked=Boolean(custom.rival_info)) + .field + label.label Hide Playcount + .control + input(type="checkbox" name="hide_playcount", id="hide_playcount", checked=Boolean(custom.hide_playcount)) + .field + label.label Disable Pacemaker Cut-In + .control + input(type="checkbox" name="disable_graph_cutin", id="disable_graph_cutin", checked=Boolean(custom.disable_graph_cutin)) + .field + label.label Classic Hi-SPEED + .control + input(type="checkbox" name="class_hispeed", id="class_hispeed", checked=Boolean(custom.class_hispeed)) + .field + label.label Rival Played Folder + .control + input(type="checkbox" name="rival_played_folder", id="rival_played_folder", checked=Boolean(custom.rival_played_folder)) + .field + label.label Hide IIDX ID + .control + input(type="checkbox" name="hide_iidxid", id="hide_iidxid", checked=Boolean(custom.hide_iidxid)) + .field + label.label Disable Beginner Option + .control + if custom.disable_beginner_option === undefined + input(type="checkbox" name="disable_beginner_option", id="disable_beginner_option", checked=Boolean(false)) + else + input(type="checkbox" name="disable_beginner_option", id="disable_beginner_option", checked=Boolean(custom.disable_beginner_option)) + //- QPRO + .field + label.label QPRO Head + .control + input.input(type="number" name="qpro_head", id="qpro_head", value=custom.qpro_head) + .field + label.label QPRO Hair + .control + input.input(type="number" name="qpro_hair", id="qpro_hair", value=custom.qpro_hair) + .field + label.label QPRO Hand + .control + input.input(type="number" name="qpro_hand", id="qpro_hand", value=custom.qpro_hand) + .field + label.label QPRO Face + .control + input.input(type="number" name="qpro_face", id="qpro_face", value=custom.qpro_face) + .field + label.label QPRO Body + .control + input.input(type="number" name="qpro_body", id="qpro_body", value=custom.qpro_body) + .field + label.label QPRO Back + .control + if custom.qpro_back === undefined + input.input(type="number" name="qpro_back", id="qpro_back", value="0") + else + input.input(type="number" name="qpro_back", id="qpro_back", value=custom.qpro_back) + //- LIGHTNING CUSTOM + if lm_custom != null + .field + label.label Premium Area Skin + input.input(type="number" name="lm_skin", id="lm_skin", value=lm_custom.premium_skin) + label.label Premium Area Background + input.input(type="number" name="lm_bg", id="lm_bg", value=lm_custom.premium_bg) + .field + button.button.is-primary(type="submit") + span.icon + i.mdi.mdi-check + span Submit +script(src="static/asset/js/setting.js") diff --git a/iidx@asphyxia/webui/profile_---rival.pug b/iidx@asphyxia/webui/profile_---rival.pug new file mode 100644 index 0000000..41c7438 --- /dev/null +++ b/iidx@asphyxia/webui/profile_---rival.pug @@ -0,0 +1,118 @@ +//DATA// + profile: DB.FindOne(refid, { collection: "profile" }) + profiles: DB.Find(null, { collection: "profile" }) + rival: DB.Find(refid, { collection: "rival" }) + +- + let rival_list=[["", "None", "0000-0000"]]; + profiles.forEach((res) => { + rival_list.push([res.__refid, res.name, res.idstr]) + }); + + let my_sp_rival = [], my_dp_rival = []; + rival.forEach((res) => { + if (res.play_style == 1) my_sp_rival[res.index] = res.rival_refid; + else if (res.play_style == 2) my_dp_rival[res.index] = res.rival_refid; + }); + +div + .card + .card-header + p.card-header-title + span.icon + i.mdi.mdi-account-edit + | Rivals + .card-content + form(method="post" action="/emit/iidxUpdateRival") + .field + input(type="text" name="refid", value=refid readonly hidden) + label.label SP Rivals + .body + .control + .select + select(name="sp_rival1") + each i in rival_list + if my_sp_rival[0] != null + option(selected=i[0]==my_sp_rival[0], value=i[0]) #{i[1]} [#{i[2]}] + else + option(value=i[0]) #{i[1]} [#{i[2]}] + .control + .select + select(name="sp_rival2") + each i in rival_list + if my_sp_rival[1] != null + option(selected=i[0]==my_sp_rival[1], value=i[0]) #{i[1]} [#{i[2]}] + else + option(value=i[0]) #{i[1]} [#{i[2]}] + .control + .select + select(name="sp_rival3") + each i in rival_list + if my_sp_rival[2] != null + option(selected=i[0]==my_sp_rival[2], value=i[0]) #{i[1]} [#{i[2]}] + else + option(value=i[0]) #{i[1]} [#{i[2]}] + .control + .select + select(name="sp_rival4") + each i in rival_list + if my_sp_rival[3] != null + option(selected=i[0]==my_sp_rival[3], value=i[0]) #{i[1]} [#{i[2]}] + else + option(value=i[0]) #{i[1]} [#{i[2]}] + .control + .select + select(name="sp_rival5") + each i in rival_list + if my_sp_rival[4] != null + option(selected=i[0]==my_sp_rival[4], value=i[0]) #{i[1]} [#{i[2]}] + else + option(value=i[0]) #{i[1]} [#{i[2]}] + .field + label.label DP Rivals + .body + .control + .select + select(name="dp_rival1") + each i in rival_list + if my_dp_rival[0] != null + option(selected=i[0]==my_dp_rival[0], value=i[0]) #{i[1]} [#{i[2]}] + else + option(value=i[0]) #{i[1]} [#{i[2]}] + .control + .select + select(name="dp_rival2") + each i in rival_list + if my_dp_rival[1] != null + option(selected=i[0]==my_dp_rival[1], value=i[0]) #{i[1]} [#{i[2]}] + else + option(value=i[0]) #{i[1]} [#{i[2]}] + .control + .select + select(name="dp_rival3") + each i in rival_list + if my_dp_rival[2] != null + option(selected=i[0]==my_dp_rival[2], value=i[0]) #{i[1]} [#{i[2]}] + else + option(value=i[0]) #{i[1]} [#{i[2]}] + .control + .select + select(name="dp_rival4") + each i in rival_list + if my_dp_rival[3] != null + option(selected=i[0]==my_dp_rival[3], value=i[0]) #{i[1]} [#{i[2]}] + else + option(value=i[0]) #{i[1]} [#{i[2]}] + .control + .select + select(name="dp_rival5") + each i in rival_list + if my_dp_rival[4] != null + option(selected=i[0]==my_dp_rival[4], value=i[0]) #{i[1]} [#{i[2]}] + else + option(value=i[0]) #{i[1]} [#{i[2]}] + .field + button.button.is-primary(type="submit") + span.icon + i.mdi.mdi-check + span Submit diff --git a/iidx@asphyxia/webui/profile_--score.pug b/iidx@asphyxia/webui/profile_--score.pug new file mode 100644 index 0000000..403e716 --- /dev/null +++ b/iidx@asphyxia/webui/profile_--score.pug @@ -0,0 +1,25 @@ +//DATA// + score: DB.Find(refid, { collection: 'score' }) + +div + .card + .card-header + p.card-header-title + span.icon + i.mdi.mdi-account-edit + | Score + .card-content + table.table + thead + tr + th Music ID + th EXSCORE [SPB~DPL] + th Miss Count [SPB~DPL] + th Clear Lamp [SPB~DPL] + tbody + each i in score + tr + td #{i.mid} + td #{i.esArray} + td #{i.mArray} + td #{i.cArray} diff --git a/iidx@asphyxia/webui/profile_-data.pug b/iidx@asphyxia/webui/profile_-data.pug new file mode 100644 index 0000000..1d3deec --- /dev/null +++ b/iidx@asphyxia/webui/profile_-data.pug @@ -0,0 +1,27 @@ +div + .card + .card-header + p.card-header-title + span.icon + i.mdi.mdi-account-edit + | Data Management + .card-content + .field + label.label [!] This will overwrite existing scores + form(method="post" action="/emit/iidxImportScoreData") + .field + input(type="text" name="refid", value=refid readonly hidden) + input.input(type="text" name="data" placeholder="Paste score JSON data") + p + button.button.is-primary(type="submit") + span.icon + i.mdi.mdi-check + span Score Import + .field + form(method="post" action="/emit/iidxExportScoreData") + .field + input(type="text" name="refid", value=refid readonly hidden) + button.button.is-primary(type="submit") + span.icon + i.mdi.mdi-check + span Score Export