update(content): March 2024 content (#15161)

* feat(content): add February subscriber item, backgrounds, and enchanted armoire gear

* feat(content): add spritesheet

* feat(content): bug smashing

* fix(file): revert package.json to release

* feat(content): add quest bundles

* feat(content): add new achievement

* feat(content): add achievement script

* fix(curlies): remove stray curly boi

* fix(date): add canonical date

* fix(dates): updated background & armoire to canonical dates

* feat(content): add armoire strings & stats

* fix(migration): Golden Squirrel

* fix(backgrounds): trim extra whitespace

* fix(test): cuddle timing

---------

Co-authored-by: Sabe Jones <sabe@habitica.com>
Co-authored-by: Sabe Jones <sabrecat@gmail.com>
This commit is contained in:
Natalie
2024-02-27 18:25:57 -05:00
committed by GitHub
parent 2c6e82a58a
commit caa73057d8
18 changed files with 175 additions and 13 deletions
@@ -214,6 +214,12 @@ const animalSetAchievs = {
titleKey: 'achievementReptacularRumble',
textKey: 'achievementReptacularRumbleText',
},
rodentRuler: {
icon: 'achievement-rodentRuler',
titleKey: 'achievementRodentRuler',
textKey: 'achievementRodentRulerText',
release: '2024-03-19T08:00-05:00',
},
roughRider: {
icon: 'achievement-roughRider',
titleKey: 'achievementRoughRider',
@@ -607,6 +607,11 @@ const plannedBackgrounds = {
swan_boat: { },
heart_tree_tunnel: { },
},
backgrounds032024: {
flowering_forest: { },
dog_park: { },
rainy_rainforest: { },
},
eventBackgrounds: {
birthday_bash: {
price: 0,
@@ -655,6 +660,7 @@ const releaseDates = {
backgrounds122023: '2023-12-05T08:00-05:00',
backgrounds012024: '2024-01-04T08:00-05:00',
backgrounds022024: '2024-02-06T08:00-05:00',
backgrounds032024: '2024-03-05T08:00-05:00',
};
const flat = {};
+3 -2
View File
@@ -110,14 +110,15 @@ const bundles = {
cuddleBuddies: {
key: 'cuddleBuddies',
text: t('cuddleBuddiesText'),
notes: t('cuddleBuddiesNotes', { date: moment('2022-03-31').format('LL') }), // needs update next time we run this
notes: t('cuddleBuddiesNotes', { date: moment(EVENTS.bundle202403.end).format('LL') }),
bundleKeys: [
'bunny',
'ferret',
'guineapig',
],
event: EVENTS.bundle202403,
canBuy () {
return moment().isBetween('2022-03-15T08:00-04:00', '2022-03-31T20:00-04:00');
return moment().isBetween(EVENTS.bundle202403.start, EVENTS.bundle202403.end);
},
type: 'quests',
value: 7,
@@ -120,6 +120,16 @@ const ANIMAL_SET_ACHIEVEMENTS = {
achievementKey: 'reptacularRumble',
notificationType: 'ACHIEVEMENT_ANIMAL_SET',
},
rodentRuler: {
type: 'pet',
species: [
'Rat',
'GuineaPig',
'Squirrel',
],
achievementKey: 'rodentRuler',
notificationType: 'ACHIEVEMENT_ANIMAL_SET',
},
roughRider: {
type: 'petMount',
species: [
@@ -15,6 +15,10 @@ export const EVENTS = {
season: 'normal',
npcImageSuffix: '',
},
bundle202403: {
start: '2024-03-19T00:00-05:00',
end: '2024-03-31T08:00-05:00',
},
bundle202402: {
start: '2024-02-20T00:00-05:00',
end: '2024-02-29T08:00-05:00',
@@ -462,6 +462,10 @@ const armor = {
per: 10,
set: 'whiteLoungeWear',
},
hattersSuit: {
con: 9,
set: 'hatterSet',
},
};
const body = {
@@ -959,6 +963,10 @@ const head = {
con: 5,
set: 'whiteLoungeWear',
},
hattersTopHat: {
per: 10,
set: 'hatterSet',
},
};
const shield = {
@@ -1291,6 +1299,10 @@ const shield = {
per: 6,
set: 'whiteLoungeWear',
},
hattersPocketWatch: {
int: 9,
set: 'hatterSet',
},
};
const headAccessory = {
@@ -1760,6 +1772,10 @@ const weapon = {
int: 10,
set: 'schoolUniform',
},
hattersShears: {
str: 10,
set: 'hatterSet',
},
};
const releaseDates = {
@@ -1768,6 +1784,7 @@ const releaseDates = {
greenTrapper: '2023-12-05T08:00-05:00',
schoolUniform: '2024-01-04T08:00-05:00',
whiteLoungeWear: '2024-02-06T08:00-05:00',
hatterSet: '2024-03-05T08:00-05:00',
};
forEach({
@@ -220,6 +220,7 @@ const head = {
202311: { },
202312: { },
202402: { },
202403: { },
301404: { },
301405: { },
301703: { },
@@ -286,6 +287,7 @@ const weapon = {
202209: { },
202306: { },
202311: { },
202403: { },
301404: { },
};
@@ -47,19 +47,19 @@ const featuredItems = {
];
},
quests () {
if (moment().isBetween(EVENTS.bundle202402.start, EVENTS.bundle202402.end)) {
if (moment().isBetween(EVENTS.bundle202403.start, EVENTS.bundle202403.end)) {
return [
{
type: 'bundles',
path: 'bundles.mythicalMarvels',
path: 'bundles.cuddleBuddies',
},
{
type: 'quests',
path: 'quests.nudibranch',
path: 'quests.hedgehog',
},
{
type: 'quests',
path: 'quests.axolotl',
path: 'quests.sheep',
},
];
}
@@ -229,6 +229,7 @@ function _getBasicAchievements (user, language) {
_addSimple(result, user, { path: 'bonelessBoss', language });
_addSimple(result, user, { path: 'duneBuddy', language });
_addSimple(result, user, { path: 'roughRider', language });
_addSimple(result, user, { path: 'rodentRuler', language });
_addSimpleWithMasterCount(result, user, { path: 'beastMaster', language });
_addSimpleWithMasterCount(result, user, { path: 'mountMaster', language });