mirror of
https://github.com/HabitRPG/habitica.git
synced 2025-12-16 22:27:26 +01:00
feat(content): Winter Wonderland 2025-6
This commit is contained in:
@@ -674,6 +674,15 @@ const backgrounds = {
|
||||
backgrounds112025: {
|
||||
castle_keep_with_banners: { },
|
||||
},
|
||||
backgrounds122025: {
|
||||
nighttime_street_with_shops: { },
|
||||
},
|
||||
backgrounds012026: {
|
||||
winter_desert_with_saguaros: { },
|
||||
},
|
||||
backgrounds022026: {
|
||||
elegant_palace: { },
|
||||
},
|
||||
eventBackgrounds: {
|
||||
birthday_bash: {
|
||||
price: 0,
|
||||
|
||||
@@ -26,6 +26,9 @@ export const ARMOIRE_RELEASE_DATES = {
|
||||
orangeLoungewear: { year: 2025, month: 9 },
|
||||
blackHairbow: { year: 2025, month: 10 },
|
||||
blacksmith: { year: 2025, month: 11 },
|
||||
musicalInstrumentTwo: { year: 2025, month: 12 },
|
||||
loneCowpoke: { year: 2026, month: 1 },
|
||||
prettyInPink: { year: 2026, month: 2 },
|
||||
};
|
||||
|
||||
export const EGGS_RELEASE_DATES = {
|
||||
|
||||
@@ -62,6 +62,11 @@ const SEASONAL_SETS = {
|
||||
'winter2025AuroraMageSet',
|
||||
'winter2025StringLightsHealerSet',
|
||||
'winter2025SnowRogueSet',
|
||||
|
||||
'winter2026RimeReaperWarriorSet',
|
||||
'winter2026SkiRogueSet',
|
||||
'winter2026PolarBearHealerSet',
|
||||
'winter2026MidwinterCandleMageSet',
|
||||
],
|
||||
spring: [
|
||||
// spring 2014
|
||||
|
||||
@@ -2,11 +2,15 @@ import { back as baseBack } from './sets/base';
|
||||
|
||||
import { back as mysteryBack } from './sets/mystery';
|
||||
import { back as specialBack } from './sets/special';
|
||||
import armoire from './sets/armoire';
|
||||
|
||||
const back = {
|
||||
base: baseBack,
|
||||
mystery: mysteryBack,
|
||||
special: specialBack,
|
||||
get armoire () {
|
||||
return armoire.back;
|
||||
},
|
||||
};
|
||||
|
||||
export default back;
|
||||
|
||||
@@ -557,6 +557,18 @@ const armor = {
|
||||
con: 11,
|
||||
set: 'blacksmith',
|
||||
},
|
||||
loneCowpokeOutfit: {
|
||||
con: 10,
|
||||
set: 'loneCowpoke',
|
||||
},
|
||||
};
|
||||
|
||||
const back = {
|
||||
harpsichord: {
|
||||
int: 6,
|
||||
per: 6,
|
||||
set: 'musicalInstrumentTwo',
|
||||
},
|
||||
};
|
||||
|
||||
const body = {
|
||||
@@ -1140,6 +1152,10 @@ const head = {
|
||||
per: 11,
|
||||
set: 'blacksmith',
|
||||
},
|
||||
loneCowpokeHat: {
|
||||
per: 10,
|
||||
set: 'loneCowpoke',
|
||||
},
|
||||
};
|
||||
|
||||
const shield = {
|
||||
@@ -1518,6 +1534,18 @@ const shield = {
|
||||
per: 8,
|
||||
set: 'orangeLoungewear',
|
||||
},
|
||||
doubleBass: {
|
||||
con: 6,
|
||||
str: 6,
|
||||
set: 'musicalInstrumentTwo',
|
||||
},
|
||||
prettyPinkGiftBox: {
|
||||
con: 2,
|
||||
int: 2,
|
||||
per: 2,
|
||||
str: 2,
|
||||
set: 'prettyInPink',
|
||||
},
|
||||
};
|
||||
|
||||
const headAccessory = {
|
||||
@@ -2037,12 +2065,25 @@ const weapon = {
|
||||
str: 11,
|
||||
set: 'blacksmith',
|
||||
},
|
||||
bambooFlute: {
|
||||
con: 6,
|
||||
int: 6,
|
||||
set: 'musicalInstrumentTwo',
|
||||
},
|
||||
prettyPinkParasol: {
|
||||
con: 2,
|
||||
int: 2,
|
||||
per: 2,
|
||||
str: 2,
|
||||
set: 'prettyInPink',
|
||||
},
|
||||
};
|
||||
|
||||
const releaseDay = 7;
|
||||
|
||||
forEach({
|
||||
armor,
|
||||
back,
|
||||
body,
|
||||
eyewear,
|
||||
head,
|
||||
@@ -2101,34 +2142,38 @@ function updateReleased (type) {
|
||||
return returnType;
|
||||
}
|
||||
|
||||
const memoizedUpdatReleased = memoize(updateReleased);
|
||||
const memoizedUpdateReleased = memoize(updateReleased);
|
||||
|
||||
export default {
|
||||
get armor () {
|
||||
return memoizedUpdatReleased({ identifier: 'armor', memoizeConfig: true }, armor);
|
||||
return memoizedUpdateReleased({ identifier: 'armor', memoizeConfig: true }, armor);
|
||||
},
|
||||
get back () {
|
||||
return memoizedUpdateReleased({ identifier: 'back', memoizeConfig: true }, back);
|
||||
},
|
||||
get body () {
|
||||
return memoizedUpdatReleased({ identifier: 'body', memoizeConfig: true }, body);
|
||||
return memoizedUpdateReleased({ identifier: 'body', memoizeConfig: true }, body);
|
||||
},
|
||||
get eyewear () {
|
||||
return memoizedUpdatReleased({ identifier: 'eyewear', memoizeConfig: true }, eyewear);
|
||||
return memoizedUpdateReleased({ identifier: 'eyewear', memoizeConfig: true }, eyewear);
|
||||
},
|
||||
get head () {
|
||||
return memoizedUpdatReleased({ identifier: 'head', memoizeConfig: true }, head);
|
||||
return memoizedUpdateReleased({ identifier: 'head', memoizeConfig: true }, head);
|
||||
},
|
||||
get headAccessory () {
|
||||
return memoizedUpdatReleased({ identifier: 'headAccessory', memoizeConfig: true }, headAccessory);
|
||||
return memoizedUpdateReleased({ identifier: 'headAccessory', memoizeConfig: true }, headAccessory);
|
||||
},
|
||||
get shield () {
|
||||
return memoizedUpdatReleased({ identifier: 'shield', memoizeConfig: true }, shield);
|
||||
return memoizedUpdateReleased({ identifier: 'shield', memoizeConfig: true }, shield);
|
||||
},
|
||||
get weapon () {
|
||||
return memoizedUpdatReleased({ identifier: 'weapon', memoizeConfig: true }, weapon);
|
||||
return memoizedUpdateReleased({ identifier: 'weapon', memoizeConfig: true }, weapon);
|
||||
},
|
||||
// convenience method for tests mostly. Not used in the app
|
||||
get all () {
|
||||
const items = [];
|
||||
items.push(...Object.values(this.armor));
|
||||
items.push(...Object.values(this.back));
|
||||
items.push(...Object.values(this.body));
|
||||
items.push(...Object.values(this.eyewear));
|
||||
items.push(...Object.values(this.head));
|
||||
|
||||
@@ -71,6 +71,7 @@ const armor = {
|
||||
202502: { },
|
||||
202504: { },
|
||||
202509: { },
|
||||
202512: { },
|
||||
301404: { },
|
||||
301703: { },
|
||||
301704: { },
|
||||
@@ -119,6 +120,8 @@ const back = {
|
||||
202506: { },
|
||||
202507: { },
|
||||
202510: { },
|
||||
202601: { },
|
||||
202602: { },
|
||||
};
|
||||
|
||||
const body = {
|
||||
@@ -249,6 +252,8 @@ const head = {
|
||||
202503: { },
|
||||
202504: { },
|
||||
202507: { },
|
||||
202512: { },
|
||||
202602: { },
|
||||
301404: { },
|
||||
301405: { },
|
||||
301703: { },
|
||||
@@ -330,6 +335,8 @@ const weapon = {
|
||||
202408: { },
|
||||
202508: { },
|
||||
202511: { },
|
||||
202512: { },
|
||||
202601: { },
|
||||
301404: { },
|
||||
};
|
||||
|
||||
|
||||
@@ -827,6 +827,18 @@ const armor = {
|
||||
fall2025Rogue: {
|
||||
set: 'fall2025SkeletonRogueSet',
|
||||
},
|
||||
winter2026Warrior: {
|
||||
set: 'winter2026RimeReaperWarriorSet',
|
||||
},
|
||||
winter2026Mage: {
|
||||
set: 'winter2026MidwinterCandleMageSet',
|
||||
},
|
||||
winter2026Healer: {
|
||||
set: 'winter2026PolarBearHealerSet',
|
||||
},
|
||||
winter2026Rogue: {
|
||||
set: 'winter2026SkiRogueSet',
|
||||
},
|
||||
};
|
||||
|
||||
const armorStats = {
|
||||
@@ -1964,6 +1976,18 @@ const head = {
|
||||
fall2025Rogue: {
|
||||
set: 'fall2025SkeletonRogueSet',
|
||||
},
|
||||
winter2026Warrior: {
|
||||
set: 'winter2026RimeReaperWarriorSet',
|
||||
},
|
||||
winter2026Mage: {
|
||||
set: 'winter2026MidwinterCandleMageSet',
|
||||
},
|
||||
winter2026Healer: {
|
||||
set: 'winter2026PolarBearHealerSet',
|
||||
},
|
||||
winter2026Rogue: {
|
||||
set: 'winter2026SkiRogueSet',
|
||||
},
|
||||
};
|
||||
|
||||
const headStats = {
|
||||
@@ -2694,6 +2718,15 @@ const shield = {
|
||||
set: 'fall2025SkeletonRogueSet',
|
||||
notes: t('shieldSpecialFall2025RogueNotes', { str: 8 }),
|
||||
},
|
||||
winter2026Warrior: {
|
||||
set: 'winter2026RimeReaperWarriorSet',
|
||||
},
|
||||
winter2026Healer: {
|
||||
set: 'winter2026PolarBearHealerSet',
|
||||
},
|
||||
winter2026Rogue: {
|
||||
set: 'winter2026SkiRogueSet',
|
||||
},
|
||||
};
|
||||
|
||||
const shieldStats = {
|
||||
@@ -3421,6 +3454,18 @@ const weapon = {
|
||||
fall2025Rogue: {
|
||||
set: 'fall2025SkeletonRogueSet',
|
||||
},
|
||||
winter2026Warrior: {
|
||||
set: 'winter2026RimeReaperWarriorSet',
|
||||
},
|
||||
winter2026Mage: {
|
||||
set: 'winter2026MidwinterCandleMageSet',
|
||||
},
|
||||
winter2026Healer: {
|
||||
set: 'winter2026PolarBearHealerSet',
|
||||
},
|
||||
winter2026Rogue: {
|
||||
set: 'winter2026SkiRogueSet',
|
||||
},
|
||||
};
|
||||
|
||||
const weaponStats = {
|
||||
|
||||
Reference in New Issue
Block a user