From b2d5e2a090f4afc8b21d75e3cfd546c0f6ec9d4b Mon Sep 17 00:00:00 2001 From: Marcelo Sizer Date: Thu, 23 Jan 2014 15:53:42 -0200 Subject: [PATCH 1/7] Add popover quest description to quests in the Market and add buyQuest modal to show text and rewards before purchasing the quest --- public/js/controllers/inventoryCtrl.js | 6 ++++++ views/options/inventory/inventory.jade | 4 ++-- views/shared/modals/quests.jade | 11 +++++++++++ 3 files changed, 19 insertions(+), 2 deletions(-) diff --git a/public/js/controllers/inventoryCtrl.js b/public/js/controllers/inventoryCtrl.js index 54f4c23f6d..a24870e434 100644 --- a/public/js/controllers/inventoryCtrl.js +++ b/public/js/controllers/inventoryCtrl.js @@ -129,6 +129,7 @@ habitrpg.controller("InventoryCtrl", ['$rootScope', '$scope', '$window', 'User', $scope.closeQuest = function(){ $rootScope.selectedQuest = undefined; $rootScope.modals.showQuest = false; + $rootScope.modals.buyQuest = false; } $scope.questInit = function(){ $rootScope.party.$questAccept({key:$scope.selectedQuest.key}, function(){ @@ -136,5 +137,10 @@ habitrpg.controller("InventoryCtrl", ['$rootScope', '$scope', '$window', 'User', }); $scope.closeQuest(); } + $scope.buyQuest = function(quest) { + var item = Content.quests[quest]; + $rootScope.selectedQuest = item; + $rootScope.modals.buyQuest = true; + } } ]); diff --git a/views/options/inventory/inventory.jade b/views/options/inventory/inventory.jade index dda21c55ce..8cffd2b99d 100644 --- a/views/options/inventory/inventory.jade +++ b/views/options/inventory/inventory.jade @@ -47,7 +47,7 @@ script(type='text/ng-template', id='partials/options.inventory.drops.html') p.muted(ng-show='questCount < 1')=env.t('noScrolls') p.muted!=env.t('scrollsText1') + ' ' + env.t('scrollsText2') + '' div(ng-repeat='(quest_key,points) in ownedItems(user.items.quests)', ng-init='quest = Content.quests[quest_key]') - button.customize-option(popover="{{quest.previous && !user.achievements.quests[quest.previous] ? env.t('scrollsPre') : quest.notes}}", popover-title='{{quest.text}}', popover-trigger='mouseenter', popover-placement='right', ng-click='showQuest(quest_key)', class='inventory_quest_scroll', ng-class='{locked: quest.previous && !user.achievements.quests[quest.previous]}') + button.customize-option(popover=('{{quest.previous && !user.achievements.quests[quest.previous] ? "' + env.t('scrollsPre') + '" : quest.notes}}'), popover-title='{{quest.text}}', popover-trigger='mouseenter', popover-placement='right', ng-click='showQuest(quest_key)', class='inventory_quest_scroll', ng-class='{locked: quest.previous && !user.achievements.quests[quest.previous]}') .badge.badge-info.stack-count {{points}} li.customize-menu @@ -125,7 +125,7 @@ script(type='text/ng-template', id='partials/options.inventory.drops.html') menu.pets-menu(label=env.t('quests')) p.muted!=env.t('scrollsText1') + ' ' + env.t('scrollsText2') + '' div(ng-repeat='quest in Content.quests') - button.customize-option(popover='{{quest.text}}', popover-trigger='mouseenter', popover-placement='left', ng-click='purchase("quests", quest)', class='inventory_quest_scroll', ng-class='{locked: quest.previous && !user.achievements.quests[quest.previous]}') + button.customize-option(popover='{{quest.notes}}', popover-title='{{quest.text}}', popover-trigger='mouseenter', popover-placement='left', ng-click='buyQuest(quest.key)', class='inventory_quest_scroll', ng-class='{locked: quest.previous && !user.achievements.quests[quest.previous]}') p | {{quest.value}} span.Pet_Currency_Gem1x.inline-gems diff --git a/views/shared/modals/quests.jade b/views/shared/modals/quests.jade index f5fdcc8cc9..209f462647 100644 --- a/views/shared/modals/quests.jade +++ b/views/shared/modals/quests.jade @@ -36,6 +36,17 @@ div(modal='modals.showQuest', ng-controller='InventoryCtrl') button.btn.btn-default.btn-small.btn-cancel(ng-click='closeQuest()')=env.t('cancel') button.btn.btn-default.btn-primary(ng-click='questInit()')=env.t('inviteParty') +div(modal='modals.buyQuest', ng-controller='InventoryCtrl') + .modal-header + h3 {{selectedQuest.text}} + .modal-body + .pull-right(class='quest_{{selectedQuest.key}}') + p {{selectedQuest.notes}} + quest-rewards(key='{{selectedQuest.key}}') + .modal-footer + button.btn.btn-large.cancel(ng-click='closeQuest()')=env.t('neverMind') + button.btn.btn-default.btn-large.btn-primary(ng-click='purchase("quests", quest)')=env.t('buyQuest') + div(modal='party.quest.key && !party.quest.active && !questHold && party.quest.members[user._id] == undefined') .modal-header h3=env.t('questInvitation') From 635451dc8ca3f9accb64d586ba4c074d0b198ff6 Mon Sep 17 00:00:00 2001 From: Marcelo Sizer Date: Thu, 23 Jan 2014 16:11:40 -0200 Subject: [PATCH 2/7] Close quest modal after quest purchase --- views/shared/modals/quests.jade | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/views/shared/modals/quests.jade b/views/shared/modals/quests.jade index 209f462647..2849d230f2 100644 --- a/views/shared/modals/quests.jade +++ b/views/shared/modals/quests.jade @@ -45,7 +45,7 @@ div(modal='modals.buyQuest', ng-controller='InventoryCtrl') quest-rewards(key='{{selectedQuest.key}}') .modal-footer button.btn.btn-large.cancel(ng-click='closeQuest()')=env.t('neverMind') - button.btn.btn-default.btn-large.btn-primary(ng-click='purchase("quests", quest)')=env.t('buyQuest') + button.btn.btn-default.btn-large.btn-primary(ng-click='purchase("quests", quest);closeQuest()')=env.t('buyQuest') div(modal='party.quest.key && !party.quest.active && !questHold && party.quest.members[user._id] == undefined') .modal-header From 6c68c51ab513a60ff46eb63a694482fd745c51f7 Mon Sep 17 00:00:00 2001 From: Marcelo Sizer Date: Thu, 23 Jan 2014 17:26:37 -0200 Subject: [PATCH 3/7] Fix version conflict --- views/options/inventory/inventory.jade | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/views/options/inventory/inventory.jade b/views/options/inventory/inventory.jade index 8cffd2b99d..8adb17283a 100644 --- a/views/options/inventory/inventory.jade +++ b/views/options/inventory/inventory.jade @@ -47,7 +47,7 @@ script(type='text/ng-template', id='partials/options.inventory.drops.html') p.muted(ng-show='questCount < 1')=env.t('noScrolls') p.muted!=env.t('scrollsText1') + ' ' + env.t('scrollsText2') + '' div(ng-repeat='(quest_key,points) in ownedItems(user.items.quests)', ng-init='quest = Content.quests[quest_key]') - button.customize-option(popover=('{{quest.previous && !user.achievements.quests[quest.previous] ? "' + env.t('scrollsPre') + '" : quest.notes}}'), popover-title='{{quest.text}}', popover-trigger='mouseenter', popover-placement='right', ng-click='showQuest(quest_key)', class='inventory_quest_scroll', ng-class='{locked: quest.previous && !user.achievements.quests[quest.previous]}') + button.customize-option(popover="{{quest.previous && !user.achievements.quests[quest.previous] ? env.t('scrollsPre') : quest.notes}}", popover-title='{{quest.text}}', popover-trigger='mouseenter', popover-placement='right', ng-click='showQuest(quest_key)', class='inventory_quest_scroll', ng-class='{locked: quest.previous && !user.achievements.quests[quest.previous]}') .badge.badge-info.stack-count {{points}} li.customize-menu From 9e6a9a3d0e91690271f14940e5f81d95a9be071b Mon Sep 17 00:00:00 2001 From: Marcelo Sizer Date: Thu, 23 Jan 2014 18:26:55 -0200 Subject: [PATCH 4/7] Don't show information if the quest is locked --- public/js/controllers/inventoryCtrl.js | 5 +++++ views/options/inventory/inventory.jade | 8 ++++---- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/public/js/controllers/inventoryCtrl.js b/public/js/controllers/inventoryCtrl.js index a24870e434..64a9c4abed 100644 --- a/public/js/controllers/inventoryCtrl.js +++ b/public/js/controllers/inventoryCtrl.js @@ -139,6 +139,11 @@ habitrpg.controller("InventoryCtrl", ['$rootScope', '$scope', '$window', 'User', } $scope.buyQuest = function(quest) { var item = Content.quests[quest]; + var completedPrevious = !item.previous || (User.user.achievements.quests && User.user.achievements.quests[item.previous]); + if (!completedPrevious) + return alert("You must first complete " + $rootScope.Content.quests[item.previous].text + '.'); + if (item.lvl && item.lvl > user.stats.lvl) + return alert("You must be level " + item.lvl + '.'); $rootScope.selectedQuest = item; $rootScope.modals.buyQuest = true; } diff --git a/views/options/inventory/inventory.jade b/views/options/inventory/inventory.jade index 8adb17283a..2d6b284bb6 100644 --- a/views/options/inventory/inventory.jade +++ b/views/options/inventory/inventory.jade @@ -125,10 +125,10 @@ script(type='text/ng-template', id='partials/options.inventory.drops.html') menu.pets-menu(label=env.t('quests')) p.muted!=env.t('scrollsText1') + ' ' + env.t('scrollsText2') + '' div(ng-repeat='quest in Content.quests') - button.customize-option(popover='{{quest.notes}}', popover-title='{{quest.text}}', popover-trigger='mouseenter', popover-placement='left', ng-click='buyQuest(quest.key)', class='inventory_quest_scroll', ng-class='{locked: quest.previous && !user.achievements.quests[quest.previous]}') - p - | {{quest.value}} - span.Pet_Currency_Gem1x.inline-gems + button.customize-option(popover='{{quest.text}}', popover-trigger='mouseenter', popover-placement='left', ng-click='buyQuest(quest.key)', class='inventory_quest_scroll', ng-class='{locked: quest.previous && !user.achievements.quests[quest.previous]}') + p + | {{quest.value}} + span.Pet_Currency_Gem1x.inline-gems li.customize-menu menu.pets-menu(label=env.t('special')) From d3d970b87fdb06110f8f50a73381dc8d808d2ec4 Mon Sep 17 00:00:00 2001 From: Marcelo Sizer Date: Thu, 23 Jan 2014 23:11:30 -0200 Subject: [PATCH 5/7] Make locked quests purchasable --- public/js/controllers/inventoryCtrl.js | 2 +- views/options/inventory/inventory.jade | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/public/js/controllers/inventoryCtrl.js b/public/js/controllers/inventoryCtrl.js index 64a9c4abed..6debefe755 100644 --- a/public/js/controllers/inventoryCtrl.js +++ b/public/js/controllers/inventoryCtrl.js @@ -141,7 +141,7 @@ habitrpg.controller("InventoryCtrl", ['$rootScope', '$scope', '$window', 'User', var item = Content.quests[quest]; var completedPrevious = !item.previous || (User.user.achievements.quests && User.user.achievements.quests[item.previous]); if (!completedPrevious) - return alert("You must first complete " + $rootScope.Content.quests[item.previous].text + '.'); + return $scope.purchase("quests", item); if (item.lvl && item.lvl > user.stats.lvl) return alert("You must be level " + item.lvl + '.'); $rootScope.selectedQuest = item; diff --git a/views/options/inventory/inventory.jade b/views/options/inventory/inventory.jade index 2d6b284bb6..23c32200a1 100644 --- a/views/options/inventory/inventory.jade +++ b/views/options/inventory/inventory.jade @@ -47,7 +47,7 @@ script(type='text/ng-template', id='partials/options.inventory.drops.html') p.muted(ng-show='questCount < 1')=env.t('noScrolls') p.muted!=env.t('scrollsText1') + ' ' + env.t('scrollsText2') + '' div(ng-repeat='(quest_key,points) in ownedItems(user.items.quests)', ng-init='quest = Content.quests[quest_key]') - button.customize-option(popover="{{quest.previous && !user.achievements.quests[quest.previous] ? env.t('scrollsPre') : quest.notes}}", popover-title='{{quest.text}}', popover-trigger='mouseenter', popover-placement='right', ng-click='showQuest(quest_key)', class='inventory_quest_scroll', ng-class='{locked: quest.previous && !user.achievements.quests[quest.previous]}') + button.customize-option(popover='{{quest.previous && !user.achievements.quests[quest.previous] ? "You need to complete the previous quest to start this one!" : quest.notes}}', popover-title='{{quest.text}}', popover-trigger='mouseenter', popover-placement='right', ng-click='showQuest(quest_key)', class='inventory_quest_scroll', ng-class='{locked: quest.previous && !user.achievements.quests[quest.previous]}') .badge.badge-info.stack-count {{points}} li.customize-menu @@ -125,7 +125,7 @@ script(type='text/ng-template', id='partials/options.inventory.drops.html') menu.pets-menu(label=env.t('quests')) p.muted!=env.t('scrollsText1') + ' ' + env.t('scrollsText2') + '' div(ng-repeat='quest in Content.quests') - button.customize-option(popover='{{quest.text}}', popover-trigger='mouseenter', popover-placement='left', ng-click='buyQuest(quest.key)', class='inventory_quest_scroll', ng-class='{locked: quest.previous && !user.achievements.quests[quest.previous]}') + button.customize-option(popover='{{quest.previous && !user.achievements.quests[quest.previous] ? "You need to complete the previous quest to start this one!" : quest.notes}}', popover-title='{{quest.text}}', popover-trigger='mouseenter', popover-placement='left', ng-click='buyQuest(quest.key)', class='inventory_quest_scroll', ng-class='{locked: quest.previous && !user.achievements.quests[quest.previous]}') p | {{quest.value}} span.Pet_Currency_Gem1x.inline-gems From 17e70e84d6d267b444dabc6cdfe49ffe7bc4428b Mon Sep 17 00:00:00 2001 From: Marcelo Sizer Date: Thu, 23 Jan 2014 23:30:11 -0200 Subject: [PATCH 6/7] Remove level lock to purchase --- public/js/controllers/inventoryCtrl.js | 2 -- 1 file changed, 2 deletions(-) diff --git a/public/js/controllers/inventoryCtrl.js b/public/js/controllers/inventoryCtrl.js index 6debefe755..2425b6044d 100644 --- a/public/js/controllers/inventoryCtrl.js +++ b/public/js/controllers/inventoryCtrl.js @@ -142,8 +142,6 @@ habitrpg.controller("InventoryCtrl", ['$rootScope', '$scope', '$window', 'User', var completedPrevious = !item.previous || (User.user.achievements.quests && User.user.achievements.quests[item.previous]); if (!completedPrevious) return $scope.purchase("quests", item); - if (item.lvl && item.lvl > user.stats.lvl) - return alert("You must be level " + item.lvl + '.'); $rootScope.selectedQuest = item; $rootScope.modals.buyQuest = true; } From 17c63cdc6e9970f7b47be4b4e8ebc5d60090fae8 Mon Sep 17 00:00:00 2001 From: Marcelo Sizer Date: Fri, 24 Jan 2014 20:26:33 -0200 Subject: [PATCH 7/7] Replace string for env.t --- views/options/inventory/inventory.jade | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/views/options/inventory/inventory.jade b/views/options/inventory/inventory.jade index 23c32200a1..8e9e3940aa 100644 --- a/views/options/inventory/inventory.jade +++ b/views/options/inventory/inventory.jade @@ -47,7 +47,7 @@ script(type='text/ng-template', id='partials/options.inventory.drops.html') p.muted(ng-show='questCount < 1')=env.t('noScrolls') p.muted!=env.t('scrollsText1') + ' ' + env.t('scrollsText2') + '' div(ng-repeat='(quest_key,points) in ownedItems(user.items.quests)', ng-init='quest = Content.quests[quest_key]') - button.customize-option(popover='{{quest.previous && !user.achievements.quests[quest.previous] ? "You need to complete the previous quest to start this one!" : quest.notes}}', popover-title='{{quest.text}}', popover-trigger='mouseenter', popover-placement='right', ng-click='showQuest(quest_key)', class='inventory_quest_scroll', ng-class='{locked: quest.previous && !user.achievements.quests[quest.previous]}') + button.customize-option(popover="{{quest.previous && !user.achievements.quests[quest.previous] ? env.t('scrollsPre') : quest.notes}}", popover-title='{{quest.text}}', popover-trigger='mouseenter', popover-placement='right', ng-click='showQuest(quest_key)', class='inventory_quest_scroll', ng-class='{locked: quest.previous && !user.achievements.quests[quest.previous]}') .badge.badge-info.stack-count {{points}} li.customize-menu @@ -125,7 +125,7 @@ script(type='text/ng-template', id='partials/options.inventory.drops.html') menu.pets-menu(label=env.t('quests')) p.muted!=env.t('scrollsText1') + ' ' + env.t('scrollsText2') + '' div(ng-repeat='quest in Content.quests') - button.customize-option(popover='{{quest.previous && !user.achievements.quests[quest.previous] ? "You need to complete the previous quest to start this one!" : quest.notes}}', popover-title='{{quest.text}}', popover-trigger='mouseenter', popover-placement='left', ng-click='buyQuest(quest.key)', class='inventory_quest_scroll', ng-class='{locked: quest.previous && !user.achievements.quests[quest.previous]}') + button.customize-option(popover="{{quest.previous && !user.achievements.quests[quest.previous] ? env.t('scrollsPre') : quest.notes}}", popover-title='{{quest.text}}', popover-trigger='mouseenter', popover-placement='left', ng-click='buyQuest(quest.key)', class='inventory_quest_scroll', ng-class='{locked: quest.previous && !user.achievements.quests[quest.previous]}') p | {{quest.value}} span.Pet_Currency_Gem1x.inline-gems