diff --git a/habitica-images b/habitica-images index c1e8973a66..e2108645aa 160000 --- a/habitica-images +++ b/habitica-images @@ -1 +1 @@ -Subproject commit c1e8973a668cef4a52c1205ea916aceb8f7c5307 +Subproject commit e2108645aad014a416dcd4fcfe258655f79cab2b diff --git a/package-lock.json b/package-lock.json index b541922bd8..956f081ed3 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "habitica", - "version": "4.253.0", + "version": "4.255.0", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index 953ce21b8f..e880bffd80 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.253.0", + "version": "4.255.0", "main": "./website/server/index.js", "dependencies": { "@babel/core": "^7.20.5", diff --git a/website/client/src/assets/css/sprites/spritesmith-main.css b/website/client/src/assets/css/sprites/spritesmith-main.css index d90ff37a04..501cbea3e6 100644 --- a/website/client/src/assets/css/sprites/spritesmith-main.css +++ b/website/client/src/assets/css/sprites/spritesmith-main.css @@ -27535,6 +27535,31 @@ width: 114px; height: 90px; } +.back_mystery_202301 { + background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/back_mystery_202301.png'); + width: 114px; + height: 90px; +} +.head_mystery_202301 { + background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/head_mystery_202301.png'); + width: 114px; + height: 90px; +} +.shop_back_mystery_202301 { + background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_back_mystery_202301.png'); + width: 68px; + height: 68px; +} +.shop_head_mystery_202301 { + background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_head_mystery_202301.png'); + width: 68px; + height: 68px; +} +.shop_set_mystery_202301 { + background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_set_mystery_202301.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/common/locales/en/gear.json b/website/common/locales/en/gear.json index aa78ba0b1e..54e027996d 100644 --- a/website/common/locales/en/gear.json +++ b/website/common/locales/en/gear.json @@ -2009,6 +2009,8 @@ "headMystery202210Notes": "This scaly hood will surely terrify your To-Do list into submission! Confers no benefit. October 2022 Subscriber Item.", "headMystery202211Text": "Electromancer Hat", "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.", "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", @@ -2657,6 +2659,8 @@ "backMystery202205Notes": "The mighty flap of these vast wings can be heard echoing among the dunes. Confers no benefit. May 2022 Subscriber Item.", "backMystery202206Text": "Sea Sprite Wings", "backMystery202206Notes": "Whimsical wings made of water and waves! Confers no benefit. June 2022 Subscriber Item.", + "backMystery202301Text": "Five Tails of Valor", + "backMystery202301Notes": "These fluffy tails contain ethereal power and also a high level of charm! Confers no benefit. January 2023 Subscriber Item.", "backSpecialWonderconRedText": "Mighty Cape", "backSpecialWonderconRedNotes": "Swishes with strength and beauty. Confers no benefit. Special Edition Convention Item.", diff --git a/website/common/locales/en/subscriber.json b/website/common/locales/en/subscriber.json index ee1ef8615d..daba1d6947 100644 --- a/website/common/locales/en/subscriber.json +++ b/website/common/locales/en/subscriber.json @@ -145,6 +145,7 @@ "mysterySet202210": "Ominous Ophidian Set", "mysterySet202211": "Electromancer Set", "mysterySet202212": "Glacial Guardian Set", + "mysterySet202301": "Valiant Vulpine Set", "mysterySet301404": "Steampunk Standard Set", "mysterySet301405": "Steampunk Accessories Set", "mysterySet301703": "Peacock Steampunk Set", diff --git a/website/common/script/content/appearance/sets.js b/website/common/script/content/appearance/sets.js index 942b70f2ad..a5b61c3a26 100644 --- a/website/common/script/content/appearance/sets.js +++ b/website/common/script/content/appearance/sets.js @@ -18,7 +18,7 @@ export default prefill({ setPrice: 5, availableFrom: '2022-10-04T08:00-04:00', availableUntil: EVENTS.fall2022.end, text: t('hauntedColors'), }, winteryHairColors: { - setPrice: 5, availableFrom: '2021-12-23T08:00-05:00', availableUntil: EVENTS.winter2023.end, text: t('winteryColors'), + setPrice: 5, availableFrom: '2023-01-17T08:00-05:00', availableUntil: EVENTS.winter2023.end, text: t('winteryColors'), }, rainbowSkins: { setPrice: 5, text: t('rainbowSkins') }, animalSkins: { setPrice: 5, text: t('animalSkins') }, diff --git a/website/common/script/content/gear/sets/mystery.js b/website/common/script/content/gear/sets/mystery.js index 8d1268646b..e851da7513 100644 --- a/website/common/script/content/gear/sets/mystery.js +++ b/website/common/script/content/gear/sets/mystery.js @@ -96,6 +96,7 @@ const back = { 202203: { }, 202205: { }, 202206: { }, + 202301: { }, }; const body = { @@ -198,6 +199,7 @@ const head = { 202208: { }, 202210: { }, 202211: { }, + 202301: { }, 301404: { }, 301405: { }, 301703: { }, diff --git a/website/common/script/content/spells.js b/website/common/script/content/spells.js index 9d9748e08d..2be4768dd1 100644 --- a/website/common/script/content/spells.js +++ b/website/common/script/content/spells.js @@ -289,7 +289,7 @@ spells.special = { target: 'user', notes: t('spellSpecialSnowballAuraNotes'), canOwn () { - return moment().isBetween('2021-12-30T08:00-04:00', EVENTS.winter2022.end); + return moment().isBetween('2022-12-27T08:00-05:00', EVENTS.winter2023.end); }, cast (user, target, req) { if (!user.items.special.snowball) throw new NotAuthorized(t('spellNotOwned')(req.language)); @@ -435,7 +435,7 @@ spells.special = { target: 'user', notes: t('nyeCardNotes'), canOwn () { - return moment().isBetween('2021-12-30T08:00-04:00', '2022-01-02T20:00-04:00'); + return moment().isBetween('2022-12-28T08:00-05:00', '2023-01-02T20:00-05:00'); }, cast (user, target) { if (user === target) {