Skip to content

Commit

Permalink
add flag data to sdvx import script
Browse files Browse the repository at this point in the history
  • Loading branch information
noahm committed Apr 12, 2024
1 parent 892e5e4 commit bb0582a
Show file tree
Hide file tree
Showing 2 changed files with 301 additions and 3 deletions.
42 changes: 39 additions & 3 deletions scripts/import-sdvx.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -6,10 +6,25 @@ import { promises as fs } from "fs";
import { resolve, join, dirname } from "path";
import { parseStringPromise } from "xml2js";
import iconv from "iconv-lite";
import { writeJsonData } from "./utils.mjs";
import { fileURLToPath } from "url";
import { writeJsonData } from "./utils.mjs";
import { SDVX_UNLOCK_IDS } from "./sdvx/unlocks.mjs";

const __dirname = dirname(fileURLToPath(import.meta.url));

/** @typedef {import("../src/models/SongData.js").Song} Song */
/** @typedef {import("../src/models/SongData.js").Chart} Chart */
/** @typedef {import("../src/models/SongData.js").GameData} GameData */

/**
* @template {Record<string, unknown>} T
* @param {T} object
* @returns {Array<keyof T>}
*/
function typedKeys(object) {
return Object.keys(object);
}

const OUTFILE = "src/songs/sdvx.json";
const JACKETS_PATH = "src/assets/jackets/sdvx";

