This commit is contained in:
vvo
2024-10-27 15:34:29 +08:00
parent 20ba236f5b
commit bb82ec9034
12 changed files with 460 additions and 333 deletions
+21 -12
View File
@@ -1,8 +1,8 @@
# SOUND VOLTEX
**Plugin Version:** fork-6.0.3.6
**Plugin Version:** fork-6.0.3.7
**Supported game versions:** EXCEED GEAR (2024082700)
**Supported game versions:** EXCEED GEAR (2024091000)
**Unsupported game versions:** Every other game, as they're untested.
@@ -16,6 +16,25 @@
Changelog
===========
## fork-6.0.3.7
### New:
1. Main:
- MYSTICAL Re:UNION added to events list. Toggle the individual songs to unlock them to your account.
2. Misc:
- **Important**: EG Skill Analyzer course IDs have been updated. The plugin's new migrate.ts should update your course data to reflect these new IDs but if there are issues with your course data, please let me know.
- KAC 2023 Skill Analyzer courses now displayed as it did officially (uses KAC jacket)
- BPL Pro Player badge: display this instead of the BPL Supporter badge. Check the "BPL Pro Player" option in the customization page.
- Force locked the song "無意識レクイエム (cosmobsp rmx)" to allow for the secret unlock method to work. Still overridden by the unlock songs option.
- Updated VALKYRIE GENERATOR 7 item data: removed ID 33 from appeal stamp list.
- Updated placeholder names in data.json.
3. Issues:
- Game crashes on continue screen when a Stamp Select event is enabled. Unsure if this is a plugin issue, or just an isolated gamedata issue.
## fork-6.0.3.6
### New:
@@ -43,16 +62,6 @@ Changelog
- Added VALKYRIE GENERATOR (Touhou Project)
## fork-6.0.3.4a
### New:
1. Misc:
- Updated webui data.json asset file (renamed some placeholder labels)
- Removed most of webui image and audio assets to minimize size.
- Run asset update to pull webui assets from game files.
### Todo:
1. Figure out how to use image (png) files to appear in information/news popup.
+191 -187
View File
File diff suppressed because it is too large Load Diff
+7 -10
View File
@@ -103,12 +103,11 @@ export const common: EPR = async (info, data, send) => {
// if song is released during exceed gear
if(songData.info.version['#text'] === '6') {
// Licensed songs released in Exceed Gear needs limited=3 to appear
if(LICENSED_SONGS6.includes(i.toString())) {
limitedNo += 1;
}
else if(VALKYRIE_SONGS.includes(i.toString()) && info.model.split(":")[2].match(/^(G|H)$/g) == null){
limitedNo -= 1;
}
if(LICENSED_SONGS6.includes(i.toString())) limitedNo += 1;
else if(VALKYRIE_SONGS.includes(i.toString()) && info.model.split(":")[2].match(/^(G|H)$/g) == null) limitedNo -= 1;
if(i === 2034) limitedNo = 2;
for(let j = 0; j < 5; j++) {
songs.push({
music_id: K.ITEM('s32', i),
@@ -231,7 +230,7 @@ export const common: EPR = async (info, data, send) => {
'id': stmpEvntInfo['info']['id'],
'params': [
9,
(stmpEvntInfo['info']['textstampval'] !== undefined) ? stmpEvntInfo['info']['textstampval'] : 0,
((stmpEvntInfo['info']['textstampval'] !== undefined) ? stmpEvntInfo['info']['textstampval'] : 0),
0,
0,
0,
@@ -383,11 +382,8 @@ export const common: EPR = async (info, data, send) => {
],
});
}
}
console.log("Sending common objects");
let arena_szn = U.GetConfig('arena_szn')
let arena_catalog_items = []
@@ -439,6 +435,7 @@ export const common: EPR = async (info, data, send) => {
}
}
console.log("Sending common objects");
send.object(
{
valgene: {
+21
View File
@@ -0,0 +1,21 @@
import { COURSES6 } from "../data/exg"
export async function dataUpdate() {
await updateSkillCourseIds()
}
async function updateSkillCourseIds() {
let skillData
let course = await DB.Find(null, {collection: 'course'})
course.forEach(async c => {
skillData = COURSES6.find(sd => sd.id === c['sid'])
if(skillData['courses'].findIndex(cd => cd.id === c['cid']) === -1) {
console.log("(" + c['__refid'] + ") updating cid " + c['cid'] + " -> " + parseInt(c['sid'].toString() + c['cid'].toString()))
await DB.Upsert(c['__refid'], {collection: 'course', sid: c['sid'], cid: c['cid']}, {
$set: {
cid: parseInt(c['sid'].toString() + c['cid'].toString())
}
})
}
})
}
+8 -2
View File
@@ -520,12 +520,16 @@ export const save: EPR = async (info, data, send) => {
const sid = course.number('ssnid');
const cid = course.number('crsid');
const stype = course.number('st');
const kacid = course.str('kac_id');
if (!(_.isNil(sid) || _.isNil(cid))){
await DB.Upsert<CourseRecord>(
refid,
{ collection: 'course', sid, cid, stype, version },
{
$set: {
kacId: kacid
},
$max: {
score: course.number('sc', 0),
exscore: course.number('ex', 0),
@@ -635,7 +639,7 @@ export const load: EPR = async (info, data, send) => {
console.log("DataID: " + refid);
if (version == 0) return send.deny();
const profile = await DB.FindOne<Profile>(refid, {
let profile = await DB.FindOne<Profile>(refid, {
collection: 'profile',
});
@@ -751,8 +755,9 @@ export const load: EPR = async (info, data, send) => {
const stampRC = profile.stampRC ? profile.stampRC : 0;
const stampRD = profile.stampRD ? profile.stampRD : 0;
const sysBG = profile.sysBG ? profile.sysBG : 0;
const bplSupport = profile.bplSupport ? profile.bplSupport : 0;
const creatorItem = profile.creatorItem ? profile.creatorItem : 0;
const bplPro = (profile.bplSupport > 10) ? true : false
profile.bplSupport = profile.bplSupport ? profile.bplSupport % 10 : 0;
const customize = [];
customize.push(bgm, subbg, nemsys, stampA, stampB, stampC, stampD, stampRA, stampRB, stampRC, stampRD, sysBG);
@@ -796,6 +801,7 @@ export const load: EPR = async (info, data, send) => {
arena,
valgeneTicket,
creatorItem,
bplPro,
...profile,
});
};
+2 -1
View File
@@ -17,6 +17,7 @@ export const updateProfile = async (data: {
appeal?: string;
akaname?: string;
bplSupport?: string;
bplPro?: boolean;
nemsys?: string;
bgm?: string;
subbg?: string;
@@ -61,7 +62,7 @@ export const updateProfile = async (data: {
}
if (data.bplSupport && data.bplSupport.length > 0) {
const validBplSupport = parseInt(data.bplSupport);
const validBplSupport = data.bplPro ? parseInt(data.bplSupport) + 10 : parseInt(data.bplSupport);
if (!_.isNaN(validBplSupport)) update.bplSupport = validBplSupport;
}
+4 -3
View File
@@ -25,9 +25,8 @@ import {
saveValgene,
saveE
} from './handlers/profiles';
import {
ARENA
} from './data/exg';
import { ARENA } from './data/exg';
import { dataUpdate } from './handlers/migrate'
export function register() {
@@ -124,4 +123,6 @@ export function register() {
}));
R.Unhandled(undefined)
dataUpdate()
}
+5 -1
View File
@@ -33,9 +33,13 @@ game
skill_name_id(__type="s16") #{skill.name}
skill_type(__type="s16") #{skill.type !== undefined ? skill.type : 0}
if bplSupport
if bplSupport > 0 && !bplPro
support_team_id(__type="s32") #{bplSupport}
additional_info
if bplPro && bplSupport > 0
pro_team_id(val=`${bplSupport}`)
ea_shop
packet_booster(__type="s32") 1
if version < 5
+4 -1
View File
@@ -218,7 +218,10 @@ $(document).ready(function() {
text: json["supportTeams"][i].name,
}));
}
$('[name="bplSupport"]').val(profile_data["bplSupport"] ? profile_data["bplSupport"] : 0);
let bplSupport = profile_data["bplSupport"] ? profile_data["bplSupport"] % 10 : 0
$('[name="bplSupport"]').val(bplSupport);
if(profile_data["bplSupport"] >= 10) $('[name="bplPro"]').attr('checked', true);
for (var i in json["sysbg"]) {
if(unlock_all || (items_sysbg.find(x => x.id === json["sysbg"][i].id) || json["sysbg"][i].id === 0)) {
+172 -116
View File
@@ -3439,83 +3439,83 @@
},
{
"value": 109,
"name": "undefined 1"
"name": "ミオン&レイシス 001 1"
},
{
"value": 110,
"name": "undefined 2"
"name": "ミオン&レイシス 001 2"
},
{
"value": 111,
"name": "undefined 3"
"name": "ミオン&レイシス 001 3"
},
{
"value": 112,
"name": "undefined 4"
"name": "ミオン&レイシス 001 4"
},
{
"value": 113,
"name": "undefined 1"
"name": "グレイス 002 1"
},
{
"value": 114,
"name": "undefined 2"
"name": "グレイス 002 2"
},
{
"value": 115,
"name": "undefined 3"
"name": "グレイス 002 3"
},
{
"value": 116,
"name": "undefined 4"
"name": "グレイス 002 4"
},
{
"value": 117,
"name": "undefined 1"
"name": "10周年記念 001 1"
},
{
"value": 118,
"name": "undefined 2"
"name": "10周年記念 001 2"
},
{
"value": 119,
"name": "undefined 3"
"name": "10周年記念 001 3"
},
{
"value": 120,
"name": "undefined 4"
"name": "10周年記念 001 4"
},
{
"value": 121,
"name": "undefined 1"
"name": "10周年記念 002 1"
},
{
"value": 122,
"name": "undefined 2"
"name": "10周年記念 002 2"
},
{
"value": 123,
"name": "undefined 3"
"name": "10周年記念 002 3"
},
{
"value": 124,
"name": "undefined 4"
"name": "10周年記念 002 4"
},
{
"value": 125,
"name": "undefined 1"
"name": "BOOTH 001 1"
},
{
"value": 126,
"name": "undefined 2"
"name": "BOOTH 001 2"
},
{
"value": 127,
"name": "undefined 3"
"name": "BOOTH 001 3"
},
{
"value": 128,
"name": "undefined 4"
"name": "BOOTH 001 4"
},
{
"value": 129,
@@ -3535,67 +3535,67 @@
},
{
"value": 133,
"name": "undefined 1"
"name": "ここなつ(ステージ衣装ver) 1"
},
{
"value": 134,
"name": "undefined 2"
"name": "ここなつ(ステージ衣装ver) 2"
},
{
"value": 135,
"name": "undefined 3"
"name": "ここなつ(ステージ衣装ver) 3"
},
{
"value": 136,
"name": "undefined 4"
"name": "ここなつ(ステージ衣装ver) 4"
},
{
"value": 137,
"name": "undefined 1"
"name": "ここなつ(制服ver) 1"
},
{
"value": 138,
"name": "undefined 2"
"name": "ここなつ(制服ver) 2"
},
{
"value": 139,
"name": "undefined 3"
"name": "ここなつ(制服ver) 3"
},
{
"value": 140,
"name": "undefined 4"
"name": "ここなつ(制服ver) 4"
},
{
"value": 141,
"name": "undefined 1"
"name": "ここなつ(和服ver) 1"
},
{
"value": 142,
"name": "undefined 2"
"name": "ここなつ(和服ver) 2"
},
{
"value": 143,
"name": "undefined 3"
"name": "ここなつ(和服ver) 3"
},
{
"value": 144,
"name": "undefined 4"
"name": "ここなつ(和服ver) 4"
},
{
"value": 145,
"name": "undefined 1"
"name": "ここなつ2.0(ホシニネガイヲ) 1"
},
{
"value": 146,
"name": "undefined 2"
"name": "ここなつ2.0(ホシニネガイヲ) 2"
},
{
"value": 147,
"name": "undefined 3"
"name": "ここなつ2.0(ホシニネガイヲ) 3"
},
{
"value": 148,
"name": "undefined 4"
"name": "ここなつ2.0(ホシニネガイヲ) 4"
},
{
"value": 149,
@@ -7135,323 +7135,323 @@
},
{
"value": 1033,
"name": "undefined 1"
"name": "おしゃべり夏陽 01 1"
},
{
"value": 1034,
"name": "undefined 2"
"name": "おしゃべり夏陽 01 2"
},
{
"value": 1035,
"name": "undefined 3"
"name": "おしゃべり夏陽 01 3"
},
{
"value": 1036,
"name": "undefined 4"
"name": "おしゃべり夏陽 01 4"
},
{
"value": 1037,
"name": "undefined 1"
"name": "おしゃべり夏陽 02 1"
},
{
"value": 1038,
"name": "undefined 2"
"name": "おしゃべり夏陽 02 2"
},
{
"value": 1039,
"name": "undefined 3"
"name": "おしゃべり夏陽 02 3"
},
{
"value": 1040,
"name": "undefined 4"
"name": "おしゃべり夏陽 02 4"
},
{
"value": 1041,
"name": "undefined 1"
"name": "おしゃべり夏陽 03 1"
},
{
"value": 1042,
"name": "undefined 2"
"name": "おしゃべり夏陽 03 2"
},
{
"value": 1043,
"name": "undefined 3"
"name": "おしゃべり夏陽 03 3"
},
{
"value": 1044,
"name": "undefined 4"
"name": "おしゃべり夏陽 03 4"
},
{
"value": 1045,
"name": "undefined 1"
"name": "おしゃべり夏陽 04 1"
},
{
"value": 1046,
"name": "undefined 2"
"name": "おしゃべり夏陽 04 2"
},
{
"value": 1047,
"name": "undefined 3"
"name": "おしゃべり夏陽 04 3"
},
{
"value": 1048,
"name": "undefined 4"
"name": "おしゃべり夏陽 04 4"
},
{
"value": 1049,
"name": "undefined 1"
"name": "おしゃべり夏陽 05 1"
},
{
"value": 1050,
"name": "undefined 2"
"name": "おしゃべり夏陽 05 2"
},
{
"value": 1051,
"name": "undefined 3"
"name": "おしゃべり夏陽 05 3"
},
{
"value": 1052,
"name": "undefined 4"
"name": "おしゃべり夏陽 05 4"
},
{
"value": 1053,
"name": "undefined 1"
"name": "おしゃべり夏陽 06 1"
},
{
"value": 1054,
"name": "undefined 2"
"name": "おしゃべり夏陽 06 2"
},
{
"value": 1055,
"name": "undefined 3"
"name": "おしゃべり夏陽 06 3"
},
{
"value": 1056,
"name": "undefined 4"
"name": "おしゃべり夏陽 06 4"
},
{
"value": 1057,
"name": "undefined 1"
"name": "おしゃべり夏陽 07 1"
},
{
"value": 1058,
"name": "undefined 2"
"name": "おしゃべり夏陽 07 2"
},
{
"value": 1059,
"name": "undefined 3"
"name": "おしゃべり夏陽 07 3"
},
{
"value": 1060,
"name": "undefined 4"
"name": "おしゃべり夏陽 07 4"
},
{
"value": 1061,
"name": "undefined 1"
"name": "おしゃべり夏陽 08 1"
},
{
"value": 1062,
"name": "undefined 2"
"name": "おしゃべり夏陽 08 2"
},
{
"value": 1063,
"name": "undefined 3"
"name": "おしゃべり夏陽 08 3"
},
{
"value": 1064,
"name": "undefined 4"
"name": "おしゃべり夏陽 08 4"
},
{
"value": 1065,
"name": "undefined 1"
"name": "おしゃべり夏陽 09 1"
},
{
"value": 1066,
"name": "undefined 2"
"name": "おしゃべり夏陽 09 2"
},
{
"value": 1067,
"name": "undefined 3"
"name": "おしゃべり夏陽 09 3"
},
{
"value": 1068,
"name": "undefined 4"
"name": "おしゃべり夏陽 09 4"
},
{
"value": 1069,
"name": "undefined 1"
"name": "おしゃべり夏陽 10 1"
},
{
"value": 1070,
"name": "undefined 2"
"name": "おしゃべり夏陽 10 2"
},
{
"value": 1071,
"name": "undefined 3"
"name": "おしゃべり夏陽 10 3"
},
{
"value": 1072,
"name": "undefined 4"
"name": "おしゃべり夏陽 10 4"
},
{
"value": 1073,
"name": "undefined 1"
"name": "おしゃべり心菜 01 1"
},
{
"value": 1074,
"name": "undefined 2"
"name": "おしゃべり心菜 01 2"
},
{
"value": 1075,
"name": "undefined 3"
"name": "おしゃべり心菜 01 3"
},
{
"value": 1076,
"name": "undefined 4"
"name": "おしゃべり心菜 01 4"
},
{
"value": 1077,
"name": "undefined 1"
"name": "おしゃべり心菜 02 1"
},
{
"value": 1078,
"name": "undefined 2"
"name": "おしゃべり心菜 02 2"
},
{
"value": 1079,
"name": "undefined 3"
"name": "おしゃべり心菜 02 3"
},
{
"value": 1080,
"name": "undefined 4"
"name": "おしゃべり心菜 02 4"
},
{
"value": 1081,
"name": "undefined 1"
"name": "おしゃべり心菜 03 1"
},
{
"value": 1082,
"name": "undefined 2"
"name": "おしゃべり心菜 03 2"
},
{
"value": 1083,
"name": "undefined 3"
"name": "おしゃべり心菜 03 3"
},
{
"value": 1084,
"name": "undefined 4"
"name": "おしゃべり心菜 03 4"
},
{
"value": 1085,
"name": "undefined 1"
"name": "おしゃべり心菜 04 1"
},
{
"value": 1086,
"name": "undefined 2"
"name": "おしゃべり心菜 04 2"
},
{
"value": 1087,
"name": "undefined 3"
"name": "おしゃべり心菜 04 3"
},
{
"value": 1088,
"name": "undefined 4"
"name": "おしゃべり心菜 04 4"
},
{
"value": 1089,
"name": "undefined 1"
"name": "おしゃべり心菜 05 1"
},
{
"value": 1090,
"name": "undefined 2"
"name": "おしゃべり心菜 05 2"
},
{
"value": 1091,
"name": "undefined 3"
"name": "おしゃべり心菜 05 3"
},
{
"value": 1092,
"name": "undefined 4"
"name": "おしゃべり心菜 05 4"
},
{
"value": 1093,
"name": "undefined 1"
"name": "おしゃべり心菜 06 1"
},
{
"value": 1094,
"name": "undefined 2"
"name": "おしゃべり心菜 06 2"
},
{
"value": 1095,
"name": "undefined 3"
"name": "おしゃべり心菜 06 3"
},
{
"value": 1096,
"name": "undefined 4"
"name": "おしゃべり心菜 06 4"
},
{
"value": 1097,
"name": "undefined 1"
"name": "おしゃべり心菜 07 1"
},
{
"value": 1098,
"name": "undefined 2"
"name": "おしゃべり心菜 07 2"
},
{
"value": 1099,
"name": "undefined 3"
"name": "おしゃべり心菜 07 3"
},
{
"value": 1100,
"name": "undefined 4"
"name": "おしゃべり心菜 07 4"
},
{
"value": 1101,
"name": "undefined 1"
"name": "おしゃべり心菜 08 1"
},
{
"value": 1102,
"name": "undefined 2"
"name": "おしゃべり心菜 08 2"
},
{
"value": 1103,
"name": "undefined 3"
"name": "おしゃべり心菜 08 3"
},
{
"value": 1104,
"name": "undefined 4"
"name": "おしゃべり心菜 08 4"
},
{
"value": 1105,
"name": "undefined 1"
"name": "おしゃべり心菜 09 1"
},
{
"value": 1106,
"name": "undefined 2"
"name": "おしゃべり心菜 09 2"
},
{
"value": 1107,
"name": "undefined 3"
"name": "おしゃべり心菜 09 3"
},
{
"value": 1108,
"name": "undefined 4"
"name": "おしゃべり心菜 09 4"
},
{
"value": 1109,
"name": "undefined 1"
"name": "おしゃべり心菜 10 1"
},
{
"value": 1110,
"name": "undefined 2"
"name": "おしゃべり心菜 10 2"
},
{
"value": 1111,
"name": "undefined 3"
"name": "おしゃべり心菜 10 3"
},
{
"value": 1112,
"name": "undefined 4"
"name": "おしゃべり心菜 10 4"
},
{
"value": 1113,
@@ -12263,6 +12263,62 @@
"value": "40216",
"name": "第13回アルティメットマッチ"
},
{
"value": "40217",
"name": "第15回アルティメットマッチ 1位"
},
{
"value": "40218",
"name": "第15回アルティメットマッチ 2位"
},
{
"value": "40219",
"name": "第15回アルティメットマッチ 3位"
},
{
"value": "40220",
"name": "第15回アルティメットマッチ TOP10"
},
{
"value": "40221",
"name": "第15回アルティメットマッチ TOP20"
},
{
"value": "40222",
"name": "第15回アルティメットマッチ TOP30"
},
{
"value": "40223",
"name": "第15回アルティメットマッチ TOP40"
},
{
"value": "40224",
"name": "第15回アルティメットマッチ TOP50"
},
{
"value": "40225",
"name": "第15回アルティメットマッチ TOP60"
},
{
"value": "40226",
"name": "第15回アルティメットマッチ TOP70"
},
{
"value": "40227",
"name": "第15回アルティメットマッチ TOP80"
},
{
"value": "40228",
"name": "第15回アルティメットマッチ TOP90"
},
{
"value": "40229",
"name": "第15回アルティメットマッチ TOP100"
},
{
"value": "40230",
"name": "第15回アルティメットマッチ"
},
{
"value": "50000",
"name": "Custom"
+14
View File
@@ -302,6 +302,20 @@
"name": "REFLEC BEAT Song Stamp Event (2024)",
"desc": "Stamp event to unlock 5 more songs originally from the REFLEC BEAT game series.",
"info": "Toggle this on to enable this stamp event."
},
{
"id": "mystreun",
"type": "cross_online",
"enabled": true,
"name": "MYSTICAL Re:UNION",
"desc": "Crossover event for SDVX and DDR. Toggle on to unlock song/s.",
"info": [
"Song 1: Blφφdy Cφncertφ",
"Song 2: OROCHI STRIKE",
"Song 3: Lichtsäule",
"Song 4: REINCARNATION",
"Song 5: Re:RHYZE"
]
}
],
"flags": [
+11
View File
@@ -84,6 +84,17 @@ div
.control.is-expanded
.select.is-fullwidth
select(name="bplSupport" id="bplsupport_select")
.field
label.label BPL Pro Player
span.icon.has-tooltip-right(data-tooltip="Enabling this will show the BPL Pro Player label instead of the Supporter label.")
i.mdi.mdi-help-circle
.control.is-expanded
.field-body
.field
.control
label.switch.is-rounded
input(name="bplPro" type="checkbox")
span.check
.field
label.label Valgene Tickets
span.icon.has-tooltip-right(data-tooltip="Number of tickets you can use to buy Valkyrie Generator Items, instead of PASELI or credits.")