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), }), }); };