diff --git a/habitica-images b/habitica-images
index dfb04339a43..c941ac6fb6b 160000
--- a/habitica-images
+++ b/habitica-images
@@ -1 +1 @@
-Subproject commit dfb04339a4351aecc17325b9b4e011bef72a0dc3
+Subproject commit c941ac6fb6bff6a4079361abd26b86829999a26f
diff --git a/website/client/src/assets/css/sprites/spritesmith-main.css b/website/client/src/assets/css/sprites/spritesmith-main.css
index d58b1ab8d28..f7ffd07fa1b 100644
--- a/website/client/src/assets/css/sprites/spritesmith-main.css
+++ b/website/client/src/assets/css/sprites/spritesmith-main.css
@@ -1730,6 +1730,11 @@
width: 141px;
height: 147px;
}
+.background_old_fashioned_tea_shop {
+ background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/background_old_fashioned_tea_shop.png');
+ width: 141px;
+ height: 147px;
+}
.background_old_photo {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/background_old_photo.png');
width: 141px;
@@ -30214,6 +30219,11 @@
width: 90px;
height: 90px;
}
+.head_armoire_fancyFloralHat {
+ background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/head_armoire_fancyFloralHat.png');
+ width: 114px;
+ height: 90px;
+}
.head_armoire_fancyPirateHat {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/head_armoire_fancyPirateHat.png');
width: 114px;
@@ -30644,6 +30654,11 @@
width: 114px;
height: 90px;
}
+.shield_armoire_fancyFloralFan {
+ background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shield_armoire_fancyFloralFan.png');
+ width: 114px;
+ height: 90px;
+}
.shield_armoire_fancyShoe {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shield_armoire_fancyShoe.png');
width: 90px;
@@ -33719,16 +33734,6 @@
width: 90px;
height: 90px;
}
-.head_mystery_202501 {
- background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/head_mystery_202501.png');
- width: 114px;
- height: 90px;
-}
-.shield_mystery_202501 {
- background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shield_mystery_202501.png');
- width: 114px;
- height: 90px;
-}
.back_mystery_201402 {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/back_mystery_201402.png');
width: 90px;
@@ -35404,6 +35409,36 @@
width: 114px;
height: 90px;
}
+.head_mystery_202501 {
+ background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/head_mystery_202501.png');
+ width: 114px;
+ height: 90px;
+}
+.shield_mystery_202501 {
+ background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shield_mystery_202501.png');
+ width: 114px;
+ height: 90px;
+}
+.broad_armor_mystery_202502 {
+ background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/broad_armor_mystery_202502.png');
+ width: 114px;
+ height: 90px;
+}
+.head_mystery_202502 {
+ background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/head_mystery_202502.png');
+ width: 114px;
+ height: 90px;
+}
+.shield_mystery_202502 {
+ background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shield_mystery_202502.png');
+ width: 114px;
+ height: 90px;
+}
+.slim_armor_mystery_202502 {
+ background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/slim_armor_mystery_202502.png');
+ width: 114px;
+ height: 90px;
+}
.broad_armor_mystery_301404 {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/broad_armor_mystery_301404.png');
width: 90px;
@@ -40557,6 +40592,11 @@
width: 219px;
height: 219px;
}
+.quest_cat {
+ background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/quest_cat.png');
+ width: 219px;
+ height: 219px;
+}
.quest_chameleon {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/quest_chameleon.png');
width: 216px;
@@ -41292,6 +41332,11 @@
width: 68px;
height: 68px;
}
+.inventory_quest_scroll_cat {
+ background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/inventory_quest_scroll_cat.png');
+ width: 68px;
+ height: 68px;
+}
.inventory_quest_scroll_chameleon {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/inventory_quest_scroll_chameleon.png');
width: 68px;
@@ -42897,6 +42942,56 @@
width: 105px;
height: 105px;
}
+.Mount_Body_Cat-Base {
+ background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Mount_Body_Cat-Base.png');
+ width: 105px;
+ height: 105px;
+}
+.Mount_Body_Cat-CottonCandyBlue {
+ background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Mount_Body_Cat-CottonCandyBlue.png');
+ width: 105px;
+ height: 105px;
+}
+.Mount_Body_Cat-CottonCandyPink {
+ background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Mount_Body_Cat-CottonCandyPink.png');
+ width: 105px;
+ height: 105px;
+}
+.Mount_Body_Cat-Desert {
+ background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Mount_Body_Cat-Desert.png');
+ width: 105px;
+ height: 105px;
+}
+.Mount_Body_Cat-Golden {
+ background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Mount_Body_Cat-Golden.png');
+ width: 105px;
+ height: 105px;
+}
+.Mount_Body_Cat-Red {
+ background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Mount_Body_Cat-Red.png');
+ width: 105px;
+ height: 105px;
+}
+.Mount_Body_Cat-Shade {
+ background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Mount_Body_Cat-Shade.png');
+ width: 105px;
+ height: 105px;
+}
+.Mount_Body_Cat-Skeleton {
+ background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Mount_Body_Cat-Skeleton.png');
+ width: 105px;
+ height: 105px;
+}
+.Mount_Body_Cat-White {
+ background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Mount_Body_Cat-White.png');
+ width: 105px;
+ height: 105px;
+}
+.Mount_Body_Cat-Zombie {
+ background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Mount_Body_Cat-Zombie.png');
+ width: 105px;
+ height: 105px;
+}
.Mount_Body_Chameleon-Base {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Mount_Body_Chameleon-Base.png');
width: 105px;
@@ -48437,6 +48532,56 @@
width: 105px;
height: 105px;
}
+.Mount_Head_Cat-Base {
+ background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Mount_Head_Cat-Base.png');
+ width: 105px;
+ height: 105px;
+}
+.Mount_Head_Cat-CottonCandyBlue {
+ background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Mount_Head_Cat-CottonCandyBlue.png');
+ width: 105px;
+ height: 105px;
+}
+.Mount_Head_Cat-CottonCandyPink {
+ background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Mount_Head_Cat-CottonCandyPink.png');
+ width: 105px;
+ height: 105px;
+}
+.Mount_Head_Cat-Desert {
+ background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Mount_Head_Cat-Desert.png');
+ width: 105px;
+ height: 105px;
+}
+.Mount_Head_Cat-Golden {
+ background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Mount_Head_Cat-Golden.png');
+ width: 105px;
+ height: 105px;
+}
+.Mount_Head_Cat-Red {
+ background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Mount_Head_Cat-Red.png');
+ width: 105px;
+ height: 105px;
+}
+.Mount_Head_Cat-Shade {
+ background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Mount_Head_Cat-Shade.png');
+ width: 105px;
+ height: 105px;
+}
+.Mount_Head_Cat-Skeleton {
+ background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Mount_Head_Cat-Skeleton.png');
+ width: 105px;
+ height: 105px;
+}
+.Mount_Head_Cat-White {
+ background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Mount_Head_Cat-White.png');
+ width: 105px;
+ height: 105px;
+}
+.Mount_Head_Cat-Zombie {
+ background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Mount_Head_Cat-Zombie.png');
+ width: 105px;
+ height: 105px;
+}
.Mount_Head_Chameleon-Base {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Mount_Head_Chameleon-Base.png');
width: 105px;
@@ -54037,6 +54182,56 @@
width: 81px;
height: 99px;
}
+.Pet-Cat-Base {
+ background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Pet-Cat-Base.png');
+ width: 81px;
+ height: 99px;
+}
+.Pet-Cat-CottonCandyBlue {
+ background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Pet-Cat-CottonCandyBlue.png');
+ width: 81px;
+ height: 99px;
+}
+.Pet-Cat-CottonCandyPink {
+ background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Pet-Cat-CottonCandyPink.png');
+ width: 81px;
+ height: 99px;
+}
+.Pet-Cat-Desert {
+ background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Pet-Cat-Desert.png');
+ width: 81px;
+ height: 99px;
+}
+.Pet-Cat-Golden {
+ background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Pet-Cat-Golden.png');
+ width: 81px;
+ height: 99px;
+}
+.Pet-Cat-Red {
+ background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Pet-Cat-Red.png');
+ width: 81px;
+ height: 99px;
+}
+.Pet-Cat-Shade {
+ background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Pet-Cat-Shade.png');
+ width: 81px;
+ height: 99px;
+}
+.Pet-Cat-Skeleton {
+ background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Pet-Cat-Skeleton.png');
+ width: 81px;
+ height: 99px;
+}
+.Pet-Cat-White {
+ background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Pet-Cat-White.png');
+ width: 81px;
+ height: 99px;
+}
+.Pet-Cat-Zombie {
+ background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Pet-Cat-Zombie.png');
+ width: 81px;
+ height: 99px;
+}
.Pet-Chameleon-Base {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Pet-Chameleon-Base.png');
width: 81px;
diff --git a/website/common/locales/en/backgrounds.json b/website/common/locales/en/backgrounds.json
index 96730340695..1f45e7c4334 100644
--- a/website/common/locales/en/backgrounds.json
+++ b/website/common/locales/en/backgrounds.json
@@ -1011,6 +1011,10 @@
"backgroundWinterLandscapeWithCabinText": "Winter Landscape with Cabin",
"backgroundWinterLandscapeWithCabinNotes": "Stay cozy in a Winter Landscape with a Cabin.",
+ "backgrounds022025": "SET 129: Released February 2025",
+ "backgroundOldFashionedTeaShopText": "Old Fashioned Tea Shop",
+ "backgroundOldFashionedTeaShopNotes": "Enjoy a cozy beverage in an Old Fashioned Tea Shop.",
+
"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 049d3e4a5d1..5b1b2e30118 100644
--- a/website/common/locales/en/content.json
+++ b/website/common/locales/en/content.json
@@ -269,7 +269,11 @@
"questEggDogText": "Puppy",
"questEggDogMountText": "Dog",
- "questEggDogAdjective": "a friendly",
+ "questEggDogAdjective": "a friendly",
+
+ "questEggCatText": "Kitten",
+ "questEggCatMountText": "Cat",
+ "questEggCatAdjective": "a mischievous",
"eggNotes": "Find a hatching potion to pour on this egg, and it will hatch into <%= eggAdjective(locale) %> <%= eggText(locale) %>.",
diff --git a/website/common/locales/en/gear.json b/website/common/locales/en/gear.json
index 1e1b7449047..5a0d5063bbe 100644
--- a/website/common/locales/en/gear.json
+++ b/website/common/locales/en/gear.json
@@ -1453,6 +1453,9 @@
"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.",
+ "armorMystery202502Text": "Heartfelt Harlequin Suit",
+ "armorMystery202502Notes": "You’re full of kind-hearted jokes and japes from your ruffled collar to your gigantic shoes! Confers no benefit. February 2025 Subscriber Item",
+
"armorMystery301404Text": "Steampunk Suit",
"armorMystery301404Notes": "Dapper and dashing, wot! Confers no benefit. February 3015 Subscriber Item.",
@@ -2372,6 +2375,9 @@
"headMystery202412Notes": "Warm and cozy, just like a cup of minty hot cocoa on a winter night! Confers no benefit. December 2024 Subscriber Item.",
"headMystery202501Text": "Frostbinder’s Hat",
"headMystery202501Notes": "This sparkling hat generates a light and festive flurry around you at all times. Confers no benefit. January 2025 Subscriber Item.",
+ "headMystery202502Text": "Heartfelt Harlequin Hat",
+ "headMystery202502Notes": "This jaunty little hat is sure to inspire joy in anyone who sees you! Confers no benefit. February 2025 Subscriber Item",
+
"headMystery301404Text": "Fancy Top Hat",
"headMystery301404Notes": "A fancy top hat for the finest of gentlefolk! January 3015 Subscriber Item. Confers no benefit.",
@@ -2580,6 +2586,8 @@
"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)",
"headArmoireSnowyTrapperHatText": "Snowy Trapper Hat",
"headArmoireSnowyTrapperHatNotes": "Blue, frostbitten ears will be a thing of the past. Embrace cozy warmth in style! Increases Constitution and Perception by <%= attrs %> each. Enchanted Armoire: Snowy Trapper Hat Set (Item 1 of 2).",
+ "headArmoireFancyFloralHatText": "Fancy Floral Hat",
+ "headArmoireFancyFloralHatNotes": "Feast your eyes on this fancy hat full of fantastic flowers and frilly fastenings. Increases Intelligence by <%= int %>. Enchanted Armoire: Fancy Floral Accessories Set (Item 1 of 2).",
"offhand": "off-hand item",
"offHandCapitalized": "Off-Hand Item",
@@ -2895,6 +2903,8 @@
"shieldMystery202409Notes": "The glowing ruby on this staff draws its power from the late summer sun. Confers no benefit. September 2024 Subscriber Item.",
"shieldMystery202501Text": "Frostbinder's Staff",
"shieldMystery202501Notes": "Decorate any outdoor scenery with a diamond coat of shimmering frost. Confers no benefit. January 2025 Subscriber Item.",
+ "shieldMystery202502Text": "Heartfelt Harlequin Balloons",
+ "shieldMystery202502Notes": "This Valentine’s Day and every day, may your heart be as light as these buoyant balloons. Confers no benefit. February 2025 Subscriber Item.",
"shieldMystery301405Text": "Clock Shield",
"shieldMystery301405Notes": "Time is on your side with this towering clock shield! Confers no benefit. June 3015 Subscriber Item.",
@@ -3063,6 +3073,8 @@
"shieldArmoireBuoyantBeachBallNotes": "Got too many balls up in the air already? Here’s one that you can safely set down, roll, bounce and bounce and bounce... Increases Strength by <%= str %>. Enchanted Armoire: Beachside Set (Item 4 of 4).",
"shieldArmoireSafetyFlashlightText": "Safety Flashlight",
"shieldArmoireSafetyFlashlightNotes": "Wait, did you hear that noise? Quick! Shine your flashlight into the shadows over there. Hmmm. Looks like it was just the wind. Or was it…? Increases Constitution by <%= con %>. Enchanted Armoire: Fright Night Set (Item 1 of 2)",
+ "shieldArmoireFancyFloralFanText": "Fancy Floral Fan",
+ "shieldArmoireFancyFloralFanNotes": "Finish your fancy look with this first-rate fan made of fabulous floral fabric. Increases Perception by <%= per %>. Enchanted Armoire: Fancy Floral Accessories Set (Item 2 of 2).",
"back": "Back Accessory",
"backBase0Text": "No Back Accessory",
diff --git a/website/common/locales/en/questsContent.json b/website/common/locales/en/questsContent.json
index d40cbbfa001..bc95c0296bd 100644
--- a/website/common/locales/en/questsContent.json
+++ b/website/common/locales/en/questsContent.json
@@ -933,6 +933,17 @@
"questDogDropDogEgg": "Dog (Egg)",
"questDogUnlockText": "Unlocks Dog Eggs for purchase in the Market.",
+ "questCatText": "A Purrplexing Predicament",
+ "questCatNotes": "On this fine day you find yourself in Habit City's Enchanted Efficiency Emporium workshop. You've been assigned a tough task: create a new magic motivation spell to help Habiticans everywhere complete their goals with ease.
Sitting on a table in front of you is a variety of magical objects. All the tomes said they were supposed to resonate together with productive energy… but so far there's not even a spark of motivation.
The creaking of a door alerts you to a new guest entering your workshop. Scampering feet and a blur of fluff dart onto the table. A... cat? Before you even have a chance to compliment how fluffy she is, she's lifting a paw to one of the crystals you set up and… knocking it off the table!
\"Hey!\" you shout, \"You're really cute but I'm trying to do some work over here...\"
She looks at you with her pretty blue eyes, tilts her head, and bats a bundle of herbs off the table. \"I'm helping!\" she purrs.
You see her paw reaching out toward the rest of the items you've collected and dive to the floor to catch the next one to go down!",
+ "questCatCompletion": "You've thankfully caught everything that pushy cat knocked off the table. As you sit on the floor you notice a bright glow coming from the objects in front of you. Looking up, the ones on the table are reacting too! Putting them at different elevations seems to be a breakthrough in your research!
\"You know, in the end you did help me. I guess I just needed some fresh eyes on my task to get me unstuck. I wish you would have given me a bit of a heads-up before you started pushing things around, though,\" you say to the cat, patting her gently.
\"That's a purrfectly reasonable request, please take these as my apology!\" she purrs, nudging some funny-looking eggs in your direction. \"I'm glad I could help you see things from a different purrspective.\"",
+ "questCatBoss": "The Purrplexer",
+ "questCatRageTitle": "Furious Bapping",
+ "questCatRageDescription": "This bar fills when you don't complete your Dailies. When it's full, the Purrplexer will take away some of your party's MP!",
+ "questCatRageEffect": "The Purrplexer knocks the magic objects you've collected off the table! The party's MP is reduced!",
+ "questCatDropCatEgg": "Cat (Egg)",
+ "questCatUnlockText": "Unlocks Cat Eggs for Purchase in the Market",
+
+
"questFungiText": "The Moody Mushroom",
"questFungiNotes": "It’s been a rainy spring in Habitica and the ground around the stables is spongy and damp. You notice quite a few mushrooms have appeared along the wooden stable walls and fences. There’s a fog hanging about, not quite letting the sun peek through, and it’s a bit dispiriting.
Out of the mist you see the outline of the April Fool, not at all his usual bouncy self.
”I’d hoped to bring you all some delightful Fungi Magic Hatching Potions so that you can keep your mushroom friends from my special day forever,” he says, his expression alarmingly unsmiling. “But this cold fog is really getting to me, it’s making me feel too tired and dismal to work my usual magic.”
“Oh no, sorry to hear that,” you say, noticing your own increasingly somber mood. “This fog is really making the day gloomy. I wonder where it came from…”
A low rumble sounds across the fields, and you see an outline emerging from the mist. You’re alarmed to see a gigantic and unhappy looking mushroom creature, and the mist appears to be emanating from it.
“Aha,” says the Fool, “I think this fungal fellow may be the source of our blues. Let’s see if we can summon a little cheer for our friend here and ourselves.”",
"questFungiCompletion": "You and the April Fool look at each other with a sign of relief as the mushroom retreats to the forest.
“Ah,” the Fool exclaims, “that was quite a mycelial melancholy. I’m glad we could improve his mood, and ours too! I feel my energy coming back. Come with me and we’ll get those Fungi potions going together.”",
diff --git a/website/common/locales/en/subscriber.json b/website/common/locales/en/subscriber.json
index 7a4377a4eb7..4e1e2b57e6d 100644
--- a/website/common/locales/en/subscriber.json
+++ b/website/common/locales/en/subscriber.json
@@ -170,6 +170,7 @@
"mysterySet202411": "Bristled Brawler Set",
"mysterySet202412": "Candy Cane Cottontail Set",
"mysterySet202501": "Frostbinder Set",
+ "mysterySet202502": "Heartfelt Harlequin 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 13d61710a42..9ef24647386 100644
--- a/website/common/script/content/appearance/backgrounds.js
+++ b/website/common/script/content/appearance/backgrounds.js
@@ -644,6 +644,9 @@ const backgrounds = {
backgrounds012025: {
winter_landscape_with_cabin: { },
},
+ backgrounds022025: {
+ old_fashioned_tea_shop: { },
+ },
eventBackgrounds: {
birthday_bash: {
price: 0,
diff --git a/website/common/script/content/constants/releaseDates.js b/website/common/script/content/constants/releaseDates.js
index 59e93ede047..331752a7e63 100644
--- a/website/common/script/content/constants/releaseDates.js
+++ b/website/common/script/content/constants/releaseDates.js
@@ -15,6 +15,7 @@ export const ARMOIRE_RELEASE_DATES = {
stormKnightSet: { year: 2024, month: 11 },
festiveHelperSet: { year: 2024, month: 12 },
snowyTrapperSet: { year: 2025, month: 1 },
+ fancyFloralSet: { year: 2025, month: 2 },
};
export const EGGS_RELEASE_DATES = {
@@ -23,6 +24,7 @@ export const EGGS_RELEASE_DATES = {
Crab: { year: 2024, month: 8, day: 14 },
Raccoon: { year: 2024, month: 9, day: 14 },
Dog: { year: 2024, month: 10, day: 14 },
+ Cat: { year: 2025, month: 2, day: 14 },
};
export const HATCHING_POTIONS_RELEASE_DATES = {
diff --git a/website/common/script/content/constants/schedule.js b/website/common/script/content/constants/schedule.js
index 37612ad71ea..9d0cdadd8cc 100644
--- a/website/common/script/content/constants/schedule.js
+++ b/website/common/script/content/constants/schedule.js
@@ -142,6 +142,7 @@ export const MONTHLY_SCHEDULE = {
'slime',
'peacock',
'bunny',
+ 'cat',
],
},
{
diff --git a/website/common/script/content/eggs.js b/website/common/script/content/eggs.js
index 76b62d344a6..2277d802aac 100644
--- a/website/common/script/content/eggs.js
+++ b/website/common/script/content/eggs.js
@@ -423,6 +423,12 @@ const quests = {
adjective: t('questEggDogAdjective'),
canBuy: hasQuestAchievementFunction('dog'),
},
+ Cat: {
+ text: t('questEggCatText'),
+ mountText: t('questEggCatMountText'),
+ adjective: t('questEggCatAdjective'),
+ canBuy: hasQuestAchievementFunction('cat'),
+ },
};
applyEggDefaults(drops, {
diff --git a/website/common/script/content/gear/sets/armoire.js b/website/common/script/content/gear/sets/armoire.js
index 5b0531678b8..2aeb6c87361 100644
--- a/website/common/script/content/gear/sets/armoire.js
+++ b/website/common/script/content/gear/sets/armoire.js
@@ -1045,6 +1045,10 @@ const head = {
per: 6,
set: 'snowyTrapperSet',
},
+ fancyFloralHat: {
+ int: 14,
+ set: 'fancyFloralSet',
+ },
};
const shield = {
@@ -1400,6 +1404,10 @@ const shield = {
con: 10,
set: 'frightNightSet',
},
+ fancyFloralFan: {
+ per: 14,
+ set: 'fancyFloralSet',
+ },
};
const headAccessory = {
diff --git a/website/common/script/content/gear/sets/mystery.js b/website/common/script/content/gear/sets/mystery.js
index 65fb8e9f869..0324c41c674 100644
--- a/website/common/script/content/gear/sets/mystery.js
+++ b/website/common/script/content/gear/sets/mystery.js
@@ -68,6 +68,7 @@ const armor = {
202406: { },
202407: { },
202412: { },
+ 202502: { },
301404: { },
301703: { },
301704: { },
@@ -235,6 +236,7 @@ const head = {
202411: { },
202412: { },
202501: { },
+ 202502: { },
301404: { },
301405: { },
301703: { },
@@ -284,6 +286,7 @@ const shield = {
202408: { },
202409: { },
202501: { },
+ 202502: { },
301405: { },
301704: { },
};
diff --git a/website/common/script/content/quests/pets.js b/website/common/script/content/quests/pets.js
index 72573fcebba..c9fcf5a48f0 100644
--- a/website/common/script/content/quests/pets.js
+++ b/website/common/script/content/quests/pets.js
@@ -232,6 +232,47 @@ const QUEST_PETS = {
unlock: t('questButterflyUnlockText'),
},
},
+ cat: {
+ text: t('questCatText'),
+ notes: t('questCatNotes'),
+ completion: t('questCatCompletion'),
+ value: 4,
+ category: 'pet',
+ boss: {
+ name: t('questCatBoss'),
+ hp: 600,
+ str: 1.5,
+ rage: {
+ title: t('questCatRageTitle'),
+ description: t('questCatRageDescription'),
+ value: 50,
+ mpDrain: 0.33,
+ effect: t('questCatRageEffect'),
+ },
+ },
+ drop: {
+ items: [
+ {
+ type: 'eggs',
+ key: 'Cat',
+ text: t('questCatDropCatEgg'),
+ },
+ {
+ type: 'eggs',
+ key: 'Cat',
+ text: t('questCatDropCatEgg'),
+ },
+ {
+ type: 'eggs',
+ key: 'Cat',
+ text: t('questCatDropCatEgg'),
+ },
+ ],
+ gp: 55,
+ exp: 500,
+ unlock: t('questCatUnlockText'),
+ },
+ },
chameleon: {
text: t('questChameleonText'),
notes: t('questChameleonNotes'),