/* eslint-disable key-spacing */ import moment from 'moment'; // gem block: number of gems const gemsPromo = { '4gems': 5, '21gems': 30, '42gems': 60, '84gems': 125, }; export const REPEATING_EVENTS = { nye: { start: new Date('1970-12-28T04:00-05:00'), end: new Date('1970-01-04T03:59-05:00'), season: 'nye', npcImageSuffix: '_nye', content: [ { type: 'cards', items: [ 'nye', ], }, ], }, birthday: { start: new Date('1970-01-30T04:00-05:00'), end: new Date('1970-02-01T03:59-05:00'), season: 'birthday', npcImageSuffix: '_birthday', foodSeason: 'Cake', }, valentines: { start: new Date('1970-02-10T04:00-05:00'), end: new Date('1970-02-17T03:59-05:00'), season: 'valentines', npcImageSuffix: '_valentines', content: [ { type: 'cards', items: [ 'valentine', ], }, ], }, piDay: { start: new Date('1970-03-14T04:00-04:00'), end: new Date('1970-03-16T03:59-04:00'), foodSeason: 'Pie', }, aprilFools: { start: new Date('1970-04-01T04:00-04:00'), end: new Date('1970-04-02T03:59-04:00'), aprilFools: 'Cryptid', }, aprilFoolsResale: { start: new Date('1970-04-03T04:00-04:00'), end: new Date('1970-05-01T03:59-04:00'), content: [ { type: 'hatchingPotionQuests', items: [ 'virtualpet', 'waffle', 'fungi', ], }, { type: 'premiumHatchingPotions', items: [ 'Cryptid', 'Veggie', 'TeaShop', ], }, ], }, namingDay: { start: new Date('1970-07-31T04:00-04:00'), end: new Date('1970-08-02T03:59-04:00'), foodSeason: 'Cake', }, fallGemSale: { start: new Date('1970-08-27T04:00-04:00'), end: new Date('1970-09-03T23:59-04:00'), event: 'fall_extra_gems', gemsPromo, }, spookyGemSale: { start: new Date('1970-10-27T04:00-04:00'), end: new Date('1970-10-31T23:59-04:00'), event: 'spooky_extra_gems', gemsPromo, }, habitoween: { start: new Date('1970-10-30T04:00-04:00'), end: new Date('1970-11-01T23:59-04:00'), foodSeason: 'Candy', season: 'habitoween', npcImageSuffix: '_halloween', }, harvestFeast: { start: new Date('1970-11-20T04:00-05:00'), end: new Date('1970-12-01T03:59-05:00'), season: 'thanksgiving', npcImageSuffix: '_thanksgiving', foodSeason: 'Pie', }, giftOneGetOne: { start: new Date('1970-12-18T04:00-05:00'), end: new Date('1970-01-05T23:59-05:00'), promo: 'g1g1', }, }; export function getRepeatingEvents (date) { const momentDate = date instanceof moment ? date : moment(date); return Object.keys(REPEATING_EVENTS).map(eventKey => { const event = REPEATING_EVENTS[eventKey]; if (!event.key) { event.key = eventKey; } event.start.setYear(momentDate.year()); event.end.setYear(momentDate.year()); if (event.end < event.start && momentDate < event.start) { event.start.setYear(momentDate.year() - 1); } else if (event.end < event.start && momentDate > event.end) { event.end.setYear(momentDate.year() + 1); } return event; }).filter(event => momentDate.isBetween(event.start, event.end)); } export const EVENTS = { noEvent: { start: '2024-05-01T00:00-04:00', end: '2024-05-13T23:59-04:00', season: 'normal', npcImageSuffix: '', }, bundle202405: { start: '2024-05-21T08:00-04:00', end: '2024-05-31T23:59-04:00', }, potions202405: { start: '2024-05-14T08:00-04:00', end: '2024-05-31T23:59-04:00', }, aprilFoolsQuest2024: { start: '2024-04-09T08:00-04:00', end: '2024-04-30T23:59-04:00', }, aprilFools2024: { start: '2024-04-01T00:00-04:00', end: '2024-04-02T08:00-04:00', aprilFools: 'Fungi', }, spring2024: { start: '2024-03-21T00:00-04:00', end: '2024-04-30T23:59-04:00', npcImageSuffix: '_spring', season: 'spring', gear: true, }, bundle202403: { start: '2024-03-19T00:00-05:00', end: '2024-03-31T08:00-05:00', }, bundle202402: { start: '2024-02-20T00:00-05:00', end: '2024-02-29T08:00-05:00', }, potions202402: { start: '2024-02-12T00:00-05:00', end: '2024-02-29T08:00-05:00', }, valentine2024: { start: '2024-02-12T00:00-05:00', end: '2024-02-16T08:00-05:00', season: 'valentines', npcImageSuffix: '_valentines', }, nye2023: { start: '2023-12-28T08:00-05:00', end: '2024-01-04T23:59-05:00', season: 'nye', npcImageSuffix: '_nye', }, winter2024: { start: '2023-12-19T08:00-05:00', end: '2024-01-31T23:59-05:00', npcImageSuffix: '_winter', season: 'winter', gear: true, }, g1g12023: { start: '2023-12-18T08:00-05:00', end: '2024-01-09T23:59-05:00', promo: 'g1g1', }, potions202311: { start: '2023-11-14T08:00-04:00', end: '2023-11-30T23:59-04:00', }, bundle202311: { start: '2023-11-09T08:00-04:00', end: '2023-11-30T23:59-04:00', }, bundle202310: { start: '2023-10-17T08:00-04:00', end: '2023-10-31T23:59-04:00', }, potions202310: { start: '2023-09-21T08:00-04:00', end: '2023-10-31T23:59-04:00', }, fall2023: { start: '2023-09-21T08:00-04:00', end: '2023-10-31T23:59-04:00', npcImageSuffix: '_fall', season: 'fall', gear: true, }, bundle202309: { start: '2023-09-12T08:00-04:00', end: '2023-09-30T23:59-04:00', }, bundle202308: { start: '2023-08-15T08:00-04:00', end: '2023-08-31T23:59-04:00', }, potions202308: { start: '2023-08-15T08:00-04:00', end: '2023-08-31T23:59-04:00', }, summer2023: { start: '2023-06-20T08:00-04:00', end: '2023-07-31T23:59-04:00', npcImageSuffix: '_summer', season: 'summer', gear: true, }, bundle202306: { start: '2023-06-13T08:00-04:00', end: '2023-06-30T23:59-04:00', }, bundle202305: { start: '2023-05-23T08:00-04:00', end: '2023-05-31T23:59-04:00', }, potions202305: { start: '2023-05-16T08:00-04:00', end: '2023-05-31T23:59-04:00', }, aprilFools2023: { start: '2023-04-01T08:00-04:00', end: '2023-04-02T08:00-04:00', aprilFools: 'teaShop', }, spring2023: { start: '2023-03-21T08:00-04:00', end: '2023-04-30T23:59-04:00', npcImageSuffix: '_spring', season: 'spring', gear: true, }, bundle202303: { start: '2023-03-16T08:00-04:00', end: '2023-03-31T23:59-04:00', }, bundle202302: { start: '2023-02-21T08:00-05:00', end: '2023-02-28T23:59-05:00', }, potions202302: { start: '2023-02-13T08:00-05:00', end: '2023-02-28T23:59-05:00', }, valentines2023: { start: '2023-02-13T08:00-05:00', end: '2023-02-17T23:59-05:00', season: 'valentines', npcImageSuffix: '_valentines', }, birthday10: { start: '2023-01-30T08:00-05:00', end: '2023-02-08T23:59-05:00', season: 'birthday', npcImageSuffix: '_birthday', }, winter2023: { start: '2022-12-20T08:00-05:00', end: '2023-01-31T23:59-05:00', npcImageSuffix: '_winter', season: 'winter', gear: true, }, g1g12022: { start: '2022-12-15T08:00-05:00', end: '2023-01-08T23:59-05:00', promo: 'g1g1', }, harvestFeast2022: { start: '2022-11-22T08:00-05:00', end: '2022-11-27T20:00-05:00', season: 'thanksgiving', npcImageSuffix: '_thanksgiving', }, afterGala: { start: '2022-10-31T20:00-04:00', end: '2022-11-22T08:00-05:00', season: 'normal', npcImageSuffix: '', }, bundle202211: { start: '2022-11-15T08:00-05:00', end: '2022-11-30T20:00-05:00', }, fall2022: { start: '2022-09-20T08:00-04:00', end: '2022-10-31T20:00-04:00', npcImageSuffix: '_fall', season: 'fall', gear: true, }, bundle202210: { start: '2022-10-13T08:00-04:00', end: '2022-10-31T20:00-04:00', }, beforeGala: { start: '2022-07-31T20:00-04:00', end: '2022-09-20T08:00-04:00', season: 'normal', npcImageSuffix: '', }, bundle202209: { start: '2022-09-13T08:00-04:00', end: '2022-09-30T20:00-04:00', }, potions202208: { start: '2022-08-16T08:00-04:00', end: '2022-08-31T20:00-04:00', season: 'normal', npcImageSuffix: '', }, bundle202208: { start: '2022-08-09T08:00-04:00', end: '2022-09-30T20:00-04:00', season: 'normal', npcImageSuffix: '', }, summer2022: { start: '2022-06-21T08:00-04:00', end: '2022-07-31T20:00-04:00', season: 'summer', npcImageSuffix: '_summer', gear: true, }, bundle202206: { start: '2022-06-14T08:00-04:00', end: '2022-06-30T20:00-04:00', }, potions202205: { start: '2022-05-17T08:00-04:00', end: '2022-05-31T20:00-04:00', season: 'normal', npcImageSuffix: '', }, spring2022: { start: '2022-03-22T08:00-05:00', end: '2022-04-30T20:00-05:00', npcImageSuffix: '_spring', season: 'spring', gear: true, }, aprilFools2022: { start: '2022-04-01T08:00-05:00', end: '2022-04-02T08:00-05:00', aprilFools: 'virtual', }, valentines2022: { start: '2022-02-14T08:00-05:00', end: '2022-02-18T20:00-05:00', season: 'valentines', npcImageSuffix: 'valentines', }, winter2022: { start: '2021-12-21T08:00-05:00', end: '2022-01-31T20:00-05:00', season: 'winter', npcImageSuffix: '_winter', gear: true, }, winter2022Promo: { start: '2021-12-16T08:00-05:00', end: '2022-01-06T20:00-05:00', promo: 'g1g1', }, prePromoNoEvent: { start: '2021-11-28T20:00-05:00', end: '2021-12-16T08:00-05:00', season: 'normal', npcImageSuffix: '', }, thanksgiving2021: { start: '2021-11-24T08:00-05:00', end: '2021-11-28T20:00-05:00', season: 'thanksgiving', npcImageSuffix: '_thanksgiving', }, potions202111: { start: '2021-11-09T08:00-05:00', end: '2021-11-30T20:00-05:00', season: 'normal', npcImageSuffix: '', }, fall2021: { start: '2021-09-21T08:00-04:00', end: '2021-10-31T20:00-04:00', npcImageSuffix: '_fall', season: 'fall', gear: true, }, bundle202109: { start: '2021-09-13T08:00-04:00', end: '2021-09-30T20:00-04:00', }, potions202108: { start: '2021-08-17T08:00-04:00', end: '2021-08-31T20:00-04:00', season: 'normal', npcImageSuffix: '', }, summer2021: { start: '2021-06-23T08:00-04:00', end: '2021-07-31T20:00-04:00', season: 'summer', npcImageSuffix: 'summer', gear: true, }, bundle202106: { start: '2021-06-08T08:00-04:00', end: '2021-07-31T20:00-04:00', season: 'normal', npcImageSuffix: '', }, potions202105: { start: '2021-05-11T08:00-05:00', end: '2021-05-31T20:00-05:00', season: 'normal', npcImageSuffix: '', }, spring2021: { start: '2021-03-23T08:00-05:00', end: '2021-04-30T20:00-05:00', npcImageSuffix: 'spring', season: 'spring', gear: true, }, aprilFools2021: { start: '2021-04-01T08:00-05:00', end: '2021-04-02T08:00-05:00', aprilFools: 'invert', }, winter2021: { start: '2020-12-17T08:00-05:00', end: '2021-01-31T20:00-05:00', season: 'winter', npcImageSuffix: 'winter', gear: true, }, winter2021Promo: { // used in tests, not an actual past event start: '2020-12-01T08:00-05:00', end: '2020-12-17T20:00-05:00', season: 'winter', promo: 'g1g1', }, fall2020: { start: '2020-09-22T08:00-04:00', end: '2020-10-31T20:00-04:00', gear: true, gemsPromo, }, // Dates from this point on (^) are in the RFC 2822 format, see https://momentjs.com/docs/#/parsing/string/ summer2020: { start: '2020-06-18', end: '2020-08-02', gear: true }, spring2020: { start: '2020-03-17', end: '2020-05-02', gear: true }, winter2020: { start: '2019-12-19', end: '2020-02-02', gear: true }, fall2019: { start: '2019-09-24', end: '2019-11-02', gear: true }, summer2019: { start: '2019-06-18', end: '2019-08-02', gear: true }, spring2019: { start: '2019-03-19', end: '2019-05-02', gear: true }, winter2019: { start: '2018-12-19', end: '2019-02-02', gear: true }, fall2018: { start: '2018-09-20', end: '2018-11-02', gear: true }, summer2018: { start: '2018-06-19', end: '2018-08-02', gear: true }, spring2018: { start: '2018-03-20', end: '2018-05-02', gear: true }, winter2018: { start: '2017-12-19', end: '2018-02-02', gear: true }, fall2017: { start: '2017-09-21', end: '2017-11-02', gear: true }, summer2017: { start: '2017-06-20', end: '2017-08-02', gear: true }, spring2017: { start: '2017-03-21', end: '2017-05-02', gear: true }, winter2017: { start: '2016-12-16', end: '2017-02-02', gear: true }, fall2016: { start: '2016-09-20', end: '2016-11-02', gear: true }, summer2016: { start: '2016-06-21', end: '2016-08-02', gear: true }, spring2016: { start: '2016-03-18', end: '2016-05-02', gear: true }, winter2016: { start: '2015-12-18', end: '2016-02-02', gear: true }, gaymerx: { start: '2016-09-29', end: '2016-10-03' }, fall2015: { start: '2015-09-21', end: '2015-11-01', gear: true }, summer2015: { start: '2015-06-20', end: '2015-08-02', gear: true }, spring2015: { start: '2015-03-20', end: '2015-05-02', gear: true }, winter2015: { start: '2014-12-21', end: '2015-02-02', gear: true }, fall: { start: '2014-09-21', end: '2014-11-01', gear: true }, summer: { start: '2014-06-20', end: '2014-08-01', gear: true }, spring: { start: '2014-03-21', end: '2014-05-01', gear: true }, birthday: { start: '2017-01-31', end: '2017-02-02' }, winter: { start: '2013-12-31', end: '2014-02-01' }, };