May 2024 Content Prebuild (#15185)

* 2024-05 css update

* add May subscriber items, enchanted armoire (text placeholders), potions, and quest bundles

* typo correction

* add May achievement

* content fixes after local testing

* canonical date fix

* fix potion descriptions, add periods to background descriptions

* fix canonical date

* updated armoire items

* fix stat display on item

* Fixing merge conflicts

* resolve merge conflicts

* add leading zero to mp drain for mushroom quest

* fix timezones

* proofreading pass

* fix linting errors

* date fixes & linter fixes

* correct armoire expression at end of file

* fix(autolint): roll back Prettier change

---------

Co-authored-by: Sabe Jones <sabe@habitica.com>
This commit is contained in:
Natalie
2024-04-26 16:14:45 -04:00
committed by GitHub
parent ee93c8bec5
commit de62207504
18 changed files with 322 additions and 41 deletions

View File

@@ -0,0 +1,99 @@
/* eslint-disable no-console */
const MIGRATION_NAME = '202405_pet_group_achievements';
import { model as User } from '../../../website/server/models/user';
const progressCount = 1000;
let count = 0;
async function updateUser (user) {
count++;
let set = {
migration: MIGRATION_NAME,
};
if (user && user.items && user.items.pets) {
const pets = user.items.pets;
if (pets['LionCub-Zombie'] > 0
&& pets['LionCub-Skeleton'] > 0
&& pets['LionCub-Base'] > 0
&& pets['LionCub-Desert'] > 0
&& pets['LionCub-Red'] > 0
&& pets['LionCub-Shade'] > 0
&& pets['LionCub-White']> 0
&& pets['LionCub-Golden'] > 0
&& pets['LionCub-CottonCandyBlue'] > 0
&& pets['LionCub-CottonCandyPink'] > 0
&& pets['TigerCub-Zombie'] > 0
&& pets['TigerCub-Skeleton'] > 0
&& pets['TigerCub-Base'] > 0
&& pets['TigerCub-Desert'] > 0
&& pets['TigerCub-Red'] > 0
&& pets['TigerCub-Shade'] > 0
&& pets['TigerCub-White'] > 0
&& pets['TigerCub-Golden'] > 0
&& pets['TigerCub-CottonCandyBlue'] > 0
&& pets['TigerCub-CottonCandyPink'] > 0
&& pets['Sabretooth-Zombie'] > 0
&& pets['Sabretooth-Skeleton'] > 0
&& pets['Sabretooth-Base'] > 0
&& pets['Sabretooth-Desert'] > 0
&& pets['Sabretooth-Red'] > 0
&& pets['Sabretooth-Shade'] > 0
&& pets['Sabretooth-White'] > 0
&& pets['Sabretooth-Golden'] > 0
&& pets['Sabretooth-CottonCandyBlue'] > 0
&& pets['Sabretooth-CottonCandyPink'] > 0
&& pets['Cheetah-Zombie'] > 0
&& pets['Cheetah-Skeleton'] > 0
&& pets['Cheetah-Base'] > 0
&& pets['Cheetah-Desert'] > 0
&& pets['Cheetah-Red'] > 0
&& pets['Cheetah-Shade'] > 0
&& pets['Cheetah-White'] > 0
&& pets['Cheetah-Golden'] > 0
&& pets['Cheetah-CottonCandyBlue'] > 0
&& pets['Cheetah-CottonCandyPink'] > 0 ) {
set['achievements.cats'] = true;
}
}
if (count % progressCount === 0) console.warn(`${count} ${user._id}`);
return await User.updateOne({ _id: user._id }, { $set: set }).exec();
}
export default async function processUsers () {
let query = {
migration: { $ne: MIGRATION_NAME },
'auth.timestamps.loggedin': { $gt: new Date('2024-03-01') },
};
const fields = {
_id: 1,
items: 1,
};
while (true) { // eslint-disable-line no-constant-condition
const users = await User // eslint-disable-line no-await-in-loop
.find(query)
.limit(250)
.sort({_id: 1})
.select(fields)
.lean()
.exec();
if (users.length === 0) {
console.warn('All appropriate users found and modified.');
console.warn(`\n${count} users processed\n`);
break;
} else {
query._id = {
$gt: users[users.length - 1]._id,
};
}
await Promise.all(users.map(updateUser)); // eslint-disable-line no-await-in-loop
}
};

View File

@@ -103,6 +103,11 @@
width: 48px;
height: 52px;
}
.achievement-cats2x {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/achievement-cats2x.png');
width: 68px;
height: 68px;
}
.achievement-cave2x {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/achievement-cave2x.png');
width: 48px;
@@ -975,6 +980,11 @@
width: 141px;
height: 147px;
}
.background_dragons_back {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/background_dragons_back.png');
width: 141px;
height: 147px;
}
.background_dragons_lair {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/background_dragons_lair.png');
width: 141px;
@@ -1600,6 +1610,11 @@
width: 141px;
height: 147px;
}
.background_maypole {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/background_maypole.png');
width: 141px;
height: 147px;
}
.background_meandering_cave {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/background_meandering_cave.png');
width: 141px;
@@ -1770,6 +1785,11 @@
width: 141px;
height: 147px;
}
.background_potters_studio {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/background_potters_studio.png');
width: 141px;
height: 147px;
}
.background_productivity_plaza {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/background_productivity_plaza.png');
width: 141px;
@@ -2853,6 +2873,11 @@
width: 68px;
height: 68px;
}
.icon_background_dragons_back {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/icon_background_dragons_back.png');
width: 68px;
height: 68px;
}
.icon_background_dragons_lair {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/icon_background_dragons_lair.png');
width: 68px;
@@ -3478,6 +3503,11 @@
width: 68px;
height: 68px;
}
.icon_background_maypole {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/icon_background_maypole.png');
width: 68px;
height: 68px;
}
.icon_background_meandering_cave {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/icon_background_meandering_cave.png');
width: 68px;
@@ -3648,6 +3678,11 @@
width: 68px;
height: 68px;
}
.icon_background_potters_studio {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/icon_background_potters_studio.png');
width: 68px;
height: 68px;
}
.icon_background_productivity_plaza {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/icon_background_productivity_plaza.png');
width: 68px;
@@ -19144,6 +19179,11 @@
width: 90px;
height: 90px;
}
.broad_armor_armoire_pottersApron {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/broad_armor_armoire_pottersApron.png');
width: 114px;
height: 90px;
}
.broad_armor_armoire_ramFleeceRobes {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/broad_armor_armoire_ramFleeceRobes.png');
width: 90px;
@@ -19694,6 +19734,11 @@
width: 90px;
height: 90px;
}
.head_armoire_pottersBandana {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/head_armoire_pottersBandana.png');
width: 114px;
height: 90px;
}
.head_armoire_purpleSpookySorceryHat {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/head_armoire_purpleSpookySorceryHat.png');
width: 114px;
@@ -20174,6 +20219,11 @@
width: 114px;
height: 90px;
}
.shield_armoire_thrownVessel {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shield_armoire_thrownVessel.png');
width: 114px;
height: 90px;
}
.shield_armoire_treasureMap {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shield_armoire_treasureMap.png');
width: 114px;
@@ -20544,6 +20594,11 @@
width: 68px;
height: 68px;
}
.shop_armor_armoire_pottersApron {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_armor_armoire_pottersApron.png');
width: 68px;
height: 68px;
}
.shop_armor_armoire_ramFleeceRobes {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_armor_armoire_ramFleeceRobes.png');
width: 68px;
@@ -21154,6 +21209,11 @@
width: 68px;
height: 68px;
}
.shop_head_armoire_pottersBandana {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_head_armoire_pottersBandana.png');
width: 68px;
height: 68px;
}
.shop_head_armoire_purpleSpookySorceryHat {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_head_armoire_purpleSpookySorceryHat.png');
width: 68px;
@@ -21634,6 +21694,11 @@
width: 68px;
height: 68px;
}
.shop_shield_armoire_thrownVessel {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_shield_armoire_thrownVessel.png');
width: 68px;
height: 68px;
}
.shop_shield_armoire_treasureMap {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_shield_armoire_treasureMap.png');
width: 68px;
@@ -22059,6 +22124,11 @@
width: 68px;
height: 68px;
}
.shop_weapon_armoire_pottersWheel {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_weapon_armoire_pottersWheel.png');
width: 68px;
height: 68px;
}
.shop_weapon_armoire_pushBroom {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_weapon_armoire_pushBroom.png');
width: 68px;
@@ -22504,6 +22574,11 @@
width: 90px;
height: 90px;
}
.slim_armor_armoire_pottersApron {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/slim_armor_armoire_pottersApron.png');
width: 114px;
height: 90px;
}
.slim_armor_armoire_ramFleeceRobes {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/slim_armor_armoire_ramFleeceRobes.png');
width: 90px;
@@ -23064,6 +23139,11 @@
width: 114px;
height: 90px;
}
.weapon_armoire_pottersWheel {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/weapon_armoire_pottersWheel.png');
width: 114px;
height: 90px;
}
.weapon_armoire_pushBroom {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/weapon_armoire_pushBroom.png');
width: 114px;
@@ -29344,6 +29424,31 @@
width: 114px;
height: 90px;
}
.back_mystery_202405 {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/back_mystery_202405.png');
width: 114px;
height: 90px;
}
.headAccessory_mystery_202405 {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/headAccessory_mystery_202405.png');
width: 114px;
height: 90px;
}
.shop_back_mystery_202405 {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_back_mystery_202405.png');
width: 68px;
height: 68px;
}
.shop_headAccessory_mystery_202405 {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_headAccessory_mystery_202405.png');
width: 68px;
height: 68px;
}
.shop_set_mystery_202405 {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_set_mystery_202405.png');
width: 68px;
height: 68px;
}
.broad_armor_mystery_301404 {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/broad_armor_mystery_301404.png');
width: 90px;

View File

@@ -135,7 +135,7 @@
"achievementReptacularRumbleModalText": "You collected all the reptile pets!",
"achievementGroupsBeta2022": "Interactive Beta Tester",
"achievementGroupsBeta2022Text": "You and your group provided invaluable feedback to help Habitica test.",
"achievementGroupsBeta2022ModalText":"You and your groups helped Habitica by testing and providing feedback!",
"achievementGroupsBeta2022ModalText": "You and your groups helped Habitica by testing and providing feedback!",
"achievementWoodlandWizard": "Woodland Wizard",
"achievementWoodlandWizardText": "Has hatched all standard colors of forest creatures: Badger, Bear, Deer, Fox, Frog, Hedgehog, Owl, Snail, Squirrel, and Treeling!",
"achievementWoodlandWizardModalText": "You collected all the forest pets!",
@@ -162,6 +162,8 @@
"achievementRoughRiderModalText": "You collected all the basic colors of the uncomfortable pets and mounts!",
"achievementRodentRuler": "Rodent Ruler",
"achievementRodentRulerText": "Has hatched all standard colors of rodent pets: Guinea Pig, Rat, and Squirrel!",
"achievementRodentRulerModalText": "You collected all the rodent pets!"
"achievementRodentRulerModalText": "You collected all the rodent pets!",
"achievementCats": "Cat Herder",
"achievementCatsText": "Has hatched all the standard colors of cat pets: Cheetah, Lion, Sabretooth, and Tiger!",
"achievementCatsModalText": "You collected all the cat pets!"
}

