73 lines
2.8 KiB
TypeScript
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[];
|