diff --git a/test/content/releaseDates.test.js b/test/content/releaseDates.test.js
index 1c5fad92b3..bdf53e6ddb 100644
--- a/test/content/releaseDates.test.js
+++ b/test/content/releaseDates.test.js
@@ -19,8 +19,8 @@ describe('releaseDates', () => {
});
describe('armoire', () => {
it('should only contain valid armoire names', () => {
- const lastReleaseDate = maxBy(Object.values(ARMOIRE_RELEASE_DATES), value => new Date(`${value.year}-${value.month + 1}-20`));
- clock = sinon.useFakeTimers(new Date(`${lastReleaseDate.year}-${lastReleaseDate.month + 1}-20`));
+ const lastReleaseDate = maxBy(Object.values(ARMOIRE_RELEASE_DATES), value => new Date(`${value.year}-${value.month}-22`));
+ clock = sinon.useFakeTimers(new Date(`${lastReleaseDate.year}-${lastReleaseDate.month}-22`));
Object.keys(ARMOIRE_RELEASE_DATES).forEach(key => {
expect(find(armoire.all, { set: key }), `${key} is not a valid armoire set`).to.exist;
});
@@ -40,8 +40,8 @@ describe('releaseDates', () => {
describe('eggs', () => {
it('should only contain valid egg names', () => {
- const lastReleaseDate = maxBy(Object.values(EGGS_RELEASE_DATES), value => new Date(`${value.year}-${value.month + 1}-${value.day}`));
- clock = sinon.useFakeTimers(new Date(`${lastReleaseDate.year}-${lastReleaseDate.month + 1}-${lastReleaseDate.day}`));
+ const lastReleaseDate = maxBy(Object.values(EGGS_RELEASE_DATES), value => new Date(`${value.year}-${value.month}-${value.day}`));
+ clock = sinon.useFakeTimers(new Date(`${lastReleaseDate.year}-${lastReleaseDate.month}-${lastReleaseDate.day + 1}`));
Object.keys(EGGS_RELEASE_DATES).forEach(key => {
expect(eggs.all[key], `${key} is not a valid egg name`).to.exist;
});
@@ -61,8 +61,8 @@ describe('releaseDates', () => {
describe('hatchingPotions', () => {
it('should only contain valid potion names', () => {
- const lastReleaseDate = maxBy(Object.values(HATCHING_POTIONS_RELEASE_DATES), value => new Date(`${value.year}-${value.month + 1}-${value.day}`));
- clock = sinon.useFakeTimers(new Date(`${lastReleaseDate.year}-${lastReleaseDate.month + 1}-${lastReleaseDate.day}`));
+ const lastReleaseDate = maxBy(Object.values(HATCHING_POTIONS_RELEASE_DATES), value => new Date(`${value.year}-${value.month}-${value.day}`));
+ clock = sinon.useFakeTimers(new Date(`${lastReleaseDate.year}-${lastReleaseDate.month}-${lastReleaseDate.day + 1}`));
Object.keys(HATCHING_POTIONS_RELEASE_DATES).forEach(key => {
expect(hatchingPotions.all[key], `${key} is not a valid potion name`).to.exist;
});
diff --git a/test/content/schedule.test.js b/test/content/schedule.test.js
index 6e8c172a98..de44938126 100644
--- a/test/content/schedule.test.js
+++ b/test/content/schedule.test.js
@@ -1,4 +1,5 @@
// eslint-disable-next-line max-len
+import maxBy from 'lodash/maxBy';
import moment from 'moment';
import nconf from 'nconf';
import {
@@ -10,6 +11,7 @@ import QUEST_BUNDLES from '../../website/common/script/content/bundles';
import potions from '../../website/common/script/content/hatching-potions';
import SPELLS from '../../website/common/script/content/spells';
import QUEST_SEASONAL from '../../website/common/script/content/quests/seasonal';
+import { HATCHING_POTIONS_RELEASE_DATES } from '../../website/common/script/content/constants/releaseDates';
function validateMatcher (matcher, checkedDate) {
expect(matcher.end).to.be.a('date');
@@ -222,6 +224,8 @@ describe('Content Schedule', () => {
});
it('premium hatching potions', () => {
+ const lastReleaseDate = maxBy(Object.values(HATCHING_POTIONS_RELEASE_DATES), value => new Date(`${value.year}-${value.month}-${value.day}`));
+ clock = sinon.useFakeTimers(new Date(`${lastReleaseDate.year}-${lastReleaseDate.month}-${lastReleaseDate.day + 1}`));
const potionKeys = Object.keys(potions.premium);
Object.keys(MONTHLY_SCHEDULE).forEach(key => {
const monthlyPotions = MONTHLY_SCHEDULE[key][21].find(item => item.type === 'premiumHatchingPotions');
diff --git a/website/client/src/components/shops/seasonal/index.vue b/website/client/src/components/shops/seasonal/index.vue
index fd807d8d66..8d9adf706c 100644
--- a/website/client/src/components/shops/seasonal/index.vue
+++ b/website/client/src/components/shops/seasonal/index.vue
@@ -163,14 +163,7 @@
slot="itemBadge"
slot-scope="ctx"
>
-
-
-
+
@@ -178,6 +171,23 @@
+
+
+
+
+
@@ -346,11 +356,17 @@ import svgWizard from '@/assets/svg/wizard.svg';
import svgRogue from '@/assets/svg/rogue.svg';
import svgHealer from '@/assets/svg/healer.svg';
+import BuyQuestModal from '../quests/buyQuestModal.vue';
+import CategoryItem from '../market/categoryItem';
+import FilterGroup from '@/components/ui/filterGroup';
import FilterSidebar from '@/components/ui/filterSidebar';
import { worldStateMixin } from '@/mixins/worldState';
export default {
components: {
+ BuyQuestModal,
+ CategoryItem,
+ FilterGroup,
FilterSidebar,
Checkbox,
PinBadge,
@@ -386,6 +402,7 @@ export default {
featuredGearBought: false,
currentEvent: null,
backgroundUpdate: new Date(),
+ selectedItemToBuy: null,
imageURLs: {
background: '',
npc: '',
@@ -550,7 +567,12 @@ export default {
return false;
},
itemSelected (item) {
- this.$root.$emit('buyModal::showItem', item);
+ if (item.type === 'quests') {
+ this.selectedItemToBuy = item;
+ this.$root.$emit('bv::show::modal', 'buy-quest-modal');
+ } else {
+ this.$root.$emit('buyModal::showItem', item);
+ }
},
},
};
diff --git a/website/common/locales/en/backgrounds.json b/website/common/locales/en/backgrounds.json
index 5c6fae7bad..d4e989adc5 100644
--- a/website/common/locales/en/backgrounds.json
+++ b/website/common/locales/en/backgrounds.json
@@ -1003,6 +1003,10 @@
"backgroundCastleHallWithHearthText": "Castle Hall with Hearth",
"backgroundCastleHallWithHearthNotes": "Bask in the warmth of a Castle Hall with a Hearth.",
+ "backgrounds122024": "SET 127: Released December 2024",
+ "backgroundFirstSnowForestText": "First Snow in the Forest",
+ "backgroundFirstSnowForestNotes": "Step into the First Snow in the Forest.",
+
"timeTravelBackgrounds": "Steampunk Backgrounds",
"backgroundAirshipText": "Airship",
"backgroundAirshipNotes": "Become a sky sailor on board your very own Airship.",
diff --git a/website/common/locales/en/content.json b/website/common/locales/en/content.json
index d57ec53b95..049d3e4a5d 100644
--- a/website/common/locales/en/content.json
+++ b/website/common/locales/en/content.json
@@ -335,6 +335,7 @@
"hatchingPotionRoseGold": "Rose Gold",
"hatchingPotionFungi": "Fungi",
"hatchingPotionKoi": "Koi",
+ "hatchingPotionGingerbread": "Gingerbread",
"hatchingPotionNotes": "Pour this on an egg, and it will hatch as a <%= potText(locale) %> Pet.",
"premiumPotionUnlimitedNotes": "Not usable on Quest Pet eggs.",
diff --git a/website/common/locales/en/gear.json b/website/common/locales/en/gear.json
index e2bee90ba3..2b35806d56 100644
--- a/website/common/locales/en/gear.json
+++ b/website/common/locales/en/gear.json
@@ -533,6 +533,15 @@
"weaponSpecialFall2024MageText": "Staff of the Underworld",
"weaponSpecialFall2024MageNotes": "Task steps will instantly become simplified with one touch of this shining weapon. Increases Intelligence by <%= int %> and Perception by <%= per %>. Limited Edition Fall 2024 Gear.",
+ "weaponSpecialWinter2025WarriorText": "Moose Warrior Axe",
+ "weaponSpecialWinter2025WarriorNotes": "A mighty axe for a mighty moose! You’ll be unstoppable! Increases Strength by <%= str %>. Limited Edition Winter 2024-2025 Gear.",
+ "weaponSpecialWinter2025RogueText": "Snowflake Burst",
+ "weaponSpecialWinter2025RogueNotes": "Thump and dazzle those difficult tasks into submission! You’ll be unstoppable! Increases Strength by <%= str %>. Limited Edition Winter 2024-2025 Gear.",
+ "weaponSpecialWinter2025HealerText": "Star Wand",
+ "weaponSpecialWinter2025HealerNotes": "What you need now are more lights and a glowing star to go on top! You'll be unstoppable! Increases Intelligence by <%= int %>. Limited Edition Winter 2024-2025 Gear.",
+ "weaponSpecialWinter2025MageText": "Northern Lights Display",
+ "weaponSpecialWinter2025MageNotes": "This stunning, colorful show provides the perfect backdrop! You’ll be unstoppable! Increases Intelligence by <%= int %> and Perception by <%= per %>. Limited Edition Winter 2024-2025 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",
@@ -1304,6 +1313,16 @@
"armorSpecialFall2024MageText": "Underworld Sorceror Armor",
"armorSpecialFall2024MageNotes": "Be one with the underworld and embrace the power of mages who’ve come before you in this armor. Increases Intelligence by <%= int %>. Limited Edition Fall 2024 Gear.",
+ "armorSpecialWinter2025WarriorText": "Moose Warrior Armor",
+ "armorSpecialWinter2025WarriorNotes": "Everyone’s going to step aside and make way for you when you wear this armor. Increases Constitution by <%= con %>. Limited Edition Winter 2024-2025 Gear.",
+ "armorSpecialWinter2025RogueText": "Snow Costume",
+ "armorSpecialWinter2025RogueNotes": "Although you look like you’re covered in cold snow, you are toasty, warm, jolly, and happy when you wear this costume. Increases Perception by <%= per %>. Limited Edition Winter 2024-2025 Gear.",
+ "armorSpecialWinter2025HealerText": "Robe of String Lights",
+ "armorSpecialWinter2025HealerNotes": "Twinkle your way through your tasks. Just be careful—if one bulb goes out, they all go out. Increases Constitution by <%= con %>. Limited Edition Winter 2024-2025 Gear.",
+ "armorSpecialWinter2025MageText": "Aurora Cloak",
+ "armorSpecialWinter2025MageNotes": "Wonder, whimsy, enchantment, and splendor will fill your days when you dance in this cloak. Increases Intelligence by <%= int %>. Limited Edition Winter 2024-2025 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",
@@ -1432,6 +1451,8 @@
"armorMystery202406Notes": "Haunt your enemies with style and flair! Confers no benefit. June 2024 Subscriber Item.",
"armorMystery202407Text": "Amiable Axolotl Suit",
"armorMystery202407Notes": "Glide through lakes and canals with your sweeping pink tail! Confers no benefit. July 2024 Subscriber Item.",
+ "armorMystery202412Text": "Candy Cane Cottontail Coat",
+ "armorMystery202412Notes": "A fun and fluffy look to keep you snug on a winter day. Confers no benefit. December 2024 Subscriber Item.",
"armorMystery301404Text": "Steampunk Suit",
"armorMystery301404Notes": "Dapper and dashing, wot! Confers no benefit. February 3015 Subscriber Item.",
@@ -1656,6 +1677,8 @@
"armorArmoireFunnyFoolCostumeNotes": "Dum-de-dum! Surely you jest. This colorful outfit looks amazing on you! Increases Strength by <%= str %>. Enchanted Armoire: Funny Fool Set (Item 2 of 3)",
"armorArmoireStormKnightArmorText": "Storm Knight Armor",
"armorArmoireStormKnightArmorNotes": "In this armor, you are nearly invincible. Your enemies will never see the storm’s end. Increases Perception by <%= per %>. Enchanted Armoire: Storm Knight Set (Item 2 of 3)",
+ "armorArmoireFestiveHelperOverallsText": "Festive Helper Overalls",
+ "armorArmoireFestiveHelperOverallsNotes": "Durable and comfortable, these overalls are great for working, playing, and assisting others. Plus, it has pockets! Increases Constitution by <%= con %>. Enchanted Armoire: Festive Helper Set (Item 2 of 2)",
"headgear": "helm",
"headgearCapitalized": "Headgear",
@@ -2163,6 +2186,15 @@
"headSpecialFall2024MageText": "Underworld Sorcerer Mask",
"headSpecialFall2024MageNotes": "Whether you’re mysterious or whimsical, you won’t be missed when you wear this! Increases Perception by <%= per %>. Limited Edition Fall 2024 Gear.",
+ "headSpecialWinter2025WarriorText": "Moose Warrior Helmet",
+ "headSpecialWinter2025WarriorNotes": "So, get this: now you look just like a moose. Wear those antlers with pride. Increases Strength by <%= str %>. Limited Edition Winter 2024-2025 Gear.",
+ "headSpecialWinter2025RogueText": "Snow Mask",
+ "headSpecialWinter2025RogueNotes": "There is definitely some magic in this hat, because it transforms you into a snow person. Just don’t let the bunny get too close to your carrot nose. Increases Perception by <%= per %>. Limited Edition Winter 2024-2025 Gear.",
+ "headSpecialWinter2025HealerText": "Tangle of String Lights",
+ "headSpecialWinter2025HealerNotes": "Don’t bother untangling these because they are already in the shape of a hat. Increases Intelligence by <%= int %>. Limited Edition Winter 2024-2025 Gear.",
+ "headSpecialWinter2025MageText": "Aurora Hat",
+ "headSpecialWinter2025MageNotes": "More than just a fancy fascinator, this hat makes you look like the aurora borealis itself. Increases Perception by <%= per %>. Limited Edition Winter 2024-2025 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.",
@@ -2334,6 +2366,8 @@
"headMystery202409Notes": "More than just jaunty decorations, the enchanted sunflowers on this hat fill the wearer with powerful magic energy. Confers no benefit. September 2024 Subscriber Item.",
"headMystery202411Text": "Bristled Helm",
"headMystery202411Notes": "This helm is quite intimidating to your tasks when you dive in headfirst! Confers no benefit. November 2024 Subscriber Item.",
+ "headMystery202412Text": "Candy Cane Cottontail Hood",
+ "headMystery202412Notes": "Warm and cozy, just like a cup of minty hot cocoa on a winter night! Confers no benefit. December 2024 Subscriber Item.",
"headMystery301404Text": "Fancy Top Hat",
"headMystery301404Notes": "A fancy top hat for the finest of gentlefolk! January 3015 Subscriber Item. Confers no benefit.",
@@ -2538,6 +2572,8 @@
"headArmoireFunnyFoolCapNotes": "The bells on this hat might make your opponents burst into giggles, but they just help you concentrate. Increases Constitution by <%= con %>. Enchanted Armoire: Funny Fool Set (Item 1 of 3)",
"headArmoireStormKnightHelmText": "Storm Knight Helm",
"headArmoireStormKnightHelmNotes": "Harness lightning through these antlers as you storm the castle. Increases Constitution by <%= con %>. Enchanted Armoire: Storm Knight Set (Item 1 of 3)",
+ "headArmoireFestiveHelperHatText": "Festive Helper Hat",
+ "headArmoireFestiveHelperHatNotes": "Holiday tip #27: have a helper hat handy. This one is big enough to keep an emergency toy underneath! Increases Intelligence by <%= int %>. Enchanted Armoire: Festive Helper Set (Item 1 of 2)",
"offhand": "off-hand item",
"offHandCapitalized": "Off-Hand Item",
@@ -2826,6 +2862,11 @@
"shieldSpecialFall2024HealerText": "Space Shield",
"shieldSpecialFall2024HealerNotes": "New tasks wanting your attention bounce right off until you’ve completed your current mission. Increases Constitution by <%= con %>. Limited Edition Fall 2024 Gear.",
+ "shieldSpecialWinter2025WarriorText": "Moose Warrior Shield",
+ "shieldSpecialWinter2025WarriorNotes": "Block out any unwanted distractions with this shield as strong as a moose. Increases Constitution by <%= con %>. Limited Edition Winter 2024-2025 Gear.",
+ "shieldSpecialWinter2025HealerText": "The Perfect Gift",
+ "shieldSpecialWinter2025HealerNotes": "The perfect gift is just waiting to be opened. What could be inside? Increases Constitution by <%= con %>. Limited Edition Winter 2024-2025 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",
diff --git a/website/common/locales/en/limited.json b/website/common/locales/en/limited.json
index 614d34a94a..5935e33fe2 100644
--- a/website/common/locales/en/limited.json
+++ b/website/common/locales/en/limited.json
@@ -223,6 +223,10 @@
"fall2024UnderworldSorcerorMageSet": "Underworld Sorceror Set (Mage)",
"fall2024SpaceInvaderHealerSet": "Space Invader Set (Healer)",
"fall2024BlackCatRogueSet": "Black Cat Set (Rogue)",
+ "winter2025MooseWarriorSet": "Moose Warrior Set",
+ "winter2025AuroraMageSet": "Aurora Mage Set",
+ "winter2025StringLightsHealerSet": "String Lights Healer Set",
+ "winter2025SnowRogueSet": "Snow Rogue Set",
"winterPromoGiftHeader": "GIFT A SUBSCRIPTION, GET ONE FREE!",
"winterPromoGiftDetails1": "Until January 6th only, when you gift somebody a subscription, you get the same subscription for yourself for free!",
"winterPromoGiftDetails2": "Please note that if you or your gift recipient already have a recurring subscription, the gifted subscription will only start after that subscription is cancelled or has expired. Thanks so much for your support! <3",
diff --git a/website/common/locales/en/subscriber.json b/website/common/locales/en/subscriber.json
index 7f9b186f82..394746ce8f 100644
--- a/website/common/locales/en/subscriber.json
+++ b/website/common/locales/en/subscriber.json
@@ -168,6 +168,7 @@
"mysterySet202409": "Heliotrope Magus Set",
"mysterySet202410": "Candy Corn Fox Set",
"mysterySet202411": "Bristled Brawler Set",
+ "mysterySet202412": "Candy Cane Cottontail Set",
"mysterySet301404": "Steampunk Standard Set",
"mysterySet301405": "Steampunk Accessories Set",
"mysterySet301703": "Peacock Steampunk Set",
diff --git a/website/common/script/content/appearance/backgrounds.js b/website/common/script/content/appearance/backgrounds.js
index 84bc2354a7..d9329406ae 100644
--- a/website/common/script/content/appearance/backgrounds.js
+++ b/website/common/script/content/appearance/backgrounds.js
@@ -638,6 +638,9 @@ const backgrounds = {
backgrounds112024: {
castle_hall_with_hearth: { },
},
+ backgrounds122024: {
+ first_snow_forest: { },
+ },
eventBackgrounds: {
birthday_bash: {
price: 0,
diff --git a/website/common/script/content/constants/releaseDates.js b/website/common/script/content/constants/releaseDates.js
index fddf41b510..f519db780a 100644
--- a/website/common/script/content/constants/releaseDates.js
+++ b/website/common/script/content/constants/releaseDates.js
@@ -13,6 +13,7 @@ export const ARMOIRE_RELEASE_DATES = {
funnyFoolSet: { year: 2024, month: 9 },
frightNightSet: { year: 2024, month: 10 },
stormKnightSet: { year: 2024, month: 11 },
+ festiveHelperSet: { year: 2024, month: 12 },
};
export const EGGS_RELEASE_DATES = {
@@ -25,4 +26,5 @@ export const EGGS_RELEASE_DATES = {
export const HATCHING_POTIONS_RELEASE_DATES = {
Koi: { year: 2024, month: 6, day: 1 },
+ Gingerbread: { year: 2024, month: 12, day: 21 },
};
diff --git a/website/common/script/content/constants/schedule.js b/website/common/script/content/constants/schedule.js
index 73700b135c..99c0eb3a58 100644
--- a/website/common/script/content/constants/schedule.js
+++ b/website/common/script/content/constants/schedule.js
@@ -648,6 +648,7 @@ export const MONTHLY_SCHEDULE = {
items: [
'Peppermint',
'Holly',
+ 'Gingerbread',
],
},
],
diff --git a/website/common/script/content/constants/seasonalSets.js b/website/common/script/content/constants/seasonalSets.js
index dfdcf5edb9..d0b9112e13 100644
--- a/website/common/script/content/constants/seasonalSets.js
+++ b/website/common/script/content/constants/seasonalSets.js
@@ -57,6 +57,11 @@ const SEASONAL_SETS = {
'winter2024PeppermintBarkWarriorSet',
'winter2024NarwhalWizardMageSet',
'winter2024FrozenHealerSet',
+
+ 'winter2025MooseWarriorSet',
+ 'winter2025AuroraMageSet',
+ 'winter2025StringLightsHealerSet',
+ 'winter2025SnowRogueSet',
],
spring: [
// spring 2014
diff --git a/website/common/script/content/gear/sets/armoire.js b/website/common/script/content/gear/sets/armoire.js
index 341b973b76..c5be7dfcd4 100644
--- a/website/common/script/content/gear/sets/armoire.js
+++ b/website/common/script/content/gear/sets/armoire.js
@@ -502,6 +502,10 @@ const armor = {
per: 11,
set: 'stormKnightSet',
},
+ festiveHelperOveralls: {
+ con: 12,
+ set: 'festiveHelperSet',
+ },
};
const body = {
@@ -1027,6 +1031,10 @@ const head = {
con: 11,
set: 'stormKnightSet',
},
+ festiveHelperHat: {
+ int: 12,
+ set: 'festiveHelperSet',
+ },
};
const shield = {
diff --git a/website/common/script/content/gear/sets/mystery.js b/website/common/script/content/gear/sets/mystery.js
index 75f28b041d..3e15da24be 100644
--- a/website/common/script/content/gear/sets/mystery.js
+++ b/website/common/script/content/gear/sets/mystery.js
@@ -67,6 +67,7 @@ const armor = {
202401: { },
202406: { },
202407: { },
+ 202412: { },
301404: { },
301703: { },
301704: { },
@@ -232,6 +233,7 @@ const head = {
202407: { },
202409: { },
202411: { },
+ 202412: { },
301404: { },
301405: { },
301703: { },
diff --git a/website/common/script/content/gear/sets/special/index.js b/website/common/script/content/gear/sets/special/index.js
index 7f43d51d54..b746fab776 100644
--- a/website/common/script/content/gear/sets/special/index.js
+++ b/website/common/script/content/gear/sets/special/index.js
@@ -779,6 +779,18 @@ const armor = {
fall2024Rogue: {
set: 'fall2024BlackCatRogueSet',
},
+ winter2025Warrior: {
+ set: 'winter2025MooseWarriorSet',
+ },
+ winter2025Mage: {
+ set: 'winter2025AuroraMageSet',
+ },
+ winter2025Healer: {
+ set: 'winter2025StringLightsHealerSet',
+ },
+ winter2025Rogue: {
+ set: 'winter2025SnowRogueSet',
+ },
};
const armorStats = {
@@ -1868,6 +1880,18 @@ const head = {
fall2024Rogue: {
set: 'fall2024BlackCatRogueSet',
},
+ winter2025Warrior: {
+ set: 'winter2025MooseWarriorSet',
+ },
+ winter2025Mage: {
+ set: 'winter2025AuroraMageSet',
+ },
+ winter2025Healer: {
+ set: 'winter2025StringLightsHealerSet',
+ },
+ winter2025Rogue: {
+ set: 'winter2025SnowRogueSet',
+ },
};
const headStats = {
@@ -2558,6 +2582,15 @@ const shield = {
fall2024Rogue: {
set: 'fall2024BlackCatRogueSet',
},
+ winter2025Warrior: {
+ set: 'winter2025MooseWarriorSet',
+ },
+ winter2025Healer: {
+ set: 'winter2025StringLightsHealerSet',
+ },
+ winter2025Rogue: {
+ set: 'winter2025SnowRogueSet',
+ },
};
const shieldStats = {
@@ -3237,6 +3270,18 @@ const weapon = {
fall2024Rogue: {
set: 'fall2024BlackCatRogueSet',
},
+ winter2025Warrior: {
+ set: 'winter2025MooseWarriorSet',
+ },
+ winter2025Mage: {
+ set: 'winter2025AuroraMageSet',
+ },
+ winter2025Healer: {
+ set: 'winter2025StringLightsHealerSet',
+ },
+ winter2025Rogue: {
+ set: 'winter2025SnowRogueSet',
+ },
};
const weaponStats = {
diff --git a/website/common/script/content/hatching-potions.js b/website/common/script/content/hatching-potions.js
index 203a26648c..aef5e7aa67 100644
--- a/website/common/script/content/hatching-potions.js
+++ b/website/common/script/content/hatching-potions.js
@@ -127,6 +127,7 @@ const premium = {
},
RoseGold: {},
Koi: {},
+ Gingerbread: {},
};
const wacky = {
diff --git a/website/common/script/libs/shops-seasonal.config.js b/website/common/script/libs/shops-seasonal.config.js
index 83bdc2192a..103e6e0e8f 100644
--- a/website/common/script/libs/shops-seasonal.config.js
+++ b/website/common/script/libs/shops-seasonal.config.js
@@ -23,7 +23,8 @@ function safeGetSet (currentEvent, year, className) {
}
function getCurrentSeasonalSets (currentEvent) {
- const year = new Date().getFullYear();
+ const now = new Date();
+ const year = now.getMonth() === 11 ? now.getFullYear() + 1 : now.getFullYear();
return {
rogue: safeGetSet(currentEvent, year, 'Rogue'),
warrior: safeGetSet(currentEvent, year, 'Warrior'),