Files
habitica/website/common/script/ops/releaseMounts.js
Matteo Pagliazzi 0c27fb24a5 start fixing commong
2019-10-09 16:51:17 +02:00

58 lines
1.4 KiB
JavaScript

import content from '../content/index';
import { mountMasterProgress } from '../count';
import i18n from '../i18n';
import {
NotAuthorized,
} from '../libs/errors';
export default function releaseMounts (user, req = {}, analytics) {
if (user.balance < 1) {
throw new NotAuthorized(i18n.t('notEnoughGems', req.language));
}
if (mountMasterProgress(user.items.mounts) !== 90) {
throw new NotAuthorized(i18n.t('notEnoughMounts', req.language));
}
user.balance -= 1;
let giveMountMasterAchievement = true;
const mountInfo = content.mountInfo[user.items.currentMount];
if (mountInfo && mountInfo.type === 'drop') {
user.items.currentMount = '';
}
Object.keys(content.pets).forEach(mount => {
if (user.items.mounts[mount] === null || user.items.mounts[mount] === undefined) {
giveMountMasterAchievement = false;
}
user.items.mounts[mount] = null;
});
if (user.markModified) user.markModified('items.mounts');
if (giveMountMasterAchievement) {
if (!user.achievements.mountMasterCount) {
user.achievements.mountMasterCount = 0;
}
user.achievements.mountMasterCount += 1;
}
if (analytics) {
analytics.track('release mounts', {
uuid: user._id,
acquireMethod: 'Gems',
gemCost: 4,
category: 'behavior',
headers: req.headers,
});
}
return [
user.items.mounts,
i18n.t('mountsReleased'),
];
}