habitica/common/script/ops/equip.js

53 lines
1.7 KiB
JavaScript
Raw Normal View History

2016-03-07 22:02:42 +00:00
import content from '../content/index';
import i18n from '../i18n';
2016-03-08 16:45:14 +00:00
module.exports = function(user, req, cb) {
2016-03-07 22:02:42 +00:00
var item, key, message, ref, type;
ref = [req.params.type || 'equipped', req.params.key], type = ref[0], key = ref[1];
switch (type) {
case 'mount':
if (!user.items.mounts[key]) {
2016-03-08 16:45:14 +00:00
return typeof cb === "function" ? cb({
2016-03-07 22:02:42 +00:00
code: 404,
2016-03-08 16:45:14 +00:00
message: ":You do not own this mount."
2016-03-07 22:02:42 +00:00
}) : void 0;
}
user.items.currentMount = user.items.currentMount === key ? '' : key;
break;
case 'pet':
if (!user.items.pets[key]) {
2016-03-08 16:45:14 +00:00
return typeof cb === "function" ? cb({
2016-03-07 22:02:42 +00:00
code: 404,
2016-03-08 16:45:14 +00:00
message: ":You do not own this pet."
2016-03-07 22:02:42 +00:00
}) : void 0;
}
user.items.currentPet = user.items.currentPet === key ? '' : key;
break;
case 'costume':
case 'equipped':
item = content.gear.flat[key];
if (!user.items.gear.owned[key]) {
2016-03-08 16:45:14 +00:00
return typeof cb === "function" ? cb({
2016-03-07 22:02:42 +00:00
code: 404,
2016-03-08 16:45:14 +00:00
message: ":You do not own this gear."
2016-03-07 22:02:42 +00:00
}) : void 0;
}
if (user.items.gear[type][item.type] === key) {
2016-03-08 16:45:14 +00:00
user.items.gear[type][item.type] = item.type + "_base_0";
2016-03-07 22:02:42 +00:00
message = i18n.t('messageUnEquipped', {
itemText: item.text(req.language)
}, req.language);
} else {
user.items.gear[type][item.type] = item.key;
message = user.fns.handleTwoHanded(item, type, req);
}
2016-03-08 16:45:14 +00:00
if (typeof user.markModified === "function") {
user.markModified("items.gear." + type);
2016-03-07 22:02:42 +00:00
}
}
2016-03-08 16:45:14 +00:00
return typeof cb === "function" ? cb((message ? {
2016-03-07 22:02:42 +00:00
code: 200,
message: message
} : null), user.items) : void 0;
};