diff --git a/public/js/controllers/authCtrl.js b/public/js/controllers/authCtrl.js index 6bdd4c0b83..2cf594965d 100644 --- a/public/js/controllers/authCtrl.js +++ b/public/js/controllers/authCtrl.js @@ -84,12 +84,14 @@ angular.module('habitrpg') $scope._expandedMenu = ($scope._expandedMenu == menu) ? null : menu; }; - function selectNotificationValue(mysteryValue, invitationValue, unallocatedValue, messageValue, noneValue) { + function selectNotificationValue(mysteryValue, invitationValue, holidayCardValue, unallocatedValue, messageValue, noneValue) { var user = $scope.user; if (user.purchased && user.purchased.plan && user.purchased.plan.mysteryItems && user.purchased.plan.mysteryItems.length) { return mysteryValue; } else if ((user.invitations.party && user.invitations.party.id) || (user.invitations.guilds && user.invitations.guilds.length > 0)) { return invitationValue; + } else if ((user.items.special.valentineReceived[0] || user.items.special.nyeReceived[0])) { + return holidayCardValue; } else if (user.flags.classSelected && !(user.preferences && user.preferences.disableClasses) && user.stats.points) { return unallocatedValue; } else if (!(_.isEmpty(user.newMessages))) { @@ -103,13 +105,14 @@ angular.module('habitrpg') return selectNotificationValue( "glyphicon-gift", "glyphicon-user", + "glyphicon-envelope", "glyphicon-plus-sign", "glyphicon-comment", "glyphicon-comment inactive"); }; $scope.hasNoNotifications = function() { - return selectNotificationValue(false, false, false, false, true); + return selectNotificationValue(false, false, false, false, false, true); } // ------ Social ---------- diff --git a/src/controllers/user.js b/src/controllers/user.js index e7125c51c0..627670940b 100644 --- a/src/controllers/user.js +++ b/src/controllers/user.js @@ -389,7 +389,7 @@ api.cast = function(req, res, next) { series.push(function(cb2){found.save(cb2)}); } - if (group) { + if (group && !spell.silent) { series.push(function(cb2){ var message = '`'+user.profile.name+' casts '+spell.text() + (targetType=='user' ? ' on '+found.profile.name : ' for the party')+'.`'; group.sendChat(message); diff --git a/views/options/inventory/inventory.jade b/views/options/inventory/inventory.jade index c8d066ba93..a90ebe977e 100644 --- a/views/options/inventory/inventory.jade +++ b/views/options/inventory/inventory.jade @@ -244,3 +244,8 @@ script(type='text/ng-template', id='partials/options.inventory.drops.html') p | 20  span.shop_gold + div + button.customize-option(popover='{{::Content.spells.special.valentine.notes()}}', popover-title='{{::Content.spells.special.valentine.text()}}', popover-trigger='mouseenter', popover-placement='right', popover-append-to-body='true', ng-click='castStart(Content.spells.special.valentine)', class='inventory_special_valentine') + p + | {{Content.spells.special.valentine.value}} + span(class='shop_gold') \ No newline at end of file diff --git a/views/options/profile.jade b/views/options/profile.jade index c2250f06b8..1ab07efe1b 100644 --- a/views/options/profile.jade +++ b/views/options/profile.jade @@ -55,10 +55,10 @@ mixin customizeProfile(mobile) // Color li.customize-menu menu(label=env.t('color')) - each v,k in {'c8c8c8':'white','903a00':'brown','cfb853':'blond','ec720f':'red','2e2e2e':'black'} - button(type='button', class='customize-option hair', style='background-color:##{k};', ng-click='set({"preferences.hair.color": "#{v}"})') + each color in ['white','brown','blond','red','black'] + button(type='button', class='#{path=="skin" ? "skin_"+color : "customize-option hair hair_bangs_1_"+color}', ng-click='set({"preferences.hair.color": "#{color}"})') each color in ['candycane','frost','winternight','holly'] - button(type='button', ng-if='user.purchased.hair.color.#{color}', class='customize-option hair hair_bangs_1_#{color}', style='width: 40px; height: 40px;', ng-click='unlock("hair.color.#{color}")') + button(type='button', ng-if='user.purchased.hair.color.#{color}', class='customize-option hair hair_bangs_1_#{color}', ng-click='unlock("hair.color.#{color}")') each color in ['pblue','pgreen','porange','ppink','ppurple','pyellow'] button(type='button', ng-if='user.purchased.hair.color.#{color}', class='customize-option hair hair_bangs_1_#{color}', ng-click='unlock("hair.color.#{color}")') +buyPref('hair.color', ['rainbow','yellow','green','purple','blue','TRUred'], 'rainbowColors') @@ -82,12 +82,20 @@ mixin customizeProfile(mobile) // Purchasable hairstyles menu(label=env.t('hairSet1')) - - var colors = [2,4,5,6,7,8] - span(ng-hide='#{showPath("user.purchased.hair.base", colors, "&&")}') + - var styles = [2,4,5,6,7,8] + span(ng-hide='#{showPath("user.purchased.hair.base", styles, "&&")}') +gemCost(2) - button.btn.btn-xs(ng-click='#{unlockPath("hair.base",colors)}')!= env.t('unlockSet',{cost:5}) + ' ' - each num in colors + button.btn.btn-xs(ng-click='#{unlockPath("hair.base",styles)}')!= env.t('unlockSet',{cost:5}) + ' ' + each num in styles button(class='hair_base_#{num}_{{user.preferences.hair.color}} customize-option', type='button', ng-class='{locked: !user.purchased.hair.base["#{num}"]}', ng-click='unlock("hair.base.#{num}")') + menu(label=env.t('hairSet2')) + - var styles = [9,10,11,12,13,14] + span(ng-hide='#{showPath("user.purchased.hair.base", styles, "&&")}') + +gemCost(2) + button.btn.btn-xs(ng-click='#{unlockPath("hair.base", styles)}')!= env.t('unlockSet', {cost: 5}) + ' ' + each num in styles + button(class='hair_base_#{num}_{{user.preferences.hair.color}} customize-option', type='button', ng-class='{locked: !user.purchased.hair.base["#{num}"]}', ng-click='unlock("hair.base.#{num}")') + // Flower li.customize-menu diff --git a/views/shared/header/menu.jade b/views/shared/header/menu.jade index a08920b3af..adb5e7231f 100644 --- a/views/shared/header/menu.jade +++ b/views/shared/header/menu.jade @@ -202,6 +202,11 @@ nav.toolbar(ng-controller='AuthCtrl', ng-class='{active: isToolbarHidden}') span {{v.name}} a(ng-click='Groups.seenMessage(k)', popover=env.t('clear'),popover-placement='right',popover-trigger='mouseenter',popover-append-to-body='true') span.glyphicon.glyphicon-remove-circle + li(ng-if='user.items.special.valentineReceived[0] || user.items.special.nyeReceived[0]') + a(ng-click='$state.go("options.inventory.drops"); expandMenu(null)') + span.glyphicon.glyphicon-envelope + span=env.t('holidayCard') + ul.toolbar-controls //-li //-a(ng-click='') Clear all diff --git a/views/shared/modals/limited.jade b/views/shared/modals/limited.jade index bdf7049fa9..e9889e88e3 100644 --- a/views/shared/modals/limited.jade +++ b/views/shared/modals/limited.jade @@ -8,22 +8,15 @@ script(id='modals/valentine.html', type='text/ng-template') .bg-info(style='padding:10px') p To: {{user.profile.name}}, From: {{user.items.special.valentineReceived[0]}} hr - div(ng-switch='Math.floor(Math.random()*3)') - ul.list-unstyled(ng-switch-when='0') - li "Roses are red - li My Dailies are blue - li I'm happy that I'm - li In a Party with you!" - ul.list-unstyled(ng-switch-when='1') - li "Roses are red - li Violets are nice - li Let's get together - li And fight against Vice!" - ul.list-unstyled(ng-switch-default) - li "Roses are red - li This poem style is old - li I hope that you like this - li Cuz it cost ten gold." + ul.list-unstyled(ng-switch='::Math.floor(Math.random()*4)') + li(ng-switch-when='0') + !=env.t('valentine0', {lineBreak:"
"}) + li(ng-switch-when='1') + !=env.t('valentine1', {lineBreak:"
"}) + li(ng-switch-when='2') + !=env.t('valentine2', {lineBreak:"
"}) + li(ng-switch-default) + !=env.t('valentine3', {lineBreak:"
"}) p small For enduring such a saccharine poem, you both receive the "Adoring Friends" badge! .modal-footer diff --git a/views/shared/new-stuff.jade b/views/shared/new-stuff.jade index a88b871f6e..4d39eb56e4 100644 --- a/views/shared/new-stuff.jade +++ b/views/shared/new-stuff.jade @@ -1,21 +1,33 @@ -h5 2/8/2015 - EMAIL NOTIFICATIONS AND LOGIN TYPE SWITCHING! +h5 2/12/2015 - VALENTINE'S DAY AND NEW HAIRSTYLES! hr tr td - h5 Email Notifications - p We've implemented email notifications for a variety of events, including receiving a Private Message, being invited to a Party, Guild, or Quest, and receiving a gift of Gems or a Subscription! We've got some more coming up, too, including the much-requested check-in reminders. - p Don't want to receive a certain type of notification? No problem! Just go to Notification Settings to tell us exactly which ones you do and do not want to receive. Our messenger dragons will be happy to comply! - p.small.muted by paglias and Lemoness + h5 Happy Valentine's Day! + p Help motivate all of the lovely people in your life by sending them a caring valentine. Valentines can be purchased for 10 gold from the Item Store. For spreading love and joy throughout the community, both the giver AND the receiver get a coveted "adoring friends" badge. Hooray! + p.small.muted by Lemoness and SabreCat tr td - h5 Login Type Switching - p Want to change your email address, or switch from Facebook login to email login (or vice versa)? Good news! Now you can switch it yourself, under Settings! - p.small.muted by Lefnire + h5 New Hairstyles! + .promo_updos.pull-right + p There are a new set of updo hairstyles available in the Avatar Customization page! Have fun customizing your characters. + p.small.muted by Crystalphoenix, Mariahm, Painter de Cluster, Leephon, Beffymaroo, Sungabraverday, Lemoness, and Bailey hr a(href='/static/old-news', target='_blank') Read older news mixin oldNews + h5 2/8/2015 + tr + td + h5 Email Notifications + p We've implemented email notifications for a variety of events, including receiving a Private Message, being invited to a Party, Guild, or Quest, and receiving a gift of Gems or a Subscription! We've got some more coming up, too, including the much-requested check-in reminders. + p Don't want to receive a certain type of notification? No problem! Just go to Notification Settings to tell us exactly which ones you do and do not want to receive. Our messenger dragons will be happy to comply! + p.small.muted by paglias and Lemoness + tr + td + h5 Login Type Switching + p Want to change your email address, or switch from Facebook login to email login? Good news! Now you can switch it yourself, under Settings! + p.small.muted by Lefnire h5 2/3/2015 tr td