diff --git a/sdvx@asphyxia/data/exg.ts b/sdvx@asphyxia/data/exg.ts index 15ea4f3..0fcc77e 100644 --- a/sdvx@asphyxia/data/exg.ts +++ b/sdvx@asphyxia/data/exg.ts @@ -47,6 +47,7 @@ export const INFORMATION6 = { '2022081600': ['[img:ver06/info_psd.ifs:hexa_diver_220714]', '[img:ver06/info_psd.ifs:hexa_diver_220818]'], '2022083000': ['[img:ver06/info_psd.ifs:hexa_diver_220714]', '[img:ver06/info_psd.ifs:hexa_diver_220818]', '[img:ver06/info_psd.ifs:paseli_present_220901]'], '2022101800': ['[img:ver06/info_psd.ifs:hexa_diver_220714]', '[img:ver06/info_psd.ifs:hexa_diver_220818]', '[img:ver06/info_psd.ifs:paseli_present_220901]'], + '2022122001': ['[img:info/konosuba_221006.png]', '[img:info/bemaniautumn_221101.png]', '[img:info/paseli_festival_221220.png]', '[img:info/pregene_kureha_221222.png]', '[img:info/voltefactory_221201.png]'] } export const MISSINGSONGS6 = [ @@ -60,36 +61,119 @@ export const MISSINGSONGS6 = [ '1903', '1904', '1911', '1916', '1917' ] -export const XRECORDSONGS = [ - // 1st edition - '1736', // discordia_penorerihumer - '1737', // chewingood_toriena - '1738', // verflucht_tirfing - // 2nd edition - '1848', // fegrix - '1847', // 2 beasts unchained - '1849', // piano kyousoukyoku -] +export const EVENT_SONGS6 = { + // X-Record songs + 'xrecord_1': [ + // 1st edition + '1736', // discordia_penorerihumer + '1737', // chewingood_toriena + '1738', // verflucht_tirfing + ], + 'xrecord_2': [ + // 2nd edition + '1848', // fegrix + '1847', // 2 beasts unchained + '1849', // piano kyousoukyoku + ], + // Konaste songs + 'konasute_1': [ + '1762' + ], + 'konasute_2': [ + '1763' + ], + 'konasute_3': [ + '1764' + ], + 'konasute_4': [ + '1765' + ], + 'konasute_5': [ + '1811' + ], + // BPL2021 songs + 'bpl2021': [ + '1808', '1809' + ], + // BSB2021 songs + 'bsb2021': [ + '1802', '1803', '1804', '1805', '1806', '1807' + ], + // SDVX 10th anniversary stamp event songs + 'sdvx10thstamp': [ + '1838', '1839', '1840', '1841', '1842', '1843', '1844' + ], + // REFLECT BEAT stamp event songs + 'reflecstamp': [ + '1850', '1851', '1852', '1853', '1854' + ], + // BEMANI ichika 2022 event songs + 'gmz2022': [ + '1906', '1907', '1908', '1909', '1910' + ], + // BPL2022 songs + "bpl2022_1": [ + '1952', '1943' + ], + "bpl2022_2": [ + '1948', '1951' + ], + "bpl2022_3": [ + '1956', '1949' + ], + "bpl2022_4": [ + '1946', '1958' + ] +} -export const KONASTESONGS = [ - '1762', '1763', '1764', '1765', '1811' -] - -export const BEMANI2021EVENTSONGS = [ - '1802', '1803', '1804', '1805', '1806', '1807' -] - -export const BPLSTAMPRALLYSONGS = [ - '1808', '1809' -] - -export const SDVX10THSTAMPSONGS = [ - '1838', '1839', '1840', '1841', '1842', '1843', '1844' -] - -export const REFLECBEATSTAMPSONGS = [ - '1850', '1851', '1852', '1853', '1854' -] +export const RESTRICTED_SONGS6 = { + // X-Record songs + 'xrecord_1': [ + // 1st edition + '1736', // discordia_penorerihumer + '1737', // chewingood_toriena + '1738', // verflucht_tirfing + ], + 'xrecord_2': [ + // 2nd edition + '1848', // fegrix + '1847', // 2 beasts unchained + '1849', // piano kyousoukyoku + ], + // BPL2021 songs + // 'bpl2021': [ + // '1808', '1809' + // ], + // BSB2021 songs + 'bsb2021': [ + '1802', '1803', '1804', '1805', '1806', '1807' + ], + // SDVX 10th anniversary stamp event songs + 'sdvx10thstamp': [ + '1838', '1839', '1840', '1841', '1842', '1843', '1844' + ], + // REFLECT BEAT stamp event songs + 'reflecstamp': [ + '1850', '1851', '1852', '1853', '1854' + ], + // BEMANI ichika 2022 event songs + 'gmz2022': [ + '1906', '1907', '1908', '1909', '1910' + ], + // BPL2022 songs + "bpl2022_1": [ + '1952', '1943' + ], + "bpl2022_2": [ + '1948', '1951' + ], + "bpl2022_3": [ + '1956', '1949' + ], + "bpl2022_4": [ + '1946', '1958' + ] +} export const APRILFOOLSSONGS = [ '840', '1219', '1751' diff --git a/sdvx@asphyxia/handlers/common.ts b/sdvx@asphyxia/handlers/common.ts index 911daca..417d767 100644 --- a/sdvx@asphyxia/handlers/common.ts +++ b/sdvx@asphyxia/handlers/common.ts @@ -1,9 +1,7 @@ import { EVENT4, COURSES4, EXTENDS4 } from '../data/hvn'; import { EVENT5, COURSES5, EXTENDS5 } from '../data/vvw'; -import { EVENT6, COURSES6, EXTENDS6, APRILFOOLSSONGS, XRECORDSONGS, - KONASTESONGS, BEMANI2021EVENTSONGS, BPLSTAMPRALLYSONGS, SDVX10THSTAMPSONGS, - REFLECBEATSTAMPSONGS, VALKYRIEEXCLUSIVESONGS, MISSINGSONGS6, ARENA, VALGENE, - INFORMATION6 +import { EVENT6, COURSES6, EXTENDS6, APRILFOOLSSONGS, VALKYRIEEXCLUSIVESONGS, + MISSINGSONGS6, ARENA, VALGENE, INFORMATION6, RESTRICTED_SONGS6, EVENT_SONGS6 } from '../data/exg'; import { COURSE2 } from '../data/inf'; import {getVersion, getRandomIntInclusive} from '../utils'; @@ -89,7 +87,15 @@ export const common: EPR = async (info, data, send) => { } } } else { - let RESTRICT_SONGS = KONASTESONGS.concat(BEMANI2021EVENTSONGS, BPLSTAMPRALLYSONGS, SDVX10THSTAMPSONGS, REFLECBEATSTAMPSONGS); + let RESTRICT_SONGS = [] //KONASTESONGS.concat(BEMANI2021EVENTSONGS, BPLSTAMPRALLYSONGS, SDVX10THSTAMPSONGS, REFLECBEATSTAMPSONGS); + let EVENT_SONGS = [] + for(const keyIter in Object.keys(RESTRICTED_SONGS6)) { + RESTRICT_SONGS = RESTRICT_SONGS.concat(RESTRICTED_SONGS6[Object.keys(RESTRICTED_SONGS6)[keyIter]]) + } + for(const keyIter in Object.keys(EVENT_SONGS6)) { + EVENT_SONGS = EVENT_SONGS.concat(EVENT_SONGS6[Object.keys(EVENT_SONGS6)[keyIter]]) + } + let mdb = JSON.parse(music_db); let limitedNo = 2; @@ -98,7 +104,7 @@ export const common: EPR = async (info, data, send) => { if(foundSongIndex != -1) { var songData = mdb.mdb.music[foundSongIndex]; if(gameVersion === 6 || gameVersion === -6) { - if(!RESTRICT_SONGS.includes(i.toString()) && parseInt(songData['info']['distribution_date']['#text']) <= currentYMDDate) { + if((!RESTRICT_SONGS.includes(i.toString()) || EVENT_SONGS.includes(i.toString())) && parseInt(songData['info']['distribution_date']['#text']) <= currentYMDDate) { limitedNo = 2; if(songData.info.version['#text'] === '6') { // if song is released during exceed gear if(MISSINGSONGS6.includes(i.toString())) { diff --git a/sdvx@asphyxia/handlers/profiles.ts b/sdvx@asphyxia/handlers/profiles.ts index c8a0148..f2690bd 100644 --- a/sdvx@asphyxia/handlers/profiles.ts +++ b/sdvx@asphyxia/handlers/profiles.ts @@ -3,13 +3,12 @@ import { SDVX_AUTOMATION_SONGS } from '../data/vvw'; import { Item } from '../models/item'; import { Param } from '../models/param'; import { Arena } from '../models/arena'; -import { XRecord } from '../models/xrecord'; import { MusicRecord } from '../models/music_record'; import { CourseRecord } from '../models/course_record'; import { Profile } from '../models/profile'; import { getVersion, IDToCode } from '../utils'; import { Mix } from '../models/mix'; -import { ARENA } from '../data/exg'; +import { ARENA, EVENT_SONGS6, RESTRICTED_SONGS6 } from '../data/exg'; async function getAutomationMixes(params: Param[]) { const mixids = params @@ -615,35 +614,6 @@ export const save: EPR = async (info, data, send) => { ); } - // Add X-Record points - if(U.GetConfig('x_record')) { - let addLM = 1 - let addVM = 10 - let xrData = await DB.FindOne(refid, {collection: 'x-record'}) - if (xrData != null) { - if(xrData['lm'] + 1 > 200) { - addLM = 0 - console.log('LM Points Capped') - } - if(xrData['vm'] + 10 > 200) { - addVM = 10 - ((xrData['vm'] + 10) - 200) - console.log('VM Points Capped') - } - } - await DB.Upsert( - refid, - { - collection: 'x-record' - }, - { - $inc: { - lm: addLM, - vm: addVM - } - } - ); - } - return send.success(); }; @@ -675,7 +645,6 @@ export const load: EPR = async (info, data, send) => { const courses = await DB.Find(refid, { collection: 'course', version }); const params = await DB.Find(refid, { collection: 'param' }); const arena = await DB.FindOne(refid, { collection: 'arena', season: Object.keys(ARENA).findIndex(data => data == U.GetConfig('arena_szn')) + 1 }); - const xrecord = await DB.FindOne(refid, { collection: 'x-record' }); let time = new Date(); let tempHour = time.getHours(); let tempDate = time.getDate(); @@ -734,53 +703,71 @@ export const load: EPR = async (info, data, send) => { var tempItem = U.GetConfig('unlock_all_navigators') ? unlockNavigators(items) : items; tempItem = U.GetConfig('unlock_all_appeal_cards') ? unlockAppealCards(items) : items; tempItem = removeStampItems(tempItem) + + let eventData = JSON.parse(await IO.ReadFile('webui/asset/json/events.json')) + let eventConfig = JSON.parse(await IO.ReadFile('webui/asset/config/events.json')) + let presents = [] + for(const eventIter in eventData['events']) { + if(!eventData['events'][eventIter]['in_game_event']) { + if(typeof eventConfig[eventData['events'][eventIter]['id']]['toggle'] === "boolean") { + if(eventConfig[eventData['events'][eventIter]['id']]['toggle']) { + for(const itemIter in EVENT_SONGS6[eventData['events'][eventIter]['id']]) { + let itemId = parseInt(EVENT_SONGS6[eventData['events'][eventIter]['id']][itemIter]) + if(await DB.Count(refid, {collection:'item', id: itemId}) === 0) { + await DB.Upsert( + refid, + {collection: 'item', type: 0, id: itemId}, + {$set: { param: 23 }} + ) + + presents.push({ + id: itemId, + type: 0, + param: 23 + }) + + tempItem.push({ collection: 'item', type: 0, id: itemId, param: 23 }) + } + } + } + } else{ + // eventConfig[eventData['events'][eventIter]['id']]['toggle'] + for(const toggleKeys in Object.keys(eventConfig[eventData['events'][eventIter]['id']]['toggle'])) { + if(eventConfig[eventData['events'][eventIter]['id']]['toggle'][Object.keys(eventConfig[eventData['events'][eventIter]['id']]['toggle'])[toggleKeys]]) { + for(const itemIter in EVENT_SONGS6[Object.keys(eventConfig[eventData['events'][eventIter]['id']]['toggle'])[toggleKeys]]) { + let itemId = parseInt(EVENT_SONGS6[Object.keys(eventConfig[eventData['events'][eventIter]['id']]['toggle'])[toggleKeys]][itemIter]) + if(await DB.Count(refid, {collection:'item', id: itemId}) === 0) { + await DB.Upsert( + refid, + {collection: 'item', type: 0, id: itemId}, + {$set: { param: 23 }} + ) + + presents.push({ + id: itemId, + type: 0, + param: 23 + }) + + tempItem.push({ collection: 'item', type: 0, id: itemId, param: 23 }) + } + } + } + } + } + } + } + // Make generator power always 100%, for (let i = 0; i < 50; i++) { const tempGene: Item = { collection: 'item', type: 7, id: i, param: 10 }; tempItem.push(tempGene); } - // Check X-record data and unlock songs based on points - if(U.GetConfig('x_record') && (info.model.split(":")[2].match(/^(G|H)$/g) != null || U.GetConfig('enable_valk_songs'))) { - // '1736', // discordia_penorerihumer - 150 - // '1737', // chewingood_toriena - 0 - // '1738', // verflucht_tirfing - 50 - // '1847', // 2 beasts unchained - 200 - // '1848', // fegrix - 0 - // '1849', // piano kyousoukyoku -100 - - let unlockedXRecordSongs = [1737, 1848] - if(xrecord != null) { - if(xrecord.lm >= 50) { - unlockedXRecordSongs.push(1738) - } - - if(xrecord.lm >= 100) { - unlockedXRecordSongs.push(1849) - } - - if(xrecord.lm >= 150) { - unlockedXRecordSongs.push(1736) - } - - if(xrecord.lm >= 200) { - unlockedXRecordSongs.push(1847) - } - } - - unlockedXRecordSongs.forEach(song => { - console.log("Unlocking xrecord song: " + song) - tempItem.push({ - id: song, - type: 0, - param: 23, - }); - }) - } - return send.pugFile('templates/load.pug', { courses, items: tempItem, + present: presents, params, skill, currentTime, diff --git a/sdvx@asphyxia/handlers/webui.ts b/sdvx@asphyxia/handlers/webui.ts index 3629cee..f08ef84 100644 --- a/sdvx@asphyxia/handlers/webui.ts +++ b/sdvx@asphyxia/handlers/webui.ts @@ -523,3 +523,9 @@ export const preGeneRoll = async (data: { } } else console.log('pregeneset none') } + +export const manageEvents = async (data: { + eventConfig: {} +}) => { + IO.WriteFile('webui/asset/config/events.json', JSON.stringify(data.eventConfig, null, 4)); +} diff --git a/sdvx@asphyxia/index.ts b/sdvx@asphyxia/index.ts index ce1f1a6..5cb6069 100644 --- a/sdvx@asphyxia/index.ts +++ b/sdvx@asphyxia/index.ts @@ -6,7 +6,8 @@ import { importMix, deleteMix, copyResourcesFromGame, - preGeneRoll + preGeneRoll, + manageEvents } from './handlers/webui'; import { load, @@ -45,6 +46,7 @@ export function register() { R.WebUIEvent('copyResourcesFromGame', copyResourcesFromGame); R.WebUIEvent('preGeneRoll', preGeneRoll); + R.WebUIEvent('manageEvents', manageEvents); R.WebUIEvent('updateProfile', updateProfile); R.WebUIEvent('updateMix', updateMix); R.WebUIEvent('importMix', importMix); diff --git a/sdvx@asphyxia/templates/load.pug b/sdvx@asphyxia/templates/load.pug index 98a3594..a61271d 100644 --- a/sdvx@asphyxia/templates/load.pug +++ b/sdvx@asphyxia/templates/load.pug @@ -72,6 +72,13 @@ game id(__type="u32") #{song} param(__type="u32") 1 + present + each item in present + info + type(__type="u8") #{item.type} + id(__type="u32") #{item.id} + param(__type="u32") #{item.param} + param each param in params info