Merge branch 'release' into develop

This commit is contained in:
Sabe Jones
2019-09-25 09:03:16 -05:00
23 changed files with 783 additions and 715 deletions

View File

@@ -1,6 +1,6 @@
/* eslint-disable no-console */ /* eslint-disable no-console */
const MIGRATION_NAME = 'mystery_items_201908'; const MIGRATION_NAME = 'mystery_items_201909';
const MYSTERY_ITEMS = ['armor_mystery_201908', 'headAccessory_mystery_201908']; const MYSTERY_ITEMS = ['armor_mystery_201909', 'head_mystery_201909'];
import { model as User } from '../../website/server/models/user'; import { model as User } from '../../website/server/models/user';
import { model as UserNotification } from '../../website/server/models/userNotification'; import { model as UserNotification } from '../../website/server/models/userNotification';

2
package-lock.json generated
View File

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

View File

@@ -1,7 +1,7 @@
{ {
"name": "habitica", "name": "habitica",
"description": "A habit tracker app which treats your goals like a Role Playing Game.", "description": "A habit tracker app which treats your goals like a Role Playing Game.",
"version": "4.113.1", "version": "4.114.0",
"main": "./website/server/index.js", "main": "./website/server/index.js",
"dependencies": { "dependencies": {
"@google-cloud/trace-agent": "^4.0.0", "@google-cloud/trace-agent": "^4.0.0",

View File

@@ -1,3 +1,15 @@
.broad_armor_mystery_201909 {
background-image: url('~assets/images/sprites/spritesmith-largeSprites-0.png');
background-position: -864px -181px;
width: 114px;
height: 90px;
}
.head_mystery_201909 {
background-image: url('~assets/images/sprites/spritesmith-largeSprites-0.png');
background-position: -864px -272px;
width: 114px;
height: 90px;
}
.promo_armoire_backgrounds_201909 { .promo_armoire_backgrounds_201909 {
background-image: url('~assets/images/sprites/spritesmith-largeSprites-0.png'); background-image: url('~assets/images/sprites/spritesmith-largeSprites-0.png');
background-position: 0px -533px; background-position: 0px -533px;
@@ -22,6 +34,12 @@
width: 360px; width: 360px;
height: 189px; height: 189px;
} }
.promo_mystery_201909 {
background-image: url('~assets/images/sprites/spritesmith-largeSprites-0.png');
background-position: -361px -343px;
width: 282px;
height: 147px;
}
.promo_rocking_reptiles_bundle { .promo_rocking_reptiles_bundle {
background-image: url('~assets/images/sprites/spritesmith-largeSprites-0.png'); background-image: url('~assets/images/sprites/spritesmith-largeSprites-0.png');
background-position: -424px -533px; background-position: -424px -533px;
@@ -36,7 +54,7 @@
} }
.promo_take_this { .promo_take_this {
background-image: url('~assets/images/sprites/spritesmith-largeSprites-0.png'); background-image: url('~assets/images/sprites/spritesmith-largeSprites-0.png');
background-position: -864px -181px; background-position: -455px -223px;
width: 96px; width: 96px;
height: 69px; height: 69px;
} }
@@ -58,3 +76,9 @@
width: 339px; width: 339px;
height: 342px; height: 342px;
} }
.slim_armor_mystery_201909 {
background-image: url('~assets/images/sprites/spritesmith-largeSprites-0.png');
background-position: -340px -223px;
width: 114px;
height: 90px;
}

File diff suppressed because it is too large Load Diff

View File

@@ -1,12 +1,18 @@
.slim_armor_special_winter2019Healer {
background-image: url('~assets/images/sprites/spritesmith-main-11.png');
background-position: -509px -321px;
width: 114px;
height: 90px;
}
.slim_armor_special_winter2019Mage { .slim_armor_special_winter2019Mage {
background-image: url('~assets/images/sprites/spritesmith-main-11.png'); background-image: url('~assets/images/sprites/spritesmith-main-11.png');
background-position: -509px -139px; background-position: -115px -423px;
width: 114px; width: 114px;
height: 90px; height: 90px;
} }
.slim_armor_special_winter2019Rogue { .slim_armor_special_winter2019Rogue {
background-image: url('~assets/images/sprites/spritesmith-main-11.png'); background-image: url('~assets/images/sprites/spritesmith-main-11.png');
background-position: 0px -423px; background-position: -509px -139px;
width: 114px; width: 114px;
height: 90px; height: 90px;
} }
@@ -30,7 +36,7 @@
} }
.weapon_special_ski { .weapon_special_ski {
background-image: url('~assets/images/sprites/spritesmith-main-11.png'); background-image: url('~assets/images/sprites/spritesmith-main-11.png');
background-position: -728px -1239px; background-position: -637px -1239px;
width: 90px; width: 90px;
height: 90px; height: 90px;
} }
@@ -48,7 +54,7 @@
} }
.weapon_special_winter2015Mage { .weapon_special_winter2015Mage {
background-image: url('~assets/images/sprites/spritesmith-main-11.png'); background-image: url('~assets/images/sprites/spritesmith-main-11.png');
background-position: -637px -1239px; background-position: -728px -1239px;
width: 90px; width: 90px;
height: 90px; height: 90px;
} }
@@ -114,49 +120,49 @@
} }
.weapon_special_winter2018Healer { .weapon_special_winter2018Healer {
background-image: url('~assets/images/sprites/spritesmith-main-11.png'); background-image: url('~assets/images/sprites/spritesmith-main-11.png');
background-position: -575px -514px; background-position: 0px -605px;
width: 114px; width: 114px;
height: 90px; height: 90px;
} }
.weapon_special_winter2018Mage { .weapon_special_winter2018Mage {
background-image: url('~assets/images/sprites/spritesmith-main-11.png'); background-image: url('~assets/images/sprites/spritesmith-main-11.png');
background-position: 0px -605px; background-position: -115px -605px;
width: 114px; width: 114px;
height: 90px; height: 90px;
} }
.weapon_special_winter2018Rogue { .weapon_special_winter2018Rogue {
background-image: url('~assets/images/sprites/spritesmith-main-11.png'); background-image: url('~assets/images/sprites/spritesmith-main-11.png');
background-position: -115px -605px; background-position: -230px -605px;
width: 114px; width: 114px;
height: 90px; height: 90px;
} }
.weapon_special_winter2018Warrior { .weapon_special_winter2018Warrior {
background-image: url('~assets/images/sprites/spritesmith-main-11.png'); background-image: url('~assets/images/sprites/spritesmith-main-11.png');
background-position: -230px -605px; background-position: -345px -605px;
width: 114px; width: 114px;
height: 90px; height: 90px;
} }
.weapon_special_winter2019Healer { .weapon_special_winter2019Healer {
background-image: url('~assets/images/sprites/spritesmith-main-11.png'); background-image: url('~assets/images/sprites/spritesmith-main-11.png');
background-position: -345px -605px; background-position: -460px -605px;
width: 114px; width: 114px;
height: 90px; height: 90px;
} }
.weapon_special_winter2019Mage { .weapon_special_winter2019Mage {
background-image: url('~assets/images/sprites/spritesmith-main-11.png'); background-image: url('~assets/images/sprites/spritesmith-main-11.png');
background-position: -460px -605px; background-position: -575px -605px;
width: 114px; width: 114px;
height: 90px; height: 90px;
} }
.weapon_special_winter2019Rogue { .weapon_special_winter2019Rogue {
background-image: url('~assets/images/sprites/spritesmith-main-11.png'); background-image: url('~assets/images/sprites/spritesmith-main-11.png');
background-position: -575px -605px; background-position: -705px 0px;
width: 114px; width: 114px;
height: 90px; height: 90px;
} }
.weapon_special_winter2019Warrior { .weapon_special_winter2019Warrior {
background-image: url('~assets/images/sprites/spritesmith-main-11.png'); background-image: url('~assets/images/sprites/spritesmith-main-11.png');
background-position: -705px 0px; background-position: -705px -91px;
width: 114px; width: 114px;
height: 90px; height: 90px;
} }
@@ -252,7 +258,7 @@
} }
.eyewear_special_aetherMask { .eyewear_special_aetherMask {
background-image: url('~assets/images/sprites/spritesmith-main-11.png'); background-image: url('~assets/images/sprites/spritesmith-main-11.png');
background-position: -705px -273px; background-position: -705px -364px;
width: 114px; width: 114px;
height: 90px; height: 90px;
} }
@@ -528,13 +534,13 @@
} }
.headAccessory_special_blackHeadband { .headAccessory_special_blackHeadband {
background-image: url('~assets/images/sprites/spritesmith-main-11.png'); background-image: url('~assets/images/sprites/spritesmith-main-11.png');
background-position: -460px -514px; background-position: -575px -514px;
width: 114px; width: 114px;
height: 90px; height: 90px;
} }
.headAccessory_special_blueHeadband { .headAccessory_special_blueHeadband {
background-image: url('~assets/images/sprites/spritesmith-main-11.png'); background-image: url('~assets/images/sprites/spritesmith-main-11.png');
background-position: -345px -514px; background-position: -460px -514px;
width: 114px; width: 114px;
height: 90px; height: 90px;
} }
@@ -564,7 +570,7 @@
} }
.headAccessory_special_greenHeadband { .headAccessory_special_greenHeadband {
background-image: url('~assets/images/sprites/spritesmith-main-11.png'); background-image: url('~assets/images/sprites/spritesmith-main-11.png');
background-position: -230px -514px; background-position: -345px -514px;
width: 114px; width: 114px;
height: 90px; height: 90px;
} }
@@ -606,13 +612,13 @@
} }
.headAccessory_special_pinkHeadband { .headAccessory_special_pinkHeadband {
background-image: url('~assets/images/sprites/spritesmith-main-11.png'); background-image: url('~assets/images/sprites/spritesmith-main-11.png');
background-position: -115px -514px; background-position: -230px -514px;
width: 114px; width: 114px;
height: 90px; height: 90px;
} }
.headAccessory_special_redHeadband { .headAccessory_special_redHeadband {
background-image: url('~assets/images/sprites/spritesmith-main-11.png'); background-image: url('~assets/images/sprites/spritesmith-main-11.png');
background-position: 0px -514px; background-position: -115px -514px;
width: 114px; width: 114px;
height: 90px; height: 90px;
} }
@@ -630,7 +636,7 @@
} }
.headAccessory_special_whiteHeadband { .headAccessory_special_whiteHeadband {
background-image: url('~assets/images/sprites/spritesmith-main-11.png'); background-image: url('~assets/images/sprites/spritesmith-main-11.png');
background-position: -575px -423px; background-position: 0px -514px;
width: 114px; width: 114px;
height: 90px; height: 90px;
} }
@@ -648,7 +654,7 @@
} }
.headAccessory_special_yellowHeadband { .headAccessory_special_yellowHeadband {
background-image: url('~assets/images/sprites/spritesmith-main-11.png'); background-image: url('~assets/images/sprites/spritesmith-main-11.png');
background-position: -460px -423px; background-position: -575px -423px;
width: 114px; width: 114px;
height: 90px; height: 90px;
} }
@@ -900,13 +906,13 @@
} }
.head_special_turkeyHelmBase { .head_special_turkeyHelmBase {
background-image: url('~assets/images/sprites/spritesmith-main-11.png'); background-image: url('~assets/images/sprites/spritesmith-main-11.png');
background-position: -705px -182px; background-position: -705px -273px;
width: 114px; width: 114px;
height: 90px; height: 90px;
} }
.head_special_turkeyHelmGilded { .head_special_turkeyHelmGilded {
background-image: url('~assets/images/sprites/spritesmith-main-11.png'); background-image: url('~assets/images/sprites/spritesmith-main-11.png');
background-position: -705px -91px; background-position: -705px -182px;
width: 114px; width: 114px;
height: 90px; height: 90px;
} }
@@ -1248,7 +1254,7 @@
} }
.shield_rogue_3 { .shield_rogue_3 {
background-image: url('~assets/images/sprites/spritesmith-main-11.png'); background-image: url('~assets/images/sprites/spritesmith-main-11.png');
background-position: -345px -423px; background-position: -460px -423px;
width: 114px; width: 114px;
height: 90px; height: 90px;
} }
@@ -1260,13 +1266,13 @@
} }
.shield_rogue_5 { .shield_rogue_5 {
background-image: url('~assets/images/sprites/spritesmith-main-11.png'); background-image: url('~assets/images/sprites/spritesmith-main-11.png');
background-position: -230px -423px; background-position: -345px -423px;
width: 114px; width: 114px;
height: 90px; height: 90px;
} }
.shield_rogue_6 { .shield_rogue_6 {
background-image: url('~assets/images/sprites/spritesmith-main-11.png'); background-image: url('~assets/images/sprites/spritesmith-main-11.png');
background-position: -115px -423px; background-position: -230px -423px;
width: 114px; width: 114px;
height: 90px; height: 90px;
} }
@@ -1284,7 +1290,7 @@
} }
.shield_special_goldenknight { .shield_special_goldenknight {
background-image: url('~assets/images/sprites/spritesmith-main-11.png'); background-image: url('~assets/images/sprites/spritesmith-main-11.png');
background-position: -705px -485px; background-position: -705px -576px;
width: 111px; width: 111px;
height: 90px; height: 90px;
} }
@@ -1314,7 +1320,7 @@
} }
.shield_special_wakizashi { .shield_special_wakizashi {
background-image: url('~assets/images/sprites/spritesmith-main-11.png'); background-image: url('~assets/images/sprites/spritesmith-main-11.png');
background-position: -705px -576px; background-position: -115px -696px;
width: 114px; width: 114px;
height: 87px; height: 87px;
} }
@@ -1890,7 +1896,7 @@
} }
.weapon_special_aetherCrystals { .weapon_special_aetherCrystals {
background-image: url('~assets/images/sprites/spritesmith-main-11.png'); background-image: url('~assets/images/sprites/spritesmith-main-11.png');
background-position: -509px -321px; background-position: 0px -423px;
width: 114px; width: 114px;
height: 90px; height: 90px;
} }
@@ -2286,7 +2292,7 @@
} }
.knockout { .knockout {
background-image: url('~assets/images/sprites/spritesmith-main-11.png'); background-image: url('~assets/images/sprites/spritesmith-main-11.png');
background-position: -115px -696px; background-position: -230px -696px;
width: 120px; width: 120px;
height: 47px; height: 47px;
} }
@@ -2460,7 +2466,7 @@
} }
.npc_justin { .npc_justin {
background-image: url('~assets/images/sprites/spritesmith-main-11.png'); background-image: url('~assets/images/sprites/spritesmith-main-11.png');
background-position: -705px -364px; background-position: -705px -455px;
width: 84px; width: 84px;
height: 120px; height: 120px;
} }

