diff --git a/habitica-images b/habitica-images index 5cc03160b5..973f84ead2 160000 --- a/habitica-images +++ b/habitica-images @@ -1 +1 @@ -Subproject commit 5cc03160b57bb3e0fbb7b75543fcd01c2c136883 +Subproject commit 973f84ead2613073f301c1e2b5496d08163f7507 diff --git a/package-lock.json b/package-lock.json index a7e1f4f37d..b16e7b3a62 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "habitica", - "version": "4.260.1", + "version": "4.262.0", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index beabae8d5e..9ebc5a1346 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "habitica", "description": "A habit tracker app which treats your goals like a Role Playing Game.", - "version": "4.260.1", + "version": "4.262.0", "main": "./website/server/index.js", "dependencies": { "@babel/core": "^7.20.12", diff --git a/website/client/src/assets/css/sprites/spritesmith-main.css b/website/client/src/assets/css/sprites/spritesmith-main.css index 2ac6f4a821..cc08b248ed 100644 --- a/website/client/src/assets/css/sprites/spritesmith-main.css +++ b/website/client/src/assets/css/sprites/spritesmith-main.css @@ -1369,6 +1369,11 @@ width: 141px; height: 147px; } +.background_jungle_watering_hole { + background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/background_jungle_watering_hole.png'); + width: 141px; + height: 147px; +} .background_kelp_forest { background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/background_kelp_forest.png'); width: 141px; @@ -1404,6 +1409,11 @@ width: 141px; height: 147px; } +.background_mangrove_forest { + background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/background_mangrove_forest.png'); + width: 141px; + height: 147px; +} .background_marble_temple { background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/background_marble_temple.png'); width: 141px; @@ -1514,6 +1524,11 @@ width: 141px; height: 147px; } +.background_old_timey_basketball_court { + background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/background_old_timey_basketball_court.png'); + width: 141px; + height: 147px; +} .background_on_a_castle_wall { background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/background_on_a_castle_wall.png'); width: 141px; @@ -3025,6 +3040,11 @@ width: 68px; height: 68px; } +.icon_background_jungle_watering_hole { + background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/icon_background_jungle_watering_hole.png'); + width: 68px; + height: 68px; +} .icon_background_kelp_forest { background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/icon_background_kelp_forest.png'); width: 68px; @@ -3060,6 +3080,11 @@ width: 68px; height: 68px; } +.icon_background_mangrove_forest { + background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/icon_background_mangrove_forest.png'); + width: 68px; + height: 68px; +} .icon_background_marble_temple { background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/icon_background_marble_temple.png'); width: 68px; @@ -3170,6 +3195,11 @@ width: 68px; height: 68px; } +.icon_background_old_timey_basketball_court { + background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/icon_background_old_timey_basketball_court.png'); + width: 68px; + height: 68px; +} .icon_background_on_a_castle_wall { background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/icon_background_on_a_castle_wall.png'); width: 68px; @@ -18320,6 +18350,11 @@ width: 90px; height: 90px; } +.broad_armor_armoire_basketballUniform { + background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/broad_armor_armoire_basketballUniform.png'); + width: 114px; + height: 90px; +} .broad_armor_armoire_bathtub { background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/broad_armor_armoire_bathtub.png'); width: 114px; @@ -19205,6 +19240,11 @@ width: 114px; height: 90px; } +.shield_armoire_basketball { + background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shield_armoire_basketball.png'); + width: 114px; + height: 90px; +} .shield_armoire_birthdayBanner { background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shield_armoire_birthdayBanner.png'); width: 114px; @@ -19575,6 +19615,11 @@ width: 68px; height: 68px; } +.shop_armor_armoire_basketballUniform { + background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_armor_armoire_basketballUniform.png'); + width: 68px; + height: 68px; +} .shop_armor_armoire_bathtub { background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_armor_armoire_bathtub.png'); width: 68px; @@ -20475,6 +20520,11 @@ width: 68px; height: 68px; } +.shop_shield_armoire_basketball { + background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_shield_armoire_basketball.png'); + width: 68px; + height: 68px; +} .shop_shield_armoire_birthdayBanner { background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_shield_armoire_birthdayBanner.png'); width: 68px; @@ -21305,6 +21355,11 @@ width: 90px; height: 90px; } +.slim_armor_armoire_basketballUniform { + background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/slim_armor_armoire_basketballUniform.png'); + width: 114px; + height: 90px; +} .slim_armor_armoire_bathtub { background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/slim_armor_armoire_bathtub.png'); width: 114px; @@ -27750,6 +27805,31 @@ width: 68px; height: 68px; } +.eyewear_mystery_202303 { + background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/eyewear_mystery_202303.png'); + width: 114px; + height: 90px; +} +.head_mystery_202303 { + background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/head_mystery_202303.png'); + width: 114px; + height: 90px; +} +.shop_eyewear_mystery_202303 { + background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_eyewear_mystery_202303.png'); + width: 68px; + height: 68px; +} +.shop_head_mystery_202303 { + background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_head_mystery_202303.png'); + width: 68px; + height: 68px; +} +.shop_set_mystery_202303 { + background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_set_mystery_202303.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; diff --git a/website/client/src/components/static/communityGuidelines.vue b/website/client/src/components/static/communityGuidelines.vue index 7d26f14d56..8f4b186ce1 100644 --- a/website/client/src/components/static/communityGuidelines.vue +++ b/website/client/src/components/static/communityGuidelines.vue @@ -149,7 +149,7 @@
  • {{ $t('commGuideList10A') }}
  • diff --git a/website/client/src/router/index.js b/website/client/src/router/index.js index 1a5fc4e99d..09727c789e 100644 --- a/website/client/src/router/index.js +++ b/website/client/src/router/index.js @@ -272,6 +272,11 @@ const router = new VueRouter({ name: 'transactions', path: 'transactions', component: Transactions, + meta: { + privilegeNeeded: [ + 'userSupport', + ], + }, }, { name: 'notifications', @@ -316,11 +321,6 @@ const router = new VueRouter({ { name: 'front', path: 'front', component: HomePage, meta: { requiresLogin: false }, }, - // Commenting out merch page see - // https://github.com/HabitRPG/habitica/issues/12039 - // { - // name: 'merch', path: 'merch', component: MerchPage, meta: { requiresLogin: false }, - // }, { name: 'news', path: 'new-stuff', component: NewsPage, meta: { requiresLogin: false }, }, diff --git a/website/common/locales/en/backgrounds.json b/website/common/locales/en/backgrounds.json index 39beda6e4a..32e9e1e8e1 100644 --- a/website/common/locales/en/backgrounds.json +++ b/website/common/locales/en/backgrounds.json @@ -845,11 +845,11 @@ "backgrounds012023": "SET 104: Released January 2023", "backgroundRimeIceText": "Rime Ice", - "backgroundRimeIceNotes": "Admire Sparkly Rime Ice.", + "backgroundRimeIceNotes": "Admire sparkly Rime Ice.", "backgroundSnowyTempleText": "Snowy Temple", - "backgroundSnowyTempleNotes": "View a Serene Snowy Temple.", + "backgroundSnowyTempleNotes": "View a serene Snowy Temple.", "backgroundWinterLakeWithSwansText": "Winter Lake With Swans", - "backgroundWinterLakeWithSwansNotes": "Enjoy Nature at a Winter Lake With Swans.", + "backgroundWinterLakeWithSwansNotes": "Enjoy nature at a Winter Lake With Swans.", "backgrounds022023": "SET 105: Released February 2023", "backgroundInFrontOfFountainText": "In Front of a Fountain", @@ -859,6 +859,14 @@ "backgroundFancyBedroomText": "Fancy Bedroom", "backgroundFancyBedroomNotes": "Luxuriate in a Fancy Bedroom.", + "backgrounds032023": "SET 106: Released March 2023", + "backgroundOldTimeyBasketballCourtText": "Old Timey Basketball Court", + "backgroundOldTimeyBasketballCourtNotes": "Shoot hoops on an Old Timey BasketBall Court.", + "backgroundJungleWateringHoleText": "Jungle Watering Hole", + "backgroundJungleWateringHoleNotes": "Stop for a sip at a Jungle Watering Hole.", + "backgroundMangroveForestText": "Mangrove Forest", + "backgroundMangroveForestNotes": "Explore the edge of the Mangrove Forest.", + "timeTravelBackgrounds": "Steampunk Backgrounds", "backgroundAirshipText": "Airship", "backgroundAirshipNotes": "Become a sky sailor on board your very own Airship.", diff --git a/website/common/locales/en/gear.json b/website/common/locales/en/gear.json index c02f62d6c3..cbb8e3e709 100644 --- a/website/common/locales/en/gear.json +++ b/website/common/locales/en/gear.json @@ -1430,6 +1430,8 @@ "armorArmoireShawlCollarCoatNotes": "A wise wizard once said there’s nothing better than being both cozy and productive! Wear this warm and stylish coat as you conquer the year’s challenges. Increases Constitution by <%= con %>. Enchanted Armoire: Independent Item.", "armorArmoireTeaGownText": "Tea Party Gown", "armorArmoireTeaGownNotes": "You’re resilient, creative, brilliant, and so fashionable! Increases Strength and Intelligence by <%= attrs %> each. Enchanted Armoire: Tea Party Set (Item 1 of 3).", + "armorArmoireBasketballUniformText": "Basketball Uniform", + "armorArmoireBasketballUniformNotes": "Wondering what’s printed on the back of this uniform? It’s your lucky number, of course! Increases Perception by <% per %>. Enchanted Armoire: Old Timey Basketball Set (Item 1 of 2).", "headgear": "helm", "headgearCapitalized": "Headgear", @@ -2016,6 +2018,8 @@ "headMystery202211Notes": "Be careful with this powerful hat, its effect on admirers can be quite shocking! Confers no benefit. November 2022 Subscriber Item.", "headMystery202301Text": "Valiant Vulpine Ears", "headMystery202301Notes": "Your hearing will be so sharp you'll hear the dawn breaking and the dew sparkling. Confers no benefit. January 2023 Subscriber Item.", + "headMystery202303Text": "Mane Character Hair", + "headMystery202303Notes": "What better way to let everyone know you’re the star of this tale than to have blue and improbably spiky hair? Confers no benefit. March 2023 Subscriber Item.", "headMystery301404Text": "Fancy Top Hat", "headMystery301404Notes": "A fancy top hat for the finest of gentlefolk! January 3015 Subscriber Item. Confers no benefit.", "headMystery301405Text": "Basic Top Hat", @@ -2601,6 +2605,8 @@ "shieldArmoireJewelersPliersNotes": "They cut, twist, pinch, and more. This tool can help you create whatever you can imagine. Increases Strength by <%= str %>. Enchanted Armoire: Jeweler Set (Item 3 of 4).", "shieldArmoireTeaKettleText": "Tea Kettle", "shieldArmoireTeaKettleNotes": "All your favorite, flavorful teas can be brewed in this kettle. Are you in the mood for black tea, green tea, oolong, or perhaps an herbal infusion? Increases Constitution by <%= con %>. Enchanted Armoire: Tea Party Set (Item 3 of 3).", + "shieldArmoireBasketballText": "Basketball", + "shieldArmoireBasketballNotes": "Swish! Whenever you shoot this magic basketball, there will be nothing but net. Increases Constitution and Strength by <%= attrs %> each. Enchanted Armoire: Old Timey Basketball Set (Item 2 of 2).", "back": "Back Accessory", "backBase0Text": "No Back Accessory", @@ -2970,6 +2976,8 @@ "eyewearMystery202204BNotes": "What's your mood today? Express yourself with these fun screens. Confers no benefit. April 2022 Subscriber Item.", "eyewearMystery202208Text": "Sparkly Eyes", "eyewearMystery202208Notes": "Lull your enemies into a false sense of security with these terrifyingly cute peepers. Confers no benefit. August 2022 Subscriber Item.", + "eyewearMystery202303Text": "Dreamy Eyes", + "eyewearMystery202303Notes": "Let your nonchalant expression lure your enemies into a false sense of security. Confers no benefit. March 2023 Subscriber Item.", "eyewearMystery301404Text": "Eyewear Goggles", "eyewearMystery301404Notes": "No eyewear could be fancier than a pair of goggles - except, perhaps, for a monocle. Confers no benefit. April 3015 Subscriber Item.", "eyewearMystery301405Text": "Monocle", diff --git a/website/common/locales/en/subscriber.json b/website/common/locales/en/subscriber.json index e8c737be83..62c7cea8bf 100644 --- a/website/common/locales/en/subscriber.json +++ b/website/common/locales/en/subscriber.json @@ -147,6 +147,7 @@ "mysterySet202212": "Glacial Guardian Set", "mysterySet202301": "Valiant Vulpine Set", "mysterySet202302": "Trickster Tabby Set", + "mysterySet202303": "Mane Character 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 452855ea81..b5736c802f 100644 --- a/website/common/script/content/appearance/backgrounds.js +++ b/website/common/script/content/appearance/backgrounds.js @@ -545,6 +545,11 @@ const backgrounds = { golden_birdcage: { }, fancy_bedroom: { }, }, + backgrounds032023: { + jungle_watering_hole: { }, + mangrove_forest: { }, + old_timey_basketball_court: { }, + }, eventBackgrounds: { birthday_bash: { price: 0, diff --git a/website/common/script/content/gear/sets/armoire.js b/website/common/script/content/gear/sets/armoire.js index c79e433e7b..05efe54b1e 100644 --- a/website/common/script/content/gear/sets/armoire.js +++ b/website/common/script/content/gear/sets/armoire.js @@ -416,6 +416,10 @@ const armor = { int: 5, set: 'teaParty', }, + basketballUniform: { + per: 10, + set: 'oldTimeyBasketball', + }, }; const body = { @@ -1146,6 +1150,11 @@ const shield = { con: 10, set: 'teaParty', }, + basketball: { + con: 5, + str: 5, + set: 'oldTimeyBasketball', + }, }; const headAccessory = { diff --git a/website/common/script/content/gear/sets/mystery.js b/website/common/script/content/gear/sets/mystery.js index ed445c9e09..f9a5775e8e 100644 --- a/website/common/script/content/gear/sets/mystery.js +++ b/website/common/script/content/gear/sets/mystery.js @@ -124,6 +124,7 @@ const eyewear = { '202204A': { mystery: '202204' }, '202204B': { mystery: '202204' }, 202208: { }, + 202303: { }, 301404: { }, 301405: { }, 301703: { }, @@ -201,6 +202,7 @@ const head = { 202210: { }, 202211: { }, 202301: { }, + 202303: { }, 301404: { }, 301405: { }, 301703: { }, diff --git a/website/server/controllers/api-v3/groups.js b/website/server/controllers/api-v3/groups.js index c16ba61c7e..d6431e40cd 100644 --- a/website/server/controllers/api-v3/groups.js +++ b/website/server/controllers/api-v3/groups.js @@ -165,6 +165,7 @@ api.createGroup = { hitType: 'event', category: 'behavior', owner: true, + groupId: savedGroup._id, groupType: savedGroup.type, privacy: savedGroup.privacy, headers: req.headers, @@ -214,6 +215,7 @@ api.createGroupPlan = { hitType: 'event', category: 'behavior', owner: true, + groupId: savedGroup._id, groupType: savedGroup.type, privacy: savedGroup.privacy, headers: req.headers, @@ -736,6 +738,7 @@ api.joinGroup = { hitType: 'event', category: 'behavior', owner: false, + groupId: group._id, groupType: group.type, privacy: group.privacy, headers: req.headers, @@ -1205,6 +1208,7 @@ api.inviteToGroup = { uuid: user._id, hitType: 'event', category: 'behavior', + groupId: group._id, groupType: group.type, headers: req.headers, };