From 506ac6ebe776502ddf3ebecb3f1a81876a17050d Mon Sep 17 00:00:00 2001 From: Taldin Date: Thu, 30 Oct 2014 12:35:40 -0700 Subject: [PATCH] added mountmaster support inventoryCtrl: Changed Matt to show 90 mounts instead of 180 notificationCtrl: added mountmaster achievement test userCtrl: added scope.profile.mountCount user.js: added fields for mountMaster and mountMasterCount (not used yet), mountCount function modals/achievements.jade - added modal dialog for mountmaster (note: wolf graphic was not available locally) profiles/achievements - jade - mountmaster added stats.jade -- uncommented broken Mounts Tamed section, since it works now --- public/js/controllers/inventoryCtrl.js | 3 ++- public/js/controllers/notificationCtrl.js | 12 ++++++++++++ public/js/controllers/userCtrl.js | 1 + src/models/user.js | 12 ++++++++++++ views/shared/modals/achievements.jade | 12 ++++++++++++ views/shared/profiles/achievements.jade | 8 ++++++++ views/shared/profiles/stats.jade | 8 +++++--- 7 files changed, 52 insertions(+), 4 deletions(-) diff --git a/public/js/controllers/inventoryCtrl.js b/public/js/controllers/inventoryCtrl.js index e1b47a47f0..c302de46d1 100644 --- a/public/js/controllers/inventoryCtrl.js +++ b/public/js/controllers/inventoryCtrl.js @@ -8,7 +8,8 @@ habitrpg.controller("InventoryCtrl", ['$rootScope', '$scope', '$window', 'User', $scope.selectedEgg = null; // {index: 1, name: "Tiger", value: 5} $scope.selectedPotion = null; // {index: 5, name: "Red", value: 3} $scope.totalPets = _.size(Content.dropEggs) * _.size(Content.hatchingPotions); - $scope.totalMounts = _.size(_.reject(Content.eggs,function(egg){return egg.noMount})) * _.size(Content.hatchingPotions); +// previously: $scope.totalMounts = _.size(_.reject(Content.eggs,function(egg){return egg.noMount})) * _.size(Content.hatchingPotions); + $scope.totalMounts = _.size(Content.dropEggs) * _.size(Content.hatchingPotions); // count egg, food, hatchingPotion stack totals var countStacks = function(items) { return _.reduce(items,function(m,v){return m+v;},0);} diff --git a/public/js/controllers/notificationCtrl.js b/public/js/controllers/notificationCtrl.js index d2436c03b4..5746299c4d 100644 --- a/public/js/controllers/notificationCtrl.js +++ b/public/js/controllers/notificationCtrl.js @@ -113,6 +113,18 @@ habitrpg.controller('NotificationCtrl', } }, true); + +//start mountmaster test + $rootScope.$watch('user.items.mounts', function(after, before){ + if(_.size(after) === _.size(before) || + Shared.countMounts(null, after) < 90) return; + if (User.user.achievements.mountMaster == false) { + User.user.achievements.mountMaster = true; + $rootScope.openModal('achievements/mountMaster'); + } + }, true); +// end mountmaster test + $rootScope.$watch('user.achievements.rebirths', function(after, before){ if(after === before) return; $rootScope.openModal('achievements/rebirth'); diff --git a/public/js/controllers/userCtrl.js b/public/js/controllers/userCtrl.js index 71f185c6ff..47735c3454 100644 --- a/public/js/controllers/userCtrl.js +++ b/public/js/controllers/userCtrl.js @@ -4,6 +4,7 @@ habitrpg.controller("UserCtrl", ['$rootScope', '$scope', '$location', 'User', '$ function($rootScope, $scope, $location, User, $http, $state, Guide, Shared) { $scope.profile = User.user; $scope.profile.petCount = Shared.countPets(null, $scope.profile.items.pets); + $scope.profile.mountCount = Shared.countMounts(null, $scope.profile.items.mounts); //added for mountmaster prep $scope.hideUserAvatar = function() { $(".userAvatar").hide(); }; diff --git a/src/models/user.js b/src/models/user.js index a0c5913045..25c848edb2 100644 --- a/src/models/user.js +++ b/src/models/user.js @@ -36,6 +36,8 @@ var UserSchema = new Schema({ ultimateGear: Boolean, beastMaster: Boolean, beastMasterCount: Number, + mountMaster: Boolean, + mountMasterCount: Number, veteran: Boolean, snowball: Number, spookDust: Number, @@ -412,6 +414,16 @@ UserSchema.pre('save', function(next) { if (petCount >= 90 || this.achievements.beastMasterCount > 0) { this.achievements.beastMaster = true } +// mountmaster stuff starts + var mountCount = shared.countMounts(_.reduce(this.items.mounts,function(m,v){ + //HOTFIX - Remove when solution is found, the first argument passed to reduce is a function + if(_.isFunction(v)) return m; + return m+(v?1:0)},0), this.items.mounts); + + if (mountCount >= 90 || this.achievements.mountMasterCount > 0) { + this.achievements.mountMaster = true + } +// mountmaster stuff ends // TODO remove this after 11/01 if (!this.items.pets['JackOLantern-Base'] && moment().isBefore('2014-11-01')) diff --git a/views/shared/modals/achievements.jade b/views/shared/modals/achievements.jade index 1315823510..a9df319e8d 100644 --- a/views/shared/modals/achievements.jade +++ b/views/shared/modals/achievements.jade @@ -29,6 +29,18 @@ script(id='modals/achievements/beastMaster.html', type='text/ng-template') .modal-footer button.btn.btn-default(ng-click='$close()')=env.t('ok') + +// Beast Master +script(id='modals/achievements/mountMaster.html', type='text/ng-template') + .modal-header + h4=env.t('modalAchievement') + .modal-body + p + .achievement.achievement-wolf + =env.t('mountAchievement') + .modal-footer + button.btn.btn-default(ng-click='$close()')=env.t('ok') + // Contributor // activated by user.flags.contributor script(id='modals/achievements/contributor.html', type='text/ng-template') diff --git a/views/shared/profiles/achievements.jade b/views/shared/profiles/achievements.jade index bc8689d17d..ac61999d44 100644 --- a/views/shared/profiles/achievements.jade +++ b/views/shared/profiles/achievements.jade @@ -87,6 +87,14 @@ div(ng-if='profile.achievements.beastMaster || user._id == profile._id') =env.t('beastMastText2', {count: "{{profile.achievements.beastMasterCount}}"}) hr +div(ng-if='profile.achievements.mountMaster || user._id == profile._id') + .achievement.achievement-rat(ng-show='profile.achievements.mountMaster') + div(ng-class='{muted: !profile.achievements.mountMaster}') + h5=env.t('mountMastName') + small=env.t('mountMastText') + =env.t('beastMastText2', {count: "{{profile.achievements.mountMasterCount}}"}) + hr + div(ng-if='profile.achievements.rebirths') .achievement.achievement-sun h5(ng-if='profile.achievements.rebirths == 1')=env.t('rebirthBegan') diff --git a/views/shared/profiles/stats.jade b/views/shared/profiles/stats.jade index 3a3e512c66..155c8fb9db 100644 --- a/views/shared/profiles/stats.jade +++ b/views/shared/profiles/stats.jade @@ -71,8 +71,10 @@ table.table.table-striped(ng-show='user.flags.dropsEnabled') td strong=env.t('petsFound') | : {{profile.petCount}} -// Dunno why this doesn't work // -// tr +// this works now // +h4(class=mobile?'item item-divider':'')=env.t('mounts') +table.table.table-striped(ng-show='user.flags.dropsEnabled') + tr td strong=env.t('mountsTamed') - | : {{profile.mountCount}} // + | : {{profile.mountCount}}