File diff suppressed because it is too large Load Diff

Binary file not shown.

Before

Width:  |  Height:  |  Size: 72 KiB

After

Width:  |  Height:  |  Size: 78 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 118 KiB

After

Width:  |  Height:  |  Size: 120 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 121 KiB

After

Width:  |  Height:  |  Size: 121 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 119 KiB

After

Width:  |  Height:  |  Size: 119 KiB

View File

@@ -855,6 +855,8 @@
"armorMystery201907Notes": "Stay cool and look cool on even the hottest summer day. Confers no benefit. July 2019 Subscriber Item.", "armorMystery201907Notes": "Stay cool and look cool on even the hottest summer day. Confers no benefit. July 2019 Subscriber Item.",
"armorMystery201908Text": "Footloose Faun Costume", "armorMystery201908Text": "Footloose Faun Costume",
"armorMystery201908Notes": "These legs were made for dancing! And that's just what they'll do. Confers no benefit. August 2019 Subscriber Item.", "armorMystery201908Notes": "These legs were made for dancing! And that's just what they'll do. Confers no benefit. August 2019 Subscriber Item.",
"armorMystery201909Text": "Affable Acorn Armor",
"armorMystery201909Notes": "Your tough exterior is protective, but it's still best to keep an eye out for squirrels... Confers no benefit. September 2019 Subscriber Item.",
"armorMystery301404Text": "Steampunk Suit", "armorMystery301404Text": "Steampunk Suit",
"armorMystery301404Notes": "Dapper and dashing, wot! Confers no benefit. February 3015 Subscriber Item.", "armorMystery301404Notes": "Dapper and dashing, wot! Confers no benefit. February 3015 Subscriber Item.",
"armorMystery301703Text": "Steampunk Peacock Gown", "armorMystery301703Text": "Steampunk Peacock Gown",
@@ -1385,6 +1387,8 @@
"headMystery201904Notes": "The opals in this circlet shine in every color of the rainbow, giving it a variety of magical properties. Confers no benefit. April 2019 Subscriber Item.", "headMystery201904Notes": "The opals in this circlet shine in every color of the rainbow, giving it a variety of magical properties. Confers no benefit. April 2019 Subscriber Item.",
"headMystery201907Text": "Backwards Cap", "headMystery201907Text": "Backwards Cap",
"headMystery201907Notes": "Nothing says “I'm relaxing here!” like a backwards cap. Confers no benefit. July 2019 Subscriber Item.", "headMystery201907Notes": "Nothing says “I'm relaxing here!” like a backwards cap. Confers no benefit. July 2019 Subscriber Item.",
"headMystery201909Text": "Affable Acorn Hat",
"headMystery201909Notes": "Every acorn needs a hat! Er, cupule, if you want to get technical about it. Confers no benefit. September 2019 Subscriber Item.",
"headMystery301404Text": "Fancy Top Hat", "headMystery301404Text": "Fancy Top Hat",
"headMystery301404Notes": "A fancy top hat for the finest of gentlefolk! January 3015 Subscriber Item. Confers no benefit.", "headMystery301404Notes": "A fancy top hat for the finest of gentlefolk! January 3015 Subscriber Item. Confers no benefit.",
"headMystery301405Text": "Basic Top Hat", "headMystery301405Text": "Basic Top Hat",

