diff --git a/public/js/controllers/inventoryCtrl.js b/public/js/controllers/inventoryCtrl.js index 3c7dae52c8..dfb6e3715d 100644 --- a/public/js/controllers/inventoryCtrl.js +++ b/public/js/controllers/inventoryCtrl.js @@ -84,7 +84,8 @@ habitrpg.controller("InventoryCtrl", ['$rootScope', '$scope', 'User', } $scope.purchase = function(type, item){ - if (item.previous && !User.user.achievements.quests[item.previous]) + 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 + '.'); var gems = User.user.balance * 4; if(gems < item.value) return $rootScope.modals.buyGems = true; diff --git a/src/controllers/groups.js b/src/controllers/groups.js index 941a66d859..96521d3729 100644 --- a/src/controllers/groups.js +++ b/src/controllers/groups.js @@ -400,9 +400,8 @@ questStart = function(req, res) { group.markModified('quest'); // Not ready yet, wait till everyone's accepted, rejected, or we force-start - if (!force && _.findIndex(group.quest.members, function(m){ - return m === undefined; - })) { + var statuses = _.values(group.quest.members); + if (!force && (~statuses.indexOf(undefined) || ~statuses.indexOf(null))) { return group.save(function(err,saved){ if (err) return res.json(500,{err:err}); res.json(saved); @@ -486,12 +485,6 @@ api.questReject = function(req, res, next) { if (!group.quest.key) return res.json(400,{err:'No quest invitation has been sent out yet.'}); group.quest.members[user._id] = false; - - group.save(function(err,saved){ - if (err) return res.json(500,{err:err}); - res.json(200,saved); - }); - questStart(req,res); } diff --git a/views/options/social/group.jade b/views/options/social/group.jade index c9f9b16bae..ddc25beeec 100644 --- a/views/options/social/group.jade +++ b/views/options/social/group.jade @@ -17,8 +17,11 @@ a.pull-right.gem-wallet(popover-trigger='mouseenter', popover-title='Guild Bank' table.table.table-striped tr(ng-repeat='member in group.members') td {{member.profile.name}} - td {{group.quest.members[member._id] == undefined ? 'Pending' : k ? 'Rejected' : 'Accepted'}} - button.btn.btn-warning(ng-click='party.$questAccept({"force":true})') Force Start + td {{group.quest.members[member._id] === true ? 'Accepted' : group.quest.members[member._id] === false ? 'Rejected' : 'Pending'}} + hr + .npc_ian.pull-left + p Once all members have either accepted or rejected, the quest begins. Only those that clicked "accept" will be able to participate in the quest and recieve the drops. If members are pending too long (inactive?), you can start without them by clicking "Begin". + button.btn.btn-small.btn-warning(ng-click='party.$questAccept({"force":true})') Begin //-TODO Cancel button //-TODO Both force-start & cancel should only be available to quest-initiator @@ -97,6 +100,8 @@ a.pull-right.gem-wallet(popover-trigger='mouseenter', popover-title='Guild Bank' div(ng-show='!group._editing') img.pull-right(ng-show='group.logo', style='max-width:150px', ng-src='{{group.logo}}') markdown(ng-model='group.description') + hr + small.muted Group ID: {{group._id}} include ./challenge-box diff --git a/views/shared/modals/quests.jade b/views/shared/modals/quests.jade index 3f931c757a..bc32ff28c5 100644 --- a/views/shared/modals/quests.jade +++ b/views/shared/modals/quests.jade @@ -28,12 +28,12 @@ div(modal='modals.showQuest', ng-controller='InventoryCtrl') hr div(style='clear:left;clear:right') .npc_ian.pull-left - p Clicking "Invite" will send an invitation to your party members. When all members have accepted or denied, the quest begins. If they take to long, feel free to force-start the quest under Options > Social > Party. + p Clicking "Invite" will send an invitation to your party members. When all members have accepted or denied, the quest begins. See status under Options > Social > Party. .modal-footer button.btn.btn-default.btn-small.btn-cancel(ng-click='closeQuest()') Cancel button.btn.btn-default.btn-primary(ng-click='questInit()') Invite Party -div(modal='party.quest.key && !questHold && party.quest.members[user._id] == undefined') +div(modal='party.quest.key && !party.quest.active && !questHold && party.quest.members[user._id] == undefined') .modal-header h3 Quest Invitation: {{Content.quests[party.quest.key].text}} .modal-body