diff --git a/gitadora@asphyxia/data/mdb/index.ts b/gitadora@asphyxia/data/mdb/index.ts index 775bfdb..3f5b2db 100644 --- a/gitadora@asphyxia/data/mdb/index.ts +++ b/gitadora@asphyxia/data/mdb/index.ts @@ -64,6 +64,13 @@ export async function readMDBFile(path: string, processHandler?: processRawDataH default: throw `Invalid MDB file type: ${fileType}. Only .json, .xml, .b64 are supported.` } + + // Some MDB sources may not provide seq_release_state. Ensure it is present for every song entry. + result.music.forEach((entry) => { + if (entry.seq_release_state == null) { + entry.seq_release_state = K.ITEM('s32', 1) + } + }) let gfCount = result.music.filter((e) => e.cont_gf["@content"][0]).length let dmCount = result.music.filter((e) => e.cont_dm["@content"][0]).length diff --git a/gitadora@asphyxia/handlers/info.ts b/gitadora@asphyxia/handlers/info.ts index 87dff76..151c9ec 100644 --- a/gitadora@asphyxia/handlers/info.ts +++ b/gitadora@asphyxia/handlers/info.ts @@ -25,7 +25,127 @@ export const gameInfoGet: EPR = async (info, data, send) => { const eventData = getEventDataResponse() const extraData = getEncoreStageData(info) const VER = getVersion(info) - if (VER == "fuzzup"){ + if (VER == "galaxywave"){ + await send.object({ + now_date: K.ITEM('u64', BigInt(Date.now())), + extra: { + extra_lv: K.ITEM('s32', extraData.level), + extramusic: { + music: extraData.musics.map(mid => { + return { + musicid: K.ITEM('s32', mid), + get_border: K.ITEM('u8', 0), + } + }) + } + }, + infect_music: { term: K.ITEM('u8', 0) }, + unlock_challenge: { term: K.ITEM('s32', 0) }, + battle: { term: K.ITEM('s32', 0) }, + battle_chara: { term: K.ITEM('s32', 0) }, + data_ver_limit: { term: K.ITEM('s32', 0) }, + ea_pass_propel: { term: K.ITEM('s32', 0) }, + monthly_skill: { + term: K.ITEM('u8', 0), + target_music: { + music: { + musicid: K.ITEM('s32', 0), + }, + }, + }, + update_prog: { term: K.ITEM('s32', 0) }, + rockwave: { + event_list: { + event: { + data_id: K.ITEM('s32', 0), + data_version: K.ITEM('s32', 0), + event_id: K.ITEM('s32', 0), + event_type: K.ITEM('s32', 0), + start_date: K.ITEM('u64', BigInt(0)), + end_date: K.ITEM('u64', BigInt(0)), + is_open: K.ITEM('bool', 0), + bg_no: K.ITEM('s32', 0), + target_musicid: K.ITEM('s32', 0), + clear_border: K.ITEM('s32', 0), + reward_musicid: K.ITEM('s32', 0), + reward_musicid_border_list: K.ITEM('s32', 0), + reward_stickerid: K.ITEM('s32', 0), + reward_stickerid_list: K.ITEM('s32', 0), + reward_stickerid_border_list: K.ITEM('s32', 0), + firstbit: K.ITEM('s32', 0), + quest_no: K.ITEM('s32', 0), + target_music_list: { + music: { + musicid: K.ITEM('s32', 0), + } + }, + ranking_list: K.ITEM('u64', BigInt(0)), + } + } + }, + general_term: { + termdata: { + type: K.ITEM('str', ''), + term: K.ITEM('s32', 0), + state: K.ITEM('s32', 0), + start_date_ms: K.ITEM('u64', BigInt(0)), + end_date_ms: K.ITEM('u64', BigInt(0)), + } + }, + jubeat_omiyage_challenge: {}, + kac2017: {}, + nostalgia_concert: {}, + trbitemdata: {}, + ctrl_movie: {}, + ng_jacket: {}, + ng_recommend_music: {}, + ranking: { + skill_0_999: {}, + skill_1000_1499: {}, + skill_1500_1999: {}, + skill_2000_2499: {}, + skill_2500_2999: {}, + skill_3000_3499: {}, + skill_3500_3999: {}, + skill_4000_4499: {}, + skill_4500_4999: {}, + skill_5000_5499: {}, + skill_5500_5999: {}, + skill_6000_6499: {}, + skill_6500_6999: {}, + skill_7000_7499: {}, + skill_7500_7999: {}, + skill_8000_8499: {}, + skill_8500_9999: {}, + total: {}, + original: {}, + bemani: {}, + famous: {}, + anime: {}, + band: {}, + western: {}, + }, + processing_report_state: K.ITEM('u8', 0), + assert_report_state: K.ITEM('u8', 0), + recommendmusic: { '@attr': { nr: 0 } }, + demomusic: { '@attr': { nr: 0 } }, + event_skill: {}, + temperature: { is_send: K.ITEM('bool', 0) }, + bemani_summer_2018: { is_open: K.ITEM('bool', 0) }, + kac2018: { + event: { + term: K.ITEM('s32', 0), + since: K.ITEM('u64', BigInt(0)), + till: K.ITEM('u64', BigInt(0)), + is_open: K.ITEM('bool', 0), + target_music: { + music_id: K.ARRAY('s32', [0, 0, 0, 0, 0, 0]), + }, + }, + }, + ...eventData, + }); + } else if (VER == "fuzzup"){ await send.object({ now_date: K.ITEM('u64', BigInt(Date.now())), extra: { @@ -250,6 +370,41 @@ function getEventDataResponse() { }, bear_fes: {}, nextadium: {}, + galaxy_parade: { + corner_list: { + corner: { + is_open: K.ITEM('bool', 0), + data_ver: K.ITEM('s32', 0), + genre: K.ITEM('s32', 0), + corner_id: K.ITEM('s32', 0), + corner_name: K.ITEM('str', ''), + start_date_ms: K.ITEM('u64', BigInt(0)), + end_date_ms: K.ITEM('u64', BigInt(0)), + requirements_musicid: K.ITEM('s32', 0), + reward_list: { + reward: { + reward_id: K.ITEM('s32', 0), + reward_kind: K.ITEM('s32', 0), + reward_itemid: K.ITEM('s32', 0), + unlock_border: K.ITEM('s32', 0), + } + }, + } + }, + gacha_table: { + chara_odds: { + chara_id: K.ITEM('s32', 0), + odds: K.ITEM('s32', 0), + } + }, + bonus: { + term: K.ITEM('s32', 0), + stage_bonus: K.ITEM('s32', 0), + charm_bonus: K.ITEM('s32', 0), + start_date_ms: K.ITEM('u64', BigInt(0)), + end_date_ms: K.ITEM('u64', BigInt(0)), + } + }, }; const time = BigInt(31536000); @@ -332,6 +487,6 @@ function getEventDataResponse() { }; } } - + return addition } diff --git a/gitadora@asphyxia/handlers/profiles.ts b/gitadora@asphyxia/handlers/profiles.ts index 6384e94..4ab4269 100644 --- a/gitadora@asphyxia/handlers/profiles.ts +++ b/gitadora@asphyxia/handlers/profiles.ts @@ -222,6 +222,26 @@ export const getPlayer: EPR = async (info, data, send) => { unlock_point: K.ITEM('s32', profile.unlock_point), }, musiclist: { '@attr': { nr: musicdata.length }, musicdata }, + deluxe: { + deluxe_content: K.ITEM('s32', 0), + target_id: K.ITEM('s32', 0), + multiply: K.ITEM('s32', 0), + point: K.ITEM('s32', 0), + }, + galaxy_parade: { + score_list: {}, + last_corner_id: K.ITEM('s32', 0), + chara_list: {}, + last_sort_category: K.ITEM('s32', 0), + last_sort_order: K.ITEM('s32', 0), + team_member: { + chara_id_guitar: K.ITEM('s32', 0), + chara_id_bass: K.ITEM('s32', 0), + chara_id_drum: K.ITEM('s32', 0), + chara_id_free1: K.ITEM('s32', 0), + chara_id_free2: K.ITEM('s32', 0), + }, + }, }; const playerRanking = await getPlayerRanking(refid, version, game) @@ -229,6 +249,41 @@ export const getPlayer: EPR = async (info, data, send) => { const addition: any = { monstar_subjugation: {}, bear_fes: {}, + galaxy_parade: { + corner_list: { + corner: { + is_open: K.ITEM('bool', 0), + data_ver: K.ITEM('s32', 0), + genre: K.ITEM('s32', 0), + corner_id: K.ITEM('s32', 0), + corner_name: K.ITEM('str', ''), + start_date_ms: K.ITEM('u64', BigInt(0)), + end_date_ms: K.ITEM('u64', BigInt(0)), + requirements_musicid: K.ITEM('s32', 0), + reward_list: { + reward: { + reward_id: K.ITEM('s32', 0), + reward_kind: K.ITEM('s32', 0), + reward_itemid: K.ITEM('s32', 0), + unlock_border: K.ITEM('s32', 0), + } + }, + } + }, + gacha_table: { + chara_odds: { + chara_id: K.ITEM('s32', 0), + odds: K.ITEM('s32', 0), + } + }, + bonus: { + term: K.ITEM('s32', 0), + stage_bonus: K.ITEM('s32', 0), + charm_bonus: K.ITEM('s32', 0), + start_date_ms: K.ITEM('u64', BigInt(0)), + end_date_ms: K.ITEM('u64', BigInt(0)), + } + }, }; for (let i = 1; i <= 20; ++i) { const obj = { point: K.ITEM('s32', 0) }; diff --git a/gitadora@asphyxia/models/Responses/battledataresponse.ts b/gitadora@asphyxia/models/Responses/battledataresponse.ts index fad986f..3fdc471 100644 --- a/gitadora@asphyxia/models/Responses/battledataresponse.ts +++ b/gitadora@asphyxia/models/Responses/battledataresponse.ts @@ -24,16 +24,16 @@ export interface BattleDataResponse score: { battle_class: KITEM<'s32'>, - max_battle_class: KITEM<'s32'>, - battle_point: KITEM<'s32'>, - win: KITEM<'s32'>, - lose: KITEM<'s32'>, - draw: KITEM<'s32'>, - consecutive_win: KITEM<'s32'>, - max_consecutive_win: KITEM<'s32'>, - glorious_win: KITEM<'s32'>, - max_defeat_skill: KITEM<'s32'>, - latest_result: KITEM<'s32'>, + max_battle_class: KITEM<'s32'>, + battle_point: KITEM<'s32'>, + win: KITEM<'s32'>, + lose: KITEM<'s32'>, + draw: KITEM<'s32'>, + consecutive_win: KITEM<'s32'>, + max_consecutive_win: KITEM<'s32'>, + glorious_win: KITEM<'s32'>, + max_defeat_skill: KITEM<'s32'>, + latest_result: KITEM<'s32'>, } history: {}