View File

@@ -971,6 +971,14 @@
"backgroundContainerGardenText": "Container Garden",
"backgroundContainerGardenNotes": "Get your hands dirty wth the Container Garden.",
"backgrounds052024": "SET 120: Released May 2024",
"backgroundDragonsBackText": "Dragon's Back",
"backgroundDragonsBackNotes": "Sail the sky on a Dragon's Back.",
"backgroundMaypoleText": "Maypole",
"backgroundMaypoleNotes": "Dance around a merry Maypole.",
"backgroundPottersStudioText": "Potter's Studio",
"backgroundPottersStudioNotes": "Create art in the Potter's Studio.",
"timeTravelBackgrounds": "Steampunk Backgrounds",
"backgroundAirshipText": "Airship",
"backgroundAirshipNotes": "Become a sky sailor on board your very own Airship.",

View File

@@ -755,6 +755,8 @@
"weaponArmoireHattersShearsNotes": "Cut right through overwhelm and complications. These shears do a great job cutting fabric, as well, of course. Increases Strength by <%= str %>. Enchanted Armoire: Hatter Set (Item 3 of 4).",
"weaponArmoireOptimistsCloverText": "Four-leaf Clover",
"weaponArmoireOptimistsCloverNotes": "Well, would you look at what you found? It never hurts to have just a little extra good luck on your side. Increases Strength and Constitution by <%= attrs %> each. Enchanted Armoire: Optimist Set (Item 4 of 4).",
"weaponArmoirePottersWheelText": "Potter's Wheel",
"weaponArmoirePottersWheelNotes": "Throw some clay on this wheel and make a bowl or a mug or a vase or a slightly different bowl. If you're lucky, a ghost might visit while you create! Increases Perception by <%= per %>. Enchanted Armoire: Potter Set (Item 4 of 4).",
"armor": "armor",
"armorCapitalized": "Armor",
@@ -1584,7 +1586,8 @@
"armorArmoireHattersSuitNotes": "Your outfit isnt complete without your lucky green bowtie. Wear this to your next mad tea party. Or pleasant tea party. Or excited tea party. Or... Increases Constitution by <%= con %>. Enchanted Armoire: Hatter Set (Item 2 of 4).",
"armorArmoireSmileyShirtText": "Smiley Face Shirt",
"armorArmoireSmileyShirtNotes": "Because youre happy! Show the world youre all smiles today. Increases Intelligence and Perception by <%= attrs %> each. Enchanted Armoire: Optimist Set (Item 1 of 4).",
"armorArmoirePottersApronText": "Potter's Apron",
"armorArmoirePottersApronNotes": "You came prepared with tools of the trade. Good thing you wore this apron. It has pockets! Increases Strength by <%= str %>. Enchanted Armoire: Potter Set (Item 1 of 4).",
"headgear": "helm",
"headgearCapitalized": "Headgear",
@@ -2431,6 +2434,8 @@
"headArmoireWhiteFloppyHatNotes": "Many spells have been sewn into this simple hat, giving it a wondrous white color. Increases Strength, Intelligence, and Constitution by <%= attrs %> each. Enchanted Armoire: White Loungewear Set (Item 1 of 3).",
"headArmoireHattersTopHatText": "Hatter's Top Hat",
"headArmoireHattersTopHatNotes": "Our hats are off to you, and yours is on! Whats hidden in your hat is anybodys guess (but were hoping its a bunny). Increases Perception by <%= per %>. Enchanted Armoire: Hatter Set (Item 1 of 4).",
"headArmoirePottersBandanaText": "Bandana",
"headArmoirePottersBandanaNotes": "Look the part and keep your hair out of your face while you work. Its a win-win! Increases Intelligence by <%= int %>. Enchanted Armoire: Potter Set (Item 2 of 4).",
"offhand": "off-hand item",
"offHandCapitalized": "Off-Hand Item",
@@ -2884,6 +2889,8 @@
"shieldArmoireHattersPocketWatchNotes": "Dont be late for a very important date! Check your pocketwatch and your notifications often. Increases Intelligence by <%= int %>. Enchanted Armoire: Hatter Set (Item 4 of 4).",
"shieldArmoireHappyThoughtsText": "Happy Thoughts",
"shieldArmoireHappyThoughtsNotes": "Whether you're remembering a joyful moment from your past or imagining the best outcome for the future, always look on the bright side of life. Increases all stats by <%= attrs %> each. Enchanted Armoire: Optimist Set (Item 3 of 4).",
"shieldArmoireThrownVesselText": "Thrown Vessel",
"shieldArmoireThrownVesselNotes": "You know what they say: practice makes progress. And this is the best one youve made so far! Increases Constitution by <%= con %>. Enchanted Armoire: Potter Set (Item 3 of 4).",
"back": "Back Accessory",
"backBase0Text": "No Back Accessory",
@@ -2962,6 +2969,8 @@
"backMystery202401Notes": "Conjure softly falling flurries or call a mighty blizzard. The choice is yours! Confers no benefit. January 2024 Subscriber Item.",
"backMystery202402Text": "Paradise Pink Hearts",
"backMystery202402Notes": "Let an aura of loving energy surround you wherever you go! Confers no benefit. February 2024 Subscriber Item.",
"backMystery202405Text": "Gilded Drake Wings",
"backMystery202405Notes": "These magnificent wings have the glow of pure gold but are as light as a feather. Confers no benefit. May 2024 Subscriber Item.",
"backSpecialWonderconRedText": "Mighty Cape",
"backSpecialWonderconRedNotes": "Swishes with strength and beauty. Confers no benefit. Special Edition Convention Item.",
@@ -3203,6 +3212,8 @@
"headAccessoryMystery202309Notes": "These antennae are fashionable and feathery, but also help you navigate! Confers no benefit. September 2023 Subscriber Item.",
"headAccessoryMystery202310Text": "Crown of Ghostly Lights",
"headAccessoryMystery202310Notes": "Like a will-o'-the-wisp, these unearthly lights may lure curious souls to their doom. Confers no benefit. October 2023 Subscriber Item.",
"headAccessoryMystery202405Text": "Gilded Drake Horns",
"headAccessoryMystery202405Notes": "The metallic sheen of these fine horns reflects the dancing colors of dragon fire. Confers no benefit. May 2024 Subscriber Item.",
"headAccessoryMystery301405Text": "Headwear Goggles",
"headAccessoryMystery301405Notes": "\"Goggles are for your eyes,\" they said. \"Nobody wants goggles that you can only wear on your head,\" they said. Hah! You sure showed them! Confers no benefit. August 3015 Subscriber Item.",

