Compare commits
2
Commits
kfc-6.0.3.6
...
kfc
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
94a54b9816 | ||
|
|
bb82ec9034 |
@@ -1,8 +1,8 @@
|
||||
# SOUND VOLTEX
|
||||
|
||||
**Plugin Version:** fork-6.0.3.6
|
||||
**Plugin Version:** fork-6.0.4
|
||||
|
||||
**Supported game versions:** EXCEED GEAR (2024082700)
|
||||
**Supported game versions:** EXCEED GEAR (2024110500)
|
||||
|
||||
**Unsupported game versions:** Every other game, as they're untested.
|
||||
|
||||
@@ -16,6 +16,44 @@
|
||||
|
||||
Changelog
|
||||
===========
|
||||
## fork-6.0.4
|
||||
|
||||
### New:
|
||||
- Added PREMIUM GENERATOR sets
|
||||
- この素晴らしい世界に祝福を!3 (Konosuba 3)
|
||||
- 宝鐘マリン (Houshou Marine)
|
||||
- Added HEXADIVER 11 (NEMSYS GAME EXPO)
|
||||
- Added BEMANI PRO LEAGUE S4 -Triple Tribe- event.
|
||||
- Toggle on Unlocking Events page -> Cross Events
|
||||
- Added ARENA Season 16
|
||||
- Rank match: MEGAMIX BATTLE
|
||||
- Added ARENA STATION set 16
|
||||
- Added songs to licensed songs list: Konosuba, Houshou Marine
|
||||
- Added a few date-related events (Onigo day, Gott day, etc.)
|
||||
- Updated MEGAMIX BATTLE songs list (89 new songs)
|
||||
- Updated Achievements list
|
||||
- Updated data.json (will add labels for Houshou Marine subbg at a later date)
|
||||
|
||||
|
||||
## 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:
|
||||
@@ -32,27 +70,6 @@ Changelog
|
||||
- Misc WebUI fixes.
|
||||
|
||||
|
||||
## fork-6.0.3.5
|
||||
|
||||
### New:
|
||||
|
||||
1. Main:
|
||||
- Reflec Beat song stamp event added (ARACHNE set)
|
||||
- Toggle on "Unlocking Events -> Stamp Events -> REFLEC BEAT Song Stamp Event (2024)"
|
||||
- Added the new maps to TAMANEKO Adventure (3 Touhou songs + 4 XCD charts)
|
||||
- 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.
|
||||
|
||||
+609
-870
File diff suppressed because it is too large
Load Diff
+15
-12
@@ -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 = []
|
||||
|
||||
@@ -424,7 +420,10 @@ export const common: EPR = async (info, data, send) => {
|
||||
})
|
||||
})
|
||||
|
||||
if(currentDate.substring(0,4) === '4/1/' || U.GetConfig('april_fools')) {
|
||||
if(currentDate.substring(0,4) === '2/5/') events.push("EVENTDATE_ONIGO")
|
||||
if(currentDate.substring(0,5) === '2/14/') events.push('VALENTINES_DAY_2024')
|
||||
if(currentDate.substring(0,5) === '2/15/') events.push('WHITE_DAY_2024')
|
||||
if(currentDate.substring(0,4) === '4/1/') {
|
||||
console.log('Using April Fools Event')
|
||||
events.push('APRIL_GRACE');
|
||||
events.push('EVENTDATE_APRILFOOL');
|
||||
@@ -438,7 +437,11 @@ export const common: EPR = async (info, data, send) => {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if(currentDate.substring(0,5) === '5/10/') events.push("EVENTDATE_GOTT")
|
||||
if(['10/24/', '10/25/', '10/26/', '10/27/', '10/28/', '10/29/', '10/30/', '10/31/'].includes(currentDate.substring(0,6))) events.push('HALLOWEEN_EVENT')
|
||||
if(['12/24/', '12/25/', '12/26/'].includes(currentDate.substring(0,6))) events.push('MERRY_CHRISTMAS_2023')
|
||||
|
||||
console.log("Sending common objects");
|
||||
send.object(
|
||||
{
|
||||
valgene: {
|
||||
|
||||
@@ -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())
|
||||
}
|
||||
})
|
||||
}
|
||||
})
|
||||
}
|
||||
@@ -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
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -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
@@ -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
|
||||
|
||||
@@ -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)) {
|
||||
|
||||
@@ -5495,6 +5495,13 @@
|
||||
"rtype": "aptitle",
|
||||
"rid": 10347,
|
||||
"troptype": 3
|
||||
},
|
||||
{
|
||||
"id": 786,
|
||||
"title": "HEXA DIVER Ep:開催!NEMSYS GAME EXPOを全曲獲得",
|
||||
"rtype": "aptitle",
|
||||
"rid": 10348,
|
||||
"troptype": 3
|
||||
}
|
||||
]
|
||||
}
|
||||
+726
-116
File diff suppressed because it is too large
Load Diff
@@ -302,6 +302,32 @@
|
||||
"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"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "bpls4tripletribe",
|
||||
"type": "cross_online",
|
||||
"enabled": true,
|
||||
"name": "BEMANI PRO LEAGUE -SEASON 4- Triple Tribe",
|
||||
"desc": "Crossover event between SOUND VOLTEX -Valkyrie model-, DanceDanceRevolution 20th anniversary model, and beatmania IIDX LIGHTNING MODEL cabinets where you would earn TD, TB and TS points which can be used to unlock songs through the participating games.<br>However, since it's difficult to replicate such crossover event in Asphyxia, you can just toggle the corresponding SOUND VOLTEX songs' option to automatically unlock them on your next login.",
|
||||
"info": [
|
||||
"Song 1: 'Come to Life",
|
||||
"Song 2: 'SOLAR ECLIPSE'",
|
||||
"Song 3: 'COSMIC V3LOCITY'"
|
||||
]
|
||||
}
|
||||
],
|
||||
"flags": [
|
||||
@@ -353,6 +379,12 @@
|
||||
"str": "WHITE_DAY_2024",
|
||||
"explain": "Enables Navigator White Day greeting."
|
||||
},
|
||||
{
|
||||
"id": "halloween",
|
||||
"key": "HALLOWEEN_EVENT",
|
||||
"str": "HALLOWEEN_EVENT",
|
||||
"explain": "Enables Navigator Halloween greeting."
|
||||
},
|
||||
{
|
||||
"id": "aprilrainbowline",
|
||||
"key": "APRIL_RAINBOW_LINE_ACTIVE",
|
||||
|
||||
@@ -123,7 +123,26 @@
|
||||
"subbg": [498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514]
|
||||
},
|
||||
"reward": [11, 161, 5, "crew", "NEAR & NOAH (EXCEED GEAR) Alternate Style"]
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": 13,
|
||||
"name": "Premium Generator (この素晴らしい世界に祝福を!3)",
|
||||
"jpn_exc": true,
|
||||
"items": {
|
||||
"crew": [162, 163],
|
||||
"stamp": [397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408],
|
||||
"subbg": [515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531]
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": 14,
|
||||
"name": "Premium Generator (宝鐘マリン)",
|
||||
"items": {
|
||||
"crew": [164],
|
||||
"stamp": [409, 410, 411, 412, 413, 414, 415, 416, 417, 418],
|
||||
"subbg": [532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552]
|
||||
}
|
||||
}
|
||||
],
|
||||
"valgene":[
|
||||
{
|
||||
|
||||
@@ -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.")
|
||||
|
||||
Reference in New Issue
Block a user