From c0d35dc472705dab77bf1b4da7104660d7304274 Mon Sep 17 00:00:00 2001 From: Sabe Jones Date: Wed, 8 Jul 2015 17:43:08 -0500 Subject: [PATCH] WIP(quests): Quests page cont'd Test fixes and addition of function for buying Quests with Gold --- common/script/index.coffee | 13 ++++++++++++- karma.conf.js | 1 + test/common/algos.mocha.coffee | 2 +- website/public/js/controllers/tasksCtrl.js | 1 - website/public/js/services/questServices.js | 3 +++ website/views/options/inventory/quests.jade | 5 ++++- 6 files changed, 21 insertions(+), 4 deletions(-) diff --git a/common/script/index.coffee b/common/script/index.coffee index c78a0552bb..a71f7903f3 100644 --- a/common/script/index.coffee +++ b/common/script/index.coffee @@ -875,7 +875,7 @@ api.wrap = (user, main=true) -> item = if key is 'potion' then content.potion else if key is 'armoire' then content.armoire else content.gear.flat[key] - return cb?({code:404, message:"Item '#{key} not found (see https://github.com/HabitRPG/habitrpg-shared/blob/develop/script/content.coffee)"}) unless item + return cb?({code:404, message:"Item '#{key} not found (see https://github.com/HabitRPG/habitrpg/blob/develop/common/script/content.coffee)"}) unless item return cb?({code:401, message: i18n.t('messageNotEnoughGold', req.language)}) if user.stats.gp < item.value return cb?({code:401, message: "You can't buy this item"}) if item.canOwn? and !item.canOwn(user) if item.key is 'potion' @@ -913,6 +913,17 @@ api.wrap = (user, main=true) -> mixpanel?.track("Acquire Item",{'itemName':key,'acquireMethod':'Gold','goldCost':item.value}) cb? {code:200, message}, _.pick(user,$w 'items achievements stats flags') + buyQuest: (req, cb) -> + {key} = req.params + item = content.quests[key] + return cb?({code:404, message:"Quest '#{key} not found (see https://github.com/HabitRPG/habitrpg/blob/develop/common/script/content.coffee)"}) unless item + return cb?({code:401, message: i18n.t('messageNotEnoughGold', req.language)}) if user.stats.gp < item.value + message = i18n.t('messageBought', {itemText: item.text(req.language)}, req.language) + user.items.quests[item.key] ?= 0 + user.items.quests[item.key] += 1 + user.stats.gp -= item.value + cb? {code:200, message}, user.items.quests + buyMysterySet: (req, cb)-> return cb?({code:401, message:"You don't have enough Mystic Hourglasses"}) unless user.purchased.plan.consecutive.trinkets>0 mysterySet = content.timeTravelerStore(user.items.gear.owned)?[req.params.key] diff --git a/karma.conf.js b/karma.conf.js index 42e63f35db..d1d576e53b 100644 --- a/karma.conf.js +++ b/karma.conf.js @@ -54,6 +54,7 @@ module.exports = function(config) { "website/public/js/services/challengeServices.js", "website/public/js/services/taskServices.js", "website/public/js/services/paymentServices.js", + "website/public/js/services/questServices.js", "website/public/js/filters/money.js", "website/public/js/filters/roundLargeNumbers.js", diff --git a/test/common/algos.mocha.coffee b/test/common/algos.mocha.coffee index 49205fe84a..423c182d84 100644 --- a/test/common/algos.mocha.coffee +++ b/test/common/algos.mocha.coffee @@ -574,7 +574,7 @@ describe 'User', -> expect(quest.value).to.be.greaterThan 0 if quest.canBuy expect(quest.drop.gp).to.not.be.lessThan 0 expect(quest.drop.exp).to.not.be.lessThan 0 - expect(quest.category).to.match('pet|unlockable|gold|world') + expect(quest.category).to.match(/pet|unlockable|gold|world/) if quest.drop.items expect(quest.drop.items).to.be.an(Array) if quest.boss diff --git a/website/public/js/controllers/tasksCtrl.js b/website/public/js/controllers/tasksCtrl.js index 58a992c56d..74d4c2d642 100644 --- a/website/public/js/controllers/tasksCtrl.js +++ b/website/public/js/controllers/tasksCtrl.js @@ -219,7 +219,6 @@ habitrpg.controller("TasksCtrl", ['$scope', '$rootScope', '$location', 'User','N $scope.buy = function(item) { User.user.ops.buy({params:{key:item.key}}); $rootScope.playSound('Reward'); - Guide.goto('intro', 4); }; diff --git a/website/public/js/services/questServices.js b/website/public/js/services/questServices.js index 1ca6995c38..b634e0ace4 100644 --- a/website/public/js/services/questServices.js +++ b/website/public/js/services/questServices.js @@ -38,6 +38,9 @@ if (item.lvl && item.lvl > user.stats.lvl) { return alert(window.env.t('mustLvlQuest', {level: item.lvl})); } + if (item.category === 'gold') { + return User.user.ops.buyQuest({params:{key:item.key}}); + } $rootScope.selectedQuest = item; $rootScope.openModal('buyQuest', {controller:'InventoryCtrl'}); } diff --git a/website/views/options/inventory/quests.jade b/website/views/options/inventory/quests.jade index 40e73b796d..7ac417c0f6 100644 --- a/website/views/options/inventory/quests.jade +++ b/website/views/options/inventory/quests.jade @@ -31,8 +31,11 @@ script(type='text/ng-template', id='partials/options.inventory.quests.html') button.customize-option(data-popover-html="{{::lockQuest(quest,true) ? env.t('scrollsPre') : questPopover(quest) | markdown}}", popover-title='{{::quest.text()}}', popover-append-to-body="true", popover-trigger='mouseenter', ng-click='buyQuest(quest.key)', ng-class='lockQuest(quest) ? "inventory_quest_scroll_locked inventory_quest_scroll_{{::quest.key}}_locked locked" : "inventory_quest_scroll inventory_quest_scroll_{{::quest.key}}"') p(ng-if='quest.unlockCondition') | {{::quest.unlockCondition.text()}} - p(ng-if='quest.value && !lockQuest(quest)') + p(ng-if='quest.value && quest.category !== "gold" && !lockQuest(quest)') | {{::quest.value}}  span.Pet_Currency_Gem1x.inline-gems + p(ng-if='quest.value && quest.category === "gold" && !lockQuest(quest)') + | {{::quest.value}}  + span.shop_gold p(ng-if='quest.lvl && lockQuest(quest)')=env.t('level') | {{::quest.lvl}} \ No newline at end of file