diff --git a/migrations/20131204_classes.js b/migrations/20131204_classes.js index 4527b4b562..bf03f92740 100644 --- a/migrations/20131204_classes.js +++ b/migrations/20131204_classes.js @@ -7,6 +7,8 @@ db.users.find().forEach(function(user){ + user.stats.class = 'warrior'; + // grant backer/contrib gear, rather than using js logic // migrate current owned items diff --git a/public/js/controllers/tasksCtrl.js b/public/js/controllers/tasksCtrl.js index cd8a10e1cf..6544e1bb0d 100644 --- a/public/js/controllers/tasksCtrl.js +++ b/public/js/controllers/tasksCtrl.js @@ -106,17 +106,30 @@ habitrpg.controller("TasksCtrl", ['$scope', '$rootScope', '$location', 'User', ' var updateStore = function(){ var updated = window.habitrpgShared.items.updateStore(User.user); - // Figure out whether we wanna put this in habitrpg-shared - var sorted = [updated.weapon, updated.armor, updated.head, updated.shield, updated.potion, updated.reroll]; + // Do we wanna put this in habitrpg-shared? + var sorted = _.chain(updated) + .toArray() + .sortBy(function(item){ + switch (item.type) { + case 'weapon': return 1; + case 'armor': return 2; + case 'head': return 3; + case 'shield': return 4; + case 'potion': return 5; + case 'reroll': return 6; + default: return 7; + } + }) + .value(); $scope.itemStore = sorted; } updateStore(); - $scope.buy = function(type) { - var hasEnough = window.habitrpgShared.items.buyItem(User.user, type); + $scope.buy = function(item) { + var hasEnough = window.habitrpgShared.items.buyItem(User.user, item); if (hasEnough) { - User.log({op: "buy", type: type}); + User.log({op: "buy", key: item.key}); Notification.text("Item purchased."); updateStore(); } else { diff --git a/src/controllers/user.js b/src/controllers/user.js index 2cad317dfa..fcae5a6596 100644 --- a/src/controllers/user.js +++ b/src/controllers/user.js @@ -204,11 +204,11 @@ api.clearCompleted = function(req, res, next) { */ api.buy = function(req, res, next) { var user = res.locals.user; - var type = req.params.type; - if (!type.match(/potion|weapon|armor|head|shield/)) { // if (item !== 'potion' && !items.items.gear.flat[item]) + var key = req.params.key; + if (key !== 'potion' && !items.items.gear.flat[key]) { return res.json(400, {err: ":item must be a supported key, see https://github.com/HabitRPG/habitrpg-shared/blob/master/script/items.coffee"}); } - var hasEnough = items.buyItem(user, type); + var hasEnough = items.buyItem(user, items.items.gear.flat[key]); if (hasEnough) { return user.save(function(err, saved) { if (err) return res.json(500, {err: err}); @@ -565,6 +565,7 @@ api.batchUpdate = function(req, res, next) { req.params.id = action.data && action.data.id; req.params.direction = action.dir; req.params.type = action.type; + req.params.key = action.key; req.body = action.data; res.send = res.json = function(code, data) { if (_.isNumber(code) && code >= 400) { diff --git a/src/routes/api.js b/src/routes/api.js index 34c3c3327d..8329c4a511 100644 --- a/src/routes/api.js +++ b/src/routes/api.js @@ -48,7 +48,7 @@ if (nconf.get('NODE_ENV') == 'development') { } /* Items*/ -router.post('/user/buy/:type', auth.auth, cron, user.buy); +router.post('/user/buy/:key', auth.auth, cron, user.buy); /* User*/ router.get('/user', auth.auth, cron, user.getUser); diff --git a/views/shared/tasks/lists.jade b/views/shared/tasks/lists.jade index 796df6579f..05ad059d15 100644 --- a/views/shared/tasks/lists.jade +++ b/views/shared/tasks/lists.jade @@ -55,7 +55,7 @@ script(id='templates/habitrpg-tasks.html', type="text/ng-template") .task-controls a.task-action-btn.btn-reroll(bo-if='item.type=="reroll"', ng-click='modals.reroll = true') i.icon-repeat - a.money.btn-buy.item-btn(bo-if='item.type!="reroll"', ng-click='buy(item.type)') + a.money.btn-buy.item-btn(bo-if='item.type!="reroll"', ng-click='buy(item)') span.reward-cost {{item.value}} span.shop_gold // main content