Compare commits
3
Commits
mdx-3.0.3a
...
mdx
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
dbfcf60ac7 | ||
|
|
c94b6cb36f | ||
|
|
7fe1b0536e |
@@ -1,6 +1,6 @@
|
||||
# DanceDanceRevolution
|
||||
|
||||
**Plugin Version:** fork-mdx-3.0.3a
|
||||
**Plugin Version:** fork-mdx-3.0.3d
|
||||
|
||||
**Supported game versions:** WORLD (2024101500)
|
||||
|
||||
@@ -26,9 +26,10 @@ musicdb.xml Usage Guide
|
||||
|
||||
Changelog
|
||||
===========
|
||||
### fork-mdx-3.0.3a
|
||||
### fork-mdx-3.0.3d
|
||||
|
||||
- Fixed WebUI flare skill calculation mistake.
|
||||
- Fixed getLastGhostId function.
|
||||
- Added "unlock all songs" option.
|
||||
- Still requires musicdb.xml to get the song ids.
|
||||
- Added Triple Tribe 4 event data.
|
||||
@@ -36,6 +37,18 @@ Changelog
|
||||
- You can use patches to force the game to imitate gold cab.
|
||||
- Added "Step This Way" Challenge difficulties
|
||||
- Added "MVP" to SONGS_WORLD.
|
||||
- Added "Time to HYPERDRIVE" to SONGS_WORLD.
|
||||
- Song should appear if you're Silver rank in WORLD LEAGUE.
|
||||
- Added new charts to advanced play
|
||||
- "1116"
|
||||
- "Sahara"
|
||||
- "High & Low" (CHA)
|
||||
- "ONYX" (CHA)
|
||||
- Added new player customization options in Profile Settings.
|
||||
- BPL Team Supporter Appeal Board
|
||||
- Added 2nd WORLD LEAGUE info
|
||||
- Will start 11/14 10:00 JST.
|
||||
- Will add Hakken difficulties as soon as it is revealed.
|
||||
|
||||
|
||||
### fork-mdx-3.0.2
|
||||
|
||||
+26
-12
@@ -54,13 +54,13 @@ export const SONGS_WORLD = [
|
||||
{ mcode: 38756, limited_ary: [2, 2, 2, 2, -1, -1, 2, 2, 2, -1], diffLv: [3, 8, 15, 18, 0, 0, 8, 14, 18, 0] },
|
||||
{ mcode: 38758, limited_ary: [2, 2, 2, 2, -1, -1, 2, 2, 2, -1], diffLv: [5, 10, 13, 17, 0, 0, 10, 13, 17, 0] },
|
||||
{ mcode: 38759, limited_ary: [2, 2, 2, 2, -1, -1, 2, 2, 2, -1], diffLv: [3, 6, 13, 15, 0, 0, 7, 13, 15, 0] },
|
||||
{ mcode: 38757, limited_ary: [0, 0, 0, 0, -1, -1, 0, 0, 0, -1], diffLv: [2, 5, 8, 13, 0, 0, 5, 8, 13, 0] }
|
||||
|
||||
{ mcode: 38757, limited_ary: [0, 0, 0, 0, -1, -1, 0, 0, 0, -1], diffLv: [2, 5, 8, 13, 0, 0, 5, 8, 13, 0] },
|
||||
{ mcode: 38622, limited_ary: [12, 12, 12, 12, -1, -1, 12, 12, 12, -1], diffLv: [2, 7, 12, 15, 0, 0, 7, 12, 15, 0] },
|
||||
{ mcode: 38760, limited_ary: [2, 2, 2, 2, 2, -1, 2, 2, 2, 2], diffLv: [4, 8, 13, 16, 18, 0, 8, 13, 16, 18] },
|
||||
{ mcode: 38761, limited_ary: [2, 2, 2, 2, -1, -1, 2, 2, 2, -1], diffLv: [4, 8, 12, 15, 0, 0, 8, 12, 15, 0] },
|
||||
|
||||
// songs that have yet to release. unknown difficulty lvls.
|
||||
// { mcode: 38622, limited_ary: [], diffLv: [] },
|
||||
// { mcode: 38629, limited_ary: [], diffLv: [] },
|
||||
// { mcode: 38760, limited_ary: [], diffLv: [] },
|
||||
// { mcode: 38761, limited_ary: [], diffLv: [] }
|
||||
// { mcode: 38629, limited_ary: [13, 13, 13, 13, -1, -1 13, 13 13, -1], diffLv: [] } // hakken
|
||||
]
|
||||
|
||||
export const SONGS_OVERRIDE_WORLD = [
|
||||
@@ -211,7 +211,6 @@ export const SONGS_OVERRIDE_WORLD = [
|
||||
{ mcode: 38269, limited_ary: [0, 0, 0, 0, -1, -1, 0, 0, 0, -1], diffLv: [2, 5, 7, 10, 0, 0, 5, 7, 10, 0] },
|
||||
{ mcode: 38652, limited_ary: [0, 0, 0, 0, 0, -1, 0, 0, 0, 0], diffLv: [2, 6, 10, 15, 17, 0, 6, 10, 15, 17] },
|
||||
{ mcode: 37251, limited_ary: [0, 0, 0, 0, 0, -1, 0, 0, 0, 0], diffLv: [6, 10, 12, 15, 18, 0, 10, 11, 16, 17] },
|
||||
|
||||
{ mcode: 38212, limited_ary: [0, 0, 0, 0, 2, -1, 0, 0, 0, 2], diffLv: [3, 7, 10, 15, 16, 0, 8, 11, 15, 16] },
|
||||
{ mcode: 38295, limited_ary: [0, 0, 0, 0, 2, -1, 0, 0, 0, 2], diffLv: [3, 7, 11, 14, 17, 0, 7, 11, 14, 17] },
|
||||
{ mcode: 38258, limited_ary: [0, 0, 0, 0, 2, -1, 0, 0, 0, 2], diffLv: [2, 6, 10, 14, 16, 0, 6, 11, 14, 16] },
|
||||
@@ -222,10 +221,11 @@ export const SONGS_OVERRIDE_WORLD = [
|
||||
{ mcode: 38442, limited_ary: [0, 0, 0, 0, 2, -1, 0, 0, 0, 2], diffLv: [3, 8, 13, 16, 18, 0, 8, 13, 16, 18] },
|
||||
{ mcode: 38436, limited_ary: [0, 0, 0, 0, 2, -1, 0, 0, 0, 2], diffLv: [4, 7, 11, 14, 17, 0, 7, 11, 14, 17] },
|
||||
{ mcode: 38407, limited_ary: [0, 0, 0, 0, 0, -1, 0, 0, 0, 0], diffLv: [4, 9, 12, 16, 17, 0, 9, 12, 16, 17] },
|
||||
{ mcode: 38428, limited_ary: [0, 0, 0, 0, 0, -1, 0, 0, 0, 0], diffLv: [4, 8, 12, 16, 18, 0, 8, 12, 16, 18] },
|
||||
{ mcode: 38424, limited_ary: [0, 0, 0, 0, 0, -1, 0, 0, 0, 0], diffLv: [4, 8, 11, 14, 17, 0, 8, 11, 14, 17] }
|
||||
|
||||
// { mcode: 38339, limited_ary: [0, 0, 0, 0, 0, -1, 0, 0, 0, 0], diffLv: [3, 7, 11, 14, ?, 0, 7, 11, 14, ?] },
|
||||
// { mcode: 38424, limited_ary: [0, 0, 0, 0, 0, -1, 0, 0, 0, 0], diffLv: [4, 8, 11, 14, ?, 0, 8, 11, 14, ?] },
|
||||
// { mcode: 38428, limited_ary: [0, 0, 0, 0, 0, -1, 0, 0, 0, 0], diffLv: [4, 8, 12, 16, ?, 0, 8, 12, 16, ?] },
|
||||
// new charts
|
||||
// { mcode: 38339, limited_ary: [0, 0, 0, 0, 0, -1, 0, 0, 0, 0], diffLv: [3, 7, 11, 14, ?, 0, 7, 11, 14, ?] }, cbme
|
||||
]
|
||||
|
||||
export const EVENTS_WORLD = [
|
||||
@@ -281,11 +281,16 @@ export const EVENTS_WORLD = [
|
||||
{ id: 106, no: 0, cond: 1, rwrd: 37234, type: 50 },
|
||||
{ id: 107, no: 0, cond: 1, rwrd: 37363, type: 50 },
|
||||
{ id: 108, no: 0, cond: 1, rwrd: 38436, type: 52 },
|
||||
// Triple tribe 4. Song does not appear if non-Gold.
|
||||
{ id: 109, no: 0, cond: 1, rwrd: 1197, type: 201, save: 1 },
|
||||
{ id: 110, no: 0, cond: 1, rwrd: 38759, type: 43, comp: 0, save: 1 },
|
||||
{ id: 111, no: 0, cond: 1, rwrd: 38758, type: 43, comp: 0, save: 1 },
|
||||
{ id: 112, no: 0, cond: 1, rwrd: 38756, type: 43, comp: 0, save: 1 }
|
||||
{ id: 112, no: 0, cond: 1, rwrd: 38756, type: 43, comp: 0, save: 1 },
|
||||
{ id: 113, no: 0, cond: 1, rwrd: 1201, type: 201, save: 1 },
|
||||
{ id: 114, no: 0, cond: 1, rwrd: 38760, type: 50 },
|
||||
{ id: 115, no: 0, cond: 1, rwrd: 38760, type: 52 },
|
||||
{ id: 116, no: 0, cond: 1, rwrd: 38761, type: 50 },
|
||||
{ id: 117, no: 0, cond: 1, rwrd: 38428, type: 52 },
|
||||
{ id: 118, no: 0, cond: 1, rwrd: 38424, type: 52 }
|
||||
]
|
||||
|
||||
export const LEAGUE_WORLD = [
|
||||
@@ -297,6 +302,15 @@ export const LEAGUE_WORLD = [
|
||||
end: BigInt(Date.parse('6 Nov 2024 08:00:00 GMT')),
|
||||
summary: BigInt(Date.parse('6 Nov 2024 09:00:00 GMT')),
|
||||
advanceBorder: [0, 0, 0]
|
||||
},
|
||||
{
|
||||
id: 2,
|
||||
name: "第2回 WORLD LEAGUE",
|
||||
name_eng: "The 2nd WORLD LEAGUE",
|
||||
start: BigInt(Date.parse('14 Nov 2024 01:00:00 GMT')),
|
||||
end: BigInt(Date.parse('11 Dec 2024 08:00:00 GMT')),
|
||||
summary: BigInt(Date.parse('11 Dec 2024 09:00:00 GMT')),
|
||||
advanceBorder: [0, 0, 0]
|
||||
}
|
||||
]
|
||||
|
||||
|
||||
+16
-5
@@ -1,9 +1,10 @@
|
||||
import { Profile } from "../models/profile";
|
||||
import { ProfileWorld, ScoreWorld, EventWorld, GhostWorld, RivalWorld, HiScoreWorld, LeagueWorld } from "../models/ddrworld";
|
||||
import { ProfileWorld, ScoreWorld, EventWorld, GhostWorld, RivalWorld, HiScoreWorld, LeagueWorld, CustomizeWorld } from "../models/ddrworld";
|
||||
import { SONGS_WORLD, SONGS_OVERRIDE_WORLD, EVENTS_WORLD, LEAGUE_WORLD, LOCKED_SONGS } from "../data/world";
|
||||
|
||||
function getLastGhostId(ghost: any) {
|
||||
if(ghost.length > 0) return ghost.filter(a => (a.ghostId !== undefined)).sort((a, b) => b.ghostId - a.ghostId)[0].ghostId
|
||||
let ghostFiltered = ghost.filter(a => (a.ghostId !== undefined))
|
||||
if(ghostFiltered.length > 0) return ghostFiltered.sort((a, b) => b.ghostId - a.ghostId)[0].ghostId
|
||||
else return 0
|
||||
}
|
||||
|
||||
@@ -542,7 +543,7 @@ export const playerdataload: EPR = async (info, data, send) => {
|
||||
}
|
||||
|
||||
let leagueData = {}
|
||||
let curLeague = LEAGUE_WORLD[0]
|
||||
let curLeague = LEAGUE_WORLD[1]
|
||||
let league = await DB.FindOne(refid, {collection: 'league3', id: curLeague.id})
|
||||
if(!league) {
|
||||
let leagueClass = 0
|
||||
@@ -653,6 +654,16 @@ export const playerdataload: EPR = async (info, data, send) => {
|
||||
}
|
||||
}
|
||||
|
||||
let userCustomize = []
|
||||
let customize = await DB.Find<CustomizeWorld>(refid, {collection: 'customize3'})
|
||||
customize.forEach(cus => {
|
||||
userCustomize.push({
|
||||
category: K.ITEM('s32', cus.category),
|
||||
key: K.ITEM('s32', cus.key),
|
||||
pattern: K.ITEM('s32', cus.pattern)
|
||||
})
|
||||
})
|
||||
|
||||
// test
|
||||
if(IO.Exists('data/test.json')) {
|
||||
let bufTest = await IO.ReadFile('data/test.json')
|
||||
@@ -744,7 +755,8 @@ export const playerdataload: EPR = async (info, data, send) => {
|
||||
rival: [],
|
||||
score: scoreFin,
|
||||
event: eventFin,
|
||||
league: leagueData
|
||||
league: leagueData,
|
||||
customize: userCustomize
|
||||
});
|
||||
}
|
||||
};
|
||||
@@ -839,7 +851,6 @@ export const rivaldataload: EPR = async (info, data, send) => {
|
||||
const pcbid = $(data).str("data.pcbid");
|
||||
|
||||
// song id, style, difficulty, idk, dancername, idk, idk, scoredisp, score, ghost
|
||||
let ssssss = ''
|
||||
let record = []
|
||||
let hiscore: any
|
||||
if(ddrCode === 0) {
|
||||
|
||||
@@ -4,7 +4,7 @@ import { usergamedata_recv } from "./handlers/usergamedata_recv";
|
||||
import { usergamedata_send } from "./handlers/usergamedata_send";
|
||||
import { musicdataload, playerdatanew, playerdatasave, playerdataload, rivaldataload, ghostdataload, taboowordcheck, minidump } from "./handlers/ddrworld";
|
||||
import { CommonOffset, OptionOffset, Profile } from "./models/profile";
|
||||
import { ProfileWorld } from "./models/ddrworld";
|
||||
import { ProfileWorld, CustomizeWorld } from "./models/ddrworld";
|
||||
import { SONGS_WORLD, SONGS_OVERRIDE_WORLD, LEAGUE_WORLD } from "./data/world"
|
||||
|
||||
export function register() {
|
||||
@@ -210,6 +210,17 @@ export function register() {
|
||||
});
|
||||
});
|
||||
|
||||
R.WebUIEvent("playerCustomize", async ({ customize, refid, selected }) => {
|
||||
const catPat = {'appeal': [1, 1]}
|
||||
if(selected === 0) await DB.Remove<CustomizeWorld>(refid, { collection: "customize3", category: catPat[customize][0], pattern: catPat[customize][1] })
|
||||
else await DB.Upsert<CustomizeWorld>(refid, { collection: "customize3", category: catPat[customize][0] }, {
|
||||
$set: {
|
||||
key: selected,
|
||||
pattern: catPat[customize][1]
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
R.WebUIEvent("getMDB", async (data: {}, send: WebUISend) => {
|
||||
let mdbData = []
|
||||
let mdbLimName = U.GetConfig('mdb_limited')
|
||||
|
||||
@@ -69,6 +69,14 @@ export interface LeagueWorld {
|
||||
ended: boolean
|
||||
}
|
||||
|
||||
export interface CustomizeWorld {
|
||||
collection: "customize3";
|
||||
|
||||
category: number;
|
||||
key: number;
|
||||
pattern: number;
|
||||
}
|
||||
|
||||
export interface ProfileWorld {
|
||||
collection: "profile3";
|
||||
|
||||
|
||||
@@ -68,3 +68,10 @@ $('#change-display-calories3').on('click', () => {
|
||||
|
||||
emit('updateDisplayCalories3', { refid, selected }).then(() => location.reload());
|
||||
});
|
||||
|
||||
$('#change-bpl-appeal').on('click', () => {
|
||||
const customize = "appeal"
|
||||
const selected = parseInt($('#bpl-appeal option:selected').val())
|
||||
|
||||
emit('playerCustomize', { customize, refid, selected }).then(() => location.reload());
|
||||
});
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
//DATA//
|
||||
profile: DB.FindOne(refid, { collection: "profile" })
|
||||
profile3: DB.FindOne(refid, { collection: "profile3" })
|
||||
customizebpl: DB.FindOne(refid, { collection: "customize3", category: 1})
|
||||
|
||||
-
|
||||
const onOff = [ "Off", "On" ];
|
||||
@@ -150,6 +151,7 @@ else if profile3
|
||||
const name3 = profile3.dancerName;
|
||||
const weight3 = profile3.weight.toString().split('.');
|
||||
if(weight3.length < 2) weight3.push("0");
|
||||
const bplAppeal = customizebpl ? customizebpl.key : 0
|
||||
|
||||
div
|
||||
.card
|
||||
@@ -195,5 +197,23 @@ else if profile3
|
||||
p.control
|
||||
a.button.is-primary#change-display-calories3 Change
|
||||
|
||||
.field.is-horizontal.has-addons
|
||||
.field-label.is-normal
|
||||
label.label BPL Appeal Board
|
||||
.field-body
|
||||
p.control
|
||||
.select
|
||||
select#bpl-appeal
|
||||
option(value=0, selected=bplAppeal===0) None
|
||||
option(value=100001, selected=bplAppeal===100001) APINA VRAMeS
|
||||
option(value=100002, selected=bplAppeal===100002) GiGO
|
||||
option(value=100003, selected=bplAppeal===100003) GamePanic
|
||||
option(value=100004, selected=bplAppeal===100004) Silk Hat
|
||||
option(value=100005, selected=bplAppeal===100005) TAITO STATION Tradz
|
||||
option(value=100006, selected=bplAppeal===100006) ROUND1
|
||||
option(value=100007, selected=bplAppeal===100007) Leisureland
|
||||
p.control
|
||||
a.button.is-primary#change-bpl-appeal Change
|
||||
|
||||
|
||||
script(src="static/js/profile_settings.js")
|
||||
|
||||
Reference in New Issue
Block a user