mirror of
https://github.com/HabitRPG/habitica.git
synced 2025-12-17 06:37:23 +01:00
December 2024 and Winter Wonderland 2025 build (#15358)
* feat(content): Winter 2025 build by @CuriousMagpie * fix(content): add more WW * fix(content): add more WW * chore(subproj): update habitica-images * fix(gala): December 2024 is Winter 2025 * fix(content): lint, background typo, 0 index month * fix(content): add missing mystery set name * fix(content): roll back erroneous month indexing * fix(tests): no 13th month, consider releases in schedule test * update gear strings * fix(seasonal): show quest modal * fix(seasonal): use category-item component * chore(subproj): update habitica-images --------- Co-authored-by: CuriousMagpie <eilatan@gmail.com>
This commit is contained in:
@@ -19,8 +19,8 @@ describe('releaseDates', () => {
|
|||||||
});
|
});
|
||||||
describe('armoire', () => {
|
describe('armoire', () => {
|
||||||
it('should only contain valid armoire names', () => {
|
it('should only contain valid armoire names', () => {
|
||||||
const lastReleaseDate = maxBy(Object.values(ARMOIRE_RELEASE_DATES), value => new Date(`${value.year}-${value.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 + 1}-20`));
|
clock = sinon.useFakeTimers(new Date(`${lastReleaseDate.year}-${lastReleaseDate.month}-22`));
|
||||||
Object.keys(ARMOIRE_RELEASE_DATES).forEach(key => {
|
Object.keys(ARMOIRE_RELEASE_DATES).forEach(key => {
|
||||||
expect(find(armoire.all, { set: key }), `${key} is not a valid armoire set`).to.exist;
|
expect(find(armoire.all, { set: key }), `${key} is not a valid armoire set`).to.exist;
|
||||||
});
|
});
|
||||||
@@ -40,8 +40,8 @@ describe('releaseDates', () => {
|
|||||||
|
|
||||||
describe('eggs', () => {
|
describe('eggs', () => {
|
||||||
it('should only contain valid egg names', () => {
|
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}`));
|
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 + 1}-${lastReleaseDate.day}`));
|
clock = sinon.useFakeTimers(new Date(`${lastReleaseDate.year}-${lastReleaseDate.month}-${lastReleaseDate.day + 1}`));
|
||||||
Object.keys(EGGS_RELEASE_DATES).forEach(key => {
|
Object.keys(EGGS_RELEASE_DATES).forEach(key => {
|
||||||
expect(eggs.all[key], `${key} is not a valid egg name`).to.exist;
|
expect(eggs.all[key], `${key} is not a valid egg name`).to.exist;
|
||||||
});
|
});
|
||||||
@@ -61,8 +61,8 @@ describe('releaseDates', () => {
|
|||||||
|
|
||||||
describe('hatchingPotions', () => {
|
describe('hatchingPotions', () => {
|
||||||
it('should only contain valid potion names', () => {
|
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}`));
|
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 + 1}-${lastReleaseDate.day}`));
|
clock = sinon.useFakeTimers(new Date(`${lastReleaseDate.year}-${lastReleaseDate.month}-${lastReleaseDate.day + 1}`));
|
||||||
Object.keys(HATCHING_POTIONS_RELEASE_DATES).forEach(key => {
|
Object.keys(HATCHING_POTIONS_RELEASE_DATES).forEach(key => {
|
||||||
expect(hatchingPotions.all[key], `${key} is not a valid potion name`).to.exist;
|
expect(hatchingPotions.all[key], `${key} is not a valid potion name`).to.exist;
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
// eslint-disable-next-line max-len
|
// eslint-disable-next-line max-len
|
||||||
|
import maxBy from 'lodash/maxBy';
|
||||||
import moment from 'moment';
|
import moment from 'moment';
|
||||||
import nconf from 'nconf';
|
import nconf from 'nconf';
|
||||||
import {
|
import {
|
||||||
@@ -10,6 +11,7 @@ import QUEST_BUNDLES from '../../website/common/script/content/bundles';
|
|||||||
import potions from '../../website/common/script/content/hatching-potions';
|
import potions from '../../website/common/script/content/hatching-potions';
|
||||||
import SPELLS from '../../website/common/script/content/spells';
|
import SPELLS from '../../website/common/script/content/spells';
|
||||||
import QUEST_SEASONAL from '../../website/common/script/content/quests/seasonal';
|
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) {
|
function validateMatcher (matcher, checkedDate) {
|
||||||
expect(matcher.end).to.be.a('date');
|
expect(matcher.end).to.be.a('date');
|
||||||
@@ -222,6 +224,8 @@ describe('Content Schedule', () => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
it('premium hatching potions', () => {
|
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);
|
const potionKeys = Object.keys(potions.premium);
|
||||||
Object.keys(MONTHLY_SCHEDULE).forEach(key => {
|
Object.keys(MONTHLY_SCHEDULE).forEach(key => {
|
||||||
const monthlyPotions = MONTHLY_SCHEDULE[key][21].find(item => item.type === 'premiumHatchingPotions');
|
const monthlyPotions = MONTHLY_SCHEDULE[key][21].find(item => item.type === 'premiumHatchingPotions');
|
||||||
|
|||||||
@@ -163,14 +163,7 @@
|
|||||||
slot="itemBadge"
|
slot="itemBadge"
|
||||||
slot-scope="ctx"
|
slot-scope="ctx"
|
||||||
>
|
>
|
||||||
<span
|
<category-item :item="ctx.item" />
|
||||||
class="badge-top"
|
|
||||||
@click.prevent.stop="togglePinned(ctx.item)"
|
|
||||||
>
|
|
||||||
<pin-badge
|
|
||||||
:pinned="ctx.item.pinned"
|
|
||||||
/>
|
|
||||||
</span>
|
|
||||||
</template>
|
</template>
|
||||||
</shopItem>
|
</shopItem>
|
||||||
</div>
|
</div>
|
||||||
@@ -178,6 +171,23 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<buy-quest-modal
|
||||||
|
:item="selectedItemToBuy || {}"
|
||||||
|
:price-type="selectedItemToBuy ? selectedItemToBuy.currency : ''"
|
||||||
|
:with-pin="true"
|
||||||
|
>
|
||||||
|
<template
|
||||||
|
slot="item"
|
||||||
|
slot-scope="ctx"
|
||||||
|
>
|
||||||
|
<item
|
||||||
|
class="flat"
|
||||||
|
:item="ctx.item"
|
||||||
|
:item-content-class="ctx.item.class"
|
||||||
|
:show-popover="false"
|
||||||
|
/>
|
||||||
|
</template>
|
||||||
|
</buy-quest-modal>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
@@ -346,11 +356,17 @@ import svgWizard from '@/assets/svg/wizard.svg';
|
|||||||
import svgRogue from '@/assets/svg/rogue.svg';
|
import svgRogue from '@/assets/svg/rogue.svg';
|
||||||
import svgHealer from '@/assets/svg/healer.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 FilterSidebar from '@/components/ui/filterSidebar';
|
||||||
import { worldStateMixin } from '@/mixins/worldState';
|
import { worldStateMixin } from '@/mixins/worldState';
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
components: {
|
components: {
|
||||||
|
BuyQuestModal,
|
||||||
|
CategoryItem,
|
||||||
|
FilterGroup,
|
||||||
FilterSidebar,
|
FilterSidebar,
|
||||||
Checkbox,
|
Checkbox,
|
||||||
PinBadge,
|
PinBadge,
|
||||||
@@ -386,6 +402,7 @@ export default {
|
|||||||
featuredGearBought: false,
|
featuredGearBought: false,
|
||||||
currentEvent: null,
|
currentEvent: null,
|
||||||
backgroundUpdate: new Date(),
|
backgroundUpdate: new Date(),
|
||||||
|
selectedItemToBuy: null,
|
||||||
imageURLs: {
|
imageURLs: {
|
||||||
background: '',
|
background: '',
|
||||||
npc: '',
|
npc: '',
|
||||||
@@ -550,7 +567,12 @@ export default {
|
|||||||
return false;
|
return false;
|
||||||
},
|
},
|
||||||
itemSelected (item) {
|
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);
|
||||||
|
}
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -1003,6 +1003,10 @@
|
|||||||
"backgroundCastleHallWithHearthText": "Castle Hall with Hearth",
|
"backgroundCastleHallWithHearthText": "Castle Hall with Hearth",
|
||||||
"backgroundCastleHallWithHearthNotes": "Bask in the warmth of a Castle Hall with a 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",
|
"timeTravelBackgrounds": "Steampunk Backgrounds",
|
||||||
"backgroundAirshipText": "Airship",
|
"backgroundAirshipText": "Airship",
|
||||||
"backgroundAirshipNotes": "Become a sky sailor on board your very own Airship.",
|
"backgroundAirshipNotes": "Become a sky sailor on board your very own Airship.",
|
||||||
|
|||||||
@@ -335,6 +335,7 @@
|
|||||||
"hatchingPotionRoseGold": "Rose Gold",
|
"hatchingPotionRoseGold": "Rose Gold",
|
||||||
"hatchingPotionFungi": "Fungi",
|
"hatchingPotionFungi": "Fungi",
|
||||||
"hatchingPotionKoi": "Koi",
|
"hatchingPotionKoi": "Koi",
|
||||||
|
"hatchingPotionGingerbread": "Gingerbread",
|
||||||
|
|
||||||
"hatchingPotionNotes": "Pour this on an egg, and it will hatch as a <%= potText(locale) %> Pet.",
|
"hatchingPotionNotes": "Pour this on an egg, and it will hatch as a <%= potText(locale) %> Pet.",
|
||||||
"premiumPotionUnlimitedNotes": "Not usable on Quest Pet eggs.",
|
"premiumPotionUnlimitedNotes": "Not usable on Quest Pet eggs.",
|
||||||
|
|||||||
@@ -533,6 +533,15 @@
|
|||||||
"weaponSpecialFall2024MageText": "Staff of the Underworld",
|
"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.",
|
"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",
|
"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.",
|
"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",
|
"weaponMystery201502Text": "Shimmery Winged Staff of Love and Also Truth",
|
||||||
@@ -1304,6 +1313,16 @@
|
|||||||
"armorSpecialFall2024MageText": "Underworld Sorceror Armor",
|
"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.",
|
"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",
|
"armorMystery201402Text": "Messenger Robes",
|
||||||
"armorMystery201402Notes": "Shimmering and strong, these robes have many pockets to carry letters. Confers no benefit. February 2014 Subscriber Item.",
|
"armorMystery201402Notes": "Shimmering and strong, these robes have many pockets to carry letters. Confers no benefit. February 2014 Subscriber Item.",
|
||||||
"armorMystery201403Text": "Forest Walker Armor",
|
"armorMystery201403Text": "Forest Walker Armor",
|
||||||
@@ -1432,6 +1451,8 @@
|
|||||||
"armorMystery202406Notes": "Haunt your enemies with style and flair! Confers no benefit. June 2024 Subscriber Item.",
|
"armorMystery202406Notes": "Haunt your enemies with style and flair! Confers no benefit. June 2024 Subscriber Item.",
|
||||||
"armorMystery202407Text": "Amiable Axolotl Suit",
|
"armorMystery202407Text": "Amiable Axolotl Suit",
|
||||||
"armorMystery202407Notes": "Glide through lakes and canals with your sweeping pink tail! Confers no benefit. July 2024 Subscriber Item.",
|
"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",
|
"armorMystery301404Text": "Steampunk Suit",
|
||||||
"armorMystery301404Notes": "Dapper and dashing, wot! Confers no benefit. February 3015 Subscriber Item.",
|
"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)",
|
"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",
|
"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)",
|
"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",
|
"headgear": "helm",
|
||||||
"headgearCapitalized": "Headgear",
|
"headgearCapitalized": "Headgear",
|
||||||
@@ -2163,6 +2186,15 @@
|
|||||||
"headSpecialFall2024MageText": "Underworld Sorcerer Mask",
|
"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.",
|
"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",
|
"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.",
|
"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.",
|
"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",
|
"headMystery202411Text": "Bristled Helm",
|
||||||
"headMystery202411Notes": "This helm is quite intimidating to your tasks when you dive in headfirst! Confers no benefit. November 2024 Subscriber Item.",
|
"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",
|
"headMystery301404Text": "Fancy Top Hat",
|
||||||
"headMystery301404Notes": "A fancy top hat for the finest of gentlefolk! January 3015 Subscriber Item. Confers no benefit.",
|
"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)",
|
"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",
|
"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)",
|
"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",
|
"offhand": "off-hand item",
|
||||||
"offHandCapitalized": "Off-Hand Item",
|
"offHandCapitalized": "Off-Hand Item",
|
||||||
@@ -2826,6 +2862,11 @@
|
|||||||
"shieldSpecialFall2024HealerText": "Space Shield",
|
"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.",
|
"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",
|
"shieldMystery201601Text": "Resolution Slayer",
|
||||||
"shieldMystery201601Notes": "This blade can be used to parry away all distractions. Confers no benefit. January 2016 Subscriber Item.",
|
"shieldMystery201601Notes": "This blade can be used to parry away all distractions. Confers no benefit. January 2016 Subscriber Item.",
|
||||||
"shieldMystery201701Text": "Time-Freezer Shield",
|
"shieldMystery201701Text": "Time-Freezer Shield",
|
||||||
|
|||||||
@@ -223,6 +223,10 @@
|
|||||||
"fall2024UnderworldSorcerorMageSet": "Underworld Sorceror Set (Mage)",
|
"fall2024UnderworldSorcerorMageSet": "Underworld Sorceror Set (Mage)",
|
||||||
"fall2024SpaceInvaderHealerSet": "Space Invader Set (Healer)",
|
"fall2024SpaceInvaderHealerSet": "Space Invader Set (Healer)",
|
||||||
"fall2024BlackCatRogueSet": "Black Cat Set (Rogue)",
|
"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!",
|
"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!",
|
"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",
|
"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",
|
||||||
|
|||||||
@@ -168,6 +168,7 @@
|
|||||||
"mysterySet202409": "Heliotrope Magus Set",
|
"mysterySet202409": "Heliotrope Magus Set",
|
||||||
"mysterySet202410": "Candy Corn Fox Set",
|
"mysterySet202410": "Candy Corn Fox Set",
|
||||||
"mysterySet202411": "Bristled Brawler Set",
|
"mysterySet202411": "Bristled Brawler Set",
|
||||||
|
"mysterySet202412": "Candy Cane Cottontail Set",
|
||||||
"mysterySet301404": "Steampunk Standard Set",
|
"mysterySet301404": "Steampunk Standard Set",
|
||||||
"mysterySet301405": "Steampunk Accessories Set",
|
"mysterySet301405": "Steampunk Accessories Set",
|
||||||
"mysterySet301703": "Peacock Steampunk Set",
|
"mysterySet301703": "Peacock Steampunk Set",
|
||||||
|
|||||||
@@ -638,6 +638,9 @@ const backgrounds = {
|
|||||||
backgrounds112024: {
|
backgrounds112024: {
|
||||||
castle_hall_with_hearth: { },
|
castle_hall_with_hearth: { },
|
||||||
},
|
},
|
||||||
|
backgrounds122024: {
|
||||||
|
first_snow_forest: { },
|
||||||
|
},
|
||||||
eventBackgrounds: {
|
eventBackgrounds: {
|
||||||
birthday_bash: {
|
birthday_bash: {
|
||||||
price: 0,
|
price: 0,
|
||||||
|
|||||||
@@ -13,6 +13,7 @@ export const ARMOIRE_RELEASE_DATES = {
|
|||||||
funnyFoolSet: { year: 2024, month: 9 },
|
funnyFoolSet: { year: 2024, month: 9 },
|
||||||
frightNightSet: { year: 2024, month: 10 },
|
frightNightSet: { year: 2024, month: 10 },
|
||||||
stormKnightSet: { year: 2024, month: 11 },
|
stormKnightSet: { year: 2024, month: 11 },
|
||||||
|
festiveHelperSet: { year: 2024, month: 12 },
|
||||||
};
|
};
|
||||||
|
|
||||||
export const EGGS_RELEASE_DATES = {
|
export const EGGS_RELEASE_DATES = {
|
||||||
@@ -25,4 +26,5 @@ export const EGGS_RELEASE_DATES = {
|
|||||||
|
|
||||||
export const HATCHING_POTIONS_RELEASE_DATES = {
|
export const HATCHING_POTIONS_RELEASE_DATES = {
|
||||||
Koi: { year: 2024, month: 6, day: 1 },
|
Koi: { year: 2024, month: 6, day: 1 },
|
||||||
|
Gingerbread: { year: 2024, month: 12, day: 21 },
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -648,6 +648,7 @@ export const MONTHLY_SCHEDULE = {
|
|||||||
items: [
|
items: [
|
||||||
'Peppermint',
|
'Peppermint',
|
||||||
'Holly',
|
'Holly',
|
||||||
|
'Gingerbread',
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
|
|||||||
@@ -57,6 +57,11 @@ const SEASONAL_SETS = {
|
|||||||
'winter2024PeppermintBarkWarriorSet',
|
'winter2024PeppermintBarkWarriorSet',
|
||||||
'winter2024NarwhalWizardMageSet',
|
'winter2024NarwhalWizardMageSet',
|
||||||
'winter2024FrozenHealerSet',
|
'winter2024FrozenHealerSet',
|
||||||
|
|
||||||
|
'winter2025MooseWarriorSet',
|
||||||
|
'winter2025AuroraMageSet',
|
||||||
|
'winter2025StringLightsHealerSet',
|
||||||
|
'winter2025SnowRogueSet',
|
||||||
],
|
],
|
||||||
spring: [
|
spring: [
|
||||||
// spring 2014
|
// spring 2014
|
||||||
|
|||||||
@@ -502,6 +502,10 @@ const armor = {
|
|||||||
per: 11,
|
per: 11,
|
||||||
set: 'stormKnightSet',
|
set: 'stormKnightSet',
|
||||||
},
|
},
|
||||||
|
festiveHelperOveralls: {
|
||||||
|
con: 12,
|
||||||
|
set: 'festiveHelperSet',
|
||||||
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
const body = {
|
const body = {
|
||||||
@@ -1027,6 +1031,10 @@ const head = {
|
|||||||
con: 11,
|
con: 11,
|
||||||
set: 'stormKnightSet',
|
set: 'stormKnightSet',
|
||||||
},
|
},
|
||||||
|
festiveHelperHat: {
|
||||||
|
int: 12,
|
||||||
|
set: 'festiveHelperSet',
|
||||||
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
const shield = {
|
const shield = {
|
||||||
|
|||||||
@@ -67,6 +67,7 @@ const armor = {
|
|||||||
202401: { },
|
202401: { },
|
||||||
202406: { },
|
202406: { },
|
||||||
202407: { },
|
202407: { },
|
||||||
|
202412: { },
|
||||||
301404: { },
|
301404: { },
|
||||||
301703: { },
|
301703: { },
|
||||||
301704: { },
|
301704: { },
|
||||||
@@ -232,6 +233,7 @@ const head = {
|
|||||||
202407: { },
|
202407: { },
|
||||||
202409: { },
|
202409: { },
|
||||||
202411: { },
|
202411: { },
|
||||||
|
202412: { },
|
||||||
301404: { },
|
301404: { },
|
||||||
301405: { },
|
301405: { },
|
||||||
301703: { },
|
301703: { },
|
||||||
|
|||||||
@@ -779,6 +779,18 @@ const armor = {
|
|||||||
fall2024Rogue: {
|
fall2024Rogue: {
|
||||||
set: 'fall2024BlackCatRogueSet',
|
set: 'fall2024BlackCatRogueSet',
|
||||||
},
|
},
|
||||||
|
winter2025Warrior: {
|
||||||
|
set: 'winter2025MooseWarriorSet',
|
||||||
|
},
|
||||||
|
winter2025Mage: {
|
||||||
|
set: 'winter2025AuroraMageSet',
|
||||||
|
},
|
||||||
|
winter2025Healer: {
|
||||||
|
set: 'winter2025StringLightsHealerSet',
|
||||||
|
},
|
||||||
|
winter2025Rogue: {
|
||||||
|
set: 'winter2025SnowRogueSet',
|
||||||
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
const armorStats = {
|
const armorStats = {
|
||||||
@@ -1868,6 +1880,18 @@ const head = {
|
|||||||
fall2024Rogue: {
|
fall2024Rogue: {
|
||||||
set: 'fall2024BlackCatRogueSet',
|
set: 'fall2024BlackCatRogueSet',
|
||||||
},
|
},
|
||||||
|
winter2025Warrior: {
|
||||||
|
set: 'winter2025MooseWarriorSet',
|
||||||
|
},
|
||||||
|
winter2025Mage: {
|
||||||
|
set: 'winter2025AuroraMageSet',
|
||||||
|
},
|
||||||
|
winter2025Healer: {
|
||||||
|
set: 'winter2025StringLightsHealerSet',
|
||||||
|
},
|
||||||
|
winter2025Rogue: {
|
||||||
|
set: 'winter2025SnowRogueSet',
|
||||||
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
const headStats = {
|
const headStats = {
|
||||||
@@ -2558,6 +2582,15 @@ const shield = {
|
|||||||
fall2024Rogue: {
|
fall2024Rogue: {
|
||||||
set: 'fall2024BlackCatRogueSet',
|
set: 'fall2024BlackCatRogueSet',
|
||||||
},
|
},
|
||||||
|
winter2025Warrior: {
|
||||||
|
set: 'winter2025MooseWarriorSet',
|
||||||
|
},
|
||||||
|
winter2025Healer: {
|
||||||
|
set: 'winter2025StringLightsHealerSet',
|
||||||
|
},
|
||||||
|
winter2025Rogue: {
|
||||||
|
set: 'winter2025SnowRogueSet',
|
||||||
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
const shieldStats = {
|
const shieldStats = {
|
||||||
@@ -3237,6 +3270,18 @@ const weapon = {
|
|||||||
fall2024Rogue: {
|
fall2024Rogue: {
|
||||||
set: 'fall2024BlackCatRogueSet',
|
set: 'fall2024BlackCatRogueSet',
|
||||||
},
|
},
|
||||||
|
winter2025Warrior: {
|
||||||
|
set: 'winter2025MooseWarriorSet',
|
||||||
|
},
|
||||||
|
winter2025Mage: {
|
||||||
|
set: 'winter2025AuroraMageSet',
|
||||||
|
},
|
||||||
|
winter2025Healer: {
|
||||||
|
set: 'winter2025StringLightsHealerSet',
|
||||||
|
},
|
||||||
|
winter2025Rogue: {
|
||||||
|
set: 'winter2025SnowRogueSet',
|
||||||
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
const weaponStats = {
|
const weaponStats = {
|
||||||
|
|||||||
@@ -127,6 +127,7 @@ const premium = {
|
|||||||
},
|
},
|
||||||
RoseGold: {},
|
RoseGold: {},
|
||||||
Koi: {},
|
Koi: {},
|
||||||
|
Gingerbread: {},
|
||||||
};
|
};
|
||||||
|
|
||||||
const wacky = {
|
const wacky = {
|
||||||
|
|||||||
@@ -23,7 +23,8 @@ function safeGetSet (currentEvent, year, className) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function getCurrentSeasonalSets (currentEvent) {
|
function getCurrentSeasonalSets (currentEvent) {
|
||||||
const year = new Date().getFullYear();
|
const now = new Date();
|
||||||
|
const year = now.getMonth() === 11 ? now.getFullYear() + 1 : now.getFullYear();
|
||||||
return {
|
return {
|
||||||
rogue: safeGetSet(currentEvent, year, 'Rogue'),
|
rogue: safeGetSet(currentEvent, year, 'Rogue'),
|
||||||
warrior: safeGetSet(currentEvent, year, 'Warrior'),
|
warrior: safeGetSet(currentEvent, year, 'Warrior'),
|
||||||
|
|||||||
Reference in New Issue
Block a user