View File

@@ -162,6 +162,7 @@
"mysterySet201906": "Kindly Koi Set", "mysterySet201906": "Kindly Koi Set",
"mysterySet201907": "Beach Buddy Set", "mysterySet201907": "Beach Buddy Set",
"mysterySet201908": "Footloose Faun Set", "mysterySet201908": "Footloose Faun Set",
"mysterySet201909": "Affable Acorn Set",
"mysterySet301404": "Steampunk Standard Set", "mysterySet301404": "Steampunk Standard Set",
"mysterySet301405": "Steampunk Accessories Set", "mysterySet301405": "Steampunk Accessories Set",
"mysterySet301703": "Peacock Steampunk Set", "mysterySet301703": "Peacock Steampunk Set",

View File

@@ -253,6 +253,12 @@ let armor = {
mystery: '201908', mystery: '201908',
value: 0, value: 0,
}, },
201909: {
text: t('armorMystery201909Text'),
notes: t('armorMystery201909Notes'),
mystery: '201909',
value: 0,
},
301404: { 301404: {
text: t('armorMystery301404Text'), text: t('armorMystery301404Text'),
notes: t('armorMystery301404Notes'), notes: t('armorMystery301404Notes'),
@@ -733,6 +739,12 @@ let head = {
mystery: '201907', mystery: '201907',
value: 0, value: 0,
}, },
201909: {
text: t('headMystery201909Text'),
notes: t('headMystery201909Notes'),
mystery: '201909',
value: 0,
},
301404: { 301404: {
text: t('headMystery301404Text'), text: t('headMystery301404Text'),
notes: t('headMystery301404Notes'), notes: t('headMystery301404Notes'),

View File

@@ -270,6 +270,10 @@ let mysterySets = {
start: '2019-08-27', start: '2019-08-27',
end: '2019-09-02', end: '2019-09-02',
}, },
201909: {
start: '2019-09-25',
end: '2019-10-02',
},
301404: { 301404: {
start: '3014-03-24', start: '3014-03-24',
end: '3014-04-02', end: '3014-04-02',

Binary file not shown.

After

Width:  |  Height:  |  Size: 521 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 481 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 789 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 586 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 521 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 586 B

View File

@@ -3,7 +3,7 @@ import { authWithHeaders } from '../../middlewares/auth';
let api = {}; let api = {};
// @TODO export this const, cannot export it from here because only routes are exported from controllers // @TODO export this const, cannot export it from here because only routes are exported from controllers
const LAST_ANNOUNCEMENT_TITLE = 'FALL FESTIVAL BEGINS! LIMITED EDITION FALL EQUIPMENT, SEASONAL SHOP OPENS, AND NPC OUTFITS!'; const LAST_ANNOUNCEMENT_TITLE = 'FALL FESTIVAL BEGINS! SEPTEMBER SUBSCRIBER ITEMS!';
const worldDmg = { // @TODO const worldDmg = { // @TODO
bailey: false, bailey: false,
}; };
@@ -34,6 +34,11 @@ api.getNews = {
</div> </div>
</div> </div>
<hr/> <hr/>
<div class="promo_mystery_201909 center-block"></div>
<h3>September Subscriber Items Revealed!</h3>
<p>The September Subscriber Item Set has been revealed: the Affable Acorn Item Set! You only have until September 30 to <a href='/user/settings/subscription'>receive the item set when you 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 class="promo_fall_festival_2019 center-block"></div> <div class="promo_fall_festival_2019 center-block"></div>
<h3>Limited Edition Class Outfits</h3> <h3>Limited Edition Class Outfits</h3>
<p>From now until October 31st, limited edition outfits are available in the Rewards column! Depending on your class, you can be a Raven Warrior, a Lich Healer, a Phantom Rogue, or a Cyclops Mage. You'd better get productive to earn enough gold before your time runs out...</p> <p>From now until October 31st, limited edition outfits are available in the Rewards column! Depending on your class, you can be a Raven Warrior, a Lich Healer, a Phantom Rogue, or a Cyclops Mage. You'd better get productive to earn enough gold before your time runs out...</p>