Files
HolodoriCalc/src/lib/data/events.ts
T
dal4segno 8ed658e804
Publish GitHub Pages output / publish (push) Successful in 39s
fix: restore summer event calculation through source deployment
2026-09-20 21:26:49 +09:00

73 lines
2.8 KiB
TypeScript

import type { EventDefinition } from '$lib/engine/event-optimization.ts';
const gamersFeaturedCards = [
'card-00006-5-uniq-0074-00',
'card-00014-5-uniq-0075-00',
'card-00016-5-uniq-0076-00',
'card-00017-5-uniq-0077-00'
] as const;
const summerFeaturedCards = ['card-00004-5-uniq-0081-00', 'card-04013-5-uniq-0083-00', 'card-00035-5-uniq-0082-00', 'card-03005-5-uniq-0084-00'] as const;
// Schedule: https://dengekionline.com/article/202609/88492
// Bonuses: https://gamerch.com/hololive-dreams/1015338
// IDs/names: HolodoriDB kor 5517e40b931fec10253f5b850989346518e233c2.
const summerChapters = [
['아키로제식 여름 휴가', 'chr-00004', 'm0349', 19, 21],
['더위와 풀장과 독서가와', 'chr-04013', 'm0351', 21, 23],
['총수의 파라다이스 침략 작전!', 'chr-00035', 'm0350', 23, 25],
['유능 감독, 성지순례에 나서다', 'chr-03005', 'm0352', 25, 27]
] as const;
export const events = [
{
// HolodoriDB supplies the card/song IDs; the public master-data diff does not include
// the live-service schedule, so the official event period and bonus rules live here.
id: 'marathon_event-normal-003',
name: '무인도 잭! 한여름의 서바이벌 데이즈',
startsAt: '2026-08-29T03:00:00.000Z',
endsAt: '2026-09-06T10:59:59.999Z',
bonusCharacterIds: ['chr-00006', 'chr-00014', 'chr-00016', 'chr-00017'],
featuredCardIds: gamersFeaturedCards,
challengeSongBonusCardIds: {
m0338: [gamersFeaturedCards[0]],
m0339: [gamersFeaturedCards[1]],
m0340: [gamersFeaturedCards[2]],
m0341: [gamersFeaturedCards[3]],
m0342: gamersFeaturedCards
},
formationBonusPercent: 30,
featuredCardBonusPercent: 30,
challengeSongScoreBonusPercent: 10,
awakeningBonusPercentByRarity: {
3: [0, 1, 1, 2, 2, 3],
4: [0, 6, 7, 8, 9, 10],
5: [0, 15, 18, 22, 26, 30]
}
},
{
id: 'marathon_event-relay-002',
name: '몽환의 서머 이스케이프?!',
startsAt: '2026-09-19T11:00:00.000Z',
endsAt: '2026-09-27T10:59:59.999Z',
bonusCharacterIds: [],
featuredCardIds: summerFeaturedCards,
challengeSongBonusCardIds: {},
formationBonusPercent: 50,
featuredCardBonusPercent: 50,
challengeSongScoreBonusPercent: 10,
awakeningBonusPercentByRarity: {
3: [0, 1, 1, 2, 2, 3],
4: [0, 6, 7, 8, 9, 10],
5: [0, 15, 18, 22, 26, 30]
},
chapters: summerChapters.map(([name, characterId, songId, start, end], index) => ({
id: `marathon_event-relay-002-chapter-0${index + 1}`,
name,
startsAt: `2026-09-${start}T11:00:00.000Z`,
endsAt: `2026-09-${end}T10:59:59.999Z`,
bonusCharacterIds: [characterId],
challengeSongBonusCardIds: { [songId]: [summerFeaturedCards[index]] }
}))
}
] as const satisfies readonly EventDefinition[];