This commit is contained in:
vvo
2023-12-12 18:52:10 +08:00
parent 17cc47fa5a
commit 82ed8498c1
9 changed files with 505 additions and 59 deletions
+23 -36
View File
@@ -1,8 +1,8 @@
# SOUND VOLTEX
**Plugin Version:** fork-6.0.2.5
**Plugin Version:** fork-6.0.2.6
**Supported game versions:** EXCEED GEAR (2023110700)
**Supported game versions:** EXCEED GEAR (2023120500)
**Unsupported game versions:** Every other game, as they're untested.
@@ -16,6 +16,25 @@
Changelog
===========
## fork-6.0.2.6
### New:
1. Main:
- 2023120500 support.
- Enabled HEXA DIVER 10.
- Enabled HEXA REVOLUTION features.
- Added SKILL ANALYZER 8 courses.
2. WebUI:
- Added "Startup Flags" page - for toggling a few select game flags/events on the fly without restarting core, such as USE_CUDA_VIDEO_PRESENTER, etc.
- Updated game achievements list.
### Todo:
1. Figure out how to use image (png) files to appear in information/news popup.
2. More work on online matchmaking (globalMatch.) I can't seem to make clients establish a connection.
## fork-6.0.2.5
### New:
@@ -23,6 +42,7 @@ Changelog
1. Main:
- Added the new Kinoshita songs to LICENSED_SONGS list.
## fork-6.0.2.4
### New:
@@ -46,39 +66,6 @@ Changelog
- Updated bgm_convert.bat
### Fixes:
1. WebUI
- Fixed Japan-exclusive warning not displaying for some Premium Generator sets.
### Todo:
1. Figure out how to use image (png) files to appear in information/news popup.
2. More work on online matchmaking (globalMatch.) I can't seem to make clients establish a connection.
## fork-6.0.2.3
### New:
1. Main:
- Added ~~ARENA~~ MEGAMIX BATTLE ranked match season & ARENA STATION set 11.
- Added PREMIUM GENERATOR Fubuki set.
- Updated licensed songs list (Fubuki songs)
2. WebUI
- Updated ARENA Season statistics display in detail page. Displays rank, rank point meter, megamix rate (for ranked megamix,) ultimate rate (for ultimate players,) and arena power.
- Added achievements list page (work in progress)
- Added ability to set how many Valkyrie Generator tickets you have. These tickets are used to purchase valkyrie generator items.
- Added ability to change Skill Titles. Players can only switch to titles they own.
- (Update webui resources) Added code to extract wma audio from .s3p files. Largely based on [mon's s3p_extract](https://github.com/mon/s3p_extract) code.
3. Others:
- DEMOLOOP_INFORMATION implementation (attract mode announcements images)
- Updated bgm\_convert batch script to remove the need for s3p\_extract.
### Fixes:
1. Game
- Fixed gibberish on Asphyxia card entry information data.
2. WebUI
- Fixed details page error for players with no skill course data.
- Fixed sorting of Valgene/Pregene item images.
3. Misc:
- Updated BPL Triple Tribe event category from 'gift' to 'event_online.'
- Added missing matchmaker model file.
+328 -22
View File
@@ -1,4 +1,9 @@
export const EVENT6 = [
// 'APPEAL_CARD_GEN_PRICE\t100',
// 'APPEAL_CARD_GEN_NEW_PRICE\t200',
// 'APPEAL_CARD_UNLOCK\t0,20170914,0,20171014,0,20171116,0,20180201,0,20180607,0,20181206,0,20200326,0,20200611,4,10140732,6,10150431',
// 'EVENTDATE_GOTT',
// 'EVENTDATE_ONIGO',
'DEMOGAME_PLAY',
'MATCHING_MODE',
'MATCHING_MODE_FREE_IP',
@@ -12,36 +17,29 @@ export const EVENT6 = [
'TENKAICHI_MODE',
'QC_MODE',
'KAC_MODE',
// 'APPEAL_CARD_GEN_PRICE\t100',
// 'APPEAL_CARD_GEN_NEW_PRICE\t200',
// 'APPEAL_CARD_UNLOCK\t0,20170914,0,20171014,0,20171116,0,20180201,0,20180607,0,20181206,0,20200326,0,20200611,4,10140732,6,10150431',
'DISABLE_MONITOR_ID_CHECK',
'FAVORITE_APPEALCARD_MAX\t200',
'FAVORITE_MUSIC_MAX\t200',
//'EVENTDATE_APRILFOOL',
//'KONAMI_50TH_LOGO',
'OMEGA_ARS_ENABLE',
'DISABLE_MONITOR_ID_CHECK',
'SKILL_ANALYZER_ABLE',
'BLASTER_ABLE',
'STANDARD_UNLOCK_ENABLE',
'PLAYERJUDGEADJ_ENABLE',
'MIXID_INPUT_ENABLE',
'EVENTDATE_ONIGO',
'EVENTDATE_GOTT',
'DISP_PASELI_BANNER',
'CHARACTER_IGNORE_DISABLE\t122,123,131,139,140,143',
'OMEGA_ENABLE\t1,2,3,4,5,6,7,8,9',
'OMEGA_ARS_ENABLE',
'HEXA_ENABLE\t1,2,3,4,5,6,7,8,9,10',
'HEXA_OVERDRIVE_ENABLE\t8',
'SKILL_ANALYZER_ABLE',
'BLASTER_ABLE',
'PREMIUM_TIME_ENABLE',
'MEGAMIX_ENABLE',
'ARENA_ENABLE',
'SINGLE_BATTLE_ENABLE',
'GENERATOR_ABLE',
'CREW_SELECT_ABLE',
'PREMIUM_TIME_ENABLE',
'OMEGA_ENABLE\t1,2,3,4,5,6,7,8,9',
'HEXA_ENABLE\t1,2,3,4,5,6,7,8,9',
'MEGAMIX_ENABLE',
'VALGENE_ENABLE',
'ARENA_ENABLE',
'DISP_PASELI_BANNER',
'S_PUC_EFFECT_ENABLE',
'PLAYER_RADAR_ENABLE',
'SINGLE_BATTLE_ENABLE',
'DEMOLOOP_INFORMATION\tdemo_info/230710_bpls3_streaming.png',
'CHARACTER_IGNORE_DISABLE\t122,123,131,139,140,143'
'S_PUC_EFFECT_ENABLE'
];
export const INFORMATION6 = {
@@ -5707,7 +5705,7 @@ export const COURSES6 = [
{
id: 17,
name: 'SKILL ANALYZER 第7回',
isNew: 1,
isNew: 0,
hasGod: 1,
courses: [
{
@@ -6012,6 +6010,314 @@ export const COURSES6 = [
},
]
},
{
id: 18,
name: 'SKILL ANALYZER 第8回',
isNew: 1,
hasGod: 1,
courses: [
{
id: 1,
type: 0,
name: 'SKILL ANALYZER Level.01',
level: 1,
nameID: 1,
assist: 0,
tracks: [
{
no: 0,
mid: 1211,
mty: 0,
},
{
no: 1,
mid: 781,
mty: 1,
},
{
no: 2,
mid: 922,
mty: 0,
},
],
},
{
id: 2,
type: 0,
name: 'SKILL ANALYZER Level.02',
level: 2,
nameID: 2,
assist: 0,
tracks: [
{
no: 0,
mid: 191,
mty: 1,
},
{
no: 1,
mid: 520,
mty: 1,
},
{
no: 2,
mid: 1740,
mty: 1,
},
],
},
{
id: 3,
type: 0,
name: 'SKILL ANALYZER Level.03',
level: 3,
nameID: 3,
assist: 0,
tracks: [
{
no: 0,
mid: 397,
mty: 1,
},
{
no: 1,
mid: 1233,
mty: 1,
},
{
no: 2,
mid: 1387,
mty: 1,
},
],
},
{
id: 4,
type: 0,
name: 'SKILL ANALYZER Level.04',
level: 4,
nameID: 4,
assist: 0,
tracks: [
{
no: 0,
mid: 724,
mty: 1,
},
{
no: 1,
mid: 829,
mty: 1,
},
{
no: 2,
mid: 752,
mty: 1,
},
],
},
{
id: 5,
type: 0,
name: 'SKILL ANALYZER Level.05',
level: 5,
nameID: 5,
assist: 0,
tracks: [
{
no: 0,
mid: 1618,
mty: 1,
},
{
no: 1,
mid: 740,
mty: 1,
},
{
no: 2,
mid: 1795,
mty: 1,
},
],
},
{
id: 6,
type: 0,
name: 'SKILL ANALYZER Level.06',
level: 6,
nameID: 6,
assist: 0,
tracks: [
{
no: 0,
mid: 1123,
mty: 2,
},
{
no: 1,
mid: 1876,
mty: 2,
},
{
no: 2,
mid: 968,
mty: 2,
},
],
},
{
id: 7,
type: 0,
name: 'SKILL ANALYZER Level.07',
level: 7,
nameID: 7,
assist: 0,
tracks: [
{
no: 0,
mid: 1094,
mty: 2,
},
{
no: 1,
mid: 1167,
mty: 2,
},
{
no: 2,
mid: 521,
mty: 2,
},
],
},
{
id: 8,
type: 0,
name: 'SKILL ANALYZER Level.08',
level: 8,
nameID: 8,
assist: 0,
tracks: [
{
no: 0,
mid: 955,
mty: 4,
},
{
no: 1,
mid: 855,
mty: 2,
},
{
no: 2,
mid: 1682,
mty: 2,
},
],
},
{
id: 9,
type: 0,
name: 'SKILL ANALYZER Level.09',
level: 9,
nameID: 9,
assist: 0,
tracks: [
{
no: 0,
mid: 1677,
mty: 4,
},
{
no: 1,
mid: 1437,
mty: 2,
},
{
no: 2,
mid: 2036,
mty: 4,
},
],
},
{
id: 10,
type: 0,
name: 'SKILL ANALYZER Level.10',
level: 10,
nameID: 10,
assist: 0,
tracks: [
{
no: 0,
mid: 1803,
mty: 4,
},
{
no: 1,
mid: 873,
mty: 2,
},
{
no: 2,
mid: 362,
mty: 2,
},
],
},
{
id: 11,
type: 1,
name: 'SKILL ANALYZER Level.11',
level: 11,
nameID: 11,
assist: 0,
tracks: [
{
no: 0,
mid: 1930,
mty: 4,
},
{
no: 1,
mid: 1843,
mty: 4,
},
{
no: 2,
mid: 1276,
mty: 4,
},
],
},
{
id: 12,
type: 1,
name: 'SKILL ANALYZER Level.∞',
level: 12,
nameID: 12,
assist: 0,
tracks: [
{
no: 0,
mid: 258,
mty: 3,
},
{
no: 1,
mid: 1582,
mty: 4,
},
{
no: 2,
mid: 2085,
mty: 4,
},
],
},
]
}
];
export const SDVX_AUTOMATION_SONGS = [
+7
View File
@@ -54,6 +54,13 @@ export const common: EPR = async (info, data, send) => {
console.log('Game: Exceed Gear')
//events = EVENT6;
EVENT6.forEach(val => events.push(val));
if(IO.Exists('webui/asset/config/flags.json')) {
let bufFlagConfig = await IO.ReadFile('webui/asset/config/flags.json')
let flagConfig = JSON.parse(bufFlagConfig.toString())
for(const flagIter in flagConfig) {
if(flagConfig[flagIter]['toggle']) events.push(flagConfig[flagIter]['str'])
}
}
courses = COURSES6;
EXTENDS6.forEach(val => extend.push(Object.assign({}, val)));
break;
+6
View File
@@ -782,3 +782,9 @@ export const manageEvents = async (data: {
}) => {
IO.WriteFile('webui/asset/config/events.json', JSON.stringify(data.eventConfig, null, 4));
}
export const manageStartupFlags = async (data: {
flagConfig: {}
}) => {
IO.WriteFile('webui/asset/config/flags.json', JSON.stringify(data.flagConfig, null, 4));
}
+3 -1
View File
@@ -7,7 +7,8 @@ import {
deleteMix,
copyResourcesFromGame,
preGeneRoll,
manageEvents
manageEvents,
manageStartupFlags
} from './handlers/webui';
import {
load,
@@ -47,6 +48,7 @@ export function register() {
R.WebUIEvent('copyResourcesFromGame', copyResourcesFromGame);
R.WebUIEvent('preGeneRoll', preGeneRoll);
R.WebUIEvent('manageEvents', manageEvents);
R.WebUIEvent('manageStartupFlags', manageStartupFlags);
R.WebUIEvent('updateProfile', updateProfile);
R.WebUIEvent('updateMix', updateMix);
R.WebUIEvent('importMix', importMix);
+84
View File
@@ -0,0 +1,84 @@
function generateEventToggles(eventInfo, eventConfig) {
let cardContent = $('<div class="card-content">')
cardContent.append('<div class="field is-horizontal"').append(
$("<h5>" + eventInfo['key'] + "</h5>")
).append(
$("<p style='font-size: 15px;'>" + eventInfo['explain'] + "</p>")
)
cardContent.append(
$('<div class="field is-horizontal">').append(
$('<div class="field-label is-normal"><label class="label" for="' + eventInfo['id'] + '">Enable</label></div>')
).append(
$('<div class="field-body"><div class="field"><div class="control"><label class="switch is-rounded"><input type="checkbox" ' + (eventConfig['toggle'] ? 'checked' : '') + ' name="' + eventInfo['id'] + '"><span class="check"></span></label></div><p class="help"></p></div></div>')
)
)
return cardContent
}
async function generateNewFlagsConfigFile(eventData) {
let flagConfig = {}
for(const flagIter in eventData['flags']) {
flagConfig[eventData['flags'][flagIter]['id']] = {
'toggle': true,
'str': eventData['flags'][flagIter]['str']
}
}
return flagConfig
}
async function readFlagsConfigFile(eventData) {
try {
return await $.getJSON("static/asset/config/flags.json", function(data) {
return data
})
} catch {
return await generateNewFlagsConfigFile(eventData)
}
}
async function readEventsJsonFile() {
return await $.getJSON("static/asset/json/events.json", function(data) {
return data
})
}
$(document).ready(async function() {
let eventData = await readEventsJsonFile()
let flagConfig = await readFlagsConfigFile(eventData)
for(const flagIter in eventData['flags']) {
if(flagConfig[eventData['flags'][flagIter]['id']] === undefined) flagConfig[eventData['flags'][flagIter]['id']] = {
'toggle': true
}
$('.card').append(
generateEventToggles(eventData['flags'][flagIter], flagConfig[eventData['flags'][flagIter]['id']])
)
}
console.log(flagConfig)
$('#flags-submit').on('click', async function() {
$.each($('span.check'), function(index, value) {
for(const flagIter in eventData['flags']) {
let toggle = true
if($(value).css('background-color').includes("54, 54, 54")) {
toggle = false
}
if(eventData['flags'][flagIter]['id'] === $(value).parent().children('input').attr('name')) {
flagConfig[eventData['flags'][flagIter]['id']] = {
'toggle': toggle,
'str': eventData['flags'][flagIter]['str']
}
}
}
})
await emit("manageStartupFlags", {flagConfig: flagConfig}).then(
function(response) {
alert('Saved.')
},
function(error) {
console.log(error)
}
)
})
})
@@ -5292,6 +5292,13 @@
"rtype": "aptitle",
"rid": 10326,
"troptype": 2
},
{
"id": 757,
"title": "HEXA DIVER 10 ―CODE:DimiourGEAR―を全曲獲得。",
"rtype": "aptitle",
"rid": 10327,
"troptype": 3
}
]
}
@@ -211,5 +211,37 @@
"desc": "Online crossover event with CHASE CHASE JOKERS. Obtaining 6 stamps on the event site would unlock a song originally from CCJ.",
"info": "Toggle this option on to unlock チェイスチェイスジョーカーズのうた on your next login."
}
],
"flags": [
{
"id": "cuda",
"key": "USE_CUDA_VIDEO_PRESENTER",
"str": "USE_CUDA_VIDEO_PRESENTER",
"explain": ""
},
{
"id": "hiscoredatalimit",
"key": "HISCORE_DATA_LIMIT",
"str": "HISCORE_DATA_LIMIT",
"explain": ""
},
{
"id": "submonvsync",
"key": "SUBMONITOR_VSYNC_ENABLE",
"str": "SUBMONITOR_VSYNC_ENABLE",
"explain": "Enables vertical sync for secondary display."
},
{
"id": "demoloopinfo",
"key": "DEMOLOOP_INFORMATION",
"str": "DEMOLOOP_INFORMATION\tdemo_info/230710_bpls3_streaming.png",
"explain": "Enables display of available information in attract mode."
},
{
"id": "konami50",
"key": "KONAMI_50TH_LOGO",
"str": "KONAMI_50TH_LOGO",
"explain": "Enables the 50th anniversary KONAMI logo."
}
]
}
+15
View File
@@ -0,0 +1,15 @@
-
link(rel="stylesheet" href="static/asset/css/datatables.css")
div
.card
.card-header
p.card-header-title
span.icon
i.mdi.mdi-star
| Startup Flags
div.field.is-grouped
div.control.is-expanded
div.control
button.button.is-link(id="flags-submit") Apply
script(src="static/asset/js/flags.js")