mirror of
https://github.com/HabitRPG/habitica.git
synced 2025-12-15 05:37:22 +01:00
feat(content): bundle and cheevo
This commit is contained in:
@@ -59,25 +59,57 @@ export default function hatch (user, req = {}, analytics) {
|
||||
checkOnboardingStatus(user, req, analytics);
|
||||
}
|
||||
|
||||
forEach(content.animalColorAchievements, achievement => {
|
||||
if (!user.achievements[achievement.petAchievement]) {
|
||||
const petIndex = findIndex(
|
||||
keys(content.dropEggs),
|
||||
animal => !user.items.pets[`${animal}-${achievement.color}`] || user.items.pets[`${animal}-${achievement.color}`] <= 0,
|
||||
);
|
||||
if (petIndex === -1) {
|
||||
user.achievements[achievement.petAchievement] = true;
|
||||
if (user.addNotification) {
|
||||
const achievementString = `achievement${upperFirst(achievement.petAchievement)}`;
|
||||
user.addNotification(achievement.petNotificationType, {
|
||||
achievement: achievement.petAchievement,
|
||||
message: `${i18n.t('modalAchievement')} ${i18n.t(achievementString)}`,
|
||||
modalText: i18n.t(`${achievementString}ModalText`),
|
||||
});
|
||||
if (content.dropEggs[egg]) {
|
||||
forEach(content.animalColorAchievements, achievement => {
|
||||
if (hatchingPotion !== achievement.color) return;
|
||||
if (!user.achievements[achievement.petAchievement]) {
|
||||
const petIndex = findIndex(
|
||||
keys(content.dropEggs),
|
||||
animal => !user.items.pets[`${animal}-${achievement.color}`] || user.items.pets[`${animal}-${achievement.color}`] <= 0,
|
||||
);
|
||||
if (petIndex === -1) {
|
||||
user.achievements[achievement.petAchievement] = true;
|
||||
if (user.addNotification) {
|
||||
const achievementString = `achievement${upperFirst(achievement.petAchievement)}`;
|
||||
user.addNotification(achievement.petNotificationType, {
|
||||
achievement: achievement.petAchievement,
|
||||
message: `${i18n.t('modalAchievement')} ${i18n.t(achievementString)}`,
|
||||
modalText: i18n.t(`${achievementString}ModalText`),
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
if (content.dropHatchingPotions[hatchingPotion]) {
|
||||
forEach(content.animalSetAchievements, achievement => {
|
||||
if (!user.achievements[achievement.achievementKey]) {
|
||||
if (achievement.type === 'pet') {
|
||||
let achieved = true;
|
||||
forEach(achievement.species, species => {
|
||||
if (!achieved) return;
|
||||
const petIndex = findIndex(
|
||||
keys(content.dropHatchingPotions),
|
||||
color => !user.items.pets[`${species}-${color}`],
|
||||
);
|
||||
if (petIndex !== -1) achieved = false;
|
||||
});
|
||||
if (achieved) {
|
||||
user.achievements[achievement.achievementKey] = true;
|
||||
if (user.addNotification) {
|
||||
const achievementString = `achievement${upperFirst(achievement.achievementKey)}`;
|
||||
user.addNotification(achievement.notificationType, {
|
||||
achievement: achievement.achievementKey,
|
||||
message: `${i18n.t('modalAchievement')} ${i18n.t(achievementString)}`,
|
||||
modalText: i18n.t(`${achievementString}ModalText`),
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
if (analytics && moment().diff(user.auth.timestamps.created, 'days') < 7) {
|
||||
analytics.track('pet hatch', {
|
||||
|
||||
Reference in New Issue
Block a user