@@ -1,6 +1,6 @@
|
|||||||
# Jubeat
|
# Jubeat
|
||||||
|
|
||||||
Plugin Version: **v1.4.1**
|
Plugin Version: **v1.5.0**
|
||||||
|
|
||||||
### Supported Versions
|
### Supported Versions
|
||||||
|
|
||||||
@@ -11,11 +11,16 @@ Plugin Version: **v1.4.1**
|
|||||||
- copious
|
- copious
|
||||||
- copious APPEND
|
- copious APPEND
|
||||||
- saucer
|
- saucer
|
||||||
|
- saucer fulfill
|
||||||
|
|
||||||
### Changelogs
|
### Changelogs
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
|
#### 1.5.0
|
||||||
|
|
||||||
|
- saucer fulfill support
|
||||||
|
|
||||||
#### 1.4.1
|
#### 1.4.1
|
||||||
|
|
||||||
- saucer support
|
- saucer support
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -1,35 +1,39 @@
|
|||||||
import {getVersion, VersionRange} from '../utils';
|
import {getVersion, VersionRange} from "../utils";
|
||||||
|
|
||||||
export const gameInfo: EPR = (info, data, send) => {
|
export const gameInfo: EPR = (info, data, send) => {
|
||||||
const locId = $(data).content('shop.locationid');
|
const locId = $(data).content("shop.locationid");
|
||||||
const version = getVersion(info);
|
const version = getVersion(info);
|
||||||
if (version === 0) return send.deny();
|
if (version === 0) return send.deny();
|
||||||
|
|
||||||
return send.object({
|
return send.object({
|
||||||
data: {
|
data: {
|
||||||
...info.module === 'shopinfo' && {
|
...info.module === "shopinfo" && {
|
||||||
cabid: K.ITEM('u32', _.random(1, 10)),
|
cabid: K.ITEM("u32", _.random(1, 10)),
|
||||||
locationid: K.ITEM('str', locId),
|
locationid: K.ITEM("str", locId),
|
||||||
...VersionRange(version, 3, 6) && { is_send: K.ITEM('u8', 1) },
|
...VersionRange(version, 3, 6) && { is_send: K.ITEM("u8", 1) },
|
||||||
|
tax_phase: K.ITEM("u8", 0),
|
||||||
|
facility: {
|
||||||
|
exist: K.ITEM("u32", 1)
|
||||||
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
...VersionRange(version, 5, 6) && {
|
...VersionRange(version, 5, 6) && {
|
||||||
white_music_list: K.ARRAY('s32', Array(32).fill(-1))
|
white_music_list: K.ARRAY("s32", Array(32).fill(-1))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
export const demodata = {
|
export const demodata = {
|
||||||
getNews: (_, __, send) => send.object({ data: { officialnews: K.ATTR({ count: '0' }) } }),
|
getNews: (_, __, send) => send.object({ data: { officialnews: K.ATTR({ count: "0" }) } }),
|
||||||
getData: (_, data, send) => {
|
getData: (_, data, send) => {
|
||||||
const newsId = $(data).number('officialnews.newsid');
|
const newsId = $(data).number("officialnews.newsid");
|
||||||
return send.object({
|
return send.object({
|
||||||
data: {
|
data: {
|
||||||
officialnews: {
|
officialnews: {
|
||||||
data: {
|
data: {
|
||||||
newsid: K.ITEM('s16', newsId),
|
newsid: K.ITEM("s16", newsId),
|
||||||
image: K.ITEM('u8', 0, { size: '0' })
|
image: K.ITEM("u8", 0, { size: "0" })
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -38,10 +42,10 @@ export const demodata = {
|
|||||||
getHitchart: (_, __, send) => send.object({
|
getHitchart: (_, __, send) => send.object({
|
||||||
data: {
|
data: {
|
||||||
hitchart: {
|
hitchart: {
|
||||||
update: K.ITEM('str', ''),
|
update: K.ITEM("str", ""),
|
||||||
|
|
||||||
hitchart_lic: K.ATTR({ count: '0' }),
|
hitchart_lic: K.ATTR({ count: "0" }),
|
||||||
hitchart_org: K.ATTR({ count: '0' }),
|
hitchart_org: K.ATTR({ count: "0" }),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}),
|
}),
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
import {getVersion, getVersionName, VersionRange} from "../utils";
|
import {getVersion, getVersionName, VersionRange} from "../utils";
|
||||||
import Profile from "../models/profile";
|
import Profile from "../models/profile";
|
||||||
import {Score} from "../models/score";
|
import {Score} from "../models/score";
|
||||||
|
import {CourseResult} from "../models/course";
|
||||||
|
|
||||||
export const profile: EPR = async (info, data, send) => {
|
export const profile: EPR = async (info, data, send) => {
|
||||||
let refId = $(data).str("data.player.pass.refid");
|
let refId = $(data).str("data.player.pass.refid");
|
||||||
@@ -32,17 +33,20 @@ export const profile: EPR = async (info, data, send) => {
|
|||||||
|
|
||||||
return send.object({
|
return send.object({
|
||||||
data: {
|
data: {
|
||||||
...VersionRange(version, 5, 5) && require("../templates/gameInfos/saucer.ts")(profile),
|
...version === 5 && require("../templates/gameInfos/saucer.ts")(profile),
|
||||||
|
...version === 6 && require("../templates/gameInfos/fulfill.ts")(profile),
|
||||||
|
|
||||||
player: {
|
player: {
|
||||||
name: K.ITEM("str", profile.name),
|
name: K.ITEM("str", profile.name),
|
||||||
jid: K.ITEM("s32", profile.jubeatId),
|
jid: K.ITEM("s32", profile.jubeatId),
|
||||||
refid: K.ITEM("str", profile.__refid),
|
refid: K.ITEM("str", profile.__refid),
|
||||||
session_id: K.ITEM("s32", 1),
|
session_id: K.ITEM("s32", 1),
|
||||||
|
event_flag: K.ITEM("u64", BigInt(0)),
|
||||||
|
|
||||||
...version === 3 && require("../templates/profiles/knit.ts")(profile),
|
...version === 3 && require("../templates/profiles/knit.ts")(profile),
|
||||||
...version === 4 && require("../templates/profiles/copious.ts")(profile),
|
...version === 4 && require("../templates/profiles/copious.ts")(profile),
|
||||||
...version === 5 && require("../templates/profiles/saucer.ts")(profile),
|
...version === 5 && require("../templates/profiles/saucer.ts")(profile),
|
||||||
|
...version === 6 && require("../templates/profiles/fulfill.ts")(profile),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@@ -236,6 +240,62 @@ export const saveProfile: EPR = async (info, { data }, send) => {
|
|||||||
profile.saucer.bistro.carry_over = $(data).number("player.bistro.carry_over");
|
profile.saucer.bistro.carry_over = $(data).number("player.bistro.carry_over");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (version === 6) {
|
||||||
|
if (!profile.fulfill) profile.fulfill = {};
|
||||||
|
profile.fulfill.jubility = $(data).number("player.info.jubility");
|
||||||
|
profile.fulfill.jubilityYday = $(data).number("player.info.jubility_yday");
|
||||||
|
profile.fulfill.tuneCount = $(data).number("player.info.tune_cnt");
|
||||||
|
profile.fulfill.saveCount = $(data).number("player.info.save_cnt");
|
||||||
|
profile.fulfill.savedCount = $(data).number("player.info.saved_cnt");
|
||||||
|
profile.fulfill.fcCount = $(data).number("player.info.fc_cnt");
|
||||||
|
profile.fulfill.exCount = $(data).number("player.info.exc_cnt");
|
||||||
|
profile.fulfill.clearCount = $(data).number("player.info.clear_cnt");
|
||||||
|
profile.fulfill.matchCount = $(data).number("player.info.match_cnt");
|
||||||
|
profile.fulfill.expertOption = $(data).number("player.info.expert_option");
|
||||||
|
profile.fulfill.matching = $(data).number("player.info.matching");
|
||||||
|
profile.fulfill.hazard = $(data).number("player.info.hazard");
|
||||||
|
profile.fulfill.hard = $(data).number("player.info.hard");
|
||||||
|
profile.fulfill.extraPoint = $(data).number("player.info.extra_point");
|
||||||
|
profile.fulfill.isExtraPlayed = $(data).bool("player.info.is_extra_played");
|
||||||
|
profile.fulfill.totalBestScore = $(data).number("player.info.total_best_score");
|
||||||
|
profile.fulfill.clearMaxLevel = $(data).number("player.info.clear_max_level");
|
||||||
|
profile.fulfill.fcMaxLevel = $(data).number("player.info.fc_max_level");
|
||||||
|
profile.fulfill.exMaxLevel = $(data).number("player.info.exc_max_level");
|
||||||
|
|
||||||
|
profile.fulfill.marker = lastMarker;
|
||||||
|
profile.fulfill.theme = lastTheme;
|
||||||
|
profile.fulfill.title = lastTitle;
|
||||||
|
profile.fulfill.parts = lastParts;
|
||||||
|
profile.fulfill.sort = lastSort;
|
||||||
|
profile.fulfill.category = lastCategory;
|
||||||
|
|
||||||
|
profile.fulfill.secretList = $(data).numbers("player.item.secret_list");
|
||||||
|
profile.fulfill.themeList = $(data).number("player.item.theme_list");
|
||||||
|
profile.fulfill.markerList = $(data).numbers("player.item.marker_list");
|
||||||
|
profile.fulfill.titleList = $(data).numbers("player.item.title_list");
|
||||||
|
profile.fulfill.partsList = $(data).numbers("player.item.parts_list");
|
||||||
|
profile.fulfill.secretListNew = $(data).numbers("player.item.secret_new");
|
||||||
|
profile.fulfill.themeListNew = $(data).number("player.item.theme_new");
|
||||||
|
profile.fulfill.markerListNew = $(data).numbers("player.item.marker_new");
|
||||||
|
profile.fulfill.titleListNew = $(data).numbers("player.item.title_new");
|
||||||
|
|
||||||
|
const courseNode = $(data).element("course");
|
||||||
|
if (courseNode) {
|
||||||
|
profile.fulfill.lastCourseId = courseNode.number("course_id");
|
||||||
|
|
||||||
|
await DB.Upsert<CourseResult>(refId, {
|
||||||
|
collection: "course_results",
|
||||||
|
courseId: courseNode.number("course_id"),
|
||||||
|
version: 6
|
||||||
|
}, {
|
||||||
|
$set: {
|
||||||
|
rating: courseNode.number("rating"),
|
||||||
|
scores: courseNode.elements("music").map(m => m.number("score"))
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
await DB.Update<Profile>(refId, { collection: "profile" }, profile);
|
await DB.Update<Profile>(refId, { collection: "profile" }, profile);
|
||||||
|
|
||||||
@@ -340,6 +400,69 @@ const updateScore = async (refId: string, data: any): Promise<boolean> => {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
export const getCourse: EPR = async (info, data, send) => {
|
||||||
|
const version = getVersion(info);
|
||||||
|
if (version === 0) return send.deny();
|
||||||
|
|
||||||
|
const jubeatId = $(data).number("data.player.jid");
|
||||||
|
if (!jubeatId) return send.deny();
|
||||||
|
|
||||||
|
const profile = await DB.FindOne<Profile>(null, { collection: "profile", jubeatId });
|
||||||
|
if (!profile) return send.deny();
|
||||||
|
|
||||||
|
if (version === 6) {
|
||||||
|
const results = await DB.Find<CourseResult>(profile.__refid, { collection: "course_results", version: 6 });
|
||||||
|
|
||||||
|
const { courses } = require("../data/fulfill_courses.json");
|
||||||
|
|
||||||
|
const validCourseIds: number[] = courses.map(course => course.course_id);
|
||||||
|
|
||||||
|
return send.object({
|
||||||
|
data: {
|
||||||
|
course_list: {
|
||||||
|
course: courses.map(course => ({
|
||||||
|
id: K.ITEM("s32", course.course_id),
|
||||||
|
name: K.ITEM("str", course.course_name),
|
||||||
|
level: K.ITEM("u8", course.course_level),
|
||||||
|
|
||||||
|
norma: {
|
||||||
|
norma_id: K.ARRAY("s32", course.norma.norma_id),
|
||||||
|
bronze_value: K.ARRAY("s32", course.norma.bronze),
|
||||||
|
silver_value: K.ARRAY("s32", course.norma.silver),
|
||||||
|
gold_value: K.ARRAY("s32", course.norma.gold)
|
||||||
|
},
|
||||||
|
|
||||||
|
music_list: {
|
||||||
|
music: course.music_list.map(music => (K.ATTR({ index: music.index }, {
|
||||||
|
music_id: K.ITEM("s32", music.music_id),
|
||||||
|
seq: K.ITEM("u8", music.seq_id)
|
||||||
|
})))
|
||||||
|
}
|
||||||
|
}))
|
||||||
|
},
|
||||||
|
|
||||||
|
player_list: {
|
||||||
|
player: {
|
||||||
|
jid: K.ITEM("s32", jubeatId),
|
||||||
|
|
||||||
|
result_list: {
|
||||||
|
result: results.filter(e => validCourseIds.find(valid => valid === e.courseId)).map(result => ({
|
||||||
|
id: K.ITEM("s32", result.courseId),
|
||||||
|
rating: K.ITEM("u8", result.rating),
|
||||||
|
score: K.ARRAY("s32", result.scores)
|
||||||
|
}))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
last_course_id: K.ITEM("s32", profile.fulfill?.lastCourseId || 0)
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
return send.deny();
|
||||||
|
};
|
||||||
|
|
||||||
export const meeting: EPR = (info, data, send) => {
|
export const meeting: EPR = (info, data, send) => {
|
||||||
return send.object({
|
return send.object({
|
||||||
data: {
|
data: {
|
||||||
|
|||||||
+27
-26
@@ -1,36 +1,37 @@
|
|||||||
import {demodata, gameInfo} from './handlers/common';
|
import {demodata, gameInfo} from "./handlers/common";
|
||||||
import {check, entry, refresh, report} from './handlers/matching';
|
import {check, entry, refresh, report} from "./handlers/matching";
|
||||||
import {getCollabo, loadScore, meeting, profile, saveProfile} from './handlers/profile';
|
import {getCollabo, getCourse, loadScore, meeting, profile, saveProfile} from "./handlers/profile";
|
||||||
|
|
||||||
export function register() {
|
export function register() {
|
||||||
if (CORE_VERSION_MAJOR <= 1 && CORE_VERSION_MINOR < 31) {
|
if (CORE_VERSION_MAJOR <= 1 && CORE_VERSION_MINOR < 31) {
|
||||||
console.error('The current version of Asphyxia Core is not supported. Requires version \'1.31\' or later.');
|
console.error("The current version of Asphyxia Core is not supported. Requires version '1.31' or later.");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
R.GameCode('J44');
|
R.GameCode("J44");
|
||||||
R.GameCode('K44');
|
R.GameCode("K44");
|
||||||
R.GameCode('L44');
|
R.GameCode("L44");
|
||||||
|
|
||||||
R.Route('gametop.regist', profile);
|
R.Route("gametop.regist", profile);
|
||||||
R.Route('gametop.get_info', gameInfo);
|
R.Route("gametop.get_info", gameInfo);
|
||||||
R.Route('gametop.get_pdata', profile);
|
R.Route("gametop.get_pdata", profile);
|
||||||
R.Route('gametop.get_mdata', loadScore);
|
R.Route("gametop.get_mdata", loadScore);
|
||||||
R.Route('gametop.get_meeting', meeting);
|
R.Route("gametop.get_course", getCourse);
|
||||||
R.Route('gametop.get_collabo', getCollabo);
|
R.Route("gametop.get_meeting", meeting);
|
||||||
|
R.Route("gametop.get_collabo", getCollabo);
|
||||||
|
|
||||||
R.Route('gameend.regist', saveProfile);
|
R.Route("gameend.regist", saveProfile);
|
||||||
R.Route('gameend.log', true);
|
R.Route("gameend.log", true);
|
||||||
R.Route('gameend.set_collabo', true);
|
R.Route("gameend.set_collabo", true);
|
||||||
|
|
||||||
R.Route('shopinfo.regist', gameInfo);
|
R.Route("shopinfo.regist", gameInfo);
|
||||||
R.Route('demodata.get_news', demodata.getNews);
|
R.Route("demodata.get_news", demodata.getNews);
|
||||||
R.Route('demodata.get_data', demodata.getData);
|
R.Route("demodata.get_data", demodata.getData);
|
||||||
R.Route('demodata.get_hitchart', demodata.getHitchart);
|
R.Route("demodata.get_hitchart", demodata.getHitchart);
|
||||||
R.Route('lobby.check', check);
|
R.Route("lobby.check", check);
|
||||||
R.Route('lobby.entry', entry);
|
R.Route("lobby.entry", entry);
|
||||||
R.Route('lobby.refresh', refresh);
|
R.Route("lobby.refresh", refresh);
|
||||||
R.Route('lobby.report', report);
|
R.Route("lobby.report", report);
|
||||||
|
|
||||||
R.Route('netlog.send', true);
|
R.Route("netlog.send", true);
|
||||||
R.Route('logger.report', true);
|
R.Route("logger.report", true);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,9 @@
|
|||||||
|
export interface CourseResult {
|
||||||
|
collection: "course_results";
|
||||||
|
|
||||||
|
version: number;
|
||||||
|
|
||||||
|
courseId: number;
|
||||||
|
rating: number;
|
||||||
|
scores: number[];
|
||||||
|
}
|
||||||
@@ -120,4 +120,48 @@ export default interface Profile {
|
|||||||
carry_over?: number;
|
carry_over?: number;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
fulfill?: {
|
||||||
|
jubility?: number;
|
||||||
|
jubilityYday?: number;
|
||||||
|
tuneCount?: number;
|
||||||
|
clearCount?: number;
|
||||||
|
saveCount?: number;
|
||||||
|
savedCount?: number;
|
||||||
|
fcCount?: number;
|
||||||
|
exCount?: number;
|
||||||
|
matchCount?: number;
|
||||||
|
extraPoint?: number;
|
||||||
|
isExtraPlayed?: boolean;
|
||||||
|
totalBestScore?: number;
|
||||||
|
clearMaxLevel?: number;
|
||||||
|
fcMaxLevel?: number;
|
||||||
|
exMaxLevel?: number;
|
||||||
|
|
||||||
|
marker?: number;
|
||||||
|
theme?: number;
|
||||||
|
title?: number;
|
||||||
|
parts?: number;
|
||||||
|
sort?: number;
|
||||||
|
category?: number;
|
||||||
|
expertOption?: number;
|
||||||
|
matching?: number;
|
||||||
|
hazard?: number;
|
||||||
|
hard?: number;
|
||||||
|
|
||||||
|
secretList?: number[];
|
||||||
|
themeList?: number;
|
||||||
|
markerList?: number[];
|
||||||
|
titleList?: number[];
|
||||||
|
partsList?: number[];
|
||||||
|
|
||||||
|
secretListNew?: number[];
|
||||||
|
themeListNew?: number;
|
||||||
|
markerListNew?: number[];
|
||||||
|
titleListNew?: number[];
|
||||||
|
|
||||||
|
lastCourseId?: number;
|
||||||
|
|
||||||
|
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,28 @@
|
|||||||
|
module.exports = () => ({
|
||||||
|
termver: K.ITEM("u8", 0),
|
||||||
|
season_etime: K.ITEM("u32", 0),
|
||||||
|
white_music_list: K.ARRAY("s32", Array(32).fill(-1)),
|
||||||
|
open_music_list: K.ARRAY("s32", Array(32).fill(0)),
|
||||||
|
|
||||||
|
collabo_info: {
|
||||||
|
collabo: [
|
||||||
|
K.ATTR({ type: "1" }, { state: K.ITEM("u8", 0) }),
|
||||||
|
K.ATTR({ type: "2" }, { state: K.ITEM("u8", 0) }),
|
||||||
|
K.ATTR({ type: "3" }, { state: K.ITEM("u8", 0) }),
|
||||||
|
K.ATTR({ type: "4" }, { state: K.ITEM("u8", 0) }),
|
||||||
|
K.ATTR({ type: "5" }, { state: K.ITEM("u8", 0) }),
|
||||||
|
K.ATTR({ type: "8" }, { state: K.ITEM("u8", 0) })
|
||||||
|
],
|
||||||
|
|
||||||
|
policy_break: {
|
||||||
|
is_report_end: K.ITEM("bool", true)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
lab: {
|
||||||
|
is_open: K.ITEM("bool", false)
|
||||||
|
},
|
||||||
|
|
||||||
|
share_music: K.ATTR({ count: "0" }),
|
||||||
|
bonus_music: K.ATTR({ count: "0" })
|
||||||
|
});
|
||||||
@@ -0,0 +1,117 @@
|
|||||||
|
import Profile from "../../models/profile";
|
||||||
|
|
||||||
|
module.exports = (data: Profile) => ({
|
||||||
|
info: {
|
||||||
|
jubility: K.ITEM("s16", data.fulfill?.jubility || 0),
|
||||||
|
jubility_yday: K.ITEM("s16", data.fulfill?.jubilityYday || 0),
|
||||||
|
tune_cnt: K.ITEM("s32", data.fulfill?.tuneCount || 31),
|
||||||
|
save_cnt: K.ITEM("s32", data.fulfill?.saveCount || 0),
|
||||||
|
saved_cnt: K.ITEM("s32", data.fulfill?.savedCount || 0),
|
||||||
|
fc_cnt: K.ITEM("s32", data.fulfill?.fcCount || 0),
|
||||||
|
ex_cnt: K.ITEM("s32", data.fulfill?.exCount || 0),
|
||||||
|
clear_cnt: K.ITEM("s32", data.fulfill?.clearCount || 0),
|
||||||
|
pf_cnt: K.ITEM("s32", 0),
|
||||||
|
match_cnt: K.ITEM("s32", data.fulfill?.matchCount || 0),
|
||||||
|
beat_cnt: K.ITEM("s32", 0),
|
||||||
|
mynews_cnt: K.ITEM("s32", 0),
|
||||||
|
mtg_entry_cnt: K.ITEM("s32", 0),
|
||||||
|
mtg_hold_cnt: K.ITEM("s32", 0),
|
||||||
|
mtg_result: K.ITEM("u8", 0),
|
||||||
|
extra_point: K.ITEM("s32", data.fulfill?.extraPoint || 0),
|
||||||
|
is_extra_played: K.ITEM("bool", data.fulfill?.isExtraPlayed || false)
|
||||||
|
},
|
||||||
|
|
||||||
|
last: {
|
||||||
|
play_time: K.ITEM("s64", BigInt(0)),
|
||||||
|
shopname: K.ITEM("str", data.lastShopname),
|
||||||
|
areaname: K.ITEM("str", data.lastAreaname),
|
||||||
|
title: K.ITEM("s16", data.fulfill?.title || 0),
|
||||||
|
parts: K.ITEM("s16", data.fulfill?.parts || 0),
|
||||||
|
theme: K.ITEM("s8", data.fulfill?.theme || 0),
|
||||||
|
marker: K.ITEM("s8", data.fulfill?.marker || 0),
|
||||||
|
rank_sort: K.ITEM("s8", data.rankSort || 1),
|
||||||
|
combo_disp: K.ITEM("s8", data.comboDisp || 1),
|
||||||
|
music_id: K.ITEM("s32", data.musicId || 0),
|
||||||
|
seq_id: K.ITEM("s8", data.seqId || 0),
|
||||||
|
sort: K.ITEM("s8", data.fulfill?.sort || 0),
|
||||||
|
category: K.ITEM("s8", data.fulfill?.category || 0),
|
||||||
|
expert_option: K.ITEM("s8", data.fulfill?.category || 0),
|
||||||
|
matching: K.ITEM("s8", data.fulfill?.category || 1),
|
||||||
|
hazard: K.ITEM("s8", data.fulfill?.category || 0),
|
||||||
|
hard: K.ITEM("s8", data.fulfill?.category || 0)
|
||||||
|
},
|
||||||
|
|
||||||
|
item: {
|
||||||
|
secret_list: K.ARRAY("s32", Array(32).fill(-1)),
|
||||||
|
theme_list: K.ITEM("s16", -1),
|
||||||
|
marker_list: K.ARRAY("s32", Array(2).fill(-1)),
|
||||||
|
title_list: K.ARRAY("s32", Array(96).fill(-1)),
|
||||||
|
parts_list: K.ARRAY("s32", Array(96).fill(-1)),
|
||||||
|
|
||||||
|
new: {
|
||||||
|
secret_list: K.ARRAY("s32", Array(32).fill(0)),
|
||||||
|
theme_list: K.ITEM("s16", 0),
|
||||||
|
marker_list: K.ARRAY("s32", Array(2).fill(0)),
|
||||||
|
title_list: K.ARRAY("s32", Array(96).fill(0))
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
history: K.ATTR({ count: "0" }),
|
||||||
|
|
||||||
|
challenge: {
|
||||||
|
today: {
|
||||||
|
music_id: K.ITEM("s32", 0),
|
||||||
|
state: K.ITEM("u8", 0)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
news: {
|
||||||
|
checked: K.ITEM("s16", 0)
|
||||||
|
},
|
||||||
|
|
||||||
|
macchiato: {
|
||||||
|
pack_id: K.ITEM("s32", 0),
|
||||||
|
bean_num: K.ITEM("u16", 0),
|
||||||
|
daily_milk_num: K.ITEM("s32", 1200),
|
||||||
|
is_received_daily_milk: K.ITEM("bool", true),
|
||||||
|
today_tune_cnt: K.ITEM("s32", 0),
|
||||||
|
daily_milk_bonus: K.ARRAY("s32", [100, 100, 1000, 200, 200, 200, 200, 200, 1000]),
|
||||||
|
daily_play_burst: K.ITEM("s32", 300),
|
||||||
|
|
||||||
|
sub_menu_is_completed: K.ITEM("bool", true),
|
||||||
|
compensation_milk: K.ITEM("s32", 0),
|
||||||
|
|
||||||
|
macchiato_music_list: K.ATTR({ count: "0" }, {
|
||||||
|
music: []
|
||||||
|
}),
|
||||||
|
|
||||||
|
sub_pack_id: K.ITEM("s32", 0),
|
||||||
|
|
||||||
|
sub_macchiato_music_list: K.ATTR({ count: "0" }, {
|
||||||
|
music: []
|
||||||
|
}),
|
||||||
|
|
||||||
|
season_music_list: K.ATTR({ count: "0" }),
|
||||||
|
|
||||||
|
match_cnt: K.ITEM("s32", 0),
|
||||||
|
|
||||||
|
achievement_list: K.ATTR({ count: "0" }, {
|
||||||
|
achievement: []
|
||||||
|
}),
|
||||||
|
|
||||||
|
cow_list: K.ATTR({ count: "0" }),
|
||||||
|
},
|
||||||
|
|
||||||
|
rivallist: K.ATTR({ count: "0" }),
|
||||||
|
|
||||||
|
only_now_music: K.ATTR({ count: "0" }),
|
||||||
|
lab_edit_seq: K.ATTR({ count: "0" }),
|
||||||
|
kac_music: K.ATTR({ count: "0" }),
|
||||||
|
|
||||||
|
memorial: {
|
||||||
|
latest_event_id: K.ITEM("u8", 1),
|
||||||
|
player_event_id: K.ITEM("u8", 1),
|
||||||
|
flag: K.ITEM("u32", 0),
|
||||||
|
params: K.ARRAY("u32", Array(15).fill(0))
|
||||||
|
}
|
||||||
|
});
|
||||||
Reference in New Issue
Block a user