From ad0c953d0a5af13d39a967f30a143f68f15e6e24 Mon Sep 17 00:00:00 2001 From: Tyler Renelle Date: Thu, 5 Dec 2013 11:05:47 -0700 Subject: [PATCH] classes: misc spell-casting fixes, support party spells --- public/js/controllers/rootCtrl.js | 9 +++++---- src/controllers/user.js | 11 +++++++---- src/models/user.js | 10 +++++----- views/shared/header/header.jade | 2 +- 4 files changed, 18 insertions(+), 14 deletions(-) diff --git a/public/js/controllers/rootCtrl.js b/public/js/controllers/rootCtrl.js index fdbacd9ceb..17525266ab 100644 --- a/public/js/controllers/rootCtrl.js +++ b/public/js/controllers/rootCtrl.js @@ -3,8 +3,8 @@ /* Make user and settings available for everyone through root scope. */ -habitrpg.controller("RootCtrl", ['$scope', '$rootScope', '$location', 'User', '$http', '$state', '$stateParams', 'Notification', - function($scope, $rootScope, $location, User, $http, $state, $stateParams, Notification) { +habitrpg.controller("RootCtrl", ['$scope', '$rootScope', '$location', 'User', '$http', '$state', '$stateParams', 'Notification', 'Groups', + function($scope, $rootScope, $location, User, $http, $state, $stateParams, Notification, Groups) { $rootScope.modals = {}; $rootScope.modals.achievements = {}; $rootScope.User = User; @@ -150,12 +150,13 @@ habitrpg.controller("RootCtrl", ['$scope', '$rootScope', '$location', 'User', '$ $rootScope.applyingAction = true; $scope.spell = spell; if (spell.target == 'self') { - debugger var tasks = User.user.habits.concat(User.user.dailys).concat(User.user.todos); User.user.tasks = _.object(_.pluck(tasks,'id'), tasks); $scope.castEnd(null, 'self'); } else if (spell.target == 'party') { - //TODO $scope.castEnd() + var party = Groups.party(); + party = (_.isArray(party) ? party : []).concat(User.user); + $scope.castEnd(party, 'party'); } } diff --git a/src/controllers/user.js b/src/controllers/user.js index aefa137942..2cad317dfa 100644 --- a/src/controllers/user.js +++ b/src/controllers/user.js @@ -517,12 +517,15 @@ api.cast = function(req, res) { Group.findOne({type: 'party', members: {'$in': [user._id]}}).populate('members').exec(cb); }, function(group, cb) { + if (!group) group = {members:[user]}; spell.cast(user, group.members); - var series = _.reduce(group.members, function(m,v){ - m.push(function(cb2){v.save(cb2);}) - return m; - }, []); + var series = _.transform(group.members, function(m,v,k){ + m[k] = function(cb2){v.save(cb2);} + }); async.series(series, cb); + }, + function(whatever, cb){ + user.save(cb); } ], done); break; diff --git a/src/models/user.js b/src/models/user.js index 3d56176fbf..2fd4d1ad42 100644 --- a/src/models/user.js +++ b/src/models/user.js @@ -223,11 +223,11 @@ var UserSchema = new Schema({ name: String, }, stats: { - hp: Number, - mp: Number, - exp: Number, - gp: Number, - lvl: Number, + hp: {type: Number, 'default': 50}, + mp: {type: Number, 'default': 10}, + exp: {type: Number, 'default': 0}, + gp: {type: Number, 'default': 0}, + lvl: {type: Number, 'default': 1}, // Class System 'class': {type: String, enum: ['warrior','rogue','wizard','rogue'], 'default': 'warrior'}, diff --git a/views/shared/header/header.jade b/views/shared/header/header.jade index 051c71d8db..ee8fde65d9 100644 --- a/views/shared/header/header.jade +++ b/views/shared/header/header.jade @@ -24,7 +24,7 @@ span(ng-show='user.history.exp') a(ng-click='toggleChart("exp")', tooltip='Progress') i.icon-signal - .meter.mana(title='Mana', ng-if='user.stats.class') + .meter.mana(title='Mana', ng-if='user.flags.classSelected') .bar(style='width: {{percent(user.stats.mp, user.stats.int+10)}}%;') span.meter-text i.icon-fire