Merge branch 'release' into develop

This commit is contained in:
Sabe Jones 2019-05-21 15:29:40 -05:00
commit 664cf5a47b
80 changed files with 8912 additions and 8617 deletions

2
package-lock.json generated
View file

@ -1,6 +1,6 @@
{
"name": "habitica",
"version": "4.95.1",
"version": "4.96.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.95.1",
"version": "4.96.0",
"main": "./website/server/index.js",
"dependencies": {
"@google-cloud/trace-agent": "^3.6.0",

View file

@ -1,48 +1,54 @@
.promo_armoire_backgrounds_201905 {
background-image: url('~assets/images/sprites/spritesmith-largeSprites-0.png');
background-position: -626px 0px;
background-position: -689px 0px;
width: 423px;
height: 147px;
}
.promo_bronze_quest {
background-image: url('~assets/images/sprites/spritesmith-largeSprites-0.png');
background-position: 0px 0px;
width: 360px;
height: 360px;
}
.promo_feathered_friends_bundle {
background-image: url('~assets/images/sprites/spritesmith-largeSprites-0.png');
background-position: -626px -148px;
background-position: -689px -148px;
width: 423px;
height: 147px;
}
.promo_floral_sunshine_potions {
background-image: url('~assets/images/sprites/spritesmith-largeSprites-0.png');
background-position: -626px -296px;
background-position: -689px -296px;
width: 423px;
height: 147px;
}
.promo_mystery_201904 {
background-image: url('~assets/images/sprites/spritesmith-largeSprites-0.png');
background-position: -313px -277px;
background-position: -689px -444px;
width: 282px;
height: 147px;
}
.promo_take_this {
background-image: url('~assets/images/sprites/spritesmith-largeSprites-0.png');
background-position: -313px -425px;
background-position: -972px -444px;
width: 96px;
height: 69px;
}
.scene_languages {
background-image: url('~assets/images/sprites/spritesmith-largeSprites-0.png');
background-position: -328px 0px;
background-position: 0px -361px;
width: 297px;
height: 261px;
}
.scene_spells {
background-image: url('~assets/images/sprites/spritesmith-largeSprites-0.png');
background-position: 0px -277px;
background-position: -298px -361px;
width: 312px;
height: 222px;
}
.scene_yesterdailies_repeatables {
background-image: url('~assets/images/sprites/spritesmith-largeSprites-0.png');
background-position: 0px 0px;
background-position: -361px 0px;
width: 327px;
height: 276px;
}

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: 70 KiB

After

Width:  |  Height:  |  Size: 82 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 314 KiB

After

Width:  |  Height:  |  Size: 309 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 348 KiB

After

Width:  |  Height:  |  Size: 343 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 144 KiB

After

Width:  |  Height:  |  Size: 144 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 162 KiB

After

Width:  |  Height:  |  Size: 161 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 143 KiB

After

Width:  |  Height:  |  Size: 145 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 131 KiB

After

Width:  |  Height:  |  Size: 128 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 166 KiB

After

Width:  |  Height:  |  Size: 171 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 145 KiB

After

Width:  |  Height:  |  Size: 143 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 144 KiB

After

Width:  |  Height:  |  Size: 145 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 153 KiB

After

Width:  |  Height:  |  Size: 154 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 164 KiB

After

Width:  |  Height:  |  Size: 151 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 176 KiB

After

Width:  |  Height:  |  Size: 183 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 159 KiB

After

Width:  |  Height:  |  Size: 161 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 124 KiB

After

Width:  |  Height:  |  Size: 156 KiB

View file

@ -283,6 +283,7 @@
"hatchingPotionCelestial": "Celestial",
"hatchingPotionVeggie": "Garden",
"hatchingPotionSunshine": "Sunshine",
"hatchingPotionBronze": "Bronze",
"hatchingPotionNotes": "Pour this on an egg, and it will hatch as a <%= potText(locale) %> pet.",
"premiumPotionAddlNotes": "Not usable on quest pet eggs.",

View file

@ -7,6 +7,7 @@
"petQuests": "Pet and Mount Quests",
"unlockableQuests": "Unlockable Quests",
"goldQuests": "Masterclasser Quest Lines",
"hatchingPotionQuests": "Magic Hatching Potion Quests",
"questDetails": "Quest Details",
"questDetailsTitle": "Quest Details",
"questDescription": "Quests allow players to focus on long-term, in-game goals with the members of their party.",

View file

@ -740,5 +740,12 @@
"questVelociraptorUnlockText": "Unlocks purchasable Velociraptor eggs in the Market",
"mythicalMarvelsText": "Mythical Marvels Quest Bundle",
"mythicalMarvelsNotes": "Contains 'Convincing the Unicorn Queen,' 'The Fiery Gryphon,' and 'Danger in the Depths: Sea Serpent Strike!' Available until February 28."
"mythicalMarvelsNotes": "Contains 'Convincing the Unicorn Queen,' 'The Fiery Gryphon,' and 'Danger in the Depths: Sea Serpent Strike!' Available until February 28.",
"questBronzeText": "Brazen Beetle Battle",
"questBronzeNotes": "On a refreshing break between tasks, you and some friends take a stroll through the forest trails of the Taskwoods. You come upon a large hollow log and a sparkle from inside catches your attention.<br><br>Why, it's a cache of Magic Hatching Potions! The shimmering bronze liquid swirls gently in the bottles, and @Hachiseiko reaches to pick one up to examine it.<br><br>“Halt!” hisses a voice from behind you. It's a gigantic beetle with a carapace of gleaming bronze, raising her clawed feet in a fighting stance. “Those are my potions, and if you wish to earn them, you must prove yourself in a gentlefolks' duel!”",
"questBronzeCompletion": "“Well met, warrior!” says the beetle as she settles to the ground. Is she smiling? It's hard to tell from those mandibles. “You've truly earned these potions!”<br<br>“Oh wow, weve never gotten a reward like this for winning a battle before!” says @UncommonCriminal, turning a shimmering bottle in their hand. “Let's go hatch our new pets!”",
"questBronzeBoss": "Brazen Beetle",
"questBronzeDropBronzePotion": "Bronze Hatching Potion",
"questBronzeUnlockText": "Unlocks purchasable Bronze hatching potions in the Market"
}

View file

@ -209,5 +209,6 @@ export const ITEM_LIST = {
export const USER_CAN_OWN_QUEST_CATEGORIES = [
'unlockable',
'gold',
'hatchingPotion',
'pet',
];

View file

@ -5,6 +5,13 @@ import t from './translation';
const CURRENT_SEASON = 'May';
function hasQuestAchievementFunction (key) {
return (user) => {
return user.achievements.quests &&
user.achievements.quests[key] > 0;
};
}
let drops = {
Base: {
value: 2,
@ -174,6 +181,13 @@ let premium = {
limited: true,
_season: 'May',
},
Bronze: {
value: 2,
text: t('hatchingPotionBronze'),
limited: true,
_season: 'March',
canBuy: hasQuestAchievementFunction('bronze'),
},
};
const wacky = {

View file

@ -3353,7 +3353,38 @@ let quests = {
unlock: t('questVelociraptorUnlockText'),
},
},
bronze: {
text: t('questBronzeText'),
notes: t('questBronzeNotes'),
completion: t('questBronzeCompletion'),
value: 4,
category: 'hatchingPotion',
boss: {
name: t('questBronzeBoss'),
hp: 800,
str: 2,
},
drop: {
items: [
{
type: 'hatchingPotions',
key: 'Bronze',
text: t('questBronzeDropBronzePotion'),
}, {
type: 'hatchingPotions',
key: 'Bronze',
text: t('questBronzeDropBronzePotion'),
}, {
type: 'hatchingPotions',
key: 'Bronze',
text: t('questBronzeDropBronzePotion'),
},
],
gp: 63,
exp: 575,
unlock: t('questBronzeUnlockText'),
},
},
};
each(quests, (v, key) => {

View file

@ -73,7 +73,7 @@ shops.getMarketCategories = function getMarket (user, language) {
notes: i18n.t('premiumPotionNoDropExplanation', language),
};
premiumHatchingPotionsCategory.items = sortBy(values(content.hatchingPotions)
.filter(hp => hp.limited && hp.canBuy())
.filter(hp => hp.limited && hp.canBuy(user))
.map(premiumHatchingPotion => {
return getItemInfo(user, 'premiumHatchingPotion', premiumHatchingPotion, officialPinnedItems, language);
}), 'key');

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 904 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 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: THE LATEST NEW AND NOTABLE GUILDS!';
const LAST_ANNOUNCEMENT_TITLE = 'NEW MAGIC HATCHING POTION QUEST!';
const worldDmg = { // @TODO
bailey: false,
};
@ -30,13 +30,13 @@ api.getNews = {
<div class="mr-3 ${baileyClass}"></div>
<div class="media-body">
<h1 class="align-self-center">${res.t('newStuff')}</h1>
<h2>5/14/2019 - ${LAST_ANNOUNCEMENT_TITLE}</h2>
<h2>5/21/2019 - ${LAST_ANNOUNCEMENT_TITLE}</h2>
</div>
</div>
<hr/>
<div class="scene_languages center-block"></div>
<p>There's a new <a href='https://habitica.wordpress.com/2019/05/16/new-and-notable-guild-spotlight-5/' target='_blank'>Guild Spotlight on the blog</a> that highlights yet more new and upcoming Guilds! Check it out now to find new communities where you can discuss your goals and interests.</p>
<div class="small mb-3">by shanaqui</div>
<p>Great news, Habiticans! We're introducing a new type of Quest which will reward you and your party members with never-before-released Magic Hatching Potions. Get the first ever Magic Hatching Potion quest, Brazen Beetle Battle, and defeat the boss to earn bewitching Bronze Magic Hatching Potions by completing your real-life tasks. Check it out in the <a href='/shops/quests'>Quest Shop</a> today!</p>
<div class="small mb-3">by Beffymaroo, Hachiseiko, UncommonCriminal, redphoenix, and SabreCat</div>
<div class="promo_bronze_quest center-block"></div>
</div>
`,
});