data: add 64 charts and event challenge
Publish GitHub Pages output / publish (push) Successful in 33s

This commit is contained in:
2026-09-25 20:31:50 +09:00
parent 167c933032
commit 29e70c565d
9 changed files with 119 additions and 2 deletions
+84
View File
@@ -16618,6 +16618,90 @@
"releaseTime": 1789988400000,
"path": "/data/charts/m0351.normal.json"
},
{
"songId": "m0352",
"title": "64.",
"difficulty": "easy",
"difficultyLevel": 3,
"durationSeconds": 136,
"scoreRatio": 51.768233530293685,
"scoreCalibrationSource": "formula-v1",
"scoreFormula": {
"perfectNoteWeight": 117400,
"liveScoreCoefficientPermil": 7,
"difficultyLevel": 3
},
"totalNotes": 220,
"singerType": "solo",
"singerCharacterIds": [
"chr-03005"
],
"releaseTime": 1790334000000,
"path": "/data/charts/m0352.easy.json"
},
{
"songId": "m0352",
"title": "64.",
"difficulty": "expert",
"difficultyLevel": 26,
"durationSeconds": 136,
"scoreRatio": 343.2963117395095,
"scoreCalibrationSource": "formula-v1",
"scoreFormula": {
"perfectNoteWeight": 905650,
"liveScoreCoefficientPermil": 7,
"difficultyLevel": 26
},
"totalNotes": 1064,
"singerType": "solo",
"singerCharacterIds": [
"chr-03005"
],
"releaseTime": 1790334000000,
"path": "/data/charts/m0352.expert.json"
},
{
"songId": "m0352",
"title": "64.",
"difficulty": "hard",
"difficultyLevel": 19,
"durationSeconds": 136,
"scoreRatio": 204.36366516195457,
"scoreCalibrationSource": "formula-v1",
"scoreFormula": {
"perfectNoteWeight": 516100,
"liveScoreCoefficientPermil": 7,
"difficultyLevel": 19
},
"totalNotes": 640,
"singerType": "solo",
"singerCharacterIds": [
"chr-03005"
],
"releaseTime": 1790334000000,
"path": "/data/charts/m0352.hard.json"
},
{
"songId": "m0352",
"title": "64.",
"difficulty": "normal",
"difficultyLevel": 11,
"durationSeconds": 136,
"scoreRatio": 109.07118417758491,
"scoreCalibrationSource": "formula-v1",
"scoreFormula": {
"perfectNoteWeight": 261400,
"liveScoreCoefficientPermil": 7,
"difficultyLevel": 11
},
"totalNotes": 364,
"singerType": "solo",
"singerCharacterIds": [
"chr-03005"
],
"releaseTime": 1790334000000,
"path": "/data/charts/m0352.normal.json"
},
{
"songId": "m0353",
"title": "Night Loop",
+14
View File
@@ -39,6 +39,20 @@ test('신규 카드 공통 보너스와 현재 챕터 멤버 보너스를 따로
assert.equal(eventChallengeSongScoreBonusPercent(aki, 'm0349', [aki.featuredCardIds[1]]), 0);
});
test('9월 25일 20시부터 아냐와 64.가 마지막 챕터 보너스를 받는다', () => {
const before = activeEventAt(events, Date.parse('2026-09-25T10:59:59.999Z'))!;
const anya = activeEventAt(events, Date.parse('2026-09-25T11:00:00.000Z'))!;
const featuredAnya = { id: 'card-03005-5-uniq-0084-00', characterId: 'chr-03005', rarity: 5 };
assert.equal(before.id, 'marathon_event-relay-002-chapter-03');
assert.equal(anya.id, 'marathon_event-relay-002-chapter-04');
assert.deepEqual(anya.bonusCharacterIds, ['chr-03005']);
assert.deepEqual(anya.challengeSongBonusCardIds, { m0352: [featuredAnya.id] });
assert.equal(eventBonusBreakdown(anya, [featuredAnya], () => 0).totalPercent, 100);
assert.equal(eventChallengeSongScoreBonusPercent(anya, 'm0352', [featuredAnya.id]), 10);
assert.equal(eventChallengeSongScoreBonusPercent(before, 'm0352', [featuredAnya.id]), 0);
});
test('이벤트 기간 안에서만 진행 중 이벤트를 반환한다', () => {
assert.equal(activeEventAt(events, Date.parse('2026-08-29T02:59:59.999Z')), null);
assert.equal(activeEventAt(events, Date.parse('2026-08-31T00:00:00.000Z'))?.id, currentEvent.id);