mirror of
https://github.com/zkldi/Tachi.git
synced 2026-09-28 18:08:15 +03:00
fix: backport all features from v2 that came in after merge
This commit is contained in:
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -117,6 +117,7 @@
|
||||
"chartViewURL": "https://sdvx.in/ongeki/luna/01002luna.htm",
|
||||
"displayVersion": "オンゲキ bright MEMORY Act.2",
|
||||
"inGameID": 8162,
|
||||
"isBonusTrack": false,
|
||||
"isReMaster": true,
|
||||
"maxPlatScore": 2340
|
||||
},
|
||||
@@ -199,6 +200,7 @@
|
||||
"chartViewURL": "https://sdvx.in/ongeki/luna/01003luna.htm",
|
||||
"displayVersion": "オンゲキ R.E.D. PLUS",
|
||||
"inGameID": 8058,
|
||||
"isBonusTrack": false,
|
||||
"isReMaster": true,
|
||||
"maxPlatScore": 3014
|
||||
},
|
||||
@@ -281,6 +283,7 @@
|
||||
"chartViewURL": "https://sdvx.in/ongeki/luna/01004luna.htm",
|
||||
"displayVersion": "オンゲキ PLUS",
|
||||
"inGameID": 8022,
|
||||
"isBonusTrack": false,
|
||||
"isReMaster": true,
|
||||
"maxPlatScore": 2396
|
||||
},
|
||||
@@ -1224,6 +1227,7 @@
|
||||
"chartViewURL": "https://sdvx.in/ongeki/luna/01016luna.htm",
|
||||
"displayVersion": "オンゲキ bright MEMORY Act.2",
|
||||
"inGameID": 8166,
|
||||
"isBonusTrack": false,
|
||||
"isReMaster": true,
|
||||
"maxPlatScore": 3510
|
||||
},
|
||||
@@ -1247,6 +1251,7 @@
|
||||
"chartViewURL": "https://sdvx.in/ongeki/01/01016mst.htm",
|
||||
"displayVersion": "オンゲキ",
|
||||
"inGameID": 118,
|
||||
"isBonusTrack": false,
|
||||
"maxPlatScore": 2556
|
||||
},
|
||||
"difficulty": "MASTER",
|
||||
@@ -1489,6 +1494,7 @@
|
||||
"chartViewURL": "https://sdvx.in/ongeki/luna/01019luna.htm",
|
||||
"displayVersion": "オンゲキ bright",
|
||||
"inGameID": 8065,
|
||||
"isBonusTrack": false,
|
||||
"isReMaster": true,
|
||||
"maxPlatScore": 2698
|
||||
},
|
||||
@@ -1512,6 +1518,7 @@
|
||||
"chartViewURL": "https://sdvx.in/ongeki/01/01019mst.htm",
|
||||
"displayVersion": "オンゲキ",
|
||||
"inGameID": 47,
|
||||
"isBonusTrack": false,
|
||||
"maxPlatScore": 2100
|
||||
},
|
||||
"difficulty": "MASTER",
|
||||
@@ -1600,6 +1607,7 @@
|
||||
"chartViewURL": "https://sdvx.in/ongeki/luna/01020luna.htm",
|
||||
"displayVersion": "オンゲキ bright MEMORY Act.3",
|
||||
"inGameID": 8179,
|
||||
"isBonusTrack": false,
|
||||
"isReMaster": true,
|
||||
"maxPlatScore": 3006
|
||||
},
|
||||
@@ -1955,6 +1963,7 @@
|
||||
"chartViewURL": "https://sdvx.in/ongeki/luna/01070luna.htm",
|
||||
"displayVersion": "オンゲキ bright MEMORY Act.2",
|
||||
"inGameID": 8113,
|
||||
"isBonusTrack": false,
|
||||
"isReMaster": false,
|
||||
"maxPlatScore": 1568
|
||||
},
|
||||
@@ -2056,6 +2065,7 @@
|
||||
"chartViewURL": "https://sdvx.in/ongeki/luna/01061luna.htm",
|
||||
"displayVersion": "オンゲキ",
|
||||
"inGameID": 8021,
|
||||
"isBonusTrack": false,
|
||||
"isReMaster": false,
|
||||
"maxPlatScore": 4000
|
||||
},
|
||||
@@ -2233,6 +2243,7 @@
|
||||
"chartViewURL": "https://sdvx.in/ongeki/luna/01064luna.htm",
|
||||
"displayVersion": "オンゲキ R.E.D. PLUS",
|
||||
"inGameID": 8062,
|
||||
"isBonusTrack": false,
|
||||
"isReMaster": true,
|
||||
"maxPlatScore": 4036
|
||||
},
|
||||
@@ -2256,6 +2267,7 @@
|
||||
"chartViewURL": "https://sdvx.in/ongeki/01/01064mst.htm",
|
||||
"displayVersion": "オンゲキ",
|
||||
"inGameID": 151,
|
||||
"isBonusTrack": false,
|
||||
"maxPlatScore": 2590
|
||||
},
|
||||
"difficulty": "MASTER",
|
||||
@@ -2480,6 +2492,7 @@
|
||||
"chartViewURL": "https://sdvx.in/ongeki/luna/01082luna.htm",
|
||||
"displayVersion": "オンゲキ bright",
|
||||
"inGameID": 8067,
|
||||
"isBonusTrack": false,
|
||||
"isReMaster": true,
|
||||
"maxPlatScore": 2234
|
||||
},
|
||||
@@ -2669,6 +2682,7 @@
|
||||
"chartViewURL": "https://sdvx.in/ongeki/luna/01066luna.htm",
|
||||
"displayVersion": "オンゲキ",
|
||||
"inGameID": 8002,
|
||||
"isBonusTrack": false,
|
||||
"isReMaster": false,
|
||||
"maxPlatScore": 1052
|
||||
},
|
||||
@@ -3404,6 +3418,7 @@
|
||||
"chartViewURL": "https://sdvx.in/ongeki/luna/01083luna.htm",
|
||||
"displayVersion": "オンゲキ bright MEMORY Act.2",
|
||||
"inGameID": 8165,
|
||||
"isBonusTrack": false,
|
||||
"isReMaster": true,
|
||||
"maxPlatScore": 3048
|
||||
},
|
||||
@@ -3427,6 +3442,7 @@
|
||||
"chartViewURL": "https://sdvx.in/ongeki/01/01083mst.htm",
|
||||
"displayVersion": "オンゲキ",
|
||||
"inGameID": 140,
|
||||
"isBonusTrack": false,
|
||||
"maxPlatScore": 2482
|
||||
},
|
||||
"difficulty": "MASTER",
|
||||
@@ -3871,6 +3887,7 @@
|
||||
"chartViewURL": "https://sdvx.in/ongeki/luna/01027luna.htm",
|
||||
"displayVersion": "オンゲキ bright MEMORY Act.2",
|
||||
"inGameID": 8163,
|
||||
"isBonusTrack": false,
|
||||
"isReMaster": true,
|
||||
"maxPlatScore": 4152
|
||||
},
|
||||
@@ -3894,6 +3911,7 @@
|
||||
"chartViewURL": "https://sdvx.in/ongeki/01/01027mst.htm",
|
||||
"displayVersion": "オンゲキ",
|
||||
"inGameID": 45,
|
||||
"isBonusTrack": false,
|
||||
"maxPlatScore": 3016
|
||||
},
|
||||
"difficulty": "MASTER",
|
||||
@@ -4517,6 +4535,7 @@
|
||||
"chartViewURL": "https://sdvx.in/ongeki/luna/01032luna.htm",
|
||||
"displayVersion": "オンゲキ bright MEMORY Act.2",
|
||||
"inGameID": 8009,
|
||||
"isBonusTrack": false,
|
||||
"isReMaster": false,
|
||||
"maxPlatScore": 1672
|
||||
},
|
||||
@@ -4898,6 +4917,7 @@
|
||||
"chartViewURL": "https://sdvx.in/ongeki/luna/01036luna.htm",
|
||||
"displayVersion": "オンゲキ bright MEMORY Act.2",
|
||||
"inGameID": 8115,
|
||||
"isBonusTrack": false,
|
||||
"isReMaster": true,
|
||||
"maxPlatScore": 3020
|
||||
},
|
||||
@@ -4921,6 +4941,7 @@
|
||||
"chartViewURL": "https://sdvx.in/ongeki/01/01036mst.htm",
|
||||
"displayVersion": "オンゲキ",
|
||||
"inGameID": 35,
|
||||
"isBonusTrack": false,
|
||||
"maxPlatScore": 2498
|
||||
},
|
||||
"difficulty": "MASTER",
|
||||
@@ -5009,6 +5030,7 @@
|
||||
"chartViewURL": "https://sdvx.in/ongeki/luna/01037luna.htm",
|
||||
"displayVersion": "オンゲキ bright MEMORY Act.2",
|
||||
"inGameID": 8015,
|
||||
"isBonusTrack": false,
|
||||
"isReMaster": false,
|
||||
"maxPlatScore": 2452
|
||||
},
|
||||
@@ -5924,6 +5946,7 @@
|
||||
"chartViewURL": "https://sdvx.in/ongeki/luna/01038luna.htm",
|
||||
"displayVersion": "オンゲキ bright MEMORY Act.1",
|
||||
"inGameID": 8091,
|
||||
"isBonusTrack": false,
|
||||
"isReMaster": true,
|
||||
"maxPlatScore": 3692
|
||||
},
|
||||
@@ -5946,6 +5969,7 @@
|
||||
"data": {
|
||||
"displayVersion": "オンゲキ",
|
||||
"inGameID": 36,
|
||||
"isBonusTrack": false,
|
||||
"maxPlatScore": 1836
|
||||
},
|
||||
"difficulty": "MASTER",
|
||||
@@ -6034,6 +6058,7 @@
|
||||
"chartViewURL": "https://sdvx.in/ongeki/luna/01039luna.htm",
|
||||
"displayVersion": "オンゲキ PLUS",
|
||||
"inGameID": 8029,
|
||||
"isBonusTrack": false,
|
||||
"isReMaster": true,
|
||||
"maxPlatScore": 2464
|
||||
},
|
||||
@@ -6057,6 +6082,7 @@
|
||||
"chartViewURL": "https://sdvx.in/ongeki/01/01039mst.htm",
|
||||
"displayVersion": "オンゲキ",
|
||||
"inGameID": 63,
|
||||
"isBonusTrack": false,
|
||||
"maxPlatScore": 1638
|
||||
},
|
||||
"difficulty": "MASTER",
|
||||
@@ -6145,6 +6171,7 @@
|
||||
"chartViewURL": "https://sdvx.in/ongeki/luna/01040luna.htm",
|
||||
"displayVersion": "オンゲキ bright MEMORY Act.1",
|
||||
"inGameID": 8030,
|
||||
"isBonusTrack": false,
|
||||
"isReMaster": true,
|
||||
"maxPlatScore": 2676
|
||||
},
|
||||
@@ -6168,6 +6195,7 @@
|
||||
"chartViewURL": "https://sdvx.in/ongeki/01/01040mst.htm",
|
||||
"displayVersion": "オンゲキ",
|
||||
"inGameID": 64,
|
||||
"isBonusTrack": false,
|
||||
"maxPlatScore": 1942
|
||||
},
|
||||
"difficulty": "MASTER",
|
||||
@@ -6256,6 +6284,7 @@
|
||||
"chartViewURL": "https://sdvx.in/ongeki/luna/01041luna.htm",
|
||||
"displayVersion": "オンゲキ bright MEMORY Act.1",
|
||||
"inGameID": 8031,
|
||||
"isBonusTrack": false,
|
||||
"isReMaster": true,
|
||||
"maxPlatScore": 3144
|
||||
},
|
||||
@@ -6279,6 +6308,7 @@
|
||||
"chartViewURL": "https://sdvx.in/ongeki/01/01041mst.htm",
|
||||
"displayVersion": "オンゲキ",
|
||||
"inGameID": 65,
|
||||
"isBonusTrack": false,
|
||||
"maxPlatScore": 1762
|
||||
},
|
||||
"difficulty": "MASTER",
|
||||
@@ -6367,6 +6397,7 @@
|
||||
"chartViewURL": "https://sdvx.in/ongeki/luna/01042luna.htm",
|
||||
"displayVersion": "オンゲキ bright MEMORY Act.1",
|
||||
"inGameID": 8094,
|
||||
"isBonusTrack": false,
|
||||
"isReMaster": true,
|
||||
"maxPlatScore": 2834
|
||||
},
|
||||
@@ -6390,6 +6421,7 @@
|
||||
"chartViewURL": "https://sdvx.in/ongeki/01/01042mst.htm",
|
||||
"displayVersion": "オンゲキ",
|
||||
"inGameID": 67,
|
||||
"isBonusTrack": false,
|
||||
"maxPlatScore": 2624
|
||||
},
|
||||
"difficulty": "MASTER",
|
||||
@@ -6478,6 +6510,7 @@
|
||||
"chartViewURL": "https://sdvx.in/ongeki/luna/01043luna.htm",
|
||||
"displayVersion": "オンゲキ Re:Fresh",
|
||||
"inGameID": 8186,
|
||||
"isBonusTrack": false,
|
||||
"isReMaster": true,
|
||||
"maxPlatScore": 3222
|
||||
},
|
||||
@@ -6584,6 +6617,7 @@
|
||||
"chartViewURL": "https://sdvx.in/ongeki/luna/01044luna.htm",
|
||||
"displayVersion": "オンゲキ bright MEMORY Act.1",
|
||||
"inGameID": 8095,
|
||||
"isBonusTrack": false,
|
||||
"isReMaster": true,
|
||||
"maxPlatScore": 3118
|
||||
},
|
||||
@@ -6607,6 +6641,7 @@
|
||||
"chartViewURL": "https://sdvx.in/ongeki/01/01044mst.htm",
|
||||
"displayVersion": "オンゲキ",
|
||||
"inGameID": 68,
|
||||
"isBonusTrack": false,
|
||||
"maxPlatScore": 2184
|
||||
},
|
||||
"difficulty": "MASTER",
|
||||
@@ -6695,6 +6730,7 @@
|
||||
"chartViewURL": "https://sdvx.in/ongeki/luna/01045luna.htm",
|
||||
"displayVersion": "オンゲキ bright MEMORY Act.1",
|
||||
"inGameID": 8033,
|
||||
"isBonusTrack": false,
|
||||
"isReMaster": true,
|
||||
"maxPlatScore": 2922
|
||||
},
|
||||
@@ -6718,6 +6754,7 @@
|
||||
"chartViewURL": "https://sdvx.in/ongeki/01/01045mst.htm",
|
||||
"displayVersion": "オンゲキ",
|
||||
"inGameID": 69,
|
||||
"isBonusTrack": false,
|
||||
"maxPlatScore": 1672
|
||||
},
|
||||
"difficulty": "MASTER",
|
||||
@@ -7092,6 +7129,7 @@
|
||||
"chartViewURL": "https://sdvx.in/ongeki/luna/01052luna.htm",
|
||||
"displayVersion": "オンゲキ bright MEMORY Act.1",
|
||||
"inGameID": 8097,
|
||||
"isBonusTrack": false,
|
||||
"isReMaster": true,
|
||||
"maxPlatScore": 3094
|
||||
},
|
||||
@@ -7115,6 +7153,7 @@
|
||||
"chartViewURL": "https://sdvx.in/ongeki/01/01052mst.htm",
|
||||
"displayVersion": "オンゲキ",
|
||||
"inGameID": 76,
|
||||
"isBonusTrack": false,
|
||||
"maxPlatScore": 2444
|
||||
},
|
||||
"difficulty": "MASTER",
|
||||
@@ -7203,6 +7242,7 @@
|
||||
"chartViewURL": "https://sdvx.in/ongeki/luna/01053luna.htm",
|
||||
"displayVersion": "オンゲキ bright MEMORY Act.1",
|
||||
"inGameID": 8098,
|
||||
"isBonusTrack": false,
|
||||
"isReMaster": true,
|
||||
"maxPlatScore": 2714
|
||||
},
|
||||
@@ -7226,6 +7266,7 @@
|
||||
"chartViewURL": "https://sdvx.in/ongeki/01/01053mst.htm",
|
||||
"displayVersion": "オンゲキ",
|
||||
"inGameID": 79,
|
||||
"isBonusTrack": false,
|
||||
"maxPlatScore": 1808
|
||||
},
|
||||
"difficulty": "MASTER",
|
||||
@@ -7582,6 +7623,7 @@
|
||||
"chartViewURL": "https://sdvx.in/ongeki/luna/01069luna.htm",
|
||||
"displayVersion": "オンゲキ bright MEMORY Act.1",
|
||||
"inGameID": 8099,
|
||||
"isBonusTrack": false,
|
||||
"isReMaster": true,
|
||||
"maxPlatScore": 2482
|
||||
},
|
||||
@@ -7605,6 +7647,7 @@
|
||||
"chartViewURL": "https://sdvx.in/ongeki/01/01069mst.htm",
|
||||
"displayVersion": "オンゲキ",
|
||||
"inGameID": 93,
|
||||
"isBonusTrack": false,
|
||||
"maxPlatScore": 2408
|
||||
},
|
||||
"difficulty": "MASTER",
|
||||
@@ -7693,6 +7736,7 @@
|
||||
"chartViewURL": "https://sdvx.in/ongeki/luna/01074luna.htm",
|
||||
"displayVersion": "オンゲキ bright MEMORY Act.1",
|
||||
"inGameID": 8100,
|
||||
"isBonusTrack": false,
|
||||
"isReMaster": true,
|
||||
"maxPlatScore": 3170
|
||||
},
|
||||
@@ -7716,6 +7760,7 @@
|
||||
"chartViewURL": "https://sdvx.in/ongeki/01/01074mst.htm",
|
||||
"displayVersion": "オンゲキ",
|
||||
"inGameID": 94,
|
||||
"isBonusTrack": false,
|
||||
"maxPlatScore": 2280
|
||||
},
|
||||
"difficulty": "MASTER",
|
||||
@@ -7918,6 +7963,7 @@
|
||||
"chartViewURL": "https://sdvx.in/ongeki/luna/01063luna.htm",
|
||||
"displayVersion": "オンゲキ",
|
||||
"inGameID": 8001,
|
||||
"isBonusTrack": false,
|
||||
"isReMaster": false,
|
||||
"maxPlatScore": 1738
|
||||
},
|
||||
@@ -9482,6 +9528,7 @@
|
||||
"chartViewURL": "https://sdvx.in/ongeki/luna/01109luna.htm",
|
||||
"displayVersion": "オンゲキ bright MEMORY Act.2",
|
||||
"inGameID": 8158,
|
||||
"isBonusTrack": false,
|
||||
"isReMaster": false,
|
||||
"maxPlatScore": 4434
|
||||
},
|
||||
@@ -10155,6 +10202,7 @@
|
||||
"chartViewURL": "https://sdvx.in/ongeki/luna/01118luna.htm",
|
||||
"displayVersion": "オンゲキ R.E.D.",
|
||||
"inGameID": 8056,
|
||||
"isBonusTrack": false,
|
||||
"isReMaster": false,
|
||||
"maxPlatScore": 628
|
||||
},
|
||||
@@ -10338,6 +10386,7 @@
|
||||
"chartViewURL": "https://sdvx.in/ongeki/luna/01120luna.htm",
|
||||
"displayVersion": "オンゲキ R.E.D. PLUS",
|
||||
"inGameID": 8063,
|
||||
"isBonusTrack": false,
|
||||
"isReMaster": true,
|
||||
"maxPlatScore": 3690
|
||||
},
|
||||
@@ -10763,6 +10812,7 @@
|
||||
"chartViewURL": "https://sdvx.in/ongeki/luna/01126luna.htm",
|
||||
"displayVersion": "オンゲキ bright MEMORY Act.2",
|
||||
"inGameID": 8164,
|
||||
"isBonusTrack": false,
|
||||
"isReMaster": true,
|
||||
"maxPlatScore": 3766
|
||||
},
|
||||
@@ -10786,6 +10836,7 @@
|
||||
"chartViewURL": "https://sdvx.in/ongeki/01/01126mst.htm",
|
||||
"displayVersion": "オンゲキ PLUS",
|
||||
"inGameID": 163,
|
||||
"isBonusTrack": false,
|
||||
"maxPlatScore": 2614
|
||||
},
|
||||
"difficulty": "MASTER",
|
||||
@@ -10874,6 +10925,7 @@
|
||||
"chartViewURL": "https://sdvx.in/ongeki/luna/01127luna.htm",
|
||||
"displayVersion": "オンゲキ bright MEMORY Act.2",
|
||||
"inGameID": 8173,
|
||||
"isBonusTrack": false,
|
||||
"isReMaster": true,
|
||||
"maxPlatScore": 3040
|
||||
},
|
||||
@@ -10897,6 +10949,7 @@
|
||||
"chartViewURL": "https://sdvx.in/ongeki/01/01127mst.htm",
|
||||
"displayVersion": "オンゲキ PLUS",
|
||||
"inGameID": 164,
|
||||
"isBonusTrack": false,
|
||||
"maxPlatScore": 2484
|
||||
},
|
||||
"difficulty": "MASTER",
|
||||
@@ -11075,6 +11128,7 @@
|
||||
"chartViewURL": "https://sdvx.in/ongeki/luna/01129luna.htm",
|
||||
"displayVersion": "オンゲキ PLUS",
|
||||
"inGameID": 8024,
|
||||
"isBonusTrack": false,
|
||||
"isReMaster": false,
|
||||
"maxPlatScore": 1994
|
||||
},
|
||||
@@ -11852,6 +11906,7 @@
|
||||
"chartViewURL": "https://sdvx.in/ongeki/luna/01138luna.htm",
|
||||
"displayVersion": "オンゲキ bright MEMORY Act.1",
|
||||
"inGameID": 8085,
|
||||
"isBonusTrack": false,
|
||||
"isReMaster": true,
|
||||
"maxPlatScore": 3048
|
||||
},
|
||||
@@ -11875,6 +11930,7 @@
|
||||
"chartViewURL": "https://sdvx.in/ongeki/01/01138mst.htm",
|
||||
"displayVersion": "オンゲキ PLUS",
|
||||
"inGameID": 167,
|
||||
"isBonusTrack": false,
|
||||
"maxPlatScore": 2546
|
||||
},
|
||||
"difficulty": "MASTER",
|
||||
@@ -12451,6 +12507,7 @@
|
||||
"chartViewURL": "https://sdvx.in/ongeki/luna/01145luna.htm",
|
||||
"displayVersion": "オンゲキ SUMMER",
|
||||
"inGameID": 8041,
|
||||
"isBonusTrack": false,
|
||||
"isReMaster": false,
|
||||
"maxPlatScore": 2008
|
||||
},
|
||||
@@ -12854,6 +12911,7 @@
|
||||
"chartViewURL": "https://sdvx.in/ongeki/luna/01150luna.htm",
|
||||
"displayVersion": "オンゲキ PLUS",
|
||||
"inGameID": 8023,
|
||||
"isBonusTrack": false,
|
||||
"isReMaster": false,
|
||||
"maxPlatScore": 1622
|
||||
},
|
||||
@@ -12966,6 +13024,7 @@
|
||||
"chartViewURL": "https://sdvx.in/ongeki/luna/01152luna.htm",
|
||||
"displayVersion": "オンゲキ PLUS",
|
||||
"inGameID": 8025,
|
||||
"isBonusTrack": false,
|
||||
"isReMaster": false,
|
||||
"maxPlatScore": 1998
|
||||
},
|
||||
@@ -13504,6 +13563,7 @@
|
||||
"chartViewURL": "https://sdvx.in/ongeki/luna/01161luna.htm",
|
||||
"displayVersion": "オンゲキ R.E.D.",
|
||||
"inGameID": 8050,
|
||||
"isBonusTrack": false,
|
||||
"isReMaster": true,
|
||||
"maxPlatScore": 3026
|
||||
},
|
||||
@@ -13527,6 +13587,7 @@
|
||||
"chartViewURL": "https://sdvx.in/ongeki/01/01161mst.htm",
|
||||
"displayVersion": "オンゲキ PLUS",
|
||||
"inGameID": 190,
|
||||
"isBonusTrack": false,
|
||||
"maxPlatScore": 2474
|
||||
},
|
||||
"difficulty": "MASTER",
|
||||
@@ -13745,6 +13806,7 @@
|
||||
"chartViewURL": "https://sdvx.in/ongeki/luna/01167luna.htm",
|
||||
"displayVersion": "オンゲキ R.E.D.",
|
||||
"inGameID": 8052,
|
||||
"isBonusTrack": false,
|
||||
"isReMaster": false,
|
||||
"maxPlatScore": 3120
|
||||
},
|
||||
@@ -15103,6 +15165,7 @@
|
||||
"chartViewURL": "https://sdvx.in/ongeki/luna/01177luna.htm",
|
||||
"displayVersion": "オンゲキ bright MEMORY Act.1",
|
||||
"inGameID": 8101,
|
||||
"isBonusTrack": false,
|
||||
"isReMaster": true,
|
||||
"maxPlatScore": 2586
|
||||
},
|
||||
@@ -15126,6 +15189,7 @@
|
||||
"chartViewURL": "https://sdvx.in/ongeki/01/01177mst.htm",
|
||||
"displayVersion": "オンゲキ PLUS",
|
||||
"inGameID": 205,
|
||||
"isBonusTrack": false,
|
||||
"maxPlatScore": 2124
|
||||
},
|
||||
"difficulty": "MASTER",
|
||||
@@ -15214,6 +15278,7 @@
|
||||
"chartViewURL": "https://sdvx.in/ongeki/luna/01180luna.htm",
|
||||
"displayVersion": "オンゲキ bright MEMORY Act.1",
|
||||
"inGameID": 8102,
|
||||
"isBonusTrack": false,
|
||||
"isReMaster": true,
|
||||
"maxPlatScore": 2806
|
||||
},
|
||||
@@ -15237,6 +15302,7 @@
|
||||
"chartViewURL": "https://sdvx.in/ongeki/01/01180mst.htm",
|
||||
"displayVersion": "オンゲキ PLUS",
|
||||
"inGameID": 206,
|
||||
"isBonusTrack": false,
|
||||
"maxPlatScore": 2568
|
||||
},
|
||||
"difficulty": "MASTER",
|
||||
@@ -15325,6 +15391,7 @@
|
||||
"chartViewURL": "https://sdvx.in/ongeki/luna/01179luna.htm",
|
||||
"displayVersion": "オンゲキ bright MEMORY Act.1",
|
||||
"inGameID": 8103,
|
||||
"isBonusTrack": false,
|
||||
"isReMaster": true,
|
||||
"maxPlatScore": 3326
|
||||
},
|
||||
@@ -15348,6 +15415,7 @@
|
||||
"chartViewURL": "https://sdvx.in/ongeki/01/01179mst.htm",
|
||||
"displayVersion": "オンゲキ PLUS",
|
||||
"inGameID": 207,
|
||||
"isBonusTrack": false,
|
||||
"maxPlatScore": 2690
|
||||
},
|
||||
"difficulty": "MASTER",
|
||||
@@ -16142,6 +16210,7 @@
|
||||
"chartViewURL": "https://sdvx.in/ongeki/luna/01188luna.htm",
|
||||
"displayVersion": "オンゲキ bright MEMORY Act.1",
|
||||
"inGameID": 8088,
|
||||
"isBonusTrack": false,
|
||||
"isReMaster": true,
|
||||
"maxPlatScore": 3088
|
||||
},
|
||||
@@ -16165,6 +16234,7 @@
|
||||
"chartViewURL": "https://sdvx.in/ongeki/01/01188mst.htm",
|
||||
"displayVersion": "オンゲキ PLUS",
|
||||
"inGameID": 215,
|
||||
"isBonusTrack": false,
|
||||
"maxPlatScore": 2618
|
||||
},
|
||||
"difficulty": "MASTER",
|
||||
@@ -18179,6 +18249,7 @@
|
||||
"chartViewURL": "https://sdvx.in/ongeki/luna/02017luna.htm",
|
||||
"displayVersion": "オンゲキ SUMMER PLUS",
|
||||
"inGameID": 8048,
|
||||
"isBonusTrack": false,
|
||||
"isReMaster": true,
|
||||
"maxPlatScore": 3410
|
||||
},
|
||||
@@ -18202,6 +18273,7 @@
|
||||
"chartViewURL": "https://sdvx.in/ongeki/02/02017mst.htm",
|
||||
"displayVersion": "オンゲキ SUMMER",
|
||||
"inGameID": 231,
|
||||
"isBonusTrack": false,
|
||||
"maxPlatScore": 2572
|
||||
},
|
||||
"difficulty": "MASTER",
|
||||
@@ -18290,6 +18362,7 @@
|
||||
"chartViewURL": "https://sdvx.in/ongeki/luna/02018luna.htm",
|
||||
"displayVersion": "オンゲキ bright MEMORY Act.1",
|
||||
"inGameID": 8104,
|
||||
"isBonusTrack": false,
|
||||
"isReMaster": true,
|
||||
"maxPlatScore": 3230
|
||||
},
|
||||
@@ -18313,6 +18386,7 @@
|
||||
"chartViewURL": "https://sdvx.in/ongeki/02/02018mst.htm",
|
||||
"displayVersion": "オンゲキ SUMMER",
|
||||
"inGameID": 232,
|
||||
"isBonusTrack": false,
|
||||
"maxPlatScore": 3028
|
||||
},
|
||||
"difficulty": "MASTER",
|
||||
@@ -18581,6 +18655,7 @@
|
||||
"chartViewURL": "https://sdvx.in/ongeki/luna/02022luna.htm",
|
||||
"displayVersion": "オンゲキ bright MEMORY Act.1",
|
||||
"inGameID": 8105,
|
||||
"isBonusTrack": false,
|
||||
"isReMaster": true,
|
||||
"maxPlatScore": 3388
|
||||
},
|
||||
@@ -18604,6 +18679,7 @@
|
||||
"chartViewURL": "https://sdvx.in/ongeki/02/02022mst.htm",
|
||||
"displayVersion": "オンゲキ SUMMER",
|
||||
"inGameID": 243,
|
||||
"isBonusTrack": false,
|
||||
"maxPlatScore": 2052
|
||||
},
|
||||
"difficulty": "MASTER",
|
||||
@@ -18782,6 +18858,7 @@
|
||||
"chartViewURL": "https://sdvx.in/ongeki/luna/02021luna.htm",
|
||||
"displayVersion": "オンゲキ bright MEMORY Act.1",
|
||||
"inGameID": 8106,
|
||||
"isBonusTrack": false,
|
||||
"isReMaster": true,
|
||||
"maxPlatScore": 2190
|
||||
},
|
||||
@@ -18805,6 +18882,7 @@
|
||||
"chartViewURL": "https://sdvx.in/ongeki/02/02021mst.htm",
|
||||
"displayVersion": "オンゲキ SUMMER",
|
||||
"inGameID": 238,
|
||||
"isBonusTrack": false,
|
||||
"maxPlatScore": 1508
|
||||
},
|
||||
"difficulty": "MASTER",
|
||||
@@ -18917,6 +18995,7 @@
|
||||
"chartViewURL": "https://sdvx.in/ongeki/luna/02025luna.htm",
|
||||
"displayVersion": "オンゲキ SUMMER",
|
||||
"inGameID": 8042,
|
||||
"isBonusTrack": false,
|
||||
"isReMaster": false,
|
||||
"maxPlatScore": 2214
|
||||
},
|
||||
@@ -18982,6 +19061,7 @@
|
||||
"chartViewURL": "https://sdvx.in/ongeki/luna/02026luna.htm",
|
||||
"displayVersion": "オンゲキ bright MEMORY Act.1",
|
||||
"inGameID": 8083,
|
||||
"isBonusTrack": false,
|
||||
"isReMaster": true,
|
||||
"maxPlatScore": 3558
|
||||
},
|
||||
@@ -19343,6 +19423,7 @@
|
||||
"chartViewURL": "https://sdvx.in/ongeki/luna/02031luna.htm",
|
||||
"displayVersion": "オンゲキ bright MEMORY Act.1",
|
||||
"inGameID": 8086,
|
||||
"isBonusTrack": false,
|
||||
"isReMaster": false,
|
||||
"maxPlatScore": 634
|
||||
},
|
||||
@@ -22452,6 +22533,7 @@
|
||||
"chartViewURL": "https://sdvx.in/ongeki/luna/02068luna.htm",
|
||||
"displayVersion": "オンゲキ SUMMER",
|
||||
"inGameID": 8043,
|
||||
"isBonusTrack": false,
|
||||
"isReMaster": false,
|
||||
"maxPlatScore": 2450
|
||||
},
|
||||
@@ -24571,6 +24653,7 @@
|
||||
"chartViewURL": "https://sdvx.in/ongeki/luna/02099luna.htm",
|
||||
"displayVersion": "オンゲキ Re:Fresh",
|
||||
"inGameID": 8188,
|
||||
"isBonusTrack": false,
|
||||
"isReMaster": false,
|
||||
"maxPlatScore": 3782
|
||||
},
|
||||
@@ -25671,6 +25754,7 @@
|
||||
"chartViewURL": "https://sdvx.in/ongeki/luna/02097luna.htm",
|
||||
"displayVersion": "オンゲキ SUMMER PLUS",
|
||||
"inGameID": 8044,
|
||||
"isBonusTrack": false,
|
||||
"isReMaster": false,
|
||||
"maxPlatScore": 1776
|
||||
},
|
||||
@@ -27088,6 +27172,7 @@
|
||||
"chartViewURL": "https://sdvx.in/ongeki/luna/02125luna.htm",
|
||||
"displayVersion": "オンゲキ SUMMER PLUS",
|
||||
"inGameID": 8045,
|
||||
"isBonusTrack": false,
|
||||
"isReMaster": false,
|
||||
"maxPlatScore": 1476
|
||||
},
|
||||
@@ -27446,6 +27531,7 @@
|
||||
"chartViewURL": "https://sdvx.in/ongeki/luna/02129luna.htm",
|
||||
"displayVersion": "オンゲキ R.E.D.",
|
||||
"inGameID": 8054,
|
||||
"isBonusTrack": false,
|
||||
"isReMaster": true,
|
||||
"maxPlatScore": 2748
|
||||
},
|
||||
@@ -27469,6 +27555,7 @@
|
||||
"chartViewURL": "https://sdvx.in/ongeki/02/02129mst.htm",
|
||||
"displayVersion": "オンゲキ SUMMER PLUS",
|
||||
"inGameID": 374,
|
||||
"isBonusTrack": false,
|
||||
"maxPlatScore": 2544
|
||||
},
|
||||
"difficulty": "MASTER",
|
||||
@@ -29758,6 +29845,7 @@
|
||||
"chartViewURL": "https://sdvx.in/ongeki/luna/02157luna.htm",
|
||||
"displayVersion": "オンゲキ SUMMER PLUS",
|
||||
"inGameID": 8046,
|
||||
"isBonusTrack": false,
|
||||
"isReMaster": false,
|
||||
"maxPlatScore": 2968
|
||||
},
|
||||
@@ -29781,6 +29869,7 @@
|
||||
"chartViewURL": "https://sdvx.in/ongeki/luna/02158luna.htm",
|
||||
"displayVersion": "オンゲキ SUMMER PLUS",
|
||||
"inGameID": 8047,
|
||||
"isBonusTrack": false,
|
||||
"isReMaster": false,
|
||||
"maxPlatScore": 5200
|
||||
},
|
||||
@@ -30358,6 +30447,7 @@
|
||||
"chartViewURL": "https://sdvx.in/ongeki/luna/02165luna.htm",
|
||||
"displayVersion": "オンゲキ bright MEMORY Act.2",
|
||||
"inGameID": 8160,
|
||||
"isBonusTrack": false,
|
||||
"isReMaster": false,
|
||||
"maxPlatScore": 4572
|
||||
},
|
||||
@@ -31903,6 +31993,7 @@
|
||||
"chartViewURL": "https://sdvx.in/ongeki/luna/03001luna.htm",
|
||||
"displayVersion": "オンゲキ R.E.D. PLUS",
|
||||
"inGameID": 8061,
|
||||
"isBonusTrack": false,
|
||||
"isReMaster": true,
|
||||
"maxPlatScore": 3006
|
||||
},
|
||||
@@ -31926,6 +32017,7 @@
|
||||
"chartViewURL": "https://sdvx.in/ongeki/03/03001mst.htm",
|
||||
"displayVersion": "オンゲキ R.E.D.",
|
||||
"inGameID": 413,
|
||||
"isBonusTrack": false,
|
||||
"maxPlatScore": 2418
|
||||
},
|
||||
"difficulty": "MASTER",
|
||||
@@ -32843,6 +32935,7 @@
|
||||
"chartViewURL": "https://sdvx.in/ongeki/luna/03010luna.htm",
|
||||
"displayVersion": "オンゲキ R.E.D.",
|
||||
"inGameID": 8049,
|
||||
"isBonusTrack": false,
|
||||
"isReMaster": false,
|
||||
"maxPlatScore": 4708
|
||||
},
|
||||
@@ -35818,6 +35911,7 @@
|
||||
"chartViewURL": "https://sdvx.in/ongeki/luna/03052luna.htm",
|
||||
"displayVersion": "オンゲキ R.E.D.",
|
||||
"inGameID": 8051,
|
||||
"isBonusTrack": false,
|
||||
"isReMaster": false,
|
||||
"maxPlatScore": 2586
|
||||
},
|
||||
@@ -36891,6 +36985,7 @@
|
||||
"chartViewURL": "https://sdvx.in/ongeki/luna/03067luna.htm",
|
||||
"displayVersion": "オンゲキ bright MEMORY Act.2",
|
||||
"inGameID": 8172,
|
||||
"isBonusTrack": false,
|
||||
"isReMaster": false,
|
||||
"maxPlatScore": 2758
|
||||
},
|
||||
@@ -39798,6 +39893,7 @@
|
||||
"chartViewURL": "https://sdvx.in/ongeki/luna/03100luna.htm",
|
||||
"displayVersion": "オンゲキ R.E.D. PLUS",
|
||||
"inGameID": 8064,
|
||||
"isBonusTrack": false,
|
||||
"isReMaster": true,
|
||||
"maxPlatScore": 1616
|
||||
},
|
||||
@@ -39821,6 +39917,7 @@
|
||||
"chartViewURL": "https://sdvx.in/ongeki/03/03100mst.htm",
|
||||
"displayVersion": "オンゲキ R.E.D. PLUS",
|
||||
"inGameID": 509,
|
||||
"isBonusTrack": false,
|
||||
"maxPlatScore": 2610
|
||||
},
|
||||
"difficulty": "MASTER",
|
||||
@@ -40000,6 +40097,7 @@
|
||||
"chartViewURL": "https://sdvx.in/ongeki/luna/03102luna.htm",
|
||||
"displayVersion": "オンゲキ bright MEMORY Act.3",
|
||||
"inGameID": 8178,
|
||||
"isBonusTrack": false,
|
||||
"isReMaster": false,
|
||||
"maxPlatScore": 3118
|
||||
},
|
||||
@@ -40577,6 +40675,7 @@
|
||||
"chartViewURL": "https://sdvx.in/ongeki/luna/03106luna.htm",
|
||||
"displayVersion": "オンゲキ R.E.D. PLUS",
|
||||
"inGameID": 8057,
|
||||
"isBonusTrack": false,
|
||||
"isReMaster": false,
|
||||
"maxPlatScore": 4422
|
||||
},
|
||||
@@ -40689,6 +40788,7 @@
|
||||
"chartViewURL": "https://sdvx.in/ongeki/luna/03109luna.htm",
|
||||
"displayVersion": "オンゲキ R.E.D. PLUS",
|
||||
"inGameID": 8059,
|
||||
"isBonusTrack": false,
|
||||
"isReMaster": false,
|
||||
"maxPlatScore": 3172
|
||||
},
|
||||
@@ -45301,6 +45401,7 @@
|
||||
"chartViewURL": "https://sdvx.in/ongeki/luna/03158luna.htm",
|
||||
"displayVersion": "オンゲキ R.E.D. PLUS",
|
||||
"inGameID": 8060,
|
||||
"isBonusTrack": false,
|
||||
"isReMaster": false,
|
||||
"maxPlatScore": 5740
|
||||
},
|
||||
@@ -47526,6 +47627,7 @@
|
||||
"chartViewURL": "https://sdvx.in/ongeki/luna/03176luna.htm",
|
||||
"displayVersion": "オンゲキ bright MEMORY Act.3",
|
||||
"inGameID": 8180,
|
||||
"isBonusTrack": false,
|
||||
"isReMaster": true,
|
||||
"maxPlatScore": 3902
|
||||
},
|
||||
@@ -47812,6 +47914,7 @@
|
||||
"chartViewURL": "https://sdvx.in/ongeki/luna/03179luna.htm",
|
||||
"displayVersion": "オンゲキ bright MEMORY Act.1",
|
||||
"inGameID": 8107,
|
||||
"isBonusTrack": false,
|
||||
"isReMaster": true,
|
||||
"maxPlatScore": 4180
|
||||
},
|
||||
@@ -47835,6 +47938,7 @@
|
||||
"chartViewURL": "https://sdvx.in/ongeki/03/03179mst.htm",
|
||||
"displayVersion": "オンゲキ R.E.D. PLUS",
|
||||
"inGameID": 589,
|
||||
"isBonusTrack": false,
|
||||
"maxPlatScore": 4730
|
||||
},
|
||||
"difficulty": "MASTER",
|
||||
@@ -47924,6 +48028,7 @@
|
||||
"chartViewURL": "https://sdvx.in/ongeki/luna/03180luna.htm",
|
||||
"displayVersion": "オンゲキ bright MEMORY Act.3",
|
||||
"inGameID": 8139,
|
||||
"isBonusTrack": false,
|
||||
"isReMaster": false,
|
||||
"maxPlatScore": 5006
|
||||
},
|
||||
@@ -48209,6 +48314,7 @@
|
||||
"chartViewURL": "https://sdvx.in/ongeki/luna/03183luna.htm",
|
||||
"displayVersion": "オンゲキ bright",
|
||||
"inGameID": 8081,
|
||||
"isBonusTrack": false,
|
||||
"isReMaster": false,
|
||||
"maxPlatScore": 3184
|
||||
},
|
||||
@@ -48679,6 +48785,7 @@
|
||||
"chartViewURL": "https://sdvx.in/ongeki/luna/03188luna.htm",
|
||||
"displayVersion": "オンゲキ bright MEMORY Act.1",
|
||||
"inGameID": 8087,
|
||||
"isBonusTrack": false,
|
||||
"isReMaster": false,
|
||||
"maxPlatScore": 3712
|
||||
},
|
||||
@@ -48792,6 +48899,7 @@
|
||||
"chartViewURL": "https://sdvx.in/ongeki/luna/03189luna.htm",
|
||||
"displayVersion": "オンゲキ Re:Fresh",
|
||||
"inGameID": 8185,
|
||||
"isBonusTrack": false,
|
||||
"isReMaster": false,
|
||||
"maxPlatScore": 1754
|
||||
},
|
||||
@@ -49123,6 +49231,7 @@
|
||||
"chartViewURL": "https://sdvx.in/ongeki/luna/04002luna.htm",
|
||||
"displayVersion": "オンゲキ bright",
|
||||
"inGameID": 8079,
|
||||
"isBonusTrack": false,
|
||||
"isReMaster": true,
|
||||
"maxPlatScore": 2886
|
||||
},
|
||||
@@ -50288,6 +50397,7 @@
|
||||
"chartViewURL": "https://sdvx.in/ongeki/luna/04016luna.htm",
|
||||
"displayVersion": "オンゲキ bright MEMORY Act.1",
|
||||
"inGameID": 8072,
|
||||
"isBonusTrack": false,
|
||||
"isReMaster": true,
|
||||
"maxPlatScore": 2690
|
||||
},
|
||||
@@ -50311,6 +50421,7 @@
|
||||
"chartViewURL": "https://sdvx.in/ongeki/04/04016mst.htm",
|
||||
"displayVersion": "オンゲキ bright",
|
||||
"inGameID": 615,
|
||||
"isBonusTrack": false,
|
||||
"maxPlatScore": 2798
|
||||
},
|
||||
"difficulty": "MASTER",
|
||||
@@ -51316,6 +51427,7 @@
|
||||
"chartViewURL": "https://sdvx.in/ongeki/luna/04023luna.htm",
|
||||
"displayVersion": "オンゲキ bright",
|
||||
"inGameID": 8080,
|
||||
"isBonusTrack": false,
|
||||
"isReMaster": false,
|
||||
"maxPlatScore": 2240
|
||||
},
|
||||
@@ -56157,6 +56269,7 @@
|
||||
"chartViewURL": "https://sdvx.in/ongeki/luna/04070luna.htm",
|
||||
"displayVersion": "オンゲキ bright",
|
||||
"inGameID": 8069,
|
||||
"isBonusTrack": false,
|
||||
"isReMaster": false,
|
||||
"maxPlatScore": 2114
|
||||
},
|
||||
@@ -57182,6 +57295,7 @@
|
||||
"chartViewURL": "https://sdvx.in/ongeki/luna/04078luna.htm",
|
||||
"displayVersion": "オンゲキ bright MEMORY Act.2",
|
||||
"inGameID": 8168,
|
||||
"isBonusTrack": false,
|
||||
"isReMaster": true,
|
||||
"maxPlatScore": 2438
|
||||
},
|
||||
@@ -57205,6 +57319,7 @@
|
||||
"chartViewURL": "https://sdvx.in/ongeki/04/04078mst.htm",
|
||||
"displayVersion": "オンゲキ bright",
|
||||
"inGameID": 676,
|
||||
"isBonusTrack": false,
|
||||
"maxPlatScore": 2026
|
||||
},
|
||||
"difficulty": "MASTER",
|
||||
@@ -57852,6 +57967,7 @@
|
||||
"chartViewURL": "https://sdvx.in/ongeki/luna/04086luna.htm",
|
||||
"displayVersion": "オンゲキ bright MEMORY Act.1",
|
||||
"inGameID": 8084,
|
||||
"isBonusTrack": false,
|
||||
"isReMaster": true,
|
||||
"maxPlatScore": 5000
|
||||
},
|
||||
@@ -59719,6 +59835,7 @@
|
||||
"chartViewURL": "https://sdvx.in/ongeki/luna/04102luna.htm",
|
||||
"displayVersion": "オンゲキ bright MEMORY Act.1",
|
||||
"inGameID": 8082,
|
||||
"isBonusTrack": false,
|
||||
"isReMaster": false,
|
||||
"maxPlatScore": 3060
|
||||
},
|
||||
@@ -59765,6 +59882,7 @@
|
||||
"chartViewURL": "https://sdvx.in/ongeki/luna/04103luna.htm",
|
||||
"displayVersion": "オンゲキ bright MEMORY Act.1",
|
||||
"inGameID": 8071,
|
||||
"isBonusTrack": false,
|
||||
"isReMaster": false,
|
||||
"maxPlatScore": 2126
|
||||
},
|
||||
@@ -61678,6 +61796,7 @@
|
||||
"chartViewURL": "https://sdvx.in/ongeki/luna/04126luna.htm",
|
||||
"displayVersion": "オンゲキ bright MEMORY Act.1",
|
||||
"inGameID": 8070,
|
||||
"isBonusTrack": false,
|
||||
"isReMaster": false,
|
||||
"maxPlatScore": 1194
|
||||
},
|
||||
@@ -61749,6 +61868,7 @@
|
||||
"chartViewURL": "https://sdvx.in/ongeki/luna/04127luna.htm",
|
||||
"displayVersion": "オンゲキ bright MEMORY Act.2",
|
||||
"inGameID": 8170,
|
||||
"isBonusTrack": false,
|
||||
"isReMaster": true,
|
||||
"maxPlatScore": 3502
|
||||
},
|
||||
@@ -67711,6 +67831,7 @@
|
||||
"chartViewURL": "https://sdvx.in/ongeki/luna/04184luna.htm",
|
||||
"displayVersion": "オンゲキ bright MEMORY Act.1",
|
||||
"inGameID": 8089,
|
||||
"isBonusTrack": false,
|
||||
"isReMaster": false,
|
||||
"maxPlatScore": 3776
|
||||
},
|
||||
@@ -67802,6 +67923,7 @@
|
||||
"chartViewURL": "https://sdvx.in/ongeki/luna/04180luna.htm",
|
||||
"displayVersion": "オンゲキ bright MEMORY Act.3",
|
||||
"inGameID": 8145,
|
||||
"isBonusTrack": false,
|
||||
"isReMaster": false,
|
||||
"maxPlatScore": 5798
|
||||
},
|
||||
@@ -67931,6 +68053,7 @@
|
||||
"chartViewURL": "https://sdvx.in/ongeki/luna/04185luna.htm",
|
||||
"displayVersion": "オンゲキ bright MEMORY Act.1",
|
||||
"inGameID": 8090,
|
||||
"isBonusTrack": false,
|
||||
"isReMaster": false,
|
||||
"maxPlatScore": 5400
|
||||
},
|
||||
@@ -68760,6 +68883,7 @@
|
||||
"chartViewURL": "https://sdvx.in/ongeki/luna/01038luna2.htm",
|
||||
"displayVersion": "オンゲキ bright MEMORY Act.2",
|
||||
"inGameID": 8003,
|
||||
"isBonusTrack": false,
|
||||
"isReMaster": false,
|
||||
"maxPlatScore": 2146
|
||||
},
|
||||
@@ -72692,6 +72816,7 @@
|
||||
"chartViewURL": "https://sdvx.in/ongeki/luna/04215luna.htm",
|
||||
"displayVersion": "オンゲキ bright MEMORY Act.2",
|
||||
"inGameID": 8167,
|
||||
"isBonusTrack": false,
|
||||
"isReMaster": true,
|
||||
"maxPlatScore": 2322
|
||||
},
|
||||
@@ -72715,6 +72840,7 @@
|
||||
"chartViewURL": "https://sdvx.in/ongeki/04/04215mst.htm",
|
||||
"displayVersion": "オンゲキ bright MEMORY Act.2",
|
||||
"inGameID": 908,
|
||||
"isBonusTrack": false,
|
||||
"maxPlatScore": 1944
|
||||
},
|
||||
"difficulty": "MASTER",
|
||||
@@ -73699,6 +73825,7 @@
|
||||
"chartViewURL": "https://sdvx.in/ongeki/luna/04223luna.htm",
|
||||
"displayVersion": "オンゲキ Re:Fresh",
|
||||
"inGameID": 8177,
|
||||
"isBonusTrack": false,
|
||||
"isReMaster": true,
|
||||
"maxPlatScore": 4042
|
||||
},
|
||||
@@ -81221,6 +81348,7 @@
|
||||
"chartViewURL": "https://sdvx.in/ongeki/luna/04285luna.htm",
|
||||
"displayVersion": "オンゲキ bright MEMORY Act.3",
|
||||
"inGameID": 8175,
|
||||
"isBonusTrack": false,
|
||||
"isReMaster": true,
|
||||
"maxPlatScore": 2884
|
||||
},
|
||||
@@ -81435,6 +81563,7 @@
|
||||
"chartViewURL": "https://sdvx.in/ongeki/luna/04288luna.htm",
|
||||
"displayVersion": "オンゲキ bright MEMORY Act.3",
|
||||
"inGameID": 8169,
|
||||
"isBonusTrack": false,
|
||||
"isReMaster": false,
|
||||
"maxPlatScore": 2206
|
||||
},
|
||||
@@ -87428,6 +87557,7 @@
|
||||
"chartViewURL": "https://sdvx.in/ongeki/luna/04359luna.htm",
|
||||
"displayVersion": "オンゲキ bright MEMORY Act.3",
|
||||
"inGameID": 8181,
|
||||
"isBonusTrack": false,
|
||||
"isReMaster": false,
|
||||
"maxPlatScore": 4266
|
||||
},
|
||||
@@ -87511,6 +87641,7 @@
|
||||
"chartViewURL": "https://sdvx.in/ongeki/luna/04360luna.htm",
|
||||
"displayVersion": "オンゲキ bright MEMORY Act.3",
|
||||
"inGameID": 8182,
|
||||
"isBonusTrack": false,
|
||||
"isReMaster": false,
|
||||
"maxPlatScore": 1946
|
||||
},
|
||||
@@ -88312,6 +88443,7 @@
|
||||
"chartViewURL": "https://sdvx.in/ongeki/luna/05017luna.htm",
|
||||
"displayVersion": "オンゲキ Re:Fresh",
|
||||
"inGameID": 8187,
|
||||
"isBonusTrack": false,
|
||||
"isReMaster": true,
|
||||
"maxPlatScore": 3066
|
||||
},
|
||||
|
||||
+24
-2
@@ -38377,7 +38377,7 @@
|
||||
"slug": "refreshomni-lunatic",
|
||||
"title": "LUNATIC (Re:Fresh Omnimix)",
|
||||
"versionFilter": ["refreshOmni"],
|
||||
"where": "chart.data->>'isReMaster' = 'false' AND chart.difficulty = 'LUNATIC'"
|
||||
"where": "chart.data->>'isBonusTrack' = 'false' AND chart.data->>'isReMaster' = 'false' AND chart.difficulty = 'LUNATIC'"
|
||||
},
|
||||
{
|
||||
"game": "ongeki",
|
||||
@@ -38399,6 +38399,17 @@
|
||||
"slug": "refresh-lunatic",
|
||||
"title": "LUNATIC (Re:Fresh)",
|
||||
"versionFilter": ["refresh"],
|
||||
"where": "chart.data->>'isBonusTrack' = 'false' AND chart.data->>'isReMaster' = 'false' AND chart.difficulty = 'LUNATIC'"
|
||||
},
|
||||
{
|
||||
"game": "ongeki",
|
||||
"id": "F19d35f0cf2aa17a39b1",
|
||||
"inactive": true,
|
||||
"legacyFolderID": "F2de5fd8f784e94c6e2c60c5960b1306aadb76c54ce9b502421813cfa66532a36",
|
||||
"searchTerms": [],
|
||||
"slug": "refresh-lunatic-old",
|
||||
"title": "LUNATIC (Re:Fresh) (Old)",
|
||||
"versionFilter": ["refresh"],
|
||||
"where": "chart.data->>'isReMaster' = 'false' AND chart.difficulty = 'LUNATIC'"
|
||||
},
|
||||
{
|
||||
@@ -38519,7 +38530,7 @@
|
||||
"slug": "refreshomni-lunatic-remaster",
|
||||
"title": "Re:MASTER (Re:Fresh Omnimix)",
|
||||
"versionFilter": ["refreshOmni"],
|
||||
"where": "chart.data->>'isReMaster' = 'true' AND chart.difficulty = 'LUNATIC'"
|
||||
"where": "chart.data->>'isBonusTrack' = 'false' AND chart.data->>'isReMaster' = 'true' AND chart.difficulty = 'LUNATIC'"
|
||||
},
|
||||
{
|
||||
"game": "ongeki",
|
||||
@@ -38541,6 +38552,17 @@
|
||||
"slug": "refresh-lunatic-remaster",
|
||||
"title": "Re:MASTER (Re:Fresh)",
|
||||
"versionFilter": ["refresh"],
|
||||
"where": "chart.data->>'isBonusTrack' = 'false' AND chart.data->>'isReMaster' = 'true' AND chart.difficulty = 'LUNATIC'"
|
||||
},
|
||||
{
|
||||
"game": "ongeki",
|
||||
"id": "F19d35f0cf2a28977612",
|
||||
"inactive": true,
|
||||
"legacyFolderID": "F591906452a12c984f9a5e436543802e493d15782b678b518dbeba3705720c77c",
|
||||
"searchTerms": [],
|
||||
"slug": "refresh-lunatic-remaster-old",
|
||||
"title": "Re:MASTER (Re:Fresh) (Old)",
|
||||
"versionFilter": ["refresh"],
|
||||
"where": "chart.data->>'isReMaster' = 'true' AND chart.difficulty = 'LUNATIC'"
|
||||
},
|
||||
{
|
||||
|
||||
@@ -9932,7 +9932,7 @@
|
||||
},
|
||||
"id": "S19d35e101d442f45394",
|
||||
"legacySongID": 817,
|
||||
"searchTerms": [],
|
||||
"searchTerms": ["Loctest"],
|
||||
"title": "Perfect Shining!!"
|
||||
},
|
||||
{
|
||||
|
||||
@@ -103,6 +103,9 @@ The following judgements are defined:
|
||||
| `xverse` | X-VERSE |
|
||||
| `xverse-intl` | X-VERSE International |
|
||||
| `xverse-omni` | X-VERSE Omnimix |
|
||||
| `xversex` | X-VERSE-X |
|
||||
| `xversex-intl` | X-VERSE-X International |
|
||||
| `xversex-omni` | X-VERSE-X Omnimix |
|
||||
|
||||
## Supported Match Types
|
||||
|
||||
|
||||
@@ -95,6 +95,7 @@ The default rating algorithm is `jubility`.
|
||||
| `festo` | festo |
|
||||
| `festo-omni` | festo Omnimix |
|
||||
| `ave` | Ave. |
|
||||
| `beyond` | beyond the Ave. |
|
||||
|
||||
## Supported Match Types
|
||||
|
||||
|
||||
@@ -91,7 +91,7 @@ The default rating algorithm is `naiveRating`.
|
||||
|
||||
| Name | Type | Values |
|
||||
| :: | :: | :: |
|
||||
| `colour` | DERIVED | BLUE, GREEN, ORANGE, RED, PURPLE, COPPER, SILVER, GOLD, PLATINUM, RAINBOW, RAINBOW_SHINY, RAINBOW_EX
|
||||
| `colour` | DERIVED | BLUE, GREEN, ORANGE, RED, PURPLE, COPPER, SILVER, GOLD, PLATINUM, RAINBOW, RAINBOW_SHINY, RAINBOW_EX, RAINBOW_EX_TRUE
|
||||
|
||||
## Versions
|
||||
|
||||
@@ -110,7 +110,16 @@ The default rating algorithm is `naiveRating`.
|
||||
- `inGameID`
|
||||
|
||||
### Song Title Matching
|
||||
There are numerous songs with non-unique names (e.g. Singularity, Singularity and Singularity), but this can be resolved by providing the `artist` field. The only exception is Perfect Shining, which uniquely has two LUNATIC charts and has to be matched by `inGameID`:
|
||||
There are several songs with non-unique names:
|
||||
|
||||
- LUNATIC 0 (Loctest chart) `inGameID: 8003`
|
||||
- LUNATIC 13+ (Re:Master) `inGameID: 8091`
|
||||
- Singularity (technoplanet) `inGameID: 391`
|
||||
- Singularity (ETIA.「Arcaea」) `inGameID: 454`
|
||||
- Singularity (SEGA SOUND STAFF「セガNET麻雀 MJ」) `inGameID: 516`
|
||||
|
||||
- Hand in Hand (livetune) `inGameID: 380`
|
||||
- Hand in Hand (ユーフィリア(CV:高橋 李依)「アンジュ・ヴィエルジュ」) `inGameID: 212`
|
||||
|
||||
- Perfect_Shining!! LUNATIC 0 (Loctest chart) `inGameID: 8003`
|
||||
- Perfect_Shining!! LUNATIC 13+ (Re:Master) `inGameID: 8091`
|
||||
|
||||
Most of these conflicts can be resolved by providing the `artist` field; the only exception is Perfect Shining, which uniquely has two LUNATIC charts and has to be matched by `inGameID`.
|
||||
|
||||
@@ -137,13 +137,12 @@
|
||||
<div class="footer">
|
||||
<div class="credit">
|
||||
<span
|
||||
>created by <a href="https://github.com/zkldik</a>, homepage
|
||||
>created by <a href="https://github.com/zkldi">zkldi</a>, homepage
|
||||
by
|
||||
<a href="https://pfy.ch">pfych</a>
|
||||
</span>
|
||||
</div>
|
||||
<div class="links">
|
||||
<a href="https://ko-fi.com/zkldiarget="_blank">Donate</a>
|
||||
<a href="https://github.com/zkldi/Tachi" target="_blank">GitHub</a>
|
||||
<a href="https://docs.tachi.ac/">Documentation</a>
|
||||
<a href="https://boku.tachi.ac/credits">Credits</a>
|
||||
|
||||
@@ -325,6 +325,13 @@ function ImportInfoDisplayer({ game }: { game: GameGroup }) {
|
||||
);
|
||||
} else if (game === "maimaidx") {
|
||||
Content.unshift(
|
||||
<ImportInfoCard
|
||||
desc="Automatically import scores, whenever you get them."
|
||||
href="rizu"
|
||||
key="Rizu"
|
||||
moreInfo="This is the recommended way to import maimai DX scores; data is submitted at the end of each play."
|
||||
name="Rizu"
|
||||
/>,
|
||||
<ImportInfoCard
|
||||
desc="Use your data from maimai DX NET."
|
||||
href="kt-maimaidx-site-importer"
|
||||
|
||||
@@ -0,0 +1,47 @@
|
||||
import useSetSubheader from "#components/layout/header/useSetSubheader";
|
||||
import Divider from "#components/util/Divider";
|
||||
import ExternalLink from "#components/util/ExternalLink";
|
||||
import { TachiConfig } from "#lib/config";
|
||||
import React from "react";
|
||||
import Alert from "react-bootstrap/Alert";
|
||||
|
||||
export default function RizuPage() {
|
||||
useSetSubheader(["Import Scores", "Rizu"]);
|
||||
|
||||
return (
|
||||
<div>
|
||||
<h1 className="text-center mb-4">What is Rizu?</h1>
|
||||
<div>
|
||||
Rizu automatically sends maimai DX scores to a server. {TachiConfig.NAME} is
|
||||
compatible with what Rizu sends, so you can use it to submit scores!
|
||||
</div>
|
||||
<Divider />
|
||||
<h1 className="text-center my-4">Setup Instructions</h1>
|
||||
<ol className="instructions-list">
|
||||
<li>
|
||||
Download the latest version of <code>Rizu-MelonLoader-vVERSION.zip</code>{" "}
|
||||
<ExternalLink href="https://gitea.tendokyu.moe/beerpsi/Rizu/releases/latest">
|
||||
here
|
||||
</ExternalLink>
|
||||
.
|
||||
</li>
|
||||
<li>
|
||||
Download your <code>Rizu.cfg</code> config file{" "}
|
||||
<ExternalLink href="/client-file-flow/CXRizu">here</ExternalLink>
|
||||
. <br />
|
||||
<Alert className="mt-2" variant="warning">
|
||||
This file contains an API Key, which is meant to be kept secret!
|
||||
</Alert>
|
||||
</li>
|
||||
<li>
|
||||
Follow the installation instructions on{" "}
|
||||
<ExternalLink href="https://gitea.tendokyu.moe/beerpsi/Rizu#melonloader">
|
||||
Tendokyu
|
||||
</ExternalLink>
|
||||
.
|
||||
</li>
|
||||
<li>Your scores are now automatically uploaded to {TachiConfig.NAME}!</li>
|
||||
</ol>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
@@ -0,0 +1,205 @@
|
||||
import useSetSubheader from "#components/layout/header/useSetSubheader";
|
||||
import Divider from "#components/util/Divider";
|
||||
import { UserContext } from "#context/UserContext";
|
||||
import { TachiConfig } from "#lib/config";
|
||||
import { Contributors } from "#util/constants/contributors";
|
||||
import { RFA } from "#util/misc";
|
||||
import React, { useContext, useState } from "react";
|
||||
import { Link } from "react-router-dom";
|
||||
|
||||
export default function CreditsPage() {
|
||||
useSetSubheader("Credits");
|
||||
|
||||
const [alt, setAlt] = useState(false);
|
||||
const [whatTheHell, setWhatTheHell] = useState(0);
|
||||
|
||||
const { user } = useContext(UserContext);
|
||||
|
||||
function a(normal: string | JSX.Element, ...altStr: (string | JSX.Element)[]) {
|
||||
if (!alt) {
|
||||
return normal;
|
||||
} else if (whatTheHell < 0) {
|
||||
return normal;
|
||||
}
|
||||
|
||||
return RFA(altStr);
|
||||
}
|
||||
|
||||
return (
|
||||
<div style={{ fontSize: "1.15rem" }}>
|
||||
<p>
|
||||
{a(
|
||||
<>
|
||||
{TachiConfig.NAME} has been the work of many people, and many more
|
||||
contributors. None of this would be possible without these people.
|
||||
</>,
|
||||
"Funding for this program was made possible by by by by by-",
|
||||
`${TachiConfig.NAME} actually just appeared here one day, and we're not sure how.`,
|
||||
`Actually, we just ran npm install ${TachiConfig.NAME}.`,
|
||||
"To be honest, we had a surplus of monkeys and typewriters.",
|
||||
)}
|
||||
</p>
|
||||
<Divider />
|
||||
<p>
|
||||
If you want to support {TachiConfig.NAME} development, see{" "}
|
||||
<Link to="/support">Support</Link>.
|
||||
</p>
|
||||
<Divider />
|
||||
|
||||
<div className="mt-4">
|
||||
<h1 className="user-select-none">
|
||||
De
|
||||
<span
|
||||
className="credits-easter-egg"
|
||||
onClick={() => {
|
||||
if (alt) {
|
||||
// Force a different RFA
|
||||
// by incrementing a random
|
||||
// variable
|
||||
setWhatTheHell(whatTheHell + 1);
|
||||
} else {
|
||||
setAlt(true);
|
||||
}
|
||||
}}
|
||||
>
|
||||
v
|
||||
</span>{" "}
|
||||
Team
|
||||
</h1>
|
||||
|
||||
<ul>
|
||||
<li>
|
||||
{a(
|
||||
"Lead Dev",
|
||||
"Rules Of Hooks Violator",
|
||||
"ABBA Enthusiast",
|
||||
"Nutcase",
|
||||
"IIDX 'player'",
|
||||
)}
|
||||
: <strong>zk</strong>
|
||||
</li>
|
||||
<li>
|
||||
{a(
|
||||
"Infrastructure & Dev/Ops",
|
||||
"Professional YAML Editor",
|
||||
"Professional nginx.conf Editor",
|
||||
"'What do you mean you rm -rf'd that folder?'",
|
||||
"WintOr",
|
||||
"Frog Lover",
|
||||
)}
|
||||
: <strong>winter</strong>
|
||||
<br />
|
||||
<small>Also the reason I even started learning how to program.</small>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div className="mt-6">
|
||||
<h1>Significant Contributors</h1>
|
||||
|
||||
<p>
|
||||
These people have contributed a significant amount of their time to{" "}
|
||||
{TachiConfig.NAME}.
|
||||
</p>
|
||||
|
||||
<ul>
|
||||
<li>
|
||||
{a(
|
||||
"Tachi Discord Bot Work + Homepage",
|
||||
"oooOoooo you want to use redux oooo",
|
||||
"Java Skirt Boy",
|
||||
"Urbit Enjoyer",
|
||||
)}
|
||||
: <strong>pfych</strong>
|
||||
</li>
|
||||
<li>
|
||||
{a("Mikado", "SDVX Pocky")}: <strong>adamaq01</strong>
|
||||
</li>
|
||||
<li>
|
||||
{a("Fervidex", "IIDX Black Magic")}: <strong>aixxe</strong>
|
||||
</li>
|
||||
<li>
|
||||
{a("Barbatos", "SDVX Black Magic")}: <strong>Arm1stice</strong>
|
||||
</li>
|
||||
<li>
|
||||
{a(
|
||||
"Graphic Design",
|
||||
"Adobe Suite Purchaser",
|
||||
"Squiggly Line Drawer",
|
||||
"Straight Line Drawer",
|
||||
"Ratboy Genius",
|
||||
"Large Headded Individual",
|
||||
"The Ace Of Craigs",
|
||||
)}
|
||||
: <strong>Craig</strong>
|
||||
</li>
|
||||
<li>
|
||||
{a(
|
||||
"Database Management, Various features, generally just a hell of a lot of work",
|
||||
"This guy put emojis in my codebase",
|
||||
"Emacs Evangelist",
|
||||
)}
|
||||
: <strong>cg505</strong>
|
||||
</li>
|
||||
<li>
|
||||
{a("KsHook", "Konaste Black Magic")}: <strong>Emma</strong>
|
||||
</li>
|
||||
<li>
|
||||
{a("APIs, Databasing", "All Black Magic")}: <strong>Felix</strong>
|
||||
</li>
|
||||
<li>
|
||||
{a("APIs, Massive Dev Support", "Have you tried Elixir?")}:{" "}
|
||||
<strong>haste</strong>
|
||||
</li>
|
||||
<li>
|
||||
{a("Chunitachi", "CHUNITHM Black Magic")}: <strong>tomatosoup</strong>
|
||||
</li>
|
||||
<li>
|
||||
{a(
|
||||
"Dev, Maths Consultation",
|
||||
"Functional Programming Evangelist",
|
||||
"Born On The Cob",
|
||||
"Crunchy Nut Enjoyer",
|
||||
"Has An Afro",
|
||||
)}
|
||||
: <strong>Percyqaz</strong>
|
||||
</li>
|
||||
<li>
|
||||
{a("Server", "Ethereum Mining Solutions")}: <strong>viddy</strong>
|
||||
<br />
|
||||
<small>Yes, the entire server, networking costs, everything.</small>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div className="mt-6">
|
||||
<h1>Contributors</h1>
|
||||
|
||||
<p>These people have contributed to {TachiConfig.NAME}.</p>
|
||||
|
||||
<ul>
|
||||
{Contributors.slice(0)
|
||||
.sort((a, b) => a.localeCompare(b))
|
||||
.map((e) => (
|
||||
<li key={e}>{e}</li>
|
||||
))}
|
||||
</ul>
|
||||
</div>
|
||||
<div className="mt-6">
|
||||
<h1>And...</h1>
|
||||
|
||||
<p>
|
||||
Everyone who was part of the beta.
|
||||
{user?.badges.some((x) => x === "beta" || x === "alpha")
|
||||
? " (That's you!)"
|
||||
: ""}
|
||||
</p>
|
||||
|
||||
<p>
|
||||
Everyone in the <code>#dev</code> chat for the constant advice and comedy gold.
|
||||
</p>
|
||||
</div>
|
||||
<span className="text-body-secondary" style={{ fontSize: "0.2rem" }}>
|
||||
Click the V in Dev Team.
|
||||
</span>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
@@ -1,18 +1,8 @@
|
||||
import { TachiConfig } from "#lib/config";
|
||||
import React, { useEffect, useState } from "react";
|
||||
import React from "react";
|
||||
import { type UserDocument } from "tachi-common";
|
||||
|
||||
export default function SupportBanner({ user }: { user: UserDocument }) {
|
||||
// const { data, error } = useApiQuery<{ scores: integer; sessions: integer }>(
|
||||
// `/users/${user.id}/stats`,
|
||||
// );
|
||||
|
||||
const [show, _setShow] = useState(localStorage.getItem("SHOW_SUPPORT_TACHI") === "true");
|
||||
|
||||
useEffect(() => {
|
||||
localStorage.setItem("SHOW_SUPPORT_TACHI", `${show}`);
|
||||
}, [show]);
|
||||
|
||||
// thank you
|
||||
if (user.isSupporter) {
|
||||
return (
|
||||
@@ -23,69 +13,4 @@ export default function SupportBanner({ user }: { user: UserDocument }) {
|
||||
}
|
||||
|
||||
return <></>;
|
||||
|
||||
// if (!data) {
|
||||
// return <></>;
|
||||
// }
|
||||
|
||||
// if (error) {
|
||||
// return <></>;
|
||||
// }
|
||||
|
||||
// if (data.scores < 1_000) {
|
||||
// return <></>;
|
||||
// }
|
||||
|
||||
// // too soon to bother
|
||||
// if (Date.now() - user.joinDate < ONE_DAY * 7) {
|
||||
// return <></>;
|
||||
// }
|
||||
|
||||
// if (!show) {
|
||||
// return (
|
||||
// <div
|
||||
// className="d-flex w-100 justify-content-center flex-column align-items-center"
|
||||
// onClick={() => setShow(true)}
|
||||
// >
|
||||
// <div>Support us? ❤️</div>
|
||||
// <div>
|
||||
// <Icon type="chevron-down" />
|
||||
// </div>
|
||||
// </div>
|
||||
// );
|
||||
// }
|
||||
|
||||
// return (
|
||||
// <Card
|
||||
// className="mb-8"
|
||||
// footer={
|
||||
// <div className="d-flex w-100 justify-content-center" onClick={() => setShow(false)}>
|
||||
// <Icon type="chevron-up" />
|
||||
// </div>
|
||||
// }
|
||||
// header={
|
||||
// <span style={{ fontSize: "1.55rem" }}>
|
||||
// You've set {data.scores} scores and had {data.sessions} sessions, wew!
|
||||
// </span>
|
||||
// }
|
||||
// >
|
||||
// <span style={{ fontSize: "1.15rem" }}>
|
||||
// {TachiConfig.NAME} is a passion project, and is primarily developed by one person.
|
||||
// <br />
|
||||
// Since you're enjoying the site so much, maybe you'd want to support me? :3
|
||||
// <br />
|
||||
// <br />
|
||||
// If you want to support development, you can donate to my{" "}
|
||||
// <ExternalLink href="https://ko-fi.com/zkrising">Ko-Fi</ExternalLink>, if you
|
||||
// indicate your account name in the donation, you'll get a shiny name on the site!
|
||||
// <br />
|
||||
// I'm working on some new projects in secret. Maybe I'll post some updates on there :P
|
||||
// <br />
|
||||
// <br />
|
||||
// Alternatively, you can star or contribute to the fully-open-source{" "}
|
||||
// <ExternalLink href="https://github.com/zkldi/Tachi">GitHub Repo</ExternalLink>. This
|
||||
// makes me look cool to employers!
|
||||
// </span>
|
||||
// </Card>
|
||||
// );
|
||||
}
|
||||
|
||||
@@ -5,7 +5,7 @@ import React from "react";
|
||||
import { Link } from "react-router-dom";
|
||||
|
||||
export default function SupportMePage() {
|
||||
useSetSubheader("Support / Ko-fi");
|
||||
useSetSubheader("Support");
|
||||
|
||||
return (
|
||||
<div style={{ fontSize: "1.15rem" }}>
|
||||
@@ -14,11 +14,7 @@ export default function SupportMePage() {
|
||||
<Link to="/credits">people like you</Link>.
|
||||
</p>
|
||||
<p>
|
||||
If you want to support {TachiConfig.NAME} development, you can donate to my{" "}
|
||||
<ExternalLink href="https://ko-fi.com/zkrising">Ko-fi</ExternalLink>.
|
||||
</p>
|
||||
<p>
|
||||
Alternatively, you can star the{" "}
|
||||
You can star the{" "}
|
||||
<ExternalLink href="https://github.com/zkldi/Tachi">GitHub Repo</ExternalLink>. This
|
||||
makes me look cool to employers!
|
||||
</p>
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
import CreditsPage from "#app/pages/dashboard/misc/CreditsPage";
|
||||
import MyProposalsPage from "#app/pages/dashboard/proposals/MyProposalsPage";
|
||||
import ProposalsPage from "#app/pages/dashboard/proposals/ProposalsPage";
|
||||
import SearchPage from "#app/pages/dashboard/search/SearchPage";
|
||||
@@ -95,6 +96,10 @@ export default function DashboardRoutes() {
|
||||
<PrivacyPolicyPage />
|
||||
</Route>
|
||||
|
||||
<Route exact path="/credits">
|
||||
<CreditsPage />
|
||||
</Route>
|
||||
|
||||
{/* <Route exact path="/support">
|
||||
<SupportMePage />
|
||||
</Route> */}
|
||||
|
||||
@@ -19,6 +19,7 @@ import MikadoPage from "#app/pages/dashboard/import/MikadoPage";
|
||||
import OngekiArtemisExportPage from "#app/pages/dashboard/import/OngekiArtemisExportPage";
|
||||
import OngekiInoharaPage from "#app/pages/dashboard/import/OngekiInoharaPage";
|
||||
import OngekiSiteImportPage from "#app/pages/dashboard/import/OngekiSiteImportPage";
|
||||
import RizuPage from "#app/pages/dashboard/import/RizuPage";
|
||||
import SaekawaPage from "#app/pages/dashboard/import/SaekawaPage";
|
||||
import SDVXEamCSVPage from "#app/pages/dashboard/import/SDVXEamCSVPage";
|
||||
import SilentHookPage from "#app/pages/dashboard/import/SilentHookPage";
|
||||
@@ -255,6 +256,10 @@ export default function ImportRoutes() {
|
||||
<WACCAMyPageScraperPage />
|
||||
</Route>
|
||||
|
||||
<Route exact path="/import/rizu">
|
||||
<RizuPage />
|
||||
</Route>
|
||||
|
||||
<Route exact path="/import/kt-maimaidx-site-importer">
|
||||
<MaimaiDXSiteImportPage />
|
||||
</Route>
|
||||
|
||||
@@ -45,8 +45,10 @@ export default function ClassBadge<GPT extends V3Game = V3Game>({
|
||||
</Badge>
|
||||
);
|
||||
} else {
|
||||
const styleWithMaybeShine = classStyle as { shine?: boolean } & React.CSSProperties;
|
||||
const { shine, ...badgeStyle } = styleWithMaybeShine;
|
||||
badgeComponent = (
|
||||
<Badge bg={""} className="mx-2" style={classStyle}>
|
||||
<Badge bg={""} className={`mx-2${shine ? " shine" : ""}`} style={badgeStyle}>
|
||||
{data.display}
|
||||
</Badge>
|
||||
);
|
||||
|
||||
@@ -185,7 +185,9 @@ function ChartInfoMiddle({
|
||||
const diff = FormatDifficultySearch(chart);
|
||||
const gameName =
|
||||
game === "ongeki" ? "オンゲキ" : game === "maimaidx" ? "maimai" : gameGroupConfig.name;
|
||||
const formattedTitle = song.title.replace(/-/gu, " ");
|
||||
const formattedTitle = song.title
|
||||
.replace(/([!?,]){4,}/gu, (m) => m[0].repeat(3))
|
||||
.replace(/-/gu, " ");
|
||||
|
||||
let search = `${gameName} ${formattedTitle}`;
|
||||
|
||||
|
||||
@@ -16,9 +16,14 @@ export default function IIDXStyleSongChartInfoFormat({
|
||||
game: V3Game;
|
||||
song: SongDocument<"bms" | "chunithm" | "iidx" | "maimaidx" | "ongeki" | "pms" | "popn">;
|
||||
}) {
|
||||
const genre =
|
||||
game === "ongeki"
|
||||
? ((song as SongDocument<"ongeki">).data.flavorGenre ?? song.data.genre)
|
||||
: song.data.genre;
|
||||
|
||||
return (
|
||||
<>
|
||||
<h4>{song.data.genre}</h4>
|
||||
<h4>{genre}</h4>
|
||||
<h4 style={{ fontSize: "2.5rem", fontWeight: "bold" }}>{song.title}</h4>
|
||||
<h4>{song.artist}</h4>
|
||||
{chart && <h5>({LevelText(chart)})</h5>}
|
||||
|
||||
@@ -63,6 +63,14 @@ export function Footer() {
|
||||
>
|
||||
GDPR
|
||||
</Nav.Link>
|
||||
<Nav.Link
|
||||
as={Link}
|
||||
className={linkClassNames}
|
||||
onClick={() => window.scrollTo(0, 0)}
|
||||
to="/credits"
|
||||
>
|
||||
Credits
|
||||
</Nav.Link>
|
||||
{import.meta.env.VITE_DISCORD && (
|
||||
<Nav.Link
|
||||
as={ExternalLink}
|
||||
|
||||
+1
-1
@@ -149,7 +149,7 @@ function GraphComponent({
|
||||
},
|
||||
]}
|
||||
difficulty={chart.difficulty}
|
||||
duration={song.data.duration}
|
||||
duration={song.data.duration ?? 240}
|
||||
game="ongeki"
|
||||
height="360px"
|
||||
maximumAbsoluteValue={
|
||||
|
||||
@@ -25,7 +25,7 @@ import { NumericSOV } from "#util/sorts";
|
||||
import React from "react";
|
||||
import { COLOUR_SET, type PBScoreDocument, type ScoreDocument, type V3Game } from "tachi-common";
|
||||
|
||||
import { bgc, RAINBOW_EX_GRADIENT, RAINBOW_GRADIENT, RAINBOW_SHINY_GRADIENT } from "./games/_util";
|
||||
import { bgc, RAINBOW_EX_GRADIENT, RAINBOW_GRADIENT } from "./games/_util";
|
||||
import { ARCAEA_TOUCH_IMPL } from "./games/arcaea";
|
||||
import { BMS_7K_IMPL, BMS_14K_IMPL, PMS_IMPL } from "./games/bms-pms";
|
||||
import { DDR_DP_IMPL, DDR_SP_IMPL } from "./games/ddr";
|
||||
@@ -785,9 +785,22 @@ export const GPT_CLIENT_IMPLEMENTATIONS: GPTClientImplementations = {
|
||||
SILVER: bgc("gray", "var(--bs-light)"),
|
||||
GOLD: bgc("var(--bs-warning)", "var(--bs-dark)"),
|
||||
PLATINUM: bgc("silver", "var(--bs-dark)"),
|
||||
RAINBOW: RAINBOW_GRADIENT,
|
||||
RAINBOW_SHINY: RAINBOW_SHINY_GRADIENT,
|
||||
RAINBOW_EX: RAINBOW_EX_GRADIENT,
|
||||
RAINBOW: {
|
||||
background: "linear-gradient(-45deg, #ff73d6 20%, #00ffff 50%, #ebfb2a 80%)",
|
||||
color: "var(--bs-dark)",
|
||||
},
|
||||
RAINBOW_SHINY: {
|
||||
background: "linear-gradient(-45deg, #ff73d6 20%, #00ffff 50%, #ebfb2a 80%)",
|
||||
color: "var(--bs-dark)",
|
||||
shine: true,
|
||||
},
|
||||
RAINBOW_EX: {
|
||||
background:
|
||||
"linear-gradient(-45deg, #df7e85 20%, #efef51 40%, #4bee83 60%, #70bdd7 80%)",
|
||||
color: "var(--bs-dark)",
|
||||
shine: true,
|
||||
},
|
||||
RAINBOW_EX_TRUE: { ...RAINBOW_EX_GRADIENT, shine: true },
|
||||
},
|
||||
},
|
||||
enumColours: {
|
||||
@@ -845,7 +858,14 @@ export const GPT_CLIENT_IMPLEMENTATIONS: GPTClientImplementations = {
|
||||
[
|
||||
"Platinum Score",
|
||||
"P-Score",
|
||||
NumericSOV((x) => x.scoreData.platinumStars * 100000 + x.scoreData.platinumScore),
|
||||
// __related is attached when rendering table rows with chart context
|
||||
// eslint-disable-next-line @typescript-eslint/no-explicit-any -- NumericSOV row shape
|
||||
NumericSOV((x: any) => {
|
||||
if (x.__related?.chart?.data !== undefined) {
|
||||
return x.scoreData.platinumScore / x.__related.chart.data.maxPlatScore;
|
||||
}
|
||||
return x.scoreData.platinumStars * 100000 + x.scoreData.platinumScore;
|
||||
}),
|
||||
],
|
||||
["Judgements", "Notes", NumericSOV((x) => x.scoreData.judgements.cbreak ?? 0)],
|
||||
[
|
||||
|
||||
@@ -36,12 +36,6 @@ export const RAINBOW_GRADIENT = {
|
||||
color: "var(--bs-dark)",
|
||||
} as const;
|
||||
|
||||
export const RAINBOW_SHINY_GRADIENT = {
|
||||
background:
|
||||
"linear-gradient(-45deg, #ff8697, #ff9dbf, #9e81d0, #87caff, #7dae80, #ffffa7, #ffd88a, #ffab8d, #ff8697)",
|
||||
color: "var(--bs-dark)",
|
||||
} as const;
|
||||
|
||||
export const RAINBOW_EX_GRADIENT = {
|
||||
background: "linear-gradient(-45deg, #0fa091, #0f98d5, #67087f, #d9007e, #f56e06)",
|
||||
color: "var(--bs-light)",
|
||||
|
||||
@@ -65,13 +65,13 @@ export type GPTClassColours<GPT extends V3Game> = {
|
||||
// css properties => css
|
||||
// null -> no styling
|
||||
[V in ClassConfigs[GPT][C]["values"][number]["id"]]:
|
||||
| ({ shine?: boolean } & CSSProperties)
|
||||
| "danger"
|
||||
| "info"
|
||||
| "primary"
|
||||
| "secondary"
|
||||
| "success"
|
||||
| "warning"
|
||||
| CSSProperties
|
||||
| null;
|
||||
};
|
||||
};
|
||||
|
||||
@@ -6,3 +6,35 @@
|
||||
opacity: 1;
|
||||
}
|
||||
}
|
||||
|
||||
@keyframes shine {
|
||||
0% {
|
||||
top: -150%;
|
||||
left: -150%;
|
||||
}
|
||||
100% {
|
||||
top: 150%;
|
||||
left: 150%;
|
||||
}
|
||||
}
|
||||
|
||||
.shine {
|
||||
position: relative;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.shine::before {
|
||||
background: linear-gradient(
|
||||
transparent,
|
||||
rgba(255, 255, 255, 0.5) 50%,
|
||||
transparent
|
||||
);
|
||||
content: "";
|
||||
display: block;
|
||||
width: 150%;
|
||||
height: 2rem;
|
||||
position: absolute;
|
||||
transform: rotate(-45deg);
|
||||
animation: shine 4s infinite ease-in-out;
|
||||
z-index: 100;
|
||||
}
|
||||
@@ -23,7 +23,8 @@ export const GAME_GROUP_ONGEKI_CONF = {
|
||||
"LUNATIC",
|
||||
"ボーナストラック",
|
||||
]),
|
||||
duration: z.number(),
|
||||
duration: z.number().nullable(),
|
||||
flavorGenre: z.string().optional(),
|
||||
}),
|
||||
} as const satisfies INTERNAL_GAME_GROUP_CONFIG;
|
||||
|
||||
@@ -39,7 +40,8 @@ export const OngekiColours = [
|
||||
ClassValue("PLATINUM", "鉑", "Platinum: 18.000~18.999 Rating"),
|
||||
ClassValue("RAINBOW", "虹", "Rainbow: 19.000~19.999 Rating"),
|
||||
ClassValue("RAINBOW_SHINY", "虹(光)", "Rainbow Shiny: 20.000~20.999 Rating"),
|
||||
ClassValue("RAINBOW_EX", "虹(極)", "Rainbow Extreme: 21.000~ Rating"),
|
||||
ClassValue("RAINBOW_EX", "虹(極)", "Rainbow Extreme: 21.000~21.999 Rating"),
|
||||
ClassValue("RAINBOW_EX_TRUE", "虹(極)・真", "Rainbow Extreme (True): 22.000~ Rating"),
|
||||
];
|
||||
|
||||
export const GAME_ONGEKI_CONF = {
|
||||
@@ -228,11 +230,11 @@ export const GAME_ONGEKI_CONF = {
|
||||
"オンゲキ bright MEMORY Act.3",
|
||||
"オンゲキ Re:Fresh",
|
||||
]),
|
||||
isBonusTrack: z.boolean(),
|
||||
isReMaster: z.boolean().optional(),
|
||||
maxPlatScore: z.number().int(),
|
||||
inGameID: z.number().int(),
|
||||
maxPlatScore: z.number().int().nonnegative(),
|
||||
inGameID: z.number().int().nonnegative().nullable(),
|
||||
chartViewURL: z.string().optional(),
|
||||
isBonusTrack: z.boolean().optional(),
|
||||
}),
|
||||
|
||||
preferences: z.strictObject({}),
|
||||
|
||||
@@ -612,6 +612,7 @@ export enum ONGEKI_COLOURS {
|
||||
PURPLE = 4,
|
||||
RAINBOW = 9,
|
||||
RAINBOW_EX = 11,
|
||||
RAINBOW_EX_TRUE = 12,
|
||||
RAINBOW_SHINY = 10,
|
||||
RED = 3,
|
||||
SILVER = 6,
|
||||
|
||||
@@ -106,7 +106,7 @@ export async function GetBestJubilityOnSongs(
|
||||
return Promise.all(rows.rows.map((row) => ToPbScoreDocument(row)));
|
||||
}
|
||||
|
||||
const CURRENT_JUBEAT_HOT_VERSION: Versions["jubeat"] = "ave";
|
||||
const CURRENT_JUBEAT_HOT_VERSION: Versions["jubeat"] = "beyond";
|
||||
|
||||
export async function GetPBsForJubility(userID: integer) {
|
||||
const hotSongRows = await DB.selectFrom("song")
|
||||
|
||||
@@ -293,6 +293,8 @@ describe("ONGEKI_IMPL", () => {
|
||||
c(19, "RAINBOW");
|
||||
c(20, "RAINBOW_SHINY");
|
||||
c(21, "RAINBOW_EX");
|
||||
c(22, "RAINBOW_EX_TRUE");
|
||||
c(23, "RAINBOW_EX_TRUE");
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
@@ -16,8 +16,13 @@ import {
|
||||
|
||||
import { GoalFmtScore, GoalOutOfFmtScore, GradeGoalFormatter } from "./_common";
|
||||
|
||||
const isUnranked = (chart: ChartDocument<"ongeki">) =>
|
||||
(chart.data.inGameID >= 7000 && chart.data.inGameID < 8000) || chart.levelNum === 0.0;
|
||||
const isUnranked = (chart: ChartDocument<"ongeki">) => {
|
||||
const ig = chart.data.inGameID;
|
||||
return (
|
||||
(ig !== null && ig >= 7000 && ig < 8000) ||
|
||||
chart.levelNum === 0.0
|
||||
);
|
||||
};
|
||||
|
||||
const starCount = (platinumScore: number, maxPlatinumScore: number) => {
|
||||
const pct = Math.floor((platinumScore / maxPlatinumScore) * 100);
|
||||
@@ -113,7 +118,9 @@ export const ONGEKI_IMPL: GameImplementation<"ongeki"> = {
|
||||
return { colour: null };
|
||||
}
|
||||
|
||||
if (rating >= 21) {
|
||||
if (rating >= 22) {
|
||||
return { colour: "RAINBOW_EX_TRUE" };
|
||||
} else if (rating >= 21) {
|
||||
return { colour: "RAINBOW_EX" };
|
||||
} else if (rating >= 20) {
|
||||
return { colour: "RAINBOW_SHINY" };
|
||||
@@ -230,9 +237,11 @@ export const ONGEKI_IMPL: GameImplementation<"ongeki"> = {
|
||||
}
|
||||
}
|
||||
|
||||
if (s.scoreData.bellLamp === "FULL BELL" && s.scoreData.noteLamp === "LOSS") {
|
||||
return "Cannot have a LOSS with a FULL BELL.";
|
||||
}
|
||||
// LMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAO
|
||||
// if (s.scoreData.bellLamp === "FULL BELL" && s.scoreData.noteLamp === "LOSS") {
|
||||
// return "Cannot have a LOSS with a FULL BELL.";
|
||||
// }
|
||||
// LMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAO
|
||||
|
||||
if (s.scoreData.platinumScore > chart.data.maxPlatScore) {
|
||||
return `Cannot have ${s.scoreData.platinumScore}/${chart.data.maxPlatScore} Platinum Score.`;
|
||||
|
||||
@@ -240,6 +240,47 @@ EnableGraphs = true
|
||||
#
|
||||
# If present, an * matches everyone else`,
|
||||
},
|
||||
{
|
||||
clientID: "CXRizu",
|
||||
requestedPermissions: ["submit_score"],
|
||||
name: "Rizu",
|
||||
redirectUri: null,
|
||||
webhookUri: null,
|
||||
apiKeyFilename: "Rizu.cfg",
|
||||
apiKeyTemplate: `[General]
|
||||
|
||||
## Whether to enable score submissions
|
||||
# Setting type: Boolean
|
||||
# Default value: true
|
||||
Enable = true
|
||||
|
||||
## Timeout for score submission in seconds
|
||||
# Setting type: Int32
|
||||
# Default value: 30
|
||||
NetworkTimeout = 30
|
||||
|
||||
## Folder for storing imports that failed due to network errors.
|
||||
## Leave empty to disable
|
||||
# Setting type: String
|
||||
# Default value: UserData/Rizu/FailedImports
|
||||
FailedImportsFolder = UserData/Rizu/FailedImports
|
||||
|
||||
[Keys]
|
||||
|
||||
## Kamaitachi API keys to use for score submissions, in the format
|
||||
## of \`<access-code> = <api-key>\`. The \`default\` key is used as fallback
|
||||
## if an access code does not have an API key set, and can be removed.
|
||||
# Setting type: String
|
||||
# Default value:
|
||||
default = %%TACHI_KEY%%
|
||||
|
||||
[Tachi]
|
||||
|
||||
## Tachi instance base URL
|
||||
# Setting type: String
|
||||
# Default value: https://kamai.tachi.ac
|
||||
BaseUrl = ${ServerConfig.OUR_URL}`,
|
||||
},
|
||||
];
|
||||
|
||||
const BokuDefaultClients: DefaultClients = [
|
||||
|
||||
@@ -119,6 +119,8 @@ function ConvertVersion(ver: number): Versions["jubeat"] {
|
||||
return "festo";
|
||||
case 11:
|
||||
return "ave";
|
||||
case 12:
|
||||
return "beyond";
|
||||
}
|
||||
|
||||
throw new InvalidScoreFailure(`Unknown Game Version ${ver}.`);
|
||||
|
||||
@@ -9,6 +9,7 @@ import {
|
||||
type SEEDS_QuestlineDocument,
|
||||
type SEEDS_SongDocument,
|
||||
type SEEDS_TableDocument,
|
||||
type V3Game,
|
||||
} from "tachi-common";
|
||||
/* eslint-disable no-await-in-loop */
|
||||
import type {
|
||||
|
||||
@@ -719,8 +719,9 @@ export const CHUNITHMBBKKSong: SongDocument<"chunithm"> = {
|
||||
altTitles: [],
|
||||
artist: "nora2r",
|
||||
data: {
|
||||
duration: 128.541,
|
||||
genre: "VARIETY",
|
||||
duration: 128.541,
|
||||
displayVersion: "CHUNITHM",
|
||||
},
|
||||
id: "S19d35e0b935765ded25",
|
||||
searchTerms: [],
|
||||
@@ -736,7 +737,6 @@ export const CHUNITHMBBKKChart: ChartDocument<"chunithm"> = {
|
||||
level: "3",
|
||||
data: {
|
||||
inGameID: 3,
|
||||
displayVersion: "CHUNITHM",
|
||||
},
|
||||
isPrimary: true,
|
||||
versions: ["paradiselost"],
|
||||
@@ -1485,6 +1485,7 @@ export const TestingOngekiChart: ChartDocument<"ongeki"> = {
|
||||
displayVersion: "オンゲキ bright MEMORY Act.3",
|
||||
inGameID: 2137,
|
||||
maxPlatScore: 1000,
|
||||
isBonusTrack: false,
|
||||
},
|
||||
difficulty: "MASTER",
|
||||
isPrimary: true,
|
||||
@@ -1537,6 +1538,7 @@ export const TestingOngekiChartConverter: ChartDocument<"ongeki"> = {
|
||||
displayVersion: "オンゲキ bright",
|
||||
inGameID: 678,
|
||||
maxPlatScore: 2768,
|
||||
isBonusTrack: false,
|
||||
},
|
||||
difficulty: "MASTER",
|
||||
isPrimary: true,
|
||||
@@ -1552,6 +1554,7 @@ export const TestingChunithmSongConverter: SongDocument<"chunithm"> = {
|
||||
data: {
|
||||
genre: "POPS & ANIME",
|
||||
duration: 120,
|
||||
displayVersion: "CHUNITHM CRYSTAL PLUS",
|
||||
},
|
||||
id: "s956",
|
||||
searchTerms: [],
|
||||
@@ -1562,7 +1565,6 @@ export const TestingChunithmChartConverter: ChartDocument<"chunithm"> = {
|
||||
game: "chunithm",
|
||||
chartID: "fbba26a6a223b1dd0bf8ef139cfee83114b91086",
|
||||
data: {
|
||||
displayVersion: "CHUNITHM CRYSTAL PLUS",
|
||||
inGameID: 956,
|
||||
},
|
||||
difficulty: "MASTER",
|
||||
@@ -1579,6 +1581,7 @@ export const TestingChunithmWESongConverter: SongDocument<"chunithm"> = {
|
||||
data: {
|
||||
duration: 135.275,
|
||||
genre: "VARIETY",
|
||||
displayVersion: "CHUNITHM NEW PLUS",
|
||||
},
|
||||
id: "S19d35e0c127c7e441ce",
|
||||
searchTerms: ["xl techno more dance"],
|
||||
@@ -1588,7 +1591,6 @@ export const TestingChunithmWESongConverter: SongDocument<"chunithm"> = {
|
||||
export const TestingChunithmWEChartConverter: ChartDocument<"chunithm"> = {
|
||||
game: "chunithm",
|
||||
data: {
|
||||
displayVersion: "CHUNITHM NEW PLUS",
|
||||
inGameID: 8235,
|
||||
},
|
||||
difficulty: "割☆4",
|
||||
|
||||
Reference in New Issue
Block a user