View File

@@ -161,6 +161,7 @@
"mysterySet202402": "Paradise Pink Set",
"mysterySet202403": "Lucky Legend Set",
"mysterySet202404": "Mycelial Magus Set",
"mysterySet202405": "Gilded Dragon Set",
"mysterySet301404": "Steampunk Standard Set",
"mysterySet301405": "Steampunk Accessories Set",
"mysterySet301703": "Peacock Steampunk Set",

View File

@@ -183,6 +183,12 @@ const animalSetAchievs = {
titleKey: 'achievementBonelessBoss',
textKey: 'achievementBonelessBossText',
},
cats: {
icon: 'achievement-cats',
titleKey: 'achievementCats',
textKey: 'achievementCatsText',
release: '2024-05-16T08:00-04:00',
},
dinosaurDynasty: {
icon: 'achievement-dinosaurDynasty',
titleKey: 'achievementDinosaurDynasty',

View File

@@ -617,6 +617,11 @@ const plannedBackgrounds = {
wall_flowering_vines: { },
container_garden: { },
},
backgrounds052024: {
dragons_back: { },
maypole: { },
potters_studio: { },
},
eventBackgrounds: {
birthday_bash: {
price: 0,
@@ -666,7 +671,8 @@ const releaseDates = {
backgrounds012024: '2024-01-04T08:00-05:00',
backgrounds022024: '2024-02-06T08:00-05:00',
backgrounds032024: '2024-03-05T08:00-05:00',
backgrounds042024: '2023-04-04T00:00-04:00',
backgrounds042024: '2024-04-04T08:00-04:00',
backgrounds052024: '2024-05-07T08:00-04:00',
};
const flat = {};

View File

@@ -222,14 +222,15 @@ const bundles = {
delightfulDinos: {
key: 'delightfulDinos',
text: t('delightfulDinosText'),
notes: t('delightfulDinosNotes', { date: moment('2022-05-31').format('LL') }), // needs update next time its run
notes: t('delightfulDinosNotes', { date: moment(EVENTS.bundle202405.end).format('LL') }),
bundleKeys: [
'pterodactyl',
'triceratops',
'trex_undead',
],
event: EVENTS.bundle202405,
canBuy () {
return moment().isBetween('2022-05-16', '2022-05-31');
return moment().isBetween(EVENTS.bundle202405.start, EVENTS.bundle202405.end);
},
type: 'quests',
value: 7,

View File

@@ -40,6 +40,17 @@ const ANIMAL_SET_ACHIEVEMENTS = {
achievementKey: 'bonelessBoss',
notificationType: 'ACHIEVEMENT_ANIMAL_SET',
},
cats: {
type: 'pet',
species: [
'Cheetah',
'LionCub',
'Sabretooth',
'TigerCub',
],
achievementKey: 'cats',
notificationType: 'ACHIEVEMENT_ANIMAL_SET',
},
dinosaurDynasty: {
type: 'pet',
species: [

View File

@@ -11,14 +11,23 @@ const gemsPromo = {
export const EVENTS = {
noEvent: {
start: '2024-05-01T00:00-04:00',
end: '2024-06-20T23:59-04:00',
end: '2024-05-13T23:59-04:00',
season: 'normal',
npcImageSuffix: '',
},
bundle202405: {
start: '2024-05-21T08:00-04:00',
end: '2024-05-31T23:59-04:00',
},
potions202405: {
start: '2024-05-14T08:00-04:00',
end: '2024-05-31T23:59-04:00',
},
aprilFoolsQuest2024: {
start: '2024-04-09T08:00-04:00',
end: '2024-04-30T23:59-04:00',
},
aprilFools2024: {
start: '2024-04-01T00:00-04:00',
end: '2024-04-02T08:00-04:00',
@@ -115,16 +124,16 @@ export const EVENTS = {
gear: true,
},
bundle202306: {
start:'2023-06-13T08:00-04:00',
end:'2023-06-30T23:59-04:00',
start: '2023-06-13T08:00-04:00',
end: '2023-06-30T23:59-04:00',
},
bundle202305: {
start:'2023-05-23T08:00-04:00',
end:'2023-05-31T23:59-04:00',
start: '2023-05-23T08:00-04:00',
end: '2023-05-31T23:59-04:00',
},
potions202305: {
start:'2023-05-16T08:00-04:00',
end:'2023-05-31T23:59-04:00',
start: '2023-05-16T08:00-04:00',
end: '2023-05-31T23:59-04:00',
},
aprilFools2023: {
start: '2023-04-01T08:00-04:00',
@@ -146,7 +155,7 @@ export const EVENTS = {
start: '2023-02-21T08:00-05:00',
end: '2023-02-28T23:59-05:00',
},
potions202302:{
potions202302: {
start: '2023-02-13T08:00-05:00',
end: '2023-02-28T23:59-05:00',
},
@@ -236,8 +245,8 @@ export const EVENTS = {
gear: true,
},
bundle202206: {
start:'2022-06-14T08:00-04:00',
end:'2022-06-30T20:00-04:00',
start: '2022-06-14T08:00-04:00',
end: '2022-06-30T20:00-04:00',
},
potions202205: {
start: '2022-05-17T08:00-04:00',

View File

@@ -471,6 +471,10 @@ const armor = {
per: 4,
set: 'optimistSet',
},
pottersApron: {
str: 8,
set: 'pottersSet',
},
};
const body = {
@@ -976,6 +980,10 @@ const head = {
per: 10,
set: 'hatterSet',
},
pottersBandana: {
int: 8,
set: 'pottersSet',
},
};
const shield = {
@@ -1319,6 +1327,10 @@ const shield = {
str: 4,
set: 'optimistSet',
},
thrownVessel: {
con: 8,
set: 'pottersSet',
},
};
const headAccessory = {
@@ -1797,6 +1809,10 @@ const weapon = {
con: 4,
set: 'optimistSet',
},
pottersWheel: {
per: 8,
set: 'pottersSet',
},
};
const releaseDates = {
@@ -1806,7 +1822,8 @@ const releaseDates = {
schoolUniform: '2024-01-04T08:00-05:00',
whiteLoungeWear: '2024-02-06T08:00-05:00',
hatterSet: '2024-03-05T08:00-05:00',
optimistSet: '2024-03-05T00:00-05:00',
optimistSet: '2024-04-04T08:00-04:00',
pottersSet: '2024-05-07T08:00-04:00',
};
forEach({

View File

@@ -107,6 +107,7 @@ const back = {
202309: { },
202401: { },
202402: { },
202405: { },
};
const body = {
@@ -253,6 +254,7 @@ const headAccessory = {
202302: { },
202305: { },
202309: { },
202405: { },
202310: { },
301405: { },
};

View File

@@ -98,12 +98,12 @@ const premium = {
value: 2,
text: t('hatchingPotionFloral'),
limited: true,
event: EVENTS.potions202305,
event: EVENTS.potions202405,
_addlNotes: t('eventAvailability', {
date: t('dateEndMay'),
}),
canBuy () {
return moment().isBefore(EVENTS.potions202305.end);
return moment().isBetween(EVENTS.potions202405.start, EVENTS.potions202405.end);
},
},
Aquatic: {
@@ -290,12 +290,12 @@ const premium = {
value: 2,
text: t('hatchingPotionSunshine'),
limited: true,
event: EVENTS.potions202205,
event: EVENTS.potions202405,
_addlNotes: t('eventAvailability', {
date: t('dateEndMay'),
}),
canBuy () {
return moment().isBefore(EVENTS.potions202205.end);
return moment().isBetween(EVENTS.potions202405.start, EVENTS.potions202405.end);
},
},
Bronze: {

View File

@@ -238,7 +238,7 @@ const QUEST_SEASONAL = {
title: t('questFungiRageTitle'),
description: t('questFungiRageDescription'),
value: 50,
mpDrain: .33,
mpDrain: 0.33,
effect: t('questFungiRageEffect'),
},
},

View File

@@ -7,7 +7,7 @@ import { EVENTS } from './constants';
// hatching potions and food names should be capitalized lest you break the market
const featuredItems = {
market () {
if (moment().isBetween(EVENTS.spring2024.start, EVENTS.spring2024.end)) {
if (moment().isBetween(EVENTS.potions202405.start, EVENTS.potions202405.end)) {
return [
{
type: 'armoire',
@@ -15,15 +15,15 @@ const featuredItems = {
},
{
type: 'premiumHatchingPotion',
path: 'premiumHatchingPotions.Celestial',
path: 'premiumHatchingPotions.Floral',
},
{
type: 'premiumHatchingPotion',
path: 'premiumHatchingPotions.Shimmer',
path: 'premiumHatchingPotions.Sunshine',
},
{
type: 'premiumHatchingPotion',
path: 'premiumHatchingPotions.Rainbow',
type: 'hatchingPotions',
path: 'hatchingPotions.Golden',
},
];
}
@@ -34,32 +34,33 @@ const featuredItems = {
},
{
type: 'food',
path: 'food.Fish',
path: 'food.Strawberry',
},
{
type: 'hatchingPotions',
path: 'hatchingPotions.Skeleton',
path: 'hatchingPotions.Red',
},
{
type: 'eggs',
path: 'eggs.Dragon',
path: 'eggs.Cactus',
},
];
},
quests () {
if (moment().isBetween(EVENTS.aprilFoolsQuest2024.start, EVENTS.aprilFoolsQuest2024.end)) {
if (moment().isBetween(EVENTS.bundle202405.start, EVENTS.bundle202405.end)) {
return [
{
type: 'quests',
path: 'quests.fungi',
type: 'bundles',
path: 'bundles.delightfulDinos',
},
{
type: 'quests',
path: 'quests.badger',
path: 'quests.rooster',
},
{
type: 'quests',
path: 'quests.snake',
path: 'quests.owl',
},
];
}
@@ -67,15 +68,15 @@ const featuredItems = {
return [
{
type: 'quests',
path: 'quests.rat',
path: 'quests.cheetah',
},
{
type: 'quests',
path: 'quests.kraken',
path: 'quests.nudibranch',
},
{
type: 'quests',
path: 'quests.slime',
path: 'quests.monkey',
},
];
},

View File

@@ -230,6 +230,7 @@ function _getBasicAchievements (user, language) {
_addSimple(result, user, { path: 'duneBuddy', language });
_addSimple(result, user, { path: 'roughRider', language });
_addSimple(result, user, { path: 'rodentRuler', language });
_addSimple(result, user, { path: 'cats', language });
_addSimpleWithMasterCount(result, user, { path: 'beastMaster', language });
_addSimpleWithMasterCount(result, user, { path: 'mountMaster', language });

View File

@@ -159,6 +159,7 @@ export const UserSchema = new Schema({
duneBuddy: Boolean,
roughRider: Boolean,
rodentRuler: Boolean,
cats: Boolean,
// Onboarding Guide
createdTask: Boolean,
completedTask: Boolean,