Merge branch 'release' into develop
2
package-lock.json
generated
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "habitica",
|
||||
"version": "4.95.1",
|
||||
"version": "4.96.0",
|
||||
"lockfileVersion": 1,
|
||||
"requires": true,
|
||||
"dependencies": {
|
||||
|
|
|
|||
|
|
@ -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",
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
|
|
|
|||
|
Before Width: | Height: | Size: 70 KiB After Width: | Height: | Size: 82 KiB |
|
Before Width: | Height: | Size: 314 KiB After Width: | Height: | Size: 309 KiB |
|
Before Width: | Height: | Size: 348 KiB After Width: | Height: | Size: 343 KiB |
|
Before Width: | Height: | Size: 144 KiB After Width: | Height: | Size: 144 KiB |
|
Before Width: | Height: | Size: 162 KiB After Width: | Height: | Size: 161 KiB |
|
Before Width: | Height: | Size: 143 KiB After Width: | Height: | Size: 145 KiB |
|
Before Width: | Height: | Size: 131 KiB After Width: | Height: | Size: 128 KiB |
|
Before Width: | Height: | Size: 166 KiB After Width: | Height: | Size: 171 KiB |
|
Before Width: | Height: | Size: 145 KiB After Width: | Height: | Size: 143 KiB |
|
Before Width: | Height: | Size: 144 KiB After Width: | Height: | Size: 145 KiB |
|
Before Width: | Height: | Size: 153 KiB After Width: | Height: | Size: 154 KiB |
|
Before Width: | Height: | Size: 164 KiB After Width: | Height: | Size: 151 KiB |
|
Before Width: | Height: | Size: 176 KiB After Width: | Height: | Size: 183 KiB |
|
Before Width: | Height: | Size: 159 KiB After Width: | Height: | Size: 161 KiB |
|
Before Width: | Height: | Size: 124 KiB After Width: | Height: | Size: 156 KiB |
|
|
@ -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.",
|
||||
|
|
|
|||
|
|
@ -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.",
|
||||
|
|
|
|||
|
|
@ -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, we’ve 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"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -209,5 +209,6 @@ export const ITEM_LIST = {
|
|||
export const USER_CAN_OWN_QUEST_CATEGORIES = [
|
||||
'unlockable',
|
||||
'gold',
|
||||
'hatchingPotion',
|
||||
'pet',
|
||||
];
|
||||
|
|
|
|||
|
|
@ -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 = {
|
||||
|
|
|
|||
|
|
@ -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) => {
|
||||
|
|
|
|||
|
|
@ -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');
|
||||
|
|
|
|||
BIN
website/raw_sprites/spritesmith/quests/bosses/quest_bronze.png
Normal file
|
After Width: | Height: | Size: 7.8 KiB |
|
After Width: | Height: | Size: 904 B |
|
After Width: | Height: | Size: 3.6 KiB |
|
After Width: | Height: | Size: 3.4 KiB |
|
After Width: | Height: | Size: 3.4 KiB |
|
After Width: | Height: | Size: 3.8 KiB |
|
After Width: | Height: | Size: 3.7 KiB |
|
After Width: | Height: | Size: 3.6 KiB |
|
After Width: | Height: | Size: 3.3 KiB |
|
After Width: | Height: | Size: 3.8 KiB |
|
After Width: | Height: | Size: 4.1 KiB |
|
After Width: | Height: | Size: 3.3 KiB |
|
After Width: | Height: | Size: 3.9 KiB |
|
After Width: | Height: | Size: 4.3 KiB |
|
After Width: | Height: | Size: 3.6 KiB |
|
After Width: | Height: | Size: 3.4 KiB |
|
After Width: | Height: | Size: 3.4 KiB |
|
After Width: | Height: | Size: 3.5 KiB |
|
After Width: | Height: | Size: 3.5 KiB |
|
After Width: | Height: | Size: 3.9 KiB |
|
After Width: | Height: | Size: 3.2 KiB |
|
After Width: | Height: | Size: 3.4 KiB |
|
After Width: | Height: | Size: 3.4 KiB |
|
After Width: | Height: | Size: 3.3 KiB |
|
After Width: | Height: | Size: 3.3 KiB |
|
After Width: | Height: | Size: 3.4 KiB |
|
After Width: | Height: | Size: 3.3 KiB |
|
After Width: | Height: | Size: 3.4 KiB |
|
After Width: | Height: | Size: 3.4 KiB |
|
After Width: | Height: | Size: 3.5 KiB |
|
After Width: | Height: | Size: 3.3 KiB |
|
After Width: | Height: | Size: 3.5 KiB |
|
After Width: | Height: | Size: 3.6 KiB |
BIN
website/raw_sprites/spritesmith/stable/pets/Pet-Fox-Bronze.png
Normal file
|
After Width: | Height: | Size: 3.4 KiB |
|
After Width: | Height: | Size: 3.4 KiB |
|
After Width: | Height: | Size: 3.3 KiB |
|
After Width: | Height: | Size: 3.5 KiB |
BIN
website/raw_sprites/spritesmith/stable/pets/Pet-Wolf-Bronze.png
Normal file
|
After Width: | Height: | Size: 3.5 KiB |
|
After Width: | Height: | Size: 3.3 KiB |
BIN
website/raw_sprites/spritesmith_large/promo_bronze_quest.png
Normal file
|
After Width: | Height: | Size: 16 KiB |
|
|
@ -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>
|
||||
`,
|
||||
});
|
||||
|
|
|
|||