added item.locked to buy functions

This commit is contained in:
CuriousMagpie 2022-01-14 13:54:41 -05:00
parent 874954b16b
commit b4f699b7c4
3 changed files with 36 additions and 11 deletions

View file

@ -54,6 +54,15 @@ export class AbstractBuyOperation {
return item.type;
}
/**
* Returns the item lock status
* @param item
* @returns {String}
*/
getItemLock (item) { // eslint-disable-line class-methods-use-this
return item.locked;
}
/**
* Shortcut to get the translated string without passing `req.language`
* @param {String} key - translation key
@ -139,6 +148,10 @@ export class AbstractGoldItemOperation extends AbstractBuyOperation {
if (item && item.canOwn && !item.canOwn(user)) {
throw new NotAuthorized(this.i18n('cannotBuyItem'));
}
if (item.locked === 'locked') {
throw new NotAuthorized(this.i18n('cannotBuyItem'));
}
}
subtractCurrency (user, item) {
@ -169,6 +182,10 @@ export class AbstractGemItemOperation extends AbstractBuyOperation {
if (!user.balance || user.balance < itemValue * this.quantity) {
throw new NotAuthorized(this.i18n('notEnoughGems'));
}
if (item.locked === 'locked') {
throw new NotAuthorized(this.i18n('cannotBuyItem'));
}
}
subtractCurrency (user, item) {

View file

@ -8,7 +8,7 @@ import content from '../../content/index';
import errorMessage from '../../libs/errorMessage';
import { AbstractGemItemOperation } from './abstractBuyOperation';
import getItemInfo from '../../libs/getItemInfo';
// import itemInfo from '../../libs/getItemInfo';
export class BuyQuestWithGemOperation extends AbstractGemItemOperation { // eslint-disable-line import/prefer-default-export, max-len
multiplePurchaseAllowed () { // eslint-disable-line class-methods-use-this
@ -27,6 +27,10 @@ export class BuyQuestWithGemOperation extends AbstractGemItemOperation { // esli
return 'quest';
}
getItemLock (item) { // eslint-disable-line class-methods-use-this
return item.locked;
}
extractAndValidateParams (user, req) {
this.key = get(req, 'params.key');
const { key } = this;
@ -34,10 +38,10 @@ export class BuyQuestWithGemOperation extends AbstractGemItemOperation { // esli
const item = content.quests[key];
if (getItemInfo.locked) {
throw new
BadRequest(errorMessage(`Prerequisites for ${getItemInfo.text} not met.`));
}
// if (quest.locked) {
// throw new
// BadRequest(errorMessage(`Prerequisites for ${itemInfo.text} not met.`));
// }
if (!item) throw new NotFound(errorMessage('questNotFound', { key }));

View file

@ -14,12 +14,12 @@ export class BuyQuestWithGoldOperation extends AbstractGoldItemOperation { // es
return true;
}
userAbleToStartMasterClasser (user) { // eslint-disable-line class-methods-use-this
return user.achievements.quests.dilatoryDistress3
&& user.achievements.quests.mayhemMistiflying3
&& user.achievements.quests.stoikalmCalamity3
&& user.achievements.quests.taskwoodsTerror3;
}
// userAbleToStartMasterClasser (user) { // eslint-disable-line class-methods-use-this
// return user.achievements.quests.dilatoryDistress3
// && user.achievements.quests.mayhemMistiflying3
// && user.achievements.quests.stoikalmCalamity3
// && user.achievements.quests.taskwoodsTerror3;
// }
getItemKey () {
return this.key;
@ -33,6 +33,10 @@ export class BuyQuestWithGoldOperation extends AbstractGoldItemOperation { // es
return 'quest';
}
getItemLock (item) { // eslint-disable-line class-methods-use-this
return item.locked;
}
extractAndValidateParams (user, req) {
this.key = get(req, 'params.key');
const { key } = this;