diff --git a/migrations/archive/2021/20210824_pet_group_achievements.js b/migrations/archive/2021/20210824_pet_group_achievements.js
new file mode 100644
index 0000000000..db63e7fe90
--- /dev/null
+++ b/migrations/archive/2021/20210824_pet_group_achievements.js
@@ -0,0 +1,138 @@
+/* eslint-disable no-console */
+const MIGRATION_NAME = '20210824_pet_group_achievements';
+import { model as User } from '../../../website/server/models/user';
+
+const progressCount = 1000;
+let count = 0;
+
+async function updateUser (user) {
+ count++;
+
+ const set = {
+ migration: MIGRATION_NAME,
+ };
+
+ if (user && user.items && user.items.pets) {
+ const pets = user.items.pets;
+ if (pets['FlyingPig-Base']
+ && pets['FlyingPig-CottonCandyBlue']
+ && pets['FlyingPig-CottonCandyPink']
+ && pets['FlyingPig-Desert']
+ && pets['FlyingPig-Golden']
+ && pets['FlyingPig-Red']
+ && pets['FlyingPig-Shade']
+ && pets['FlyingPig-Skeleton']
+ && pets['FlyingPig-White']
+ && pets['FlyingPig-Zombie']
+ && pets['Ferret-Base']
+ && pets['Ferret-CottonCandyBlue']
+ && pets['Ferret-CottonCandyPink']
+ && pets['Ferret-Desert']
+ && pets['Ferret-Golden']
+ && pets['Ferret-Red']
+ && pets['Ferret-Shade']
+ && pets['Ferret-Skeleton']
+ && pets['Ferret-White']
+ && pets['Ferret-Zombie']
+ && pets['GuineaPig-Base']
+ && pets['GuineaPig-CottonCandyBlue']
+ && pets['GuineaPig-CottonCandyPink']
+ && pets['GuineaPig-Desert']
+ && pets['GuineaPig-Golden']
+ && pets['GuineaPig-Red']
+ && pets['GuineaPig-Shade']
+ && pets['GuineaPig-Skeleton']
+ && pets['GuineaPig-White']
+ && pets['GuineaPig-Zombie']
+ && pets['Rooster-Base']
+ && pets['Rooster-CottonCandyBlue']
+ && pets['Rooster-CottonCandyPink']
+ && pets['Rooster-Desert']
+ && pets['Rooster-Golden']
+ && pets['Rooster-Red']
+ && pets['Rooster-Shade']
+ && pets['Rooster-Skeleton']
+ && pets['Rooster-White']
+ && pets['Rooster-Zombie']
+ && pets['Rat-Base']
+ && pets['Rat-CottonCandyBlue']
+ && pets['Rat-CottonCandyPink']
+ && pets['Rat-Desert']
+ && pets['Rat-Golden']
+ && pets['Rat-Red']
+ && pets['Rat-Shade']
+ && pets['Rat-Skeleton']
+ && pets['Rat-White']
+ && pets['Rat-Zombie']
+ && pets['Bunny-Base']
+ && pets['Bunny-CottonCandyBlue']
+ && pets['Bunny-CottonCandyPink']
+ && pets['Bunny-Desert']
+ && pets['Bunny-Golden']
+ && pets['Bunny-Red']
+ && pets['Bunny-Shade']
+ && pets['Bunny-Skeleton']
+ && pets['Bunny-White']
+ && pets['Bunny-Zombie']
+ && pets['Horse-Base']
+ && pets['Horse-CottonCandyBlue']
+ && pets['Horse-CottonCandyPink']
+ && pets['Horse-Desert']
+ && pets['Horse-Golden']
+ && pets['Horse-Red']
+ && pets['Horse-Shade']
+ && pets['Horse-Skeleton']
+ && pets['Horse-White']
+ && pets['Horse-Zombie']
+ && pets['Cow-Base']
+ && pets['Cow-CottonCandyBlue']
+ && pets['Cow-CottonCandyPink']
+ && pets['Cow-Desert']
+ && pets['Cow-Golden']
+ && pets['Cow-Red']
+ && pets['Cow-Shade']
+ && pets['Cow-Skeleton']
+ && pets['Cow-White']
+ && pets['Cow-Zombie']) {
+ set['achievements.domesticated'] = true;
+ }
+ }
+
+ if (count % progressCount === 0) console.warn(`${count} ${user._id}`);
+
+ return await User.update({ _id: user._id }, { $set: set }).exec();
+}
+
+export default async function processUsers () {
+ let query = {
+ // migration: { $ne: MIGRATION_NAME },
+ 'auth.timestamps.loggedin': { $gt: new Date('2021-08-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
+ }
+};
diff --git a/website/client/src/assets/css/sprites.css b/website/client/src/assets/css/sprites.css
index c3ec8d1608..2bf4ec2834 100755
--- a/website/client/src/assets/css/sprites.css
+++ b/website/client/src/assets/css/sprites.css
@@ -10,6 +10,12 @@
height: 219px;
}
+.quest_solarSystem {
+ background: url("~@/assets/images/animated/quest_solarSystem.gif") no-repeat;
+ width: 219px;
+ height: 219px;
+}
+
.Pet_HatchingPotion_Dessert, .Pet_HatchingPotion_Veggie, .Pet_HatchingPotion_Windup {
width: 68px;
height: 68px;
diff --git a/website/client/src/components/notifications.vue b/website/client/src/components/notifications.vue
index 770b8bdeb4..c9d7b7e055 100644
--- a/website/client/src/components/notifications.vue
+++ b/website/client/src/components/notifications.vue
@@ -419,6 +419,14 @@ const NOTIFICATIONS = {
achievement: 'wildBlueYonder',
},
},
+ ACHIEVEMENT_DOMESTICATED: {
+ achievement: true,
+ label: $t => `${$t('achievement')}: ${$t('achievementDomesticated')}`,
+ modalId: 'generic-achievement',
+ data: {
+ achievement: 'domesticated',
+ },
+ },
};
export default {
@@ -482,7 +490,7 @@ export default {
'ACHIEVEMENT_FRESHWATER_FRIENDS', 'ACHIEVEMENT_GOOD_AS_GOLD', 'ACHIEVEMENT_ALL_THAT_GLITTERS',
'ACHIEVEMENT_BONE_COLLECTOR', 'ACHIEVEMENT_SKELETON_CREW', 'ACHIEVEMENT_SEEING_RED',
'ACHIEVEMENT_RED_LETTER_DAY', 'ACHIEVEMENT_LEGENDARY_BESTIARY', 'ACHIEVEMENT_SEASONAL_SPECIALIST',
- 'ACHIEVEMENT_VIOLETS_ARE_BLUE', 'ACHIEVEMENT_WILD_BLUE_YONDER',
+ 'ACHIEVEMENT_VIOLETS_ARE_BLUE', 'ACHIEVEMENT_WILD_BLUE_YONDER', 'ACHIEVEMENT_DOMESTICATED',
].forEach(type => {
handledNotifications[type] = true;
});
@@ -909,6 +917,7 @@ export default {
case 'ACHIEVEMENT_SEASONAL_SPECIALIST':
case 'ACHIEVEMENT_VIOLETS_ARE_BLUE':
case 'ACHIEVEMENT_WILD_BLUE_YONDER':
+ case 'ACHIEVEMENT_DOMESTICATED':
case 'GENERIC_ACHIEVEMENT':
this.showNotificationWithModal(notification);
break;
diff --git a/website/common/locales/en/achievements.json b/website/common/locales/en/achievements.json
index 799274037b..06bc720e6e 100644
--- a/website/common/locales/en/achievements.json
+++ b/website/common/locales/en/achievements.json
@@ -114,5 +114,8 @@
"achievementVioletsAreBlueModalText": "You collected all the Cotton Candy Blue Pets!",
"achievementWildBlueYonder": "Wild Blue Yonder",
"achievementWildBlueYonderText": "Has tamed all Cotton Candy Blue Mounts.",
- "achievementWildBlueYonderModalText": "You tamed all the Cotton Candy Blue Mounts!"
+ "achievementWildBlueYonderModalText": "You tamed all the Cotton Candy Blue Mounts!",
+ "achievementDomesticated": "E-I-E-I-O",
+ "achievementDomesticatedText": "Has hatched all standard colors of domesticated pets: Ferret, Guinea Pig, Rooster, Flying Pig, Rat, Bunny, Horse, and Cow!",
+ "achievementDomesticatedModalText": "You collected all the domesticated pets!"
}
diff --git a/website/common/locales/en/content.json b/website/common/locales/en/content.json
index 1edcf44d07..ee8ebe9897 100644
--- a/website/common/locales/en/content.json
+++ b/website/common/locales/en/content.json
@@ -306,6 +306,7 @@
"hatchingPotionMossyStone": "Mossy Stone",
"hatchingPotionSunset": "Sunset",
"hatchingPotionMoonglow": "Moonglow",
+ "hatchingPotionSolarSystem": "Solar System",
"hatchingPotionNotes": "Pour this on an egg, and it will hatch as a <%= potText(locale) %> pet.",
"premiumPotionAddlNotes": "Not usable on quest pet eggs. Available for purchase until <%= date(locale) %>.",
diff --git a/website/common/locales/en/questsContent.json b/website/common/locales/en/questsContent.json
index 8c38bd18a6..89ca0c57ff 100644
--- a/website/common/locales/en/questsContent.json
+++ b/website/common/locales/en/questsContent.json
@@ -851,5 +851,12 @@
"questStoneCollectCapricornRunes": "Capricorn Runes",
"questStoneCollectMossyStones": "Mossy Stones",
"questStoneDropMossyStonePotion": "Mossy Stone Hatching Potion",
- "questStoneUnlockText": "Unlocks Mossy Stone Hatching Potions for purchase in the Market"
+ "questStoneUnlockText": "Unlocks Mossy Stone Hatching Potions for purchase in the Market",
+
+ "questSolarSystemText": "A Voyage of Cosmic Concentration",
+ "questSolarSystemNotes": "Your party is traveling through the cosmos, seeing the sights in a fantastical airship designed by talented space engineer @gawrone. Its meditationite propulsion relies on the calm of your Party to stay on course.
Up ahead in the clouds of sparkling galaxies, you spot an ominously pulsing star. “Keep your focus,” warns @beffymaroo. “If we get too distracted when we’re passing that nova, the pull between the star and our ship may veer us off course!”
As you near the star, pulses of strange energy come toward the ship.
“They’re Diversionoids, thought creatures trying to get us lost,” says @SabreCat. “If we can let them flow by without carrying us away, we should be able to stay pointed toward our goal!”",
+ "questSolarSystemCompletion": "Through careful practice, you and the crew manage to keep the Diversionoids from sweeping you overboard, just by noticing and acknowledging them without letting them take over. As you pass safely by the pulsing star, @gawrone notices a cluster of floating bottles and pulls them aboard. Each appears to contain a tiny solar system!
“Well, looks like our hard work has brought us some fine rewards!” says @beffymaroo. “Let’s see what celestial wonders might appear if we hatch pet eggs with these new potions.”",
+ "questSolarSystemBoss": "Diversionoids",
+ "questSolarSystemDropSolarSystemPotion": "Solar System Hatching Potion",
+ "questSolarSystemUnlockText": "Unlocks Solar System Hatching Potions for purchase in the Market"
}
diff --git a/website/common/script/content/achievements.js b/website/common/script/content/achievements.js
index e2dfdce6d6..5b60737fc6 100644
--- a/website/common/script/content/achievements.js
+++ b/website/common/script/content/achievements.js
@@ -252,6 +252,11 @@ const basicAchievs = {
titleKey: 'achievementWildBlueYonder',
textKey: 'achievementWildBlueYonderText',
},
+ domesticated: {
+ icon: 'achievement-domesticated',
+ titleKey: 'achievementDomesticated',
+ textKey: 'achievementDomesticatedText',
+ },
};
Object.assign(achievementsData, basicAchievs);
diff --git a/website/common/script/content/constants/animalSetAchievements.js b/website/common/script/content/constants/animalSetAchievements.js
index 04b56559f9..59f51c5a1c 100644
--- a/website/common/script/content/constants/animalSetAchievements.js
+++ b/website/common/script/content/constants/animalSetAchievements.js
@@ -11,6 +11,21 @@ const ANIMAL_SET_ACHIEVEMENTS = {
achievementKey: 'legendaryBestiary',
notificationType: 'ACHIEVEMENT_LEGENDARY_BESTIARY',
},
+ domesticated: {
+ type: 'pet',
+ species: [
+ 'Ferret',
+ 'GuineaPig',
+ 'Rooster',
+ 'FlyingPig',
+ 'Rat',
+ 'Rabbit',
+ 'Horse',
+ 'Cow',
+ ],
+ achievementKey: 'domesticated',
+ notificationType: 'ACHIEVEMENT_DOMESTICATED',
+ },
};
export default ANIMAL_SET_ACHIEVEMENTS;
diff --git a/website/common/script/content/hatching-potions.js b/website/common/script/content/hatching-potions.js
index 98f6df3a24..89acf639ad 100644
--- a/website/common/script/content/hatching-potions.js
+++ b/website/common/script/content/hatching-potions.js
@@ -489,6 +489,13 @@ const premium = {
return moment().isBetween(EVENTS.potions202108.start, EVENTS.potions202108.end);
},
},
+ SolarSystem: {
+ value: 2,
+ text: t('hatchingPotionSolarSystem'),
+ limited: true,
+ canBuy: hasQuestAchievementFunction('solarSystem'),
+ _addlNotes: t('premiumPotionUnlimitedNotes'),
+ },
};
const wacky = {
diff --git a/website/common/script/content/quests.js b/website/common/script/content/quests.js
index 42ee560d9e..084cadd8d6 100644
--- a/website/common/script/content/quests.js
+++ b/website/common/script/content/quests.js
@@ -3804,6 +3804,41 @@ const quests = {
unlock: t('questStoneUnlockText'),
},
},
+ solarSystem: {
+ text: t('questSolarSystemText'),
+ notes: t('questSolarSystemNotes'),
+ completion: t('questSolarSystemCompletion'),
+ value: 1,
+ category: 'timeTravelers',
+ canBuy () {
+ return false;
+ },
+ boss: {
+ name: t('questSolarSystemBoss'),
+ hp: 1500,
+ str: 2.5,
+ },
+ drop: {
+ items: [
+ {
+ type: 'hatchingPotions',
+ key: 'SolarSystem',
+ text: t('questSolarSystemDropSolarSystemPotion'),
+ }, {
+ type: 'hatchingPotions',
+ key: 'SolarSystem',
+ text: t('questSolarSystemDropSolarSystemPotion'),
+ }, {
+ type: 'hatchingPotions',
+ key: 'SolarSystem',
+ text: t('questSolarSystemDropSolarSystemPotion'),
+ },
+ ],
+ gp: 90,
+ exp: 900,
+ unlock: t('questSolarSystemUnlockText'),
+ },
+ },
};
each(quests, (v, key) => {
diff --git a/website/common/script/libs/achievements.js b/website/common/script/libs/achievements.js
index 9f59d5b501..2f96994282 100644
--- a/website/common/script/libs/achievements.js
+++ b/website/common/script/libs/achievements.js
@@ -212,6 +212,7 @@ function _getBasicAchievements (user, language) {
_addSimple(result, user, { path: 'seasonalSpecialist', language });
_addSimple(result, user, { path: 'violetsAreBlue', language });
_addSimple(result, user, { path: 'wildBlueYonder', language });
+ _addSimple(result, user, { path: 'domesticated', language });
_addSimpleWithMasterCount(result, user, { path: 'beastMaster', language });
_addSimpleWithMasterCount(result, user, { path: 'mountMaster', language });
diff --git a/website/raw_sprites/spritesmith/achievements/achievement-domesticated2x.png b/website/raw_sprites/spritesmith/achievements/achievement-domesticated2x.png
new file mode 100644
index 0000000000..4647170532
Binary files /dev/null and b/website/raw_sprites/spritesmith/achievements/achievement-domesticated2x.png differ
diff --git a/website/raw_sprites/spritesmith/quests/bosses/background_dysheartener.png b/website/raw_sprites/spritesmith/quests/bosses/background_dysheartener.png
deleted file mode 100644
index a77ddbc8d7..0000000000
Binary files a/website/raw_sprites/spritesmith/quests/bosses/background_dysheartener.png and /dev/null differ
diff --git a/website/raw_sprites/spritesmith/quests/bosses/banner_flair_dysheartener.png b/website/raw_sprites/spritesmith/quests/bosses/banner_flair_dysheartener.png
deleted file mode 100644
index 114974af24..0000000000
Binary files a/website/raw_sprites/spritesmith/quests/bosses/banner_flair_dysheartener.png and /dev/null differ
diff --git a/website/raw_sprites/spritesmith/quests/bosses/phobia_dysheartener.png b/website/raw_sprites/spritesmith/quests/bosses/phobia_dysheartener.png
deleted file mode 100644
index ac998d9e60..0000000000
Binary files a/website/raw_sprites/spritesmith/quests/bosses/phobia_dysheartener.png and /dev/null differ
diff --git a/website/raw_sprites/spritesmith/quests/scrolls/inventory_quest_scroll_solarSystem.png b/website/raw_sprites/spritesmith/quests/scrolls/inventory_quest_scroll_solarSystem.png
new file mode 100644
index 0000000000..39a79eed29
Binary files /dev/null and b/website/raw_sprites/spritesmith/quests/scrolls/inventory_quest_scroll_solarSystem.png differ
diff --git a/website/raw_sprites/spritesmith/stable/mounts/body/Mount_Body_BearCub-SolarSystem.png b/website/raw_sprites/spritesmith/stable/mounts/body/Mount_Body_BearCub-SolarSystem.png
new file mode 100644
index 0000000000..44b5b2911f
Binary files /dev/null and b/website/raw_sprites/spritesmith/stable/mounts/body/Mount_Body_BearCub-SolarSystem.png differ
diff --git a/website/raw_sprites/spritesmith/stable/mounts/body/Mount_Body_Cactus-SolarSystem.png b/website/raw_sprites/spritesmith/stable/mounts/body/Mount_Body_Cactus-SolarSystem.png
new file mode 100644
index 0000000000..0375af6126
Binary files /dev/null and b/website/raw_sprites/spritesmith/stable/mounts/body/Mount_Body_Cactus-SolarSystem.png differ
diff --git a/website/raw_sprites/spritesmith/stable/mounts/body/Mount_Body_Dragon-SolarSystem.png b/website/raw_sprites/spritesmith/stable/mounts/body/Mount_Body_Dragon-SolarSystem.png
new file mode 100644
index 0000000000..c9d887b4a6
Binary files /dev/null and b/website/raw_sprites/spritesmith/stable/mounts/body/Mount_Body_Dragon-SolarSystem.png differ
diff --git a/website/raw_sprites/spritesmith/stable/mounts/body/Mount_Body_FlyingPig-SolarSystem.png b/website/raw_sprites/spritesmith/stable/mounts/body/Mount_Body_FlyingPig-SolarSystem.png
new file mode 100644
index 0000000000..88398f3de9
Binary files /dev/null and b/website/raw_sprites/spritesmith/stable/mounts/body/Mount_Body_FlyingPig-SolarSystem.png differ
diff --git a/website/raw_sprites/spritesmith/stable/mounts/body/Mount_Body_Fox-SolarSystem.png b/website/raw_sprites/spritesmith/stable/mounts/body/Mount_Body_Fox-SolarSystem.png
new file mode 100644
index 0000000000..90af9e5897
Binary files /dev/null and b/website/raw_sprites/spritesmith/stable/mounts/body/Mount_Body_Fox-SolarSystem.png differ
diff --git a/website/raw_sprites/spritesmith/stable/mounts/body/Mount_Body_LionCub-SolarSystem.png b/website/raw_sprites/spritesmith/stable/mounts/body/Mount_Body_LionCub-SolarSystem.png
new file mode 100644
index 0000000000..35ca3b43bc
Binary files /dev/null and b/website/raw_sprites/spritesmith/stable/mounts/body/Mount_Body_LionCub-SolarSystem.png differ
diff --git a/website/raw_sprites/spritesmith/stable/mounts/body/Mount_Body_PandaCub-SolarSystem.png b/website/raw_sprites/spritesmith/stable/mounts/body/Mount_Body_PandaCub-SolarSystem.png
new file mode 100644
index 0000000000..230dcd941e
Binary files /dev/null and b/website/raw_sprites/spritesmith/stable/mounts/body/Mount_Body_PandaCub-SolarSystem.png differ
diff --git a/website/raw_sprites/spritesmith/stable/mounts/body/Mount_Body_TigerCub-SolarSystem.png b/website/raw_sprites/spritesmith/stable/mounts/body/Mount_Body_TigerCub-SolarSystem.png
new file mode 100644
index 0000000000..9178feca17
Binary files /dev/null and b/website/raw_sprites/spritesmith/stable/mounts/body/Mount_Body_TigerCub-SolarSystem.png differ
diff --git a/website/raw_sprites/spritesmith/stable/mounts/body/Mount_Body_Wolf-SolarSystem.png b/website/raw_sprites/spritesmith/stable/mounts/body/Mount_Body_Wolf-SolarSystem.png
new file mode 100644
index 0000000000..6dc0542e6f
Binary files /dev/null and b/website/raw_sprites/spritesmith/stable/mounts/body/Mount_Body_Wolf-SolarSystem.png differ
diff --git a/website/raw_sprites/spritesmith/stable/mounts/head/Mount_Head_BearCub-SolarSystem.png b/website/raw_sprites/spritesmith/stable/mounts/head/Mount_Head_BearCub-SolarSystem.png
new file mode 100644
index 0000000000..ba0afb2dcc
Binary files /dev/null and b/website/raw_sprites/spritesmith/stable/mounts/head/Mount_Head_BearCub-SolarSystem.png differ
diff --git a/website/raw_sprites/spritesmith/stable/mounts/head/Mount_Head_Cactus-SolarSystem.png b/website/raw_sprites/spritesmith/stable/mounts/head/Mount_Head_Cactus-SolarSystem.png
new file mode 100644
index 0000000000..134a6fc978
Binary files /dev/null and b/website/raw_sprites/spritesmith/stable/mounts/head/Mount_Head_Cactus-SolarSystem.png differ
diff --git a/website/raw_sprites/spritesmith/stable/mounts/head/Mount_Head_Dragon-SolarSystem.png b/website/raw_sprites/spritesmith/stable/mounts/head/Mount_Head_Dragon-SolarSystem.png
new file mode 100644
index 0000000000..697a71ca79
Binary files /dev/null and b/website/raw_sprites/spritesmith/stable/mounts/head/Mount_Head_Dragon-SolarSystem.png differ
diff --git a/website/raw_sprites/spritesmith/stable/mounts/head/Mount_Head_FlyingPig-SolarSystem.png b/website/raw_sprites/spritesmith/stable/mounts/head/Mount_Head_FlyingPig-SolarSystem.png
new file mode 100644
index 0000000000..b34d8b6ff3
Binary files /dev/null and b/website/raw_sprites/spritesmith/stable/mounts/head/Mount_Head_FlyingPig-SolarSystem.png differ
diff --git a/website/raw_sprites/spritesmith/stable/mounts/head/Mount_Head_Fox-SolarSystem.png b/website/raw_sprites/spritesmith/stable/mounts/head/Mount_Head_Fox-SolarSystem.png
new file mode 100644
index 0000000000..847ff5ec9e
Binary files /dev/null and b/website/raw_sprites/spritesmith/stable/mounts/head/Mount_Head_Fox-SolarSystem.png differ
diff --git a/website/raw_sprites/spritesmith/stable/mounts/head/Mount_Head_LionCub-SolarSystem.png b/website/raw_sprites/spritesmith/stable/mounts/head/Mount_Head_LionCub-SolarSystem.png
new file mode 100644
index 0000000000..9b1b4fe5b1
Binary files /dev/null and b/website/raw_sprites/spritesmith/stable/mounts/head/Mount_Head_LionCub-SolarSystem.png differ
diff --git a/website/raw_sprites/spritesmith/stable/mounts/head/Mount_Head_PandaCub-SolarSystem.png b/website/raw_sprites/spritesmith/stable/mounts/head/Mount_Head_PandaCub-SolarSystem.png
new file mode 100644
index 0000000000..32a494fc06
Binary files /dev/null and b/website/raw_sprites/spritesmith/stable/mounts/head/Mount_Head_PandaCub-SolarSystem.png differ
diff --git a/website/raw_sprites/spritesmith/stable/mounts/head/Mount_Head_TigerCub-SolarSystem.png b/website/raw_sprites/spritesmith/stable/mounts/head/Mount_Head_TigerCub-SolarSystem.png
new file mode 100644
index 0000000000..b841428f10
Binary files /dev/null and b/website/raw_sprites/spritesmith/stable/mounts/head/Mount_Head_TigerCub-SolarSystem.png differ
diff --git a/website/raw_sprites/spritesmith/stable/mounts/head/Mount_Head_Wolf-SolarSystem.png b/website/raw_sprites/spritesmith/stable/mounts/head/Mount_Head_Wolf-SolarSystem.png
new file mode 100644
index 0000000000..bbef156c39
Binary files /dev/null and b/website/raw_sprites/spritesmith/stable/mounts/head/Mount_Head_Wolf-SolarSystem.png differ
diff --git a/website/raw_sprites/spritesmith/stable/mounts/icon/Mount_Icon_BearCub-SolarSystem.png b/website/raw_sprites/spritesmith/stable/mounts/icon/Mount_Icon_BearCub-SolarSystem.png
new file mode 100644
index 0000000000..627a1d36c6
Binary files /dev/null and b/website/raw_sprites/spritesmith/stable/mounts/icon/Mount_Icon_BearCub-SolarSystem.png differ
diff --git a/website/raw_sprites/spritesmith/stable/mounts/icon/Mount_Icon_Cactus-SolarSystem.png b/website/raw_sprites/spritesmith/stable/mounts/icon/Mount_Icon_Cactus-SolarSystem.png
new file mode 100644
index 0000000000..6a27223b9f
Binary files /dev/null and b/website/raw_sprites/spritesmith/stable/mounts/icon/Mount_Icon_Cactus-SolarSystem.png differ
diff --git a/website/raw_sprites/spritesmith/stable/mounts/icon/Mount_Icon_Dragon-SolarSystem.png b/website/raw_sprites/spritesmith/stable/mounts/icon/Mount_Icon_Dragon-SolarSystem.png
new file mode 100644
index 0000000000..325e7a0d78
Binary files /dev/null and b/website/raw_sprites/spritesmith/stable/mounts/icon/Mount_Icon_Dragon-SolarSystem.png differ
diff --git a/website/raw_sprites/spritesmith/stable/mounts/icon/Mount_Icon_FlyingPig-SolarSystem.png b/website/raw_sprites/spritesmith/stable/mounts/icon/Mount_Icon_FlyingPig-SolarSystem.png
new file mode 100644
index 0000000000..3f3de0f9bd
Binary files /dev/null and b/website/raw_sprites/spritesmith/stable/mounts/icon/Mount_Icon_FlyingPig-SolarSystem.png differ
diff --git a/website/raw_sprites/spritesmith/stable/mounts/icon/Mount_Icon_Fox-SolarSystem.png b/website/raw_sprites/spritesmith/stable/mounts/icon/Mount_Icon_Fox-SolarSystem.png
new file mode 100644
index 0000000000..d9249afaba
Binary files /dev/null and b/website/raw_sprites/spritesmith/stable/mounts/icon/Mount_Icon_Fox-SolarSystem.png differ
diff --git a/website/raw_sprites/spritesmith/stable/mounts/icon/Mount_Icon_LionCub-SolarSystem.png b/website/raw_sprites/spritesmith/stable/mounts/icon/Mount_Icon_LionCub-SolarSystem.png
new file mode 100644
index 0000000000..6a4d5a27b3
Binary files /dev/null and b/website/raw_sprites/spritesmith/stable/mounts/icon/Mount_Icon_LionCub-SolarSystem.png differ
diff --git a/website/raw_sprites/spritesmith/stable/mounts/icon/Mount_Icon_PandaCub-SolarSystem.png b/website/raw_sprites/spritesmith/stable/mounts/icon/Mount_Icon_PandaCub-SolarSystem.png
new file mode 100644
index 0000000000..ba4930bb1a
Binary files /dev/null and b/website/raw_sprites/spritesmith/stable/mounts/icon/Mount_Icon_PandaCub-SolarSystem.png differ
diff --git a/website/raw_sprites/spritesmith/stable/mounts/icon/Mount_Icon_TigerCub-SolarSystem.png b/website/raw_sprites/spritesmith/stable/mounts/icon/Mount_Icon_TigerCub-SolarSystem.png
new file mode 100644
index 0000000000..4658a9c19b
Binary files /dev/null and b/website/raw_sprites/spritesmith/stable/mounts/icon/Mount_Icon_TigerCub-SolarSystem.png differ
diff --git a/website/raw_sprites/spritesmith/stable/mounts/icon/Mount_Icon_Wolf-SolarSystem.png b/website/raw_sprites/spritesmith/stable/mounts/icon/Mount_Icon_Wolf-SolarSystem.png
new file mode 100644
index 0000000000..cb6b389ef6
Binary files /dev/null and b/website/raw_sprites/spritesmith/stable/mounts/icon/Mount_Icon_Wolf-SolarSystem.png differ
diff --git a/website/raw_sprites/spritesmith/stable/pets/Pet-BearCub-SolarSystem.png b/website/raw_sprites/spritesmith/stable/pets/Pet-BearCub-SolarSystem.png
new file mode 100644
index 0000000000..033d0eb456
Binary files /dev/null and b/website/raw_sprites/spritesmith/stable/pets/Pet-BearCub-SolarSystem.png differ
diff --git a/website/raw_sprites/spritesmith/stable/pets/Pet-Cactus-SolarSystem.png b/website/raw_sprites/spritesmith/stable/pets/Pet-Cactus-SolarSystem.png
new file mode 100644
index 0000000000..d1a232c5f1
Binary files /dev/null and b/website/raw_sprites/spritesmith/stable/pets/Pet-Cactus-SolarSystem.png differ
diff --git a/website/raw_sprites/spritesmith/stable/pets/Pet-Dragon-SolarSystem.png b/website/raw_sprites/spritesmith/stable/pets/Pet-Dragon-SolarSystem.png
new file mode 100644
index 0000000000..0792c26a62
Binary files /dev/null and b/website/raw_sprites/spritesmith/stable/pets/Pet-Dragon-SolarSystem.png differ
diff --git a/website/raw_sprites/spritesmith/stable/pets/Pet-FlyingPig-SolarSystem.png b/website/raw_sprites/spritesmith/stable/pets/Pet-FlyingPig-SolarSystem.png
new file mode 100644
index 0000000000..7bfcc1457f
Binary files /dev/null and b/website/raw_sprites/spritesmith/stable/pets/Pet-FlyingPig-SolarSystem.png differ
diff --git a/website/raw_sprites/spritesmith/stable/pets/Pet-Fox-SolarSystem.png b/website/raw_sprites/spritesmith/stable/pets/Pet-Fox-SolarSystem.png
new file mode 100644
index 0000000000..27cc533b71
Binary files /dev/null and b/website/raw_sprites/spritesmith/stable/pets/Pet-Fox-SolarSystem.png differ
diff --git a/website/raw_sprites/spritesmith/stable/pets/Pet-LionCub-SolarSystem.png b/website/raw_sprites/spritesmith/stable/pets/Pet-LionCub-SolarSystem.png
new file mode 100644
index 0000000000..8a7fb88f1d
Binary files /dev/null and b/website/raw_sprites/spritesmith/stable/pets/Pet-LionCub-SolarSystem.png differ
diff --git a/website/raw_sprites/spritesmith/stable/pets/Pet-PandaCub-SolarSystem.png b/website/raw_sprites/spritesmith/stable/pets/Pet-PandaCub-SolarSystem.png
new file mode 100644
index 0000000000..9428c29358
Binary files /dev/null and b/website/raw_sprites/spritesmith/stable/pets/Pet-PandaCub-SolarSystem.png differ
diff --git a/website/raw_sprites/spritesmith/stable/pets/Pet-TigerCub-SolarSystem.png b/website/raw_sprites/spritesmith/stable/pets/Pet-TigerCub-SolarSystem.png
new file mode 100644
index 0000000000..c741110fa6
Binary files /dev/null and b/website/raw_sprites/spritesmith/stable/pets/Pet-TigerCub-SolarSystem.png differ
diff --git a/website/raw_sprites/spritesmith/stable/pets/Pet-Wolf-SolarSystem.png b/website/raw_sprites/spritesmith/stable/pets/Pet-Wolf-SolarSystem.png
new file mode 100644
index 0000000000..f17d46e3ab
Binary files /dev/null and b/website/raw_sprites/spritesmith/stable/pets/Pet-Wolf-SolarSystem.png differ
diff --git a/website/raw_sprites/spritesmith/stable/potions/Pet_HatchingPotion_SolarSystem.png b/website/raw_sprites/spritesmith/stable/potions/Pet_HatchingPotion_SolarSystem.png
new file mode 100644
index 0000000000..ea4bce106e
Binary files /dev/null and b/website/raw_sprites/spritesmith/stable/potions/Pet_HatchingPotion_SolarSystem.png differ
diff --git a/website/server/models/user/schema.js b/website/server/models/user/schema.js
index 9114767e3e..b2fe24db5c 100644
--- a/website/server/models/user/schema.js
+++ b/website/server/models/user/schema.js
@@ -144,6 +144,7 @@ export default new Schema({
seasonalSpecialist: Boolean,
violetsAreBlue: Boolean,
wildBlueYonder: Boolean,
+ domesticated: Boolean,
// Onboarding Guide
createdTask: Boolean,
completedTask: Boolean,
diff --git a/website/server/models/userNotification.js b/website/server/models/userNotification.js
index 5bee1533c8..b411bd2082 100644
--- a/website/server/models/userNotification.js
+++ b/website/server/models/userNotification.js
@@ -67,6 +67,7 @@ const NOTIFICATION_TYPES = [
'ACHIEVEMENT_SEASONAL_SPECIALIST',
'ACHIEVEMENT_VIOLETS_ARE_BLUE',
'ACHIEVEMENT_WILD_BLUE_YONDER',
+ 'ACHIEVEMENT_DOMESTICATED',
'ACHIEVEMENT', // generic achievement notification, details inside `notification.data`
'DROP_CAP_REACHED',
];