Expand Down Expand Up @@ -46,7 +61,7 @@ async function main() {
{ key: "vivid", color: "#f52a6e" },
{ key: "exceed", color: "#0047AB" },
],
flags: [],
flags: typedKeys(SDVX_UNLOCK_IDS),
},
defaults: {
style: "single",
Expand Down Expand Up @@ -172,6 +187,12 @@ function determineChartJacket(chartType, song, availableJackets) {
return `sdvx/${jacketName}`;
}

/**
*
* @param {*} song
* @param {*} availableJackets
* @returns {Song}
*/
function buildSong(song, availableJackets) {
const info = song.info[0];

Expand All @@ -182,6 +203,7 @@ function buildSong(song, availableJackets) {
bpm = `${bpmMin}-${bpmMax}`;
}

/** @type {Array<Chart>} */
const charts = [];
let usesSharedJacket = false;
for (const chartType of Object.keys(song.difficulty[0])) {
Expand Down Expand Up @@ -209,7 +231,15 @@ function buildSong(song, availableJackets) {
charts.find((c) => c.diffClass === "novice").jacket = undefined;
}

return {
const flags = [];
for (const flag of typedKeys(SDVX_UNLOCK_IDS)) {
if (SDVX_UNLOCK_IDS[flag].includes(song.$.id)) {
flags.push(flag);
}
}

/** @type {Song} */
const ret = {
name: info.title_name[0],
search_hint: info.ascii[0],
date_added: info.distribution_date[0],
Expand All @@ -220,6 +250,12 @@ function buildSong(song, availableJackets) {
bpm,
charts,
};

if (flags.length) {
ret.flags = flags;
}

return ret;
}

main();
262 changes: 262 additions & 0 deletions scripts/sdvx/unlocks.mjs
Original file line number Diff line number Diff line change
@@ -0,0 +1,262 @@
export const SDVX_UNLOCK_IDS = {
omegaDimension: [
1099, // FIN4LE ~終止線の彼方へ~
1100, // WHITEOUT
1101, // Deadly force
1102, // Staring at star
1103, // Dyscontrolled Galaxy
1104, // セイレーン 〜悲壮の竪琴〜
1105, // 神獄烙桜
1106, // Juggler's Maddness
1107, // ULTiMATE INFLATiON
1108, // Mirrorwall

1140, // BEAST BASS BOMB
1141, // Cy-Bird
1142, // Far Away
1143, // OPEN MY GATE
1144, // Hug!! Vs. Hug!!
1145, // #SpeedyCats
1146, // 闇夜に舞うは紅の華
1147, // All Clear!!
1148, // TWO-TORIAL

1177, // Last Resort
1178, // A Lasting Promise
1179, // Cloud 9
1180, // Sacrifice and Faith
1181, // 羅生門
1183, // 僕らの時間
1185, // I
1186, // 神話に芽吹く
1187, // CUTE-Reflection

1188, // Awakening
1189, // Xéroa
1191, // crossing blue
1196, // BlueMoon Princess
1202, // Яe's NoVǢ
1206, // Wings of Glory
1207, // メルヘン風紀委員会
1212, // プラネタジャーニー

1269, // Made In Love
1270, // Xronièr
1271, // Failnaught
1272, // Absolute Domination
1273, // Fly Like You
1274, // そして黄金郷へ
1275, // 光射す澪のユズリハ
1276, // サイコパスラビット
1277, // オニユリ
1278, // 水簾ノ調
1279, // Another Chapter
1280, // スラッシュ//シスターズ
1281, // コメット⇒スケイター

1361, // *Feels Seasickness...*
1362, // ΣmbryØ
1363, // Cross Fire
1364, // GODHEART
1365, // THE HEAVEN
1366, // 祝福の色彩は想い結ぶ君たち迄
1367, // ULTRAVELOCITY
1368, // Destiny

1462, // ΣgØ
1463, // 星の透る夏空に願う
1464, // Lancelot ~Flame of the Rebellion~
1465, // ΩVERFLOW
1466, // Sudden Visitor
1467, // Ghost Family Living In Graveyard
1468, // petit fours

1495, // * Erm, could it be a Spatiotemporal ShockWAVE Syndrome...?
1496, // OUTERHEΛVEN
1497, // Pulsar
1498, // θコトノハθカプセルθ
1499, // Butterfly Twist
1500, // pique
1501, // Teufel
],
hexadiver: [
1580, // 666
1581, // 色を喪った街
1582, // ЯeviveR
1583, // 9TH5IN
1585, // Katharsis
1586, // ZEИITH
1587, // SAMURAI TIGER

1584, // VVelcome!!
1588, // Redshift 2nd Ignition
1589, // ミュージックプレイヤー
1590, // 春告胡蝶
1591, // †:OLPHEUX:†
1592, // GEMINI LA2ER
1593, // LubedeR
1594, // Яe:son D'être

1660, // MAYHEM
1661, // 飄える翼追い掛けて
1662, // Calamity Tempest
1663, // Daisycutter
1664, // ΛΛemoria
1665, // With It This Heaven?
1666, // apo:llioth

1766, // XHRONOXAPSULΞ
1768, // EncorE & cALL
1769, // AμreoLe ~for Triumph~
1770, // ZEUS
1774, // All for One
1775, // Wings to fly high
1776, // AIM HIGHER

1767, // MixxioN
1771, // Xb10r
1772, // 十の試練
1773, // Rhapsody ⚙︎f Triumph
1777, // 火狐之舞
1778, // 蝕
1779, // refluxio

1889, // Bl∞min'
1891, // LaμreLs ~the Angelus~
1893, // Avalanx
1895, // すべてが幻になった後で
1896, // Grandeur
1897, // Stairway to the sun
1900, // 極夜、暁を望んで

1888, // いまきみに
1890, // Fαtα∠ Ent∠mEnt
1892, // VɅZiLiSQ
1894, // 赫焉
1898, // STIGMA
1899, // 光風霽月
1901, // Lost Parliament

2037, // APØCALYPSE RAY
2039, // Spectacular“V”Adventure!
2040, // Breakneck Pursuit
2044, // 忘れないように、失くさないように
2046, // Marielle
2047, // ΣMERGENCY CODΣ
2050, // BLISS

2038, // HeaveИ's Rain
2041, // and After the Merry BADEND
2042, // Undead Raving Scare
2043, // Enter The Rave
2045, // SHARK IMPACT
2048, // 十三不塔
2049, // リュミレイラ

2079, // TOKAKU=ALMiRAJ
2080, // レインボウ・フレーバー
2081, // =∴NOMADE∵OTION=
2082, // 随神
2083, // OVEЯ+TUЯE
2084, // Burst Λnd reBoost
2085, // Λkasha
],

otherEvents: [
// Cloud-Exclusive
1762, // ドゥサンコオデッセイ!!
1763, // Azalea
1764, // Bayonex
1765, // Reverenced Flower
1811, // Reminiscence

// Unlock Chain
2034, // 無意識レクイエム(cosmobsp mix)

// BPL S2 Blaster Gate
1939, // DEUX EX MĀXHINĀ
1940, // All We Need is HAPPY END!!!
1941, // Glory of Fighters
1942, // MILITARY R04D
1943, // WINNING ROAD
1944, // Paradigm Shift
1945, // Thousand Triggers
1946, // Initiating League
1947, // Petit espoir
1948, // ENDGAME
1949, // MURASAME
1950, // イグノアザーズ
1951, // ИADIR
1952, // Chat perché
1953, // Fl0ating:
1954, // trea→journey
1955, // 最果ての勇者にラブソングを
1956, // Ice Fortress
1957, // 灼ナル刃、破カヰ譜
1958, // Scat Jazz Dance

// BPL Season 2 Stamp Event Blaster Gate
1919, // HALO
1920, // S(TAR)²☆pistol
1921, // 赫焉のヴァルキュリア -Ragnarøk-
1922, // CUDDLIE CUDDLIE
1923, // Brave Power Leader 《 = Voltage = 》
1924, // 零天視
1925, // ステラ・イミグレーション
1926, // Garland
1938, // SuddeИDeath

// BPL S3 Blaster Gate
2129, // We Are All The Dreamer
2130, // Double or Nothing
2131, // Crawl Out Immortal
2132, // トリコエリヌム▽コンチェルト
2133, // 群青纏う朱の槍
2134, // CHOVERY GOOSE!!!
2135, // V!LLA!N
2136, // TOYBOX CANNØN=͟͟͞ Σ≡=。゚:*.:+。.☆
2137, // ON THE WORLD
2138, // 花火のおもちゃ箱
2139, // イグジスター
2140, // La Nostra Storia!
2141, // グリーディ・スターズ!
2142, // Di-Da-De-Doo
2143, // Break Through Δpex
2144, // LOVE TONIC
2145, // Inevitable Magic
2146, // Ars Magna
2147, // 異次元の孤独~カナタノキミヘ~
2148, // SΛMVICΛ
2149, // MΔX FLAVØR
2150, // Cuz we <3 this Game
2151, // Xeno Gravity
2152, // NEMSYS ARENA World Hexathlon

// Arena Exclusive
1742, // Kontrol Line
1743, // Revvable Engine
1745, // graduation
1846, // Tickled Pink
1855, // Resonant Gear
1902, // You Are My Best RivaL!!
2077, // ちくわパフェだよ☆CKP (Yvya Remix)
2078, // めうめうぺったんたん!! (ZAQUVA Remix)

// BPL Season 3 Triple Tribe
2063, // stellar rain
2064, // THE PEERLESS UNDER HEAVEN
2065, // suspicions
2162, // ちょえちょえまぎか
2163, // Deep tenDon Reflex
2164, // Ambivalent Vermilia

// KAC Stamp
2060, // 累乗のカルマ
2061, // Stylus
2062, // QQ
],
jpOnly: [
// Chase Chase Jokers J-Region Exclusive
2027, // チェイスチェイスジョーカーズのうた
],
};

0 comments on commit bb0582a

Please sign in to comment.