diff --git a/habitica-images b/habitica-images index 973f84ead2..f421a923f8 160000 --- a/habitica-images +++ b/habitica-images @@ -1 +1 @@ -Subproject commit 973f84ead2613073f301c1e2b5496d08163f7507 +Subproject commit f421a923f836a61f28e2a388fb04120292444c30 diff --git a/website/client/src/assets/css/sprites/spritesmith-main.css b/website/client/src/assets/css/sprites/spritesmith-main.css index cc08b248ed..c5b1f3314b 100644 --- a/website/client/src/assets/css/sprites/spritesmith-main.css +++ b/website/client/src/assets/css/sprites/spritesmith-main.css @@ -293,6 +293,11 @@ width: 48px; height: 52px; } +.achievement-plantParent2x { + background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/achievement-plantParent2x.png'); + width: 64px; + height: 68px; +} .achievement-polarPro2x { background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/achievement-polarPro2x.png'); width: 68px; @@ -28185,6 +28190,26 @@ width: 114px; height: 90px; } +.broad_armor_special_spring2023Healer { + background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/broad_armor_special_spring2023Healer.png'); + width: 117px; + height: 120px; +} +.broad_armor_special_spring2023Mage { + background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/broad_armor_special_spring2023Mage.png'); + width: 117px; + height: 120px; +} +.broad_armor_special_spring2023Rogue { + background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/broad_armor_special_spring2023Rogue.png'); + width: 114px; + height: 90px; +} +.broad_armor_special_spring2023Warrior { + background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/broad_armor_special_spring2023Warrior.png'); + width: 117px; + height: 120px; +} .broad_armor_special_springHealer { background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/broad_armor_special_springHealer.png'); width: 90px; @@ -28445,6 +28470,26 @@ width: 114px; height: 90px; } +.head_special_spring2023Healer { + background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/head_special_spring2023Healer.png'); + width: 117px; + height: 120px; +} +.head_special_spring2023Mage { + background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/head_special_spring2023Mage.png'); + width: 117px; + height: 120px; +} +.head_special_spring2023Rogue { + background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/head_special_spring2023Rogue.png'); + width: 114px; + height: 90px; +} +.head_special_spring2023Warrior { + background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/head_special_spring2023Warrior.png'); + width: 117px; + height: 120px; +} .head_special_springHealer { background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/head_special_springHealer.png'); width: 90px; @@ -28585,6 +28630,21 @@ width: 114px; height: 90px; } +.shield_special_spring2023Healer { + background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shield_special_spring2023Healer.png'); + width: 117px; + height: 120px; +} +.shield_special_spring2023Rogue { + background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shield_special_spring2023Rogue.png'); + width: 114px; + height: 90px; +} +.shield_special_spring2023Warrior { + background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shield_special_spring2023Warrior.png'); + width: 117px; + height: 120px; +} .shield_special_springHealer { background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shield_special_springHealer.png'); width: 90px; @@ -28760,6 +28820,26 @@ width: 68px; height: 68px; } +.shop_armor_special_spring2023Healer { + background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_armor_special_spring2023Healer.png'); + width: 68px; + height: 68px; +} +.shop_armor_special_spring2023Mage { + background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_armor_special_spring2023Mage.png'); + width: 68px; + height: 68px; +} +.shop_armor_special_spring2023Rogue { + background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_armor_special_spring2023Rogue.png'); + width: 68px; + height: 68px; +} +.shop_armor_special_spring2023Warrior { + background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_armor_special_spring2023Warrior.png'); + width: 68px; + height: 68px; +} .shop_armor_special_springHealer { background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_armor_special_springHealer.png'); width: 68px; @@ -29020,6 +29100,26 @@ width: 68px; height: 68px; } +.shop_head_special_spring2023Healer { + background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_head_special_spring2023Healer.png'); + width: 68px; + height: 68px; +} +.shop_head_special_spring2023Mage { + background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_head_special_spring2023Mage.png'); + width: 68px; + height: 68px; +} +.shop_head_special_spring2023Rogue { + background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_head_special_spring2023Rogue.png'); + width: 68px; + height: 68px; +} +.shop_head_special_spring2023Warrior { + background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_head_special_spring2023Warrior.png'); + width: 68px; + height: 68px; +} .shop_head_special_springHealer { background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_head_special_springHealer.png'); width: 68px; @@ -29160,6 +29260,21 @@ width: 68px; height: 68px; } +.shop_shield_special_spring2023Healer { + background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_shield_special_spring2023Healer.png'); + width: 68px; + height: 68px; +} +.shop_shield_special_spring2023Rogue { + background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_shield_special_spring2023Rogue.png'); + width: 68px; + height: 68px; +} +.shop_shield_special_spring2023Warrior { + background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_shield_special_spring2023Warrior.png'); + width: 68px; + height: 68px; +} .shop_shield_special_springHealer { background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_shield_special_springHealer.png'); width: 68px; @@ -29335,6 +29450,26 @@ width: 68px; height: 68px; } +.shop_weapon_special_spring2023Healer { + background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_weapon_special_spring2023Healer.png'); + width: 68px; + height: 68px; +} +.shop_weapon_special_spring2023Mage { + background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_weapon_special_spring2023Mage.png'); + width: 68px; + height: 68px; +} +.shop_weapon_special_spring2023Rogue { + background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_weapon_special_spring2023Rogue.png'); + width: 68px; + height: 68px; +} +.shop_weapon_special_spring2023Warrior { + background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_weapon_special_spring2023Warrior.png'); + width: 68px; + height: 68px; +} .shop_weapon_special_springHealer { background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_weapon_special_springHealer.png'); width: 68px; @@ -29515,6 +29650,26 @@ width: 114px; height: 90px; } +.slim_armor_special_spring2023Healer { + background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/slim_armor_special_spring2023Healer.png'); + width: 117px; + height: 120px; +} +.slim_armor_special_spring2023Mage { + background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/slim_armor_special_spring2023Mage.png'); + width: 117px; + height: 120px; +} +.slim_armor_special_spring2023Rogue { + background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/slim_armor_special_spring2023Rogue.png'); + width: 114px; + height: 90px; +} +.slim_armor_special_spring2023Warrior { + background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/slim_armor_special_spring2023Warrior.png'); + width: 117px; + height: 120px; +} .slim_armor_special_springHealer { background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/slim_armor_special_springHealer.png'); width: 90px; @@ -29695,6 +29850,26 @@ width: 114px; height: 90px; } +.weapon_special_spring2023Healer { + background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/weapon_special_spring2023Healer.png'); + width: 117px; + height: 120px; +} +.weapon_special_spring2023Mage { + background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/weapon_special_spring2023Mage.png'); + width: 117px; + height: 120px; +} +.weapon_special_spring2023Rogue { + background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/weapon_special_spring2023Rogue.png'); + width: 114px; + height: 90px; +} +.weapon_special_spring2023Warrior { + background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/weapon_special_spring2023Warrior.png'); + width: 117px; + height: 120px; +} .weapon_special_springHealer { background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/weapon_special_springHealer.png'); width: 90px; @@ -53283,6 +53458,11 @@ width: 81px; height: 99px; } +.Pet-BearCub-TeaShop { + background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Pet-BearCub-TeaShop.png'); + width: 81px; + height: 99px; +} .Pet-BearCub-Thunderstorm { background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Pet-BearCub-Thunderstorm.png'); width: 81px; @@ -53723,6 +53903,11 @@ width: 81px; height: 99px; } +.Pet-Cactus-TeaShop { + background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Pet-Cactus-TeaShop.png'); + width: 81px; + height: 99px; +} .Pet-Cactus-Thunderstorm { background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Pet-Cactus-Thunderstorm.png'); width: 81px; @@ -54268,6 +54453,11 @@ width: 81px; height: 99px; } +.Pet-Dragon-TeaShop { + background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Pet-Dragon-TeaShop.png'); + width: 81px; + height: 99px; +} .Pet-Dragon-Thunderstorm { background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Pet-Dragon-Thunderstorm.png'); width: 81px; @@ -54708,6 +54898,11 @@ width: 81px; height: 99px; } +.Pet-FlyingPig-TeaShop { + background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Pet-FlyingPig-TeaShop.png'); + width: 81px; + height: 99px; +} .Pet-FlyingPig-Thunderstorm { background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Pet-FlyingPig-Thunderstorm.png'); width: 81px; @@ -54998,6 +55193,11 @@ width: 81px; height: 99px; } +.Pet-Fox-TeaShop { + background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Pet-Fox-TeaShop.png'); + width: 81px; + height: 99px; +} .Pet-Fox-Thunderstorm { background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Pet-Fox-Thunderstorm.png'); width: 81px; @@ -55683,6 +55883,11 @@ width: 81px; height: 99px; } +.Pet-LionCub-TeaShop { + background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Pet-LionCub-TeaShop.png'); + width: 81px; + height: 99px; +} .Pet-LionCub-Thunderstorm { background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Pet-LionCub-Thunderstorm.png'); width: 81px; @@ -56193,6 +56398,11 @@ width: 81px; height: 99px; } +.Pet-PandaCub-TeaShop { + background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Pet-PandaCub-TeaShop.png'); + width: 81px; + height: 99px; +} .Pet-PandaCub-Thunderstorm { background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Pet-PandaCub-Thunderstorm.png'); width: 81px; @@ -57448,6 +57658,11 @@ width: 81px; height: 99px; } +.Pet-TigerCub-TeaShop { + background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Pet-TigerCub-TeaShop.png'); + width: 81px; + height: 99px; +} .Pet-TigerCub-Thunderstorm { background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Pet-TigerCub-Thunderstorm.png'); width: 81px; @@ -58053,6 +58268,11 @@ width: 81px; height: 99px; } +.Pet-Wolf-TeaShop { + background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Pet-Wolf-TeaShop.png'); + width: 81px; + height: 99px; +} .Pet-Wolf-Thunderstorm { background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Pet-Wolf-Thunderstorm.png'); width: 81px; @@ -58153,6 +58373,11 @@ width: 81px; height: 99px; } +.Pet-HatchingPotion-TeaShop { + background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Pet-HatchingPotion-TeaShop.png'); + width: 68px; + height: 68px; +} .Pet_HatchingPotion_Amber { background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Pet_HatchingPotion_Amber.png'); width: 68px; diff --git a/website/common/locales/en/achievements.json b/website/common/locales/en/achievements.json index 1432a49ef3..7650882af5 100644 --- a/website/common/locales/en/achievements.json +++ b/website/common/locales/en/achievements.json @@ -144,5 +144,8 @@ "achievementBoneToPickModalText": "You collected all the Classic and Quest Skeleton Pets!", "achievementPolarPro": "Polar Pro", "achievementPolarProText": "Has hatched all standard colors of Polar pets: Bear, Fox, Penguin, Whale, and Wolf!", - "achievementPolarProModalText": "You collected all the Polar Pets!" + "achievementPolarProModalText": "You collected all the Polar Pets!", + "achievementPlantParent": "Plant Parent", + "achievementPlantParentText": "Has hatched all standard colors of Plant pets: Cactus and Treeling!", + "achievementPlantParentModalText": "You collected all the Plant Pets!" } diff --git a/website/common/script/content/achievements.js b/website/common/script/content/achievements.js index f9451c33de..dfc0e46df4 100644 --- a/website/common/script/content/achievements.js +++ b/website/common/script/content/achievements.js @@ -183,6 +183,11 @@ const animalSetAchievs = { titleKey: 'achievementDomesticated', textKey: 'achievementDomesticatedText', }, + plantParent: { + icon: 'achievement-plantParent', + titleKey: 'achievementPlantParent', + textKey: 'achievementPlantParentText', + }, polarPro: { icon: 'achievement-polarPro', titleKey: 'achievementPolarPro', diff --git a/website/common/script/content/constants/animalSetAchievements.js b/website/common/script/content/constants/animalSetAchievements.js index 51c07fabf3..6f6569ff5b 100644 --- a/website/common/script/content/constants/animalSetAchievements.js +++ b/website/common/script/content/constants/animalSetAchievements.js @@ -41,6 +41,15 @@ const ANIMAL_SET_ACHIEVEMENTS = { achievementKey: 'domesticated', notificationType: 'ACHIEVEMENT_ANIMAL_SET', }, + plantParent: { + type: 'pet', + species: [ + 'Cactus', + 'Treeling', + ], + achievementKey: 'plantParent', + notificationType: 'ACHIEVEMENT_ANIMAL_SET', + }, polarPro: { type: 'pet', species: [ diff --git a/website/common/script/libs/achievements.js b/website/common/script/libs/achievements.js index 79aecd4c2f..d02f8b2c2a 100644 --- a/website/common/script/libs/achievements.js +++ b/website/common/script/libs/achievements.js @@ -221,6 +221,7 @@ function _getBasicAchievements (user, language) { _addSimple(result, user, { path: 'woodlandWizard', language }); _addSimple(result, user, { path: 'boneToPick', language }); _addSimple(result, user, { path: 'polarPro', language }); + _addSimple(result, user, { path: 'plantParent', language }); _addSimpleWithMasterCount(result, user, { path: 'beastMaster', language }); _addSimpleWithMasterCount(result, user, { path: 'mountMaster', language }); diff --git a/website/server/models/user/schema.js b/website/server/models/user/schema.js index 0f47a975d9..7c9ab11a59 100644 --- a/website/server/models/user/schema.js +++ b/website/server/models/user/schema.js @@ -153,6 +153,7 @@ export default new Schema({ woodlandWizard: Boolean, boneToPick: Boolean, polarPro: Boolean, + plantParent: Boolean, // Onboarding Guide createdTask: Boolean, completedTask: Boolean,