Merge branch 'release' into develop

This commit is contained in:
Sabe Jones
2019-01-30 09:06:42 -06:00
56 changed files with 7116 additions and 7070 deletions

View File

@@ -17,7 +17,7 @@ function setUpServer () {
setUpServer();
// Replace this with your migration
const processUsers = require('./archive/2018/20181231_nye.js');
const processUsers = require('./users/mystery-items.js');
processUsers()
.then(function success () {
process.exit(0);

View File

@@ -1,6 +1,6 @@
/* eslint-disable no-console */
const MIGRATION_NAME = 'mystery_items_201812';
const MYSTERY_ITEMS = ['headAccessory_mystery_201812', 'back_mystery_201812'];
const MIGRATION_NAME = 'mystery_items_201901';
const MYSTERY_ITEMS = ['head_mystery_201901', 'body_mystery_201901'];
import { model as User } from '../../website/server/models/user';
import { model as UserNotification } from '../../website/server/models/userNotification';

2
package-lock.json generated
View File

@@ -1,6 +1,6 @@
{
"name": "habitica",
"version": "4.80.8",
"version": "4.81.0",
"lockfileVersion": 1,
"requires": true,
"dependencies": {

View File

@@ -1,7 +1,7 @@
{
"name": "habitica",
"description": "A habit tracker app which treats your goals like a Role Playing Game.",
"version": "4.80.8",
"version": "4.81.0",
"main": "./website/server/index.js",
"dependencies": {
"@slack/client": "^3.8.1",

View File

@@ -1,78 +1,72 @@
.promo_armoire_backgrounds_201901 {
background-image: url('~assets/images/sprites/spritesmith-largeSprites-0.png');
background-position: -445px 0px;
background-position: -334px 0px;
width: 423px;
height: 147px;
}
.promo_bird_buddies_bundle {
background-image: url('~assets/images/sprites/spritesmith-largeSprites-0.png');
background-position: -421px -337px;
background-position: 0px -401px;
width: 420px;
height: 147px;
}
.promo_g1g1 {
.promo_mystery_201901 {
background-image: url('~assets/images/sprites/spritesmith-largeSprites-0.png');
background-position: -241px -633px;
width: 237px;
height: 150px;
background-position: -758px -148px;
width: 282px;
height: 147px;
}
.promo_npc_alex {
background-image: url('~assets/images/sprites/spritesmith-largeSprites-0.png');
background-position: -566px -485px;
background-position: -758px -444px;
width: 162px;
height: 138px;
}
.promo_seasonal_shop {
background-image: url('~assets/images/sprites/spritesmith-largeSprites-0.png');
background-position: -403px -485px;
background-position: -921px -444px;
width: 162px;
height: 138px;
}
.promo_snow_potions {
background-image: url('~assets/images/sprites/spritesmith-largeSprites-0.png');
background-position: -445px -148px;
background-position: 0px -253px;
width: 423px;
height: 147px;
}
.promo_take_this {
background-image: url('~assets/images/sprites/spritesmith-largeSprites-0.png');
background-position: -729px -485px;
background-position: -1041px -148px;
width: 96px;
height: 69px;
}
.promo_winter_wonderland_2019 {
background-image: url('~assets/images/sprites/spritesmith-largeSprites-0.png');
background-position: 0px -485px;
background-position: -758px 0px;
width: 402px;
height: 147px;
}
.promo_wintery_skins {
background-image: url('~assets/images/sprites/spritesmith-largeSprites-0.png');
background-position: 0px -337px;
background-position: 0px -549px;
width: 420px;
height: 147px;
}
.customize-option.promo_wintery_skins {
background-image: url('~assets/images/sprites/spritesmith-largeSprites-0.png');
background-position: -25px -352px;
background-position: -25px -564px;
width: 60px;
height: 60px;
}
.scene_hat_guild {
.scene_apollo {
background-image: url('~assets/images/sprites/spritesmith-largeSprites-0.png');
background-position: -758px -296px;
width: 279px;
height: 147px;
}
.scene_eating_healthy {
background-image: url('~assets/images/sprites/spritesmith-largeSprites-0.png');
background-position: 0px 0px;
width: 444px;
height: 336px;
}
.scene_starting_over {
background-image: url('~assets/images/sprites/spritesmith-largeSprites-0.png');
background-position: -479px -633px;
width: 150px;
height: 150px;
}
.scene_todo_list {
background-image: url('~assets/images/sprites/spritesmith-largeSprites-0.png');
background-position: 0px -633px;
width: 240px;
height: 195px;
width: 333px;
height: 252px;
}

File diff suppressed because it is too large Load Diff

View File

@@ -1,6 +1,12 @@
.npc_justin {
background-image: url('~assets/images/sprites/spritesmith-main-11.png');
background-position: -1844px -856px;
width: 84px;
height: 120px;
}
.npc_matt {
background-image: url('~assets/images/sprites/spritesmith-main-11.png');
background-position: -597px -1535px;
background-position: -214px -1535px;
width: 195px;
height: 138px;
}
@@ -12,7 +18,7 @@
}
.banner_flair_dysheartener {
background-image: url('~assets/images/sprites/spritesmith-main-11.png');
background-position: -1963px -836px;
background-position: -1929px -856px;
width: 69px;
height: 18px;
}
@@ -30,19 +36,19 @@
}
.quest_armadillo {
background-image: url('~assets/images/sprites/spritesmith-main-11.png');
background-position: 0px -435px;
background-position: -440px -435px;
width: 219px;
height: 219px;
}
.quest_atom1 {
background-image: url('~assets/images/sprites/spritesmith-main-11.png');
background-position: -1105px -1315px;
background-position: -885px -1315px;
width: 250px;
height: 150px;
}
.quest_atom2 {
background-image: url('~assets/images/sprites/spritesmith-main-11.png');
background-position: -389px -1535px;
background-position: -1387px -1315px;
width: 207px;
height: 138px;
}
@@ -54,19 +60,19 @@
}
.quest_axolotl {
background-image: url('~assets/images/sprites/spritesmith-main-11.png');
background-position: -747px -220px;
background-position: -220px -655px;
width: 219px;
height: 219px;
}
.quest_badger {
background-image: url('~assets/images/sprites/spritesmith-main-11.png');
background-position: 0px -655px;
background-position: -440px -655px;
width: 219px;
height: 219px;
}
.quest_basilist {
background-image: url('~assets/images/sprites/spritesmith-main-11.png');
background-position: -1844px -392px;
background-position: -191px -1710px;
width: 189px;
height: 141px;
}
@@ -84,25 +90,25 @@
}
.quest_butterfly {
background-image: url('~assets/images/sprites/spritesmith-main-11.png');
background-position: -967px 0px;
background-position: -967px -440px;
width: 219px;
height: 219px;
}
.quest_cheetah {
background-image: url('~assets/images/sprites/spritesmith-main-11.png');
background-position: -967px -220px;
background-position: 0px -875px;
width: 219px;
height: 219px;
}
.quest_cow {
background-image: url('~assets/images/sprites/spritesmith-main-11.png');
background-position: 0px -1535px;
background-position: -1844px 0px;
width: 174px;
height: 213px;
}
.quest_dilatory {
background-image: url('~assets/images/sprites/spritesmith-main-11.png');
background-position: -220px -875px;
background-position: -660px -875px;
width: 219px;
height: 219px;
}
@@ -114,79 +120,79 @@
}
.quest_dilatoryDistress2 {
background-image: url('~assets/images/sprites/spritesmith-main-11.png');
background-position: -1844px -534px;
background-position: -1844px -422px;
width: 150px;
height: 150px;
}
.quest_dilatoryDistress3 {
background-image: url('~assets/images/sprites/spritesmith-main-11.png');
background-position: -880px -875px;
background-position: -1187px -220px;
width: 219px;
height: 219px;
}
.quest_dilatory_derby {
background-image: url('~assets/images/sprites/spritesmith-main-11.png');
background-position: 0px -875px;
background-position: -440px -875px;
width: 219px;
height: 219px;
}
.quest_dustbunnies {
background-image: url('~assets/images/sprites/spritesmith-main-11.png');
background-position: -1187px 0px;
background-position: -1187px -440px;
width: 219px;
height: 219px;
}
.quest_egg {
background-image: url('~assets/images/sprites/spritesmith-main-11.png');
background-position: -1844px -184px;
background-position: -1844px -214px;
width: 165px;
height: 207px;
}
.quest_evilsanta {
background-image: url('~assets/images/sprites/spritesmith-main-11.png');
background-position: -1844px -836px;
background-position: -1844px -724px;
width: 118px;
height: 131px;
}
.quest_evilsanta2 {
background-image: url('~assets/images/sprites/spritesmith-main-11.png');
background-position: -1187px -660px;
background-position: -220px -1095px;
width: 219px;
height: 219px;
}
.quest_falcon {
background-image: url('~assets/images/sprites/spritesmith-main-11.png');
background-position: 0px -1095px;
background-position: -440px -1095px;
width: 219px;
height: 219px;
}
.quest_ferret {
background-image: url('~assets/images/sprites/spritesmith-main-11.png');
background-position: -307px 0px;
background-position: -660px -1095px;
width: 219px;
height: 219px;
}
.quest_frog {
background-image: url('~assets/images/sprites/spritesmith-main-11.png');
background-position: -660px -1315px;
background-position: -440px -1315px;
width: 221px;
height: 213px;
}
.quest_ghost_stag {
background-image: url('~assets/images/sprites/spritesmith-main-11.png');
background-position: -660px -1095px;
background-position: -1100px -1095px;
width: 219px;
height: 219px;
}
.quest_goldenknight1 {
background-image: url('~assets/images/sprites/spritesmith-main-11.png');
background-position: -880px -1095px;
background-position: -1407px 0px;
width: 219px;
height: 219px;
}
.quest_goldenknight2 {
background-image: url('~assets/images/sprites/spritesmith-main-11.png');
background-position: -1356px -1315px;
background-position: -1136px -1315px;
width: 250px;
height: 150px;
}
@@ -198,19 +204,19 @@
}
.quest_gryphon {
background-image: url('~assets/images/sprites/spritesmith-main-11.png');
background-position: -307px -220px;
background-position: -527px -220px;
width: 216px;
height: 177px;
}
.quest_guineapig {
background-image: url('~assets/images/sprites/spritesmith-main-11.png');
background-position: -1407px -440px;
background-position: -1407px -880px;
width: 219px;
height: 219px;
}
.quest_harpy {
background-image: url('~assets/images/sprites/spritesmith-main-11.png');
background-position: -1407px -660px;
background-position: 0px -1315px;
width: 219px;
height: 219px;
}
@@ -222,67 +228,67 @@
}
.quest_hippo {
background-image: url('~assets/images/sprites/spritesmith-main-11.png');
background-position: 0px -1315px;
background-position: -220px -1315px;
width: 219px;
height: 219px;
}
.quest_horse {
background-image: url('~assets/images/sprites/spritesmith-main-11.png');
background-position: -220px -1315px;
background-position: -1407px -660px;
width: 219px;
height: 219px;
}
.quest_kangaroo {
background-image: url('~assets/images/sprites/spritesmith-main-11.png');
background-position: -1407px -880px;
background-position: -1407px -440px;
width: 219px;
height: 219px;
}
.quest_kraken {
background-image: url('~assets/images/sprites/spritesmith-main-11.png');
background-position: -527px -220px;
background-position: -307px -220px;
width: 216px;
height: 177px;
}
.quest_lostMasterclasser1 {
background-image: url('~assets/images/sprites/spritesmith-main-11.png');
background-position: -1100px -1095px;
background-position: -1407px -220px;
width: 219px;
height: 219px;
}
.quest_lostMasterclasser2 {
background-image: url('~assets/images/sprites/spritesmith-main-11.png');
background-position: -440px -1095px;
background-position: -880px -1095px;
width: 219px;
height: 219px;
}
.quest_lostMasterclasser3 {
background-image: url('~assets/images/sprites/spritesmith-main-11.png');
background-position: -1187px -220px;
background-position: 0px -1095px;
width: 219px;
height: 219px;
}
.quest_mayhemMistiflying1 {
background-image: url('~assets/images/sprites/spritesmith-main-11.png');
background-position: -1844px -685px;
background-position: -1844px -573px;
width: 150px;
height: 150px;
}
.quest_mayhemMistiflying2 {
background-image: url('~assets/images/sprites/spritesmith-main-11.png');
background-position: -440px -875px;
background-position: -1187px -660px;
width: 219px;
height: 219px;
}
.quest_mayhemMistiflying3 {
background-image: url('~assets/images/sprites/spritesmith-main-11.png');
background-position: -660px -655px;
background-position: -1187px 0px;
width: 219px;
height: 219px;
}
.quest_monkey {
background-image: url('~assets/images/sprites/spritesmith-main-11.png');
background-position: -440px -655px;
background-position: -880px -875px;
width: 219px;
height: 219px;
}
@@ -294,109 +300,103 @@
}
.quest_moon2 {
background-image: url('~assets/images/sprites/spritesmith-main-11.png');
background-position: -220px -655px;
background-position: -220px -875px;
width: 219px;
height: 219px;
}
.quest_moon3 {
background-image: url('~assets/images/sprites/spritesmith-main-11.png');
background-position: -747px 0px;
background-position: -967px -220px;
width: 219px;
height: 219px;
}
.quest_moonstone1 {
background-image: url('~assets/images/sprites/spritesmith-main-11.png');
background-position: -527px 0px;
background-position: -967px 0px;
width: 219px;
height: 219px;
}
.quest_moonstone2 {
background-image: url('~assets/images/sprites/spritesmith-main-11.png');
background-position: -1407px -220px;
background-position: -660px -655px;
width: 219px;
height: 219px;
}
.quest_moonstone3 {
background-image: url('~assets/images/sprites/spritesmith-main-11.png');
background-position: -440px -1315px;
background-position: 0px -655px;
width: 219px;
height: 219px;
}
.quest_nudibranch {
background-image: url('~assets/images/sprites/spritesmith-main-11.png');
background-position: -1627px -217px;
background-position: -1627px -434px;
width: 216px;
height: 216px;
}
.quest_octopus {
background-image: url('~assets/images/sprites/spritesmith-main-11.png');
background-position: -882px -1315px;
background-position: -662px -1315px;
width: 222px;
height: 177px;
}
.quest_owl {
background-image: url('~assets/images/sprites/spritesmith-main-11.png');
background-position: -1187px -440px;
background-position: -747px -220px;
width: 219px;
height: 219px;
}
.quest_peacock {
background-image: url('~assets/images/sprites/spritesmith-main-11.png');
background-position: -1627px 0px;
background-position: -1627px -217px;
width: 216px;
height: 216px;
}
.quest_penguin {
background-image: url('~assets/images/sprites/spritesmith-main-11.png');
background-position: -1844px 0px;
background-position: 0px -1710px;
width: 190px;
height: 183px;
}
.quest_pterodactyl {
background-image: url('~assets/images/sprites/spritesmith-main-11.png');
background-position: -660px -875px;
background-position: -747px 0px;
width: 219px;
height: 219px;
}
.quest_rat {
background-image: url('~assets/images/sprites/spritesmith-main-11.png');
background-position: -967px -440px;
background-position: -220px -435px;
width: 219px;
height: 219px;
}
.quest_rock {
background-image: url('~assets/images/sprites/spritesmith-main-11.png');
background-position: -1627px -434px;
background-position: -1627px 0px;
width: 216px;
height: 216px;
}
.quest_rooster {
background-image: url('~assets/images/sprites/spritesmith-main-11.png');
background-position: -175px -1535px;
background-position: 0px -1535px;
width: 213px;
height: 174px;
}
.quest_sabretooth {
background-image: url('~assets/images/sprites/spritesmith-main-11.png');
background-position: -440px -435px;
background-position: 0px -435px;
width: 219px;
height: 219px;
}
.quest_seaserpent {
background-image: url('~assets/images/sprites/spritesmith-main-11.png');
background-position: -220px -435px;
background-position: -527px 0px;
width: 219px;
height: 219px;
}
.quest_sheep {
background-image: url('~assets/images/sprites/spritesmith-main-11.png');
background-position: -220px -1095px;
width: 219px;
height: 219px;
}
.quest_slime {
background-image: url('~assets/images/sprites/spritesmith-main-11.png');
background-position: -1407px 0px;
background-position: -307px 0px;
width: 219px;
height: 219px;
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

Binary file not shown.

Before

Width:  |  Height:  |  Size: 82 KiB

After

Width:  |  Height:  |  Size: 101 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 118 KiB

After

Width:  |  Height:  |  Size: 119 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 393 KiB

After

Width:  |  Height:  |  Size: 384 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 279 KiB

After

Width:  |  Height:  |  Size: 287 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 159 KiB

After

Width:  |  Height:  |  Size: 157 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 145 KiB

After

Width:  |  Height:  |  Size: 145 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 132 KiB

After

Width:  |  Height:  |  Size: 131 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 168 KiB

After

Width:  |  Height:  |  Size: 166 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 136 KiB

After

Width:  |  Height:  |  Size: 134 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 152 KiB

After

Width:  |  Height:  |  Size: 151 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 155 KiB

After

Width:  |  Height:  |  Size: 155 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 147 KiB

After

Width:  |  Height:  |  Size: 148 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 181 KiB

After

Width:  |  Height:  |  Size: 182 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 160 KiB

After

Width:  |  Height:  |  Size: 163 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 154 KiB

After

Width:  |  Height:  |  Size: 156 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 142 KiB

After

Width:  |  Height:  |  Size: 144 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 117 KiB

After

Width:  |  Height:  |  Size: 116 KiB

View File

@@ -1250,6 +1250,8 @@
"headMystery201810Notes": "If you find yourself traveling through a spooky place, the glowing red eyes of this helm will surely scare away any enemies in your path. Confers no benefit. October 2018 Subscriber Item.",
"headMystery201811Text": "Splendid Sorcerer's Hat",
"headMystery201811Notes": "Wear this feathered hat to stand out at even the fanciest wizardly gatherings! Confers no benefit. November 2018 Subscriber Item.",
"headMystery201901Text": "Polaris Helm",
"headMystery201901Notes": "The glowing gems on this helm contain light magically captured from winter auroras. Confers no benefit. January 2019 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",
@@ -1733,6 +1735,8 @@
"bodyMystery201706Notes": "This cloak has secret pockets to hide all the Gold you loot from your Tasks. Confers no benefit. June 2017 Subscriber Item.",
"bodyMystery201711Text": "Carpet Rider Scarf",
"bodyMystery201711Notes": "This soft knitted scarf looks quite majestic blowing in the wind. Confers no benefit. November 2017 Subscriber Item.",
"bodyMystery201901Text": "Polaris Pauldrons",
"bodyMystery201901Notes": "These shimmering pauldrons are strong, but will rest on your shoulders as weightlessly as a ray of dancing light. Confers no benefit. January 2019 Subscriber Item.",
"bodyArmoireCozyScarfText": "Cozy Scarf",
"bodyArmoireCozyScarfNotes": "This fine scarf will keep you warm as you go about your wintry business. Increases Constitution and Perception by <%= attrs %> each. Enchanted Armoire: Lamplighter's Set (Item 4 of 4).",

View File

@@ -153,6 +153,7 @@
"mysterySet201810": "Dark Forest Set",
"mysterySet201811": "Splendid Sorcerer Set",
"mysterySet201812": "Arctic Fox Set",
"mysterySet201901": "Polaris Set",
"mysterySet301404": "Steampunk Standard Set",
"mysterySet301405": "Steampunk Accessories Set",
"mysterySet301703": "Peacock Steampunk Set",

View File

@@ -367,6 +367,12 @@ let body = {
mystery: '201711',
value: 0,
},
201901: {
text: t('bodyMystery201901Text'),
notes: t('bodyMystery201901Notes'),
mystery: '2019011',
value: 0,
},
};
let eyewear = {
@@ -655,6 +661,12 @@ let head = {
mystery: '201811',
value: 0,
},
201901: {
text: t('headMystery201901Text'),
notes: t('headMystery201901Notes'),
mystery: '201901',
value: 0,
},
301404: {
text: t('headMystery301404Text'),
notes: t('headMystery301404Notes'),

View File

@@ -238,6 +238,10 @@ let mysterySets = {
start: '2018-12-19',
end: '2019-01-02',
},
201901: {
start: '2019-01-28',
end: '2019-02-02',
},
301404: {
start: '3014-03-24',
end: '3014-04-02',

View File

@@ -66,7 +66,7 @@ export class BuyQuestWithGoldOperation extends AbstractGoldItemOperation {
}
executeChanges (user, item, req) {
user.items.quests[item.key] = user.items.quests[item.key] || 0;
if (!user.items.quests[item.key] || user.items.quests[item.key] < 0) user.items.quests[item.key] = 0;
user.items.quests[item.key] += this.quantity;
this.subtractCurrency(user, item, this.quantity);

Binary file not shown.

After

Width:  |  Height:  |  Size: 514 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 754 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 464 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 673 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 883 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.6 KiB

View File

@@ -3,7 +3,7 @@ import { authWithHeaders } from '../../middlewares/auth';
let api = {};
// @TODO export this const, cannot export it from here because only routes are exported from controllers
const LAST_ANNOUNCEMENT_TITLE = 'GUILD SPOTLIGHT: NEW AND NOTABLE!';
const LAST_ANNOUNCEMENT_TITLE = 'JANUARY SUBSCRIBER ITEMS REVEALED!';
const worldDmg = { // @TODO
bailey: false,
};
@@ -30,13 +30,14 @@ api.getNews = {
<div class="mr-3 ${baileyClass}"></div>
<div class="media-body">
<h1 class="align-self-center">${res.t('newStuff')}</h1>
<h2>1/18/2019 - ${LAST_ANNOUNCEMENT_TITLE}</h2>
<h2>1/28/2019 - ${LAST_ANNOUNCEMENT_TITLE}</h2>
</div>
</div>
<hr/>
<div class="scene_hat_guild center-block"></div>
<p>There's a new <a href='https://habitica.wordpress.com/2019/01/17/new-and-notable-guild-spotlight/' target='_blank'>Guild Spotlight on the blog</a> that highlights some of Habitica's new and interesting Guilds! Check it out now and find a new group where you can share your interests and goals!</p>
<div class="small mb-3">by shanaqui</div>
<div class="promo_mystery_201901 center-block"></div>
<p>The January Subscriber Items have been revealed: the Polaris Item Set! You only have until Jan 31 to receive the item set when you <a href='/user/settings/subscription'>subscribe</a>. If you're already an active subscriber, reload the site and then head to Inventory > Items to claim your gear!</p>
<p>Subscribers also receive the ability to buy Gems for Gold -- the longer you subscribe, the more Gems you can buy per month! There are other perks as well, such as longer access to uncompressed data and a cute Jackalope pet. Best of all, subscriptions let us keep Habitica running. Thank you very much for your support -- it means a lot to us.</p>
<div class="small mb-3">by Beffymaroo</div>
</div>
`,
});