mirror of
https://github.com/HabitRPG/habitica.git
synced 2025-12-17 14:47:53 +01:00
feat(content): Confection Pets
This commit is contained in:
@@ -4,6 +4,12 @@
|
|||||||
height: 219px;
|
height: 219px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.Pet_HatchingPotion_Dessert {
|
||||||
|
background: url("~@/assets/images/animated/Pet_HatchingPotion_Dessert.gif") no-repeat;
|
||||||
|
width: 68px;
|
||||||
|
height: 68px;
|
||||||
|
}
|
||||||
|
|
||||||
.Pet_HatchingPotion_Veggie {
|
.Pet_HatchingPotion_Veggie {
|
||||||
background: url("~@/assets/images/animated/Pet_HatchingPotion_Veggie.gif") no-repeat;
|
background: url("~@/assets/images/animated/Pet_HatchingPotion_Veggie.gif") no-repeat;
|
||||||
width: 68px;
|
width: 68px;
|
||||||
|
|||||||
Binary file not shown.
|
After Width: | Height: | Size: 2.0 KiB |
@@ -299,6 +299,7 @@
|
|||||||
"hatchingPotionAurora": "Aurora",
|
"hatchingPotionAurora": "Aurora",
|
||||||
"hatchingPotionRuby": "Ruby",
|
"hatchingPotionRuby": "Ruby",
|
||||||
"hatchingPotionBirchBark": "Birch Bark",
|
"hatchingPotionBirchBark": "Birch Bark",
|
||||||
|
"hatchingPotionDessert": "Confection",
|
||||||
|
|
||||||
"hatchingPotionNotes": "Pour this on an egg, and it will hatch as a <%= potText(locale) %> pet.",
|
"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) %>.",
|
"premiumPotionAddlNotes": "Not usable on quest pet eggs. Available for purchase until <%= date(locale) %>.",
|
||||||
|
|||||||
@@ -796,5 +796,15 @@
|
|||||||
"questRubyCollectVenusRunes": "Venus Runes",
|
"questRubyCollectVenusRunes": "Venus Runes",
|
||||||
"questRubyCollectRubyGems": "Ruby Gems",
|
"questRubyCollectRubyGems": "Ruby Gems",
|
||||||
"questRubyDropRubyPotion": "Ruby Hatching Potion",
|
"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",
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -286,6 +286,12 @@ const wacky = {
|
|||||||
limited: true,
|
limited: true,
|
||||||
_season: '_PENDING_',
|
_season: '_PENDING_',
|
||||||
},
|
},
|
||||||
|
Dessert: {
|
||||||
|
text: t('hatchingPotionDessert'),
|
||||||
|
limited: true,
|
||||||
|
_season: '_PENDING_',
|
||||||
|
canBuy: hasQuestAchievementFunction('waffle'),
|
||||||
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
each(drops, (pot, key) => {
|
each(drops, (pot, key) => {
|
||||||
@@ -328,7 +334,7 @@ each(wacky, (pot, key) => {
|
|||||||
notes: t('hatchingPotionNotes', {
|
notes: t('hatchingPotionNotes', {
|
||||||
potText: pot.text,
|
potText: pot.text,
|
||||||
}),
|
}),
|
||||||
_addlNotes: pot._seasont && pot._season !== '_PENDING_' ? t('eventAvailability', {
|
_addlNotes: pot._season && pot._season !== '_PENDING_' ? t('eventAvailability', {
|
||||||
date: t(`dateEnd${pot._season}`),
|
date: t(`dateEnd${pot._season}`),
|
||||||
}) : null,
|
}) : null,
|
||||||
premium: false,
|
premium: false,
|
||||||
|
|||||||
@@ -3578,6 +3578,45 @@ const quests = {
|
|||||||
unlock: t('questRubyUnlockText'),
|
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) => {
|
each(quests, (v, key) => {
|
||||||
|
|||||||
BIN
website/raw_sprites/spritesmith/quests/bosses/quest_waffle.png
Normal file
BIN
website/raw_sprites/spritesmith/quests/bosses/quest_waffle.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 5.2 KiB |
@@ -1057,16 +1057,18 @@ schema.methods._processBossQuest = async function processBossQuest (options) {
|
|||||||
if (quest.boss.rage.mpDrain) {
|
if (quest.boss.rage.mpDrain) {
|
||||||
updates.$set = { 'stats.mp': 0 };
|
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:
|
_id:
|
||||||
{ $in: this.getParticipatingQuestMembers() },
|
{ $in: this.getParticipatingQuestMembers() },
|
||||||
},
|
},
|
||||||
updates,
|
updates,
|
||||||
{ multi: true },
|
|
||||||
).exec();
|
).exec();
|
||||||
// Apply changes the currently cronning user locally
|
// Apply changes the currently cronning user locally
|
||||||
// so we don't have to reload it to get the updated state
|
// so we don't have to reload it to get the updated state
|
||||||
|
|||||||
Reference in New Issue
Block a user