feat(content): Winter Wonderland 2021-22

This commit is contained in:
SabreCat 2021-12-21 15:32:11 -06:00
parent 741ddd9006
commit 685ba1286e
12 changed files with 219 additions and 398 deletions

View file

@ -131,8 +131,8 @@ gulp.task('sprites:clean', done => {
clean(`${IMG_DIST_PATH}spritesmith*,${CSS_DIST_PATH}spritesmith*}`, done);
});
gulp.task('sprites:checkCompiledDimensions', gulp.series('sprites:main', 'sprites:largeSprites', done => {
console.log('Verifiying that images do not exceed max dimensions'); // eslint-disable-line no-console
gulp.task('sprites:checkCompiledDimensions', gulp.series('sprites:main', done => {
console.log('Verifying that images do not exceed max dimensions'); // eslint-disable-line no-console
let numberOfSheetsThatAreTooBig = 0;

View file

@ -416,6 +416,15 @@
"weaponSpecialFall2021HealerText": "Summoning Wand",
"weaponSpecialFall2021HealerNotes": "Use this wand to summon healing flames and a ghostly creature to help you. Increases Intelligence by <%= int %>. Limited Edition 2021 Autumn Gear.",
"weaponSpecialWinter2022RogueText": "Shooting Star Firework",
"weaponSpecialWinter2022RogueNotes": "Silver and gold are beloved of Rogues, right? These are totally on theme. Increases Strength by <%= str %>. Limited Edition 2021-2022 Winter Gear.",
"weaponSpecialWinter2022WarriorText": "Candy Cane Sword",
"weaponSpecialWinter2022WarriorNotes": "How many licks does it take to sharpen this candy cane into the perfect sword? Increases Strength by <%= str %>. Limited Edition 2021-2022 Winter Gear.",
"weaponSpecialWinter2022MageText": "Pomegranate Staff",
"weaponSpecialWinter2022MageNotes": "The berries on this staff contain an ancient magic to be wielded in winter. Increases Intelligence by <%= int %> and Perception by <%= per %>. Limited Edition 2021-2022 Winter Gear.",
"weaponSpecialWinter2022HealerText": "Crystalline Ice Wand",
"weaponSpecialWinter2022HealerNotes": "Touch this solid-water implement to a friend's neck and they'll jump out of their chair! But they'll feel better afterward. Hopefully.Increases Intelligence by <%= int %>. Limited Edition 2021-2022 Winter Gear.",
"weaponMystery201411Text": "Pitchfork of Feasting",
"weaponMystery201411Notes": "Stab your enemies or dig in to your favorite foods - this versatile pitchfork does it all! Confers no benefit. November 2014 Subscriber Item.",
"weaponMystery201502Text": "Shimmery Winged Staff of Love and Also Truth",
@ -996,6 +1005,15 @@
"armorSpecialFall2021HealerText": "Summoner's Robes",
"armorSpecialFall2021HealerNotes": "Made of durable, flame-resistant fabric, these robes are perfect to wear when conjuring healing flames. Increases Constitution by <%= con %>. Limited Edition 2021 Autumn Gear.",
"armorSpecialWinter2022RogueText": "Dazzling Explosion",
"armorSpecialWinter2022RogueNotes": "If they're seeing stars, they're not seeing you! Yes, let's go with that. Increases Perception by <%= per %>. Limited Edition 2021-2022 Winter Gear.",
"armorSpecialWinter2022WarriorText": "Fuzzy Stocking",
"armorSpecialWinter2022WarriorNotes": "Who says you cant be snug and cozy while doing battle with everyday tasks? Increases Constitution by <%= con %>. Limited Edition 2021-2022 Winter Gear.",
"armorSpecialWinter2022MageText": "Pomegranate Protection",
"armorSpecialWinter2022MageNotes": "Enemies should watch out for fruit juice stains when you approach! Increases Intelligence by <%= int %>. Limited Edition 2021-2022 Winter Gear.",
"armorSpecialWinter2022HealerText": "Crystalline Ice Armor",
"armorSpecialWinter2022HealerNotes": "Glide as if skating, just above the ground, a glittering ethereal figure come to bring cool and calm. Increases Constitution by <%= con %>. Limited Edition 2021-2022 Winter Gear.",
"armorMystery201402Text": "Messenger Robes",
"armorMystery201402Notes": "Shimmering and strong, these robes have many pockets to carry letters. Confers no benefit. February 2014 Subscriber Item.",
"armorMystery201403Text": "Forest Walker Armor",
@ -1665,6 +1683,15 @@
"headSpecialFall2021HealerText": "Summoner's Mask",
"headSpecialFall2021HealerNotes": "Your own magic turns your hair into shocking, bright flames when you don this mask. Increases Intelligence by <%= int %>. Limited Edition 2021 Autumn Gear.",
"headSpecialWinter2022RogueText": "Thundering Finale",
"headSpecialWinter2022RogueNotes": "What? Huh? There's a Rogue where? I'm sorry, I can't hear anything over these fireworks! Increases Perception by <%= per %>. Limited Edition 2021-2022 Winter Gear.",
"headSpecialWinter2022WarriorText": "Fuzzy Stocking Cap",
"headSpecialWinter2022WarriorNotes": "In festive green with soft red trim, this hat is guaranteed to keep you warm all winter. Increases Strength by <%= str %>. Limited Edition 2021-2022 Winter Gear.",
"headSpecialWinter2022MageText": "Pomegranate Helm",
"headSpecialWinter2022MageNotes": "Due to its thick husk, this festive, fruity helmet is berry strong. Increases Perception by <%= per %>. Limited Edition 2021-2022 Winter Gear.",
"headSpecialWinter2022HealerText": "Crystalline Ice Crown",
"headSpecialWinter2022HealerNotes": "Minute imperfections and impurities send the arms of this headdress branching out in unpredictable directions. It's symbolic! And also very, very pretty. Increases Intelligence by <%= int %>. Limited Edition 2021-2022 Winter Gear.",
"headSpecialGaymerxText": "Rainbow Warrior Helm",
"headSpecialGaymerxNotes": "In celebration of the GaymerX Conference, this special helmet is decorated with a radiant, colorful rainbow pattern! GaymerX is a game convention celebrating LGTBQ and gaming and is open to everyone.",
@ -2185,6 +2212,11 @@
"shieldSpecialFall2021HealerText": "Summoned Creature",
"shieldSpecialFall2021HealerNotes": "An ethereal being rises from your magical flames to grant you extra protection. Increases Constitution by <%= con %>. Limited Edition 2021 Autumn Gear.",
"shieldSpecialWinter2022WarriorText": "Jingle Bell Shield",
"shieldSpecialWinter2022WarriorNotes": "This is a jingle bell, jingle bell, jingle bell shield. Jingle bell protect and jingle bell deflect. Increases Constitution by <%= con %>. Limited Edition 2021-2022 Winter Gear.",
"shieldSpecialWinter2022HealerText": "Enduring Ice Crystal",
"shieldSpecialWinter2022HealerNotes": "Though it melts in your hand, the power of elemental ice replenishes it from within. Increases Constitution by <%= con %>. Limited Edition 2021-2022 Winter Gear.",
"shieldMystery201601Text": "Resolution Slayer",
"shieldMystery201601Notes": "This blade can be used to parry away all distractions. Confers no benefit. January 2016 Subscriber Item.",
"shieldMystery201701Text": "Time-Freezer Shield",

View file

@ -175,6 +175,10 @@
"fall2021HeadlessWarriorSet": "Headless (Warrior)",
"fall2021BrainEaterMageSet": "Brain Eater (Mage)",
"fall2021FlameSummonerHealerSet": "Flame Summoner (Healer)",
"winter2022FireworksRogueSet": "Fireworks (Rogue)",
"winter2022StockingWarriorSet": "Stocking (Warrior)",
"winter2022PomegranateMageSet": "Pomegranate (Mage)",
"winter2022IceCrystalHealerSet": "Ice Crystal (Healer)",
"eventAvailability": "Available for purchase until <%= date(locale) %>.",
"eventAvailabilityReturning": "Available for purchase until <%= availableDate(locale) %>. This potion was last available in <%= previousDate(locale) %>.",
"dateEndMarch": "April 30",

View file

@ -17,7 +17,7 @@ export default prefill({
setPrice: 5, availableFrom: '2021-09-28T08:00-04:00', availableUntil: '2021-10-31T20:00-04:00', text: t('hauntedColors'),
},
winteryHairColors: {
setPrice: 5, availableFrom: '2021-01-05', availableUntil: '2021-02-01', text: t('winteryColors'),
setPrice: 5, availableFrom: '2021-12-23T08:00-05:00', availableUntil: '2022-01-31T20:00-05:00', text: t('winteryColors'),
},
rainbowSkins: { setPrice: 5, text: t('rainbowSkins') },
animalSkins: { setPrice: 5, text: t('animalSkins') },
@ -32,6 +32,6 @@ export default prefill({
setPrice: 5, availableFrom: '2021-07-13T08:00-04:00', availableUntil: '2021-07-31T20:00-04:00', text: t('splashySkins'),
},
winterySkins: {
setPrice: 5, availableFrom: '2021-01-05', availableUntil: '2021-02-01', text: t('winterySkins'),
setPrice: 5, availableFrom: '2021-12-23T08:00-05:00', availableUntil: '2022-01-31T20:00-05:00', text: t('winterySkins'),
},
});

View file

@ -1,10 +1,7 @@
import moment from 'moment';
import find from 'lodash/find';
import t from './translation';
import { EVENTS } from './constants';
const CURRENT_EVENT = find(EVENTS, event => moment().isBetween(event.start, event.end));
/*
---------------------------------------------------------------
Discounted Item Bundles
@ -87,7 +84,7 @@ const bundles = {
'penguin',
],
canBuy () {
return CURRENT_EVENT && CURRENT_EVENT.season === 'winter';
return moment().isBetween('2022-01-11T08:00-05:00', '2022-01-31T20:00-05:00');
},
type: 'quests',
value: 7,

View file

@ -10,17 +10,22 @@ const gemsPromo = {
export const EVENTS = {
noCurrentEvent: {
start: '2022-01-06T20:00-05:00',
start: '2022-01-31T20:00-05:00',
end: '2022-02-28T20:00-05:00',
season: 'normal',
npcImageSuffix: '',
},
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',
season: 'normal',
npcImageSuffix: '',
},
prePromoNoEvent: {
start: '2021-11-28T20:00-05:00',

View file

@ -18,35 +18,35 @@ const SEASONAL_SETS = {
'festiveFairySet',
'cocoaSet',
// winter 2017
'winter2017IceHockeySet',
'winter2017WinterWolfSet',
'winter2017SugarPlumSet',
'winter2017FrostyRogueSet',
// winter 2018
'winter2018ConfettiSet',
'winter2018GiftWrappedSet',
'winter2018MistletoeSet',
'winter2018ReindeerSet',
// winter 2019
'winter2019PoinsettiaSet',
'winter2019WinterStarSet',
'winter2019BlizzardSet',
'winter2019PyrotechnicSet',
// winter 2020
'winter2020CarolOfTheMageSet',
'winter2020LanternSet',
'winter2020EvergreenSet',
'winter2020WinterSpiceSet',
// winter 2021
'winter2021WinterMoonMageSet',
'winter2021HollyIvyRogueSet',
'winter2021IceFishingWarriorSet',
'winter2021ArcticExplorerHealerSet',
'winter2022FireworksRogueSet',
'winter2022StockingWarriorSet',
'winter2022PomegranateMageSet',
'winter2022IceCrystalHealerSet',
],
spring: [
// spring 2014

File diff suppressed because it is too large Load diff

View file

@ -177,18 +177,27 @@ const premium = {
value: 2,
text: t('hatchingPotionHolly'),
limited: true,
canBuy () {
return moment().isBetween('2019-12-19', '2020-02-02');
},
_addlNotes: t('eventAvailabilityReturning', {
availableDate: t('dateEndJanuary'),
previousDate: t('decemberYYYY', { year: 2016 }),
previousDate: t('januaryYYYY', { year: 2020 }),
}),
event: EVENTS.winter2022,
canBuy () {
return moment().isBetween(EVENTS.winter2022.start, EVENTS.winter2022.end);
},
},
Peppermint: {
value: 2,
text: t('hatchingPotionPeppermint'),
limited: true,
_addlNotes: t('eventAvailabilityReturning', {
availableDate: t('dateEndJanuary'),
previousDate: t('januaryYYYY', { year: 2018 }),
}),
event: EVENTS.winter2022,
canBuy () {
return moment().isBetween(EVENTS.winter2022.start, EVENTS.winter2022.end);
},
},
StarryNight: {
value: 2,
@ -450,12 +459,13 @@ const premium = {
value: 2,
text: t('hatchingPotionStainedGlass'),
limited: true,
_addlNotes: t('premiumPotionAddlNotes', {
date: t('dateEndJanuary'),
_addlNotes: t('eventAvailabilityReturning', {
availableDate: t('dateEndJanuary'),
previousDate: t('januaryYYYY', { year: 2021 }),
}),
event: EVENTS.winter2021,
event: EVENTS.winter2022,
canBuy () {
return moment().isBetween('2020-12-22T08:00-04:00', '2021-01-31T20:00-04:00');
return moment().isBetween(EVENTS.winter2022.start, EVENTS.winter2022.end);
},
},
PolkaDot: {

View file

@ -9,7 +9,9 @@ import {
USER_CAN_OWN_QUEST_CATEGORIES,
} from './constants';
const CURRENT_EVENT = find(EVENTS, event => moment().isBetween(event.start, event.end));
const CURRENT_EVENT = find(
EVENTS, event => moment().isBetween(event.start, event.end) && Boolean(event.season),
);
const userCanOwnQuestCategories = USER_CAN_OWN_QUEST_CATEGORIES;
const quests = {
@ -260,10 +262,7 @@ const quests = {
},
},
evilsanta: {
canBuy () {
return CURRENT_EVENT && CURRENT_EVENT.season === 'winter';
},
event: EVENTS.winter2021,
event: CURRENT_EVENT && CURRENT_EVENT.season === 'winter' ? CURRENT_EVENT : null,
text: t('questEvilSantaText'),
notes: t('questEvilSantaNotes'),
addlNotes: t('evilSantaAddlNotes'),
@ -288,10 +287,7 @@ const quests = {
},
},
evilsanta2: {
canBuy () {
return CURRENT_EVENT && CURRENT_EVENT.season === 'winter';
},
event: EVENTS.winter2021,
event: CURRENT_EVENT && CURRENT_EVENT.season === 'winter' ? CURRENT_EVENT : null,
text: t('questEvilSanta2Text'),
notes: t('questEvilSanta2Notes'),
addlNotes: t('evilSantaAddlNotes'),
@ -518,10 +514,7 @@ const quests = {
completion: t('questEggHuntCompletion'),
value: 1,
category: 'pet',
event: EVENTS.spring2021,
canBuy () {
return moment().isBefore(EVENTS.spring2021.end);
},
event: CURRENT_EVENT && CURRENT_EVENT.season === 'spring' ? CURRENT_EVENT : null,
collect: {
plainEgg: {
text: t('questEggHuntCollectPlainEgg'),
@ -3586,10 +3579,7 @@ const quests = {
completion: t('questWaffleCompletion'),
value: 4,
category: 'hatchingPotion',
event: EVENTS.spring2021,
canBuy () {
return moment().isBefore(EVENTS.spring2021.end);
},
event: CURRENT_EVENT && CURRENT_EVENT.season === 'spring' ? CURRENT_EVENT : null,
boss: {
name: t('questWaffleBoss'),
hp: 500,

View file

@ -1,9 +1,29 @@
// import moment from 'moment';
import moment from 'moment';
// Magic Hatching Potions are configured like this:
// type: 'premiumHatchingPotion', // note no "s" at the end
// path: 'premiumHatchingPotions.Rainbow',
const featuredItems = {
market () {
if (moment().isBefore('2022-01-31T20:00-05:00')) {
return [
{
type: 'armoire',
path: 'armoire',
},
{
type: 'premiumHatchingPotion',
path: 'premiumHatchingPotions.StainedGlass',
},
{
type: 'premiumHatchingPotion',
path: 'premiumHatchingPotions.Peppermint',
},
{
type: 'premiumHatchingPotion',
path: 'premiumHatchingPotions.Holly',
},
];
}
return [
{
type: 'armoire',
@ -11,35 +31,67 @@ const featuredItems = {
},
{
type: 'food',
path: 'food.Chocolate',
path: 'food.Honey',
},
{
type: 'hatchingPotions',
path: 'hatchingPotions.Shade',
path: 'hatchingPotions.CottonCandyPink',
},
{
type: 'eggs',
path: 'eggs.BearCub',
path: 'eggs.Cactus',
},
];
},
quests () {
if (moment().isBefore('2022-01-11T08:00-05:00')) {
return [
{
type: 'quests',
path: 'quests.evilsanta',
},
{
type: 'quests',
path: 'quests.evilsanta2',
},
{
type: 'quests',
path: 'quests.penguin',
},
];
}
if (moment().isBefore('2022-01-31T20:00-05:00')) {
return [
{
type: 'bundles',
path: 'bundles.winterQuests',
},
{
type: 'quests',
path: 'quests.silver',
},
{
type: 'quests',
path: 'quests.sheep',
},
];
}
return [
{
type: 'quests',
path: 'quests.slime',
path: 'quests.ferret',
},
{
type: 'quests',
path: 'quests.onyx',
path: 'quests.bronze',
},
{
type: 'quests',
path: 'quests.butterfly',
path: 'quests.basilist',
},
];
},
seasonal: 'summer2020Healer',
seasonal: 'winter2021Warrior',
timeTravelers: [
// TODO
],

View file

@ -7,7 +7,7 @@ import {
} from '../content/constants';
const CURRENT_EVENT = find(
EVENTS, event => moment().isBetween(event.start, event.end),
EVENTS, event => moment().isBetween(event.start, event.end) && Boolean(event.season),
);
const SHOP_OPEN = CURRENT_EVENT && ['winter', 'spring', 'summer', 'fall'].includes(CURRENT_EVENT.season);
@ -30,20 +30,20 @@ export default {
pinnedSets: SHOP_OPEN
? {
healer: 'fall2021FlameSummonerHealerSet',
rogue: 'fall2021OozeRogueSet',
warrior: 'fall2021HeadlessWarriorSet',
wizard: 'fall2021BrainEaterMageSet',
healer: 'winter2022IceCrystalHealerSet',
rogue: 'winter2022FireworksRogueSet',
warrior: 'winter2022StockingWarriorSet',
wizard: 'winter2022PomegranateMageSet',
}
: {},
availableSpells: SHOP_OPEN && moment().isBetween('2021-10-12T08:00-04:00', CURRENT_EVENT.end)
availableSpells: SHOP_OPEN && moment().isBetween('2021-12-30T08:00-04:00', CURRENT_EVENT.end)
? [
'spookySparkles',
'snowball',
]
: [],
availableQuests: [],
featuredSet: 'fall2020DeathsHeadMothHealerSet',
featuredSet: 'winter2021ArcticExplorerHealerSet',
};