feat(event): Wonderland 2019-20

This commit is contained in:
Sabe Jones
2019-12-19 16:54:27 -06:00
parent a4eabc05e7
commit c4b16f86db
96 changed files with 451 additions and 127 deletions

View File

@@ -80,7 +80,7 @@ const bundles = {
'penguin',
],
canBuy () {
return moment().isBetween('2017-12-14', '2018-01-01');
return moment().isBetween('2019-12-19', '2020-02-02');
},
type: 'quests',
value: 7,

View File

@@ -38,6 +38,7 @@ export const EVENTS = {
spring2019: { start: '2019-03-19', end: '2019-05-02' },
summer2019: { start: '2019-06-18', end: '2019-08-02' },
fall2019: { start: '2019-09-24', end: '2019-11-02' },
winter2020: { start: '2019-12-19', end: '2020-02-02' },
};
export const SEASONAL_SETS = {
@@ -77,6 +78,12 @@ export const SEASONAL_SETS = {
'winter2019WinterStarSet',
'winter2019BlizzardSet',
'winter2019PyrotechnicSet',
// winter 2020
'winter2020CarolOfTheMageSet',
'winter2020LanternSet',
'winter2020EvergreenSet',
'winter2020WinterSpiceSet',
],
spring: [
// spring 2014

View File

@@ -8,7 +8,7 @@ import * as takeThisGear from './special-takeThis';
import * as wonderconGear from './special-wondercon';
import t from '../../../translation';
const CURRENT_SEASON = '_NONE_';
const CURRENT_SEASON = 'winter';
const armor = {
0: backerGear.armorSpecial0,
@@ -956,6 +956,7 @@ const armor = {
notes: t('armorSpecialWinter2019RogueNotes', { per: 15 }),
value: 90,
per: 15,
canBuy: () => CURRENT_SEASON === 'winter',
},
winter2019Warrior: {
event: EVENTS.winter2019,
@@ -965,6 +966,7 @@ const armor = {
notes: t('armorSpecialWinter2019WarriorNotes', { con: 9 }),
value: 90,
con: 9,
canBuy: () => CURRENT_SEASON === 'winter',
},
winter2019Mage: {
event: EVENTS.winter2019,
@@ -974,6 +976,7 @@ const armor = {
notes: t('armorSpecialWinter2019MageNotes', { int: 9 }),
value: 90,
int: 9,
canBuy: () => CURRENT_SEASON === 'winter',
},
winter2019Healer: {
event: EVENTS.winter2019,
@@ -983,6 +986,7 @@ const armor = {
notes: t('armorSpecialWinter2019HealerNotes', { con: 15 }),
value: 90,
con: 15,
canBuy: () => CURRENT_SEASON === 'winter',
},
birthday2019: {
text: t('armorSpecialBirthday2019Text'),
@@ -1105,6 +1109,42 @@ const armor = {
con: 20,
canOwn: ownsItem('armor_special_ks2019'),
},
winter2020Rogue: {
event: EVENTS.winter2020,
specialClass: 'rogue',
set: 'winter2020LanternSet',
text: t('armorSpecialWinter2020RogueText'),
notes: t('armorSpecialWinter2020RogueNotes', { per: 15 }),
value: 90,
per: 15,
},
winter2020Warrior: {
event: EVENTS.winter2020,
specialClass: 'warrior',
set: 'winter2020EvergreenSet',
text: t('armorSpecialWinter2020WarriorText'),
notes: t('armorSpecialWinter2020WarriorNotes', { con: 9 }),
value: 90,
con: 9,
},
winter2020Mage: {
event: EVENTS.winter2020,
specialClass: 'wizard',
set: 'winter2020CarolOfTheMageSet',
text: t('armorSpecialWinter2020MageText'),
notes: t('armorSpecialWinter2020MageNotes', { int: 9 }),
value: 90,
int: 9,
},
winter2020Healer: {
event: EVENTS.winter2020,
specialClass: 'healer',
set: 'winter2020WinterSpiceSet',
text: t('armorSpecialWinter2020HealerText'),
notes: t('armorSpecialWinter2020HealerNotes', { con: 15 }),
value: 90,
con: 15,
},
};
const back = {
@@ -2379,6 +2419,7 @@ const head = {
notes: t('headSpecialWinter2019RogueNotes', { per: 9 }),
value: 60,
per: 9,
canBuy: () => CURRENT_SEASON === 'winter',
},
winter2019Warrior: {
event: EVENTS.winter2019,
@@ -2388,6 +2429,7 @@ const head = {
notes: t('headSpecialWinter2019WarriorNotes', { str: 9 }),
value: 60,
str: 9,
canBuy: () => CURRENT_SEASON === 'winter',
},
winter2019Mage: {
event: EVENTS.winter2019,
@@ -2397,6 +2439,7 @@ const head = {
notes: t('headSpecialWinter2019MageNotes', { per: 7 }),
value: 60,
per: 7,
canBuy: () => CURRENT_SEASON === 'winter',
},
winter2019Healer: {
event: EVENTS.winter2019,
@@ -2406,6 +2449,7 @@ const head = {
notes: t('headSpecialWinter2019HealerNotes', { int: 7 }),
value: 60,
int: 7,
canBuy: () => CURRENT_SEASON === 'winter',
},
nye2018: {
text: t('headSpecialNye2018Text'),
@@ -2534,6 +2578,42 @@ const head = {
int: 20,
canOwn: ownsItem('head_special_ks2019'),
},
winter2020Rogue: {
event: EVENTS.winter2020,
specialClass: 'rogue',
set: 'winter2020LanternSet',
text: t('headSpecialWinter2020RogueText'),
notes: t('headSpecialWinter2020RogueNotes', { per: 9 }),
value: 60,
per: 9,
},
winter2020Warrior: {
event: EVENTS.winter2020,
specialClass: 'warrior',
set: 'winter2020EvergreenSet',
text: t('headSpecialWinter2020WarriorText'),
notes: t('headSpecialWinter2020WarriorNotes', { str: 9 }),
value: 60,
str: 9,
},
winter2020Mage: {
event: EVENTS.winter2020,
specialClass: 'wizard',
set: 'winter2020CarolOfTheMageSet',
text: t('headSpecialWinter2020MageText'),
notes: t('headSpecialWinter2020MageNotes', { per: 7 }),
value: 60,
per: 7,
},
winter2020Healer: {
event: EVENTS.winter2020,
specialClass: 'healer',
set: 'winter2020WinterSpiceSet',
text: t('headSpecialWinter2020HealerText'),
notes: t('headSpecialWinter2020HealerNotes', { int: 7 }),
value: 60,
int: 7,
},
};
const headAccessory = {
@@ -3465,6 +3545,7 @@ const shield = {
notes: t('weaponSpecialWinter2019RogueNotes', { str: 8 }),
value: 80,
str: 8,
canBuy: () => CURRENT_SEASON === 'winter',
},
winter2019Warrior: {
event: EVENTS.winter2019,
@@ -3474,6 +3555,7 @@ const shield = {
notes: t('shieldSpecialWinter2019WarriorNotes', { con: 7 }),
value: 70,
con: 7,
canBuy: () => CURRENT_SEASON === 'winter',
},
winter2019Healer: {
event: EVENTS.winter2019,
@@ -3483,6 +3565,7 @@ const shield = {
notes: t('shieldSpecialWinter2019HealerNotes', { con: 9 }),
value: 70,
con: 9,
canBuy: () => CURRENT_SEASON === 'winter',
},
piDay: {
text: t('shieldSpecialPiDayText'),
@@ -3587,6 +3670,33 @@ const shield = {
per: 20,
canOwn: ownsItem('shield_special_ks2019'),
},
winter2020Rogue: {
event: EVENTS.winter2020,
specialClass: 'rogue',
set: 'winter2020LanternSet',
text: t('weaponSpecialWinter2020RogueText'),
notes: t('weaponSpecialWinter2020RogueNotes', { str: 8 }),
value: 80,
str: 8,
},
winter2020Warrior: {
event: EVENTS.winter2020,
specialClass: 'warrior',
set: 'winter2020EvergreenSet',
text: t('shieldSpecialWinter2020WarriorText'),
notes: t('shieldSpecialWinter2020WarriorNotes', { con: 7 }),
value: 70,
con: 7,
},
winter2020Healer: {
event: EVENTS.winter2020,
specialClass: 'healer',
set: 'winter2020WinterSpiceSet',
text: t('shieldSpecialWinter2020HealerText'),
notes: t('shieldSpecialWinter2020HealerNotes', { con: 9 }),
value: 70,
con: 9,
},
};
const weapon = {
@@ -4538,6 +4648,7 @@ const weapon = {
notes: t('weaponSpecialWinter2019RogueNotes', { str: 8 }),
value: 80,
str: 8,
canBuy: () => CURRENT_SEASON === 'winter',
},
winter2019Warrior: {
event: EVENTS.winter2019,
@@ -4547,6 +4658,7 @@ const weapon = {
notes: t('weaponSpecialWinter2019WarriorNotes', { str: 15 }),
value: 90,
str: 15,
canBuy: () => CURRENT_SEASON === 'winter',
},
winter2019Mage: {
event: EVENTS.winter2019,
@@ -4558,6 +4670,7 @@ const weapon = {
value: 170,
int: 15,
per: 7,
canBuy: () => CURRENT_SEASON === 'winter',
},
winter2019Healer: {
event: EVENTS.winter2019,
@@ -4567,6 +4680,7 @@ const weapon = {
notes: t('weaponSpecialWinter2019HealerNotes', { int: 9 }),
value: 90,
int: 9,
canBuy: () => CURRENT_SEASON === 'winter',
},
spring2019Rogue: {
event: EVENTS.spring2019,
@@ -4687,6 +4801,44 @@ const weapon = {
str: 20,
canOwn: ownsItem('weapon_special_ks2019'),
},
winter2020Rogue: {
event: EVENTS.winter2020,
specialClass: 'rogue',
set: 'winter2020LanternSet',
text: t('weaponSpecialWinter2020RogueText'),
notes: t('weaponSpecialWinter2020RogueNotes', { str: 8 }),
value: 80,
str: 8,
},
winter2020Warrior: {
event: EVENTS.winter2020,
specialClass: 'warrior',
set: 'winter2020EvergreenSet',
text: t('weaponSpecialWinter2020WarriorText'),
notes: t('weaponSpecialWinter2020WarriorNotes', { str: 15 }),
value: 90,
str: 15,
},
winter2020Mage: {
event: EVENTS.winter2020,
specialClass: 'wizard',
set: 'winter2020CarolOfTheMageSet',
twoHanded: true,
text: t('weaponSpecialWinter2020MageText'),
notes: t('weaponSpecialWinter2020MageNotes', { int: 15, per: 7 }),
value: 170,
int: 15,
per: 7,
},
winter2020Healer: {
event: EVENTS.winter2020,
specialClass: 'healer',
set: 'winter2020WinterSpiceSet',
text: t('weaponSpecialWinter2020HealerText'),
notes: t('weaponSpecialWinter2020HealerNotes', { int: 9 }),
value: 90,
int: 9,
},
};
export {

View File

@@ -4,8 +4,6 @@ import each from 'lodash/each';
import moment from 'moment';
import t from './translation';
const CURRENT_SEASON = '_NONE_';
function hasQuestAchievementFunction (key) {
return user => user.achievements.quests
&& user.achievements.quests[key] > 0;
@@ -64,31 +62,26 @@ const premium = {
value: 2,
text: t('hatchingPotionCupid'),
limited: true,
_season: '_PENDING_',
},
Shimmer: {
value: 2,
text: t('hatchingPotionShimmer'),
limited: true,
_season: '_PENDING_',
},
Fairy: {
value: 2,
text: t('hatchingPotionFairy'),
limited: true,
_season: '_PENDING_',
},
Floral: {
value: 2,
text: t('hatchingPotionFloral'),
limited: true,
_season: '_PENDING_',
},
Aquatic: {
value: 2,
text: t('hatchingPotionAquatic'),
limited: true,
_season: '_PENDING_',
},
Ember: {
value: 2,
@@ -118,7 +111,6 @@ const premium = {
value: 2,
text: t('hatchingPotionSpooky'),
limited: true,
_season: '_PENDING_',
_addlNotes: t('eventAvailabilityReturning', {
availableDate: t('dateEndOctober'),
previousDate: t('september2017'),
@@ -128,37 +120,45 @@ const premium = {
value: 2,
text: t('hatchingPotionGhost'),
limited: true,
_season: '_PENDING_',
},
Holly: {
value: 2,
text: t('hatchingPotionHolly'),
limited: true,
_season: '_PENDING_',
canBuy () {
return moment().isBetween('2019-12-19', '2020-02-02');
},
_addlNotes: t('eventAvailabilityReturning', {
availableDate: t('dateEndJanuary'),
previousDate: t('decemberYYYY', { year: 2016 }),
}),
},
Peppermint: {
value: 2,
text: t('hatchingPotionPeppermint'),
limited: true,
_season: '_PENDING_',
},
StarryNight: {
value: 2,
text: t('hatchingPotionStarryNight'),
limited: true,
_season: '_PENDING_',
canBuy () {
return moment().isBetween('2019-12-19', '2020-02-02');
},
_addlNotes: t('eventAvailabilityReturning', {
availableDate: t('dateEndJanuary'),
previousDate: t('decemberYYYY', { year: 2017 }),
}),
},
Rainbow: {
value: 2,
text: t('hatchingPotionRainbow'),
limited: true,
_season: '_PENDING_',
},
Glass: {
value: 2,
text: t('hatchingPotionGlass'),
limited: true,
_season: '_PENDING_',
_addlNotes: t('eventAvailabilityReturning', {
availableDate: t('dateEndJuly'),
previousDate: t('june2018'),
@@ -168,7 +168,6 @@ const premium = {
value: 2,
text: t('hatchingPotionGlow'),
limited: true,
_season: '_PENDING_',
_addlNotes: t('eventAvailabilityReturning', {
availableDate: t('dateEndOctober'),
previousDate: t('september2018'),
@@ -178,31 +177,26 @@ const premium = {
value: 2,
text: t('hatchingPotionFrost'),
limited: true,
_season: '_PENDING_',
},
IcySnow: {
value: 2,
text: t('hatchingPotionIcySnow'),
limited: true,
_season: '_PENDING_',
},
RoseQuartz: {
value: 2,
text: t('hatchingPotionRoseQuartz'),
limited: true,
_season: '_PENDING_',
},
Celestial: {
value: 2,
text: t('hatchingPotionCelestial'),
limited: true,
_season: '_PENDING_',
},
Sunshine: {
value: 2,
text: t('hatchingPotionSunshine'),
limited: true,
_season: '_PENDING_',
},
Bronze: {
value: 2,
@@ -215,7 +209,6 @@ const premium = {
value: 2,
text: t('hatchingPotionWatery'),
limited: true,
_season: '_PENDING_',
},
Silver: {
value: 2,
@@ -228,7 +221,6 @@ const premium = {
value: 2,
text: t('hatchingPotionShadow'),
limited: true,
_season: '_PENDING_',
},
Amber: {
value: 2,
@@ -237,6 +229,17 @@ const premium = {
canBuy: hasQuestAchievementFunction('amber'),
_addlNotes: t('premiumPotionUnlimitedNotes'),
},
Aurora: {
value: 2,
text: t('hatchingPotionAurora'),
limited: true,
canBuy () {
return moment().isBetween('2019-12-19', '2020-02-02');
},
_addlNotes: t('premiumPotionAddlNotes', {
date: t('dateEndJanuary'),
}),
},
};
const wacky = {
@@ -269,13 +272,10 @@ each(premium, (pot, key) => {
notes: t('hatchingPotionNotes', {
potText: pot.text,
}),
_addlNotes: t('premiumPotionAddlNotes', {
date: t(`dateEnd${pot._season}`),
}),
premium: true,
limited: false,
canBuy () {
return pot._season === CURRENT_SEASON;
return false;
},
});
});
@@ -294,7 +294,7 @@ each(wacky, (pot, key) => {
limited: true,
wacky: true,
canBuy () {
return pot._season === CURRENT_SEASON;
return false;
},
});
});

View File

@@ -1,5 +1,6 @@
import each from 'lodash/each';
import defaults from 'lodash/defaults';
import moment from 'moment';
import sortBy from 'lodash/sortBy';
import t from './translation';
import {
@@ -257,7 +258,7 @@ const quests = {
},
evilsanta: {
canBuy () {
return false;
return moment().isBetween('2019-12-19', '2020-02-02');
},
text: t('questEvilSantaText'),
notes: t('questEvilSantaNotes'),
@@ -283,7 +284,7 @@ const quests = {
},
evilsanta2: {
canBuy () {
return false;
return moment().isBetween('2019-12-19', '2020-02-02');
},
text: t('questEvilSanta2Text'),
notes: t('questEvilSanta2Notes'),

View File

@@ -5,7 +5,7 @@ import moment from 'moment';
// path: 'premiumHatchingPotions.Rainbow',
const featuredItems = {
market () {
if (moment().isBetween('2019-11-01', '2019-12-02')) {
if (moment().isBetween('2019-12-19', '2020-02-02')) {
return [
{
type: 'armoire',
@@ -13,15 +13,15 @@ const featuredItems = {
},
{
type: 'premiumHatchingPotion',
path: 'premiumHatchingPotions.Ember',
path: 'premiumHatchingPotions.Aurora',
},
{
type: 'premiumHatchingPotion',
path: 'premiumHatchingPotions.Thunderstorm',
path: 'premiumHatchingPotions.Holly',
},
{
type: 'food',
path: 'food.Saddle',
type: 'premiumHatchingPotion',
path: 'premiumHatchingPotions.StarryNight',
},
];
}
@@ -32,11 +32,11 @@ const featuredItems = {
},
{
type: 'hatchingPotions',
path: 'hatchingPotions.Skeleton',
path: 'hatchingPotions.White',
},
{
type: 'eggs',
path: 'eggs.Fox',
path: 'eggs.PandaCub',
},
{
type: 'food',
@@ -44,21 +44,39 @@ const featuredItems = {
},
];
},
quests: [
{
type: 'quests',
path: 'quests.badger',
},
{
type: 'quests',
path: 'quests.taskwoodsTerror1',
},
{
type: 'quests',
path: 'quests.amber',
},
],
seasonal: 'fall2018Rogue',
quests () {
if (moment().isBetween('2019-12-19', '2020-02-02')) {
return [
{
type: 'bundles',
path: 'bundles.winterQuests',
},
{
type: 'quests',
path: 'quests.evilsanta',
},
{
type: 'quests',
path: 'quests.evilsanta2',
},
];
}
return [
{
type: 'quests',
path: 'quests.treeling',
},
{
type: 'quests',
path: 'quests.stoikalmCalamity1',
},
{
type: 'quests',
path: 'quests.silver',
},
];
},
seasonal: 'winter2019Warrior',
timeTravelers: [
// TODO
],