Merge branch 'sabrecat/dessert-potions' into release

This commit is contained in:
Sabe Jones 2020-04-07 13:59:36 -05:00
commit a1a1fd939d
11 changed files with 89 additions and 15 deletions

View file

@ -4,6 +4,12 @@
height: 219px;
}
.Pet_HatchingPotion_Dessert {
background: url("~@/assets/images/animated/Pet_HatchingPotion_Dessert.gif") no-repeat;
width: 68px;
height: 68px;
}
.Pet_HatchingPotion_Veggie {
background: url("~@/assets/images/animated/Pet_HatchingPotion_Veggie.gif") no-repeat;
width: 68px;

Binary file not shown.

After

Width:  |  Height:  |  Size: 2 KiB

View file

@ -183,7 +183,7 @@
</div>
</div>
<div
v-if="petGroup.key !== 'specialPets' && petGroup.key !== 'wackyPets'"
v-if="petGroup.key !== 'specialPets' && !(petGroup.key === 'wackyPets' && selectedSortBy !== 'sortByColor')"
class="btn btn-flat btn-show-more"
@click="setShowMore(petGroup.key)"
>
@ -790,7 +790,7 @@ export default {
const pets = this.listAnimals(animalGroup, 'pet', hideMissing, sortBy, searchText);
// Don't group special
if (animalGroup.key === 'specialPets' || animalGroup.key === 'wackyPets') {
if (animalGroup.key === 'specialPets' || (animalGroup.key === 'wackyPets' && sortBy !== 'sortByColor')) {
return { none: pets };
}

View file

@ -299,6 +299,7 @@
"hatchingPotionAurora": "Aurora",
"hatchingPotionRuby": "Ruby",
"hatchingPotionBirchBark": "Birch Bark",
"hatchingPotionDessert": "Confection",
"hatchingPotionNotes": "Pour this on an egg, and it will hatch as a <%= potText(locale) %> pet.",
"premiumPotionAddlNotes": "Not usable on quest pet eggs. Available for purchase until <%= date(locale) %>.",

View file

@ -796,5 +796,15 @@
"questRubyCollectVenusRunes": "Venus Runes",
"questRubyCollectRubyGems": "Ruby Gems",
"questRubyDropRubyPotion": "Ruby Hatching Potion",
"questRubyUnlockText": "Unlocks Ruby Hatching Potions for purchase in the Market"
"questRubyUnlockText": "Unlocks Ruby Hatching Potions for purchase in the Market",
"questWaffleText": "Waffling with the Fool: Disaster Breakfast!",
"questWaffleNotes": "“April Fool!” storms a flustered Lady Glaciate. “You said your dessert-themed prank was over with and completely cleaned up!”<br><br>“Why, it was and is, my dear,” replies the Fool, puzzled. “And I am the most honest of Fools. What's wrong?”<br><br>“There's a giant sugary monster approaching Habit City!”<br><br>“Hmm,” muses the Fool. “I did raid a few lairs for the mystic reagents for my last event. Maybe I attracted some unwanted attention. Is it the Saccharine Serpent? The Torte-oise? Tiramisu Rex?”<br><br>“No! It's some sort of... Awful Waffle!”<br><br>“Huh. That's a new one! Perhaps it spawned from all the ambient shenanigan energy.” He turns to you and @beffymaroo with a lopsided smile. “I don't suppose you'd be available for some heroics?”",
"questWaffleCompletion": "Battered and buttered but triumphant, you savor sweet victory as the Awful Waffle collapses into a pool of sticky goo.<br><br>“Wow, you really creamed that monster,” says Lady Glaciate, impressed.<br><br>“A piece of cake!” beams the April Fool.<br><br>“Kind of a shame, though,” says @beffymaroo. “It looked good enough to eat.”<br><br>The Fool takes a set of potion bottles from somewhere in his cape, fills them with the syrupy leavings of the Waffle, and mixes in a pinch of sparkling dust. The liquid swirls with color--new Hatching Potions! He tosses them into your arms. “All that adventure has given me an appetite. Who wants to join me for breakfast?”",
"questWaffleBoss": "Awful Waffle",
"questWaffleRageTitle": "Maple Mire",
"questWaffleRageDescription": "Maple Mire: This bar fills when you don't complete your Dailies. When it is full, the Awful Waffle will set back the party's attack progress!",
"questWaffleRageEffect": "`Awful Waffle uses MAPLE MIRE!` Sticky sappy syrup slows your swings and spells!",
"questWaffleDropDessertPotion": "Confection Hatching Potion",
"questWaffleUnlockText": "Unlocks Confection Hatching Potions for purchase in the Market"
}

View file

@ -284,7 +284,19 @@ const wacky = {
Veggie: {
text: t('hatchingPotionVeggie'),
limited: true,
_season: '_PENDING_',
_addlNotes: t('eventAvailabilityReturning', {
availableDate: t('dateEndMarch'),
previousDate: t('marchYYYY', { year: 2019 }),
}),
canBuy () {
return moment().isBefore('2020-05-02');
},
},
Dessert: {
text: t('hatchingPotionDessert'),
limited: true,
_addlNotes: t('premiumPotionUnlimitedNotes'),
canBuy: hasQuestAchievementFunction('waffle'),
},
};
@ -328,7 +340,7 @@ each(wacky, (pot, key) => {
notes: t('hatchingPotionNotes', {
potText: pot.text,
}),
_addlNotes: pot._seasont && pot._season !== '_PENDING_' ? t('eventAvailability', {
_addlNotes: pot._season && pot._season !== '_PENDING_' ? t('eventAvailability', {
date: t(`dateEnd${pot._season}`),
}) : null,
premium: false,

View file

@ -3578,6 +3578,45 @@ const quests = {
unlock: t('questRubyUnlockText'),
},
},
waffle: {
text: t('questWaffleText'),
notes: t('questWaffleNotes'),
completion: t('questWaffleCompletion'),
value: 4,
category: 'hatchingPotion',
boss: {
name: t('questWaffleBoss'),
hp: 500,
str: 2,
rage: {
title: t('questWaffleRageTitle'),
description: t('questWaffleRageDescription'),
value: 50,
progressDrain: 0.5,
effect: t('questWaffleRageEffect'),
},
},
drop: {
items: [
{
type: 'hatchingPotions',
key: 'Dessert',
text: t('questWaffleDropDessertPotion'),
}, {
type: 'hatchingPotions',
key: 'Dessert',
text: t('questWaffleDropDessertPotion'),
}, {
type: 'hatchingPotions',
key: 'Dessert',
text: t('questWaffleDropDessertPotion'),
},
],
gp: 40,
exp: 500,
unlock: t('questWaffleUnlockText'),
},
},
};
each(quests, (v, key) => {

View file

@ -23,6 +23,10 @@ const featuredItems = {
type: 'premiumHatchingPotion',
path: 'premiumHatchingPotions.Celestial',
},
{
type: 'hatchingPotions',
path: 'hatchingPotions.Veggie',
},
];
}
return [
@ -45,34 +49,34 @@ const featuredItems = {
];
},
quests () {
if (moment().isBefore('2020-04-02')) {
if (moment().isBefore('2020-05-02')) {
return [
{
type: 'bundles',
path: 'bundles.hugabug',
type: 'quests',
path: 'quests.waffle',
},
{
type: 'quests',
path: 'quests.velociraptor',
path: 'quests.trex_undead',
},
{
type: 'quests',
path: 'quests.taskwoodsTerror1',
path: 'quests.bunny',
},
];
}
return [
{
type: 'quests',
path: 'quests.badger',
path: 'quests.sheep',
},
{
type: 'quests',
path: 'quests.ferret',
path: 'quests.seaserpent',
},
{
type: 'quests',
path: 'quests.sloth',
path: 'quests.silver',
},
];
},

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 976 B

View file

@ -1057,16 +1057,18 @@ schema.methods._processBossQuest = async function processBossQuest (options) {
if (quest.boss.rage.mpDrain) {
updates.$set = { 'stats.mp': 0 };
}
if (quest.boss.rage.progressDrain) {
updates.$mul = { 'party.quest.progress.up': quest.boss.rage.progressDrain };
}
}
}
await User.update(
await User.updateMany(
{
_id:
{ $in: this.getParticipatingQuestMembers() },
},
updates,
{ multi: true },
).exec();
// Apply changes the currently cronning user locally
// so we don't have to reload it to get the updated state