diff --git a/common/locales/en/limited.json b/common/locales/en/limited.json
index d69bd0e7fe..4700d40325 100644
--- a/common/locales/en/limited.json
+++ b/common/locales/en/limited.json
@@ -25,7 +25,7 @@
"seasonalShop": "Seasonal Shop",
"seasonalShopClosedTitle": "<%= linkStart %>Siena Leslie<%= linkEnd %>",
"seasonalShopTitle": "<%= linkStart %>Seasonal Sorceress<%= linkEnd %>",
- "seasonalShopClosedText": "The Seasonal Shop is currently closed!! I don't know where the Seasonal Sorceress is now, but I bet she'll be back during the next <%= linkStart %>Grand Gala<%= linkEnd %>!",
+ "seasonalShopClosedText": "The Seasonal Shop is currently closed!! I don't know where the Seasonal Sorceress is now, but I bet she'll be back during the next Grand Gala!",
"seasonalShopText": "Welcome to the Seasonal Shop!! We're stocking springtime Seasonal Edition goodies at the moment. Everything here will be available to purchase during the Spring Fling event each year, but we're only open until April 30th, so be sure to stock up now, or you'll have to wait a year to buy these items again!",
"seasonalShopSummerText": "Welcome to the Seasonal Shop!! We're stocking summertime Seasonal Edition goodies at the moment. Everything here will be available to purchase during the Summer Splash event each year, but we're only open until July 31st, so be sure to stock up now, or you'll have to wait a year to buy these items again!",
"seasonalShopRebirth": "If you've used the Orb of Rebirth, you can repurchase this equipment in the Rewards Column after you unlock the Item Shop. Initially, you'll only be able to purchase the items for your current class (Warrior by default), but fear not, the other class-specific items will become available if you switch to that class.",
diff --git a/migrations/new_stuff.js b/migrations/new_stuff.js
index df2d59e795..9d8b796c69 100644
--- a/migrations/new_stuff.js
+++ b/migrations/new_stuff.js
@@ -1 +1,63 @@
-db.users.update({},{$set:{'flags.newStuff':true}},{multi:true})
\ No newline at end of file
+var migrationName = 'new_stuff.js';
+var authorName = 'Sabe'; // in case script author needs to know when their ...
+var authorUuid = '7f14ed62-5408-4e1b-be83-ada62d504931'; //... own data is done
+
+/*
+ * set the newStuff flag in all user accounts so they see a Bailey message
+ */
+
+var dbserver = 'localhost:27017'; // FOR TEST DATABASE
+// var dbserver = 'username:password@ds031379-a0.mongolab.com:31379'; // FOR PRODUCTION DATABASE
+var dbname = 'habitrpg';
+
+var mongo = require('mongoskin');
+var _ = require('lodash');
+
+var dbUsers = mongo.db(dbserver + '/' + dbname + '?auto_reconnect').collection('users');
+
+// specify a query to limit the affected users (empty for all users):
+var query = {
+ 'flags.newStuff':false
+};
+
+// specify fields we are interested in to limit retrieved data (empty if we're not reading data):
+var fields = {
+ 'flags.newStuff':1
+};
+
+console.warn('Updating users...');
+var progressCount = 1000;
+var count = 0;
+dbUsers.findEach(query, fields, {batchSize:250}, function(err, user) {
+ if (err) { return exiting(1, 'ERROR! ' + err); }
+ if (!user) {
+ console.warn('All appropriate users found and modified.');
+ return displayData();
+ }
+ count++;
+
+ // specify user data to change:
+ var set = {'migration':migrationName, 'flags.newStuff':true};
+
+ dbUsers.update({_id:user._id}, {$set:set});
+
+ if (count%progressCount == 0) console.warn(count + ' ' + user._id);
+ if (user._id == authorUuid) console.warn(authorName + ' processed');
+});
+
+
+function displayData() {
+ console.warn('\n' + count + ' users processed\n');
+ return exiting(0);
+}
+
+
+function exiting(code, msg) {
+ code = code || 0; // 0 = success
+ if (code && !msg) { msg = 'ERROR!'; }
+ if (msg) {
+ if (code) { console.error(msg); }
+ else { console.log( msg); }
+ }
+ process.exit(code);
+}
diff --git a/website/views/options/inventory/seasonal-shop.jade b/website/views/options/inventory/seasonal-shop.jade
index 012c7b3a77..73c6d1cfcc 100644
--- a/website/views/options/inventory/seasonal-shop.jade
+++ b/website/views/options/inventory/seasonal-shop.jade
@@ -1,15 +1,15 @@
.container-fluid
.stable.row: .col-xs-12
- .seasonalshop_summer2015.pull-left-sm.col-centered
+ .seasonalshop_closed.pull-left-sm.col-centered
.popover.static-popover.fade.right.in.pull-left-sm.col-centered
.arrow.hidden-xs
- h3.popover-title!=env.t('seasonalShopTitle', {linkStart:"", linkEnd: ""})
+ h3.popover-title!=env.t('seasonalShopClosedTitle', {linkStart:"", linkEnd: ""})
.popover-content
- p!=env.t('seasonalShopSummerText')
+ p!=env.t('seasonalShopClosedText')
- .well(ng-if='User.user.achievements.rebirths > 0')=env.t('seasonalShopRebirth')
+ // .well(ng-if='User.user.achievements.rebirths > 0')=env.t('seasonalShopRebirth')
- li.customize-menu.inventory-gear
+ // li.customize-menu.inventory-gear
menu.pets-menu(label='{{::label}}', ng-repeat='(set,label) in ::{summerWarrior:env.t("daringSwashbucklerSet"), summerMage:env.t("emeraldMermageSet"), summerHealer:env.t("reefSeahealerSet"), summerRogue:env.t("roguishPirateSet")}')
div(ng-repeat='item in ::getSeasonalShopArray(set)',
ng-class="{transparent: user.items.gear.owned[item.key] !== undefined}")
@@ -22,7 +22,7 @@
| {{((item.specialClass == "wizard") && (item.type == "weapon")) + 1}}
span.Pet_Currency_Gem1x.inline-gems
- // menu.pets-menu(label=env.t('quests'))
+ menu.pets-menu(label=env.t('quests'))
div(ng-repeat='quest in ::getSeasonalShopQuests()')
button.customize-option(ng-class='(quest.previous && !user.achievements.quests[quest.previous]) ? "inventory_quest_scroll_locked inventory_quest_scroll_{{::quest.key}}_locked locked" : "inventory_quest_scroll inventory_quest_scroll_{{::quest.key}}"'
data-popover-html="{{::quest.previous && !user.achievements.quests[quest.previous] ? env.t('scrollsPre') : questPopover(quest) | markdown}}",
@@ -42,7 +42,7 @@
p {{::Content.spells.special.seafoam.value}}
span(class='shop_gold')
- // div
+ div
button.customize-option(popover='{{::Content.spells.special.nye.notes()}}', popover-title='{{::Content.spells.special.nye.text()}}', popover-trigger='mouseenter', popover-placement='right', popover-append-to-body='true', ng-click='castStart(Content.spells.special.nye)', class='inventory_special_nye')
p {{Content.spells.special.nye.value}}
span(class='shop_gold')
diff --git a/website/views/shared/new-stuff.jade b/website/views/shared/new-stuff.jade
index 1daa232b89..dc48961ac1 100644
--- a/website/views/shared/new-stuff.jade
+++ b/website/views/shared/new-stuff.jade
@@ -1,43 +1,49 @@
-h5 7/31/2015 - HABITICA NAMING DAY AND LAST CHANCE FOR SUMMER SPLASH
+h5 8/2/2015 - AUGUST MYSTERY BOX!
hr
tr
td
- .achievement_habiticaDay.pull-right
- h5 Habitica Naming Day!
- p It's finally here! HabitRPG has become Habitica. Your accounts should still stay exactly the same and work normally, just with some of the names and references changed. (For example, habitrpg.com now redirects to habitica.com.)
- br
- p In honor of the first annual Habitica Naming Day, we've given everyone an achievement, as well as some awesome treats...
- p.small.muted by cheerskevin, Lemoness, and SabreCat
- tr
- td
- span.Mount_Body_Gryphon-RoyalPurple.pull-right
- span.Mount_Head_Gryphon-RoyalPurple.pull-right(style='margin:0')
- h5 Habitica Gryphon Mount and Contest
- p Our new logo features a Gryphon, and now, so does your stable! We've given everyone a Royal Purple Gryphon Mount, under Inventory > Mounts.
- br
- p Furthermore, we need your help to give our Gryphon a name! Check out the Official Name the Gryphon Challenge here. If we choose your name for the Gryphon in our logo, you'll win 30 Gems. You have until August 10th to submit a name.
- p.small.muted by Lemoness and Baconsaur
- tr
- td
- .promo_veteran_pets.pull-right
- h5 Veteran Pets
- p Since you are all veterans who have weathered the name change to Habitica, we've awarded everyone a Veteran Pet! If this is your first Veteran Pet, you've received the Veteran Wolf; if you already had the Wolf, you got the Veteran Tiger. You can find it under Inventory > Pets, in the Rare Pets section.
- p.small.muted by Lemoness and Shaner
- tr
- td
- .promo_summer_classes_2015.pull-right
- h5 Last Chance for Summer Splash Outfits, Hair and Skins, and Seafoam!
- p Today is the final day of the Summer Splash Festival, so if you still have any remaining Summer Splash Items that you want to buy, you'd better do it now! The Seasonal Edition items, Skins, and Hair Colors won't be back until next June, and if the Limited Edition items return they will have increased prices or changed art, so strike while the iron is hot!
- tr
- td
- .promo_mystery_201507.pull-right
- h5 Last Chance for Rad Surfer Item Set
- p Reminder: this is the final day to subscribe and receive the Rad Surfer Item Set! If you want the Rad Surfboard or the Rad Sunglasses, now's the time! Thanks so much for your support <3
+ .inventory_present_08.pull-right
+ h5 August Mystery Box
+ p How curious! All Habiticans who are subscribed during the month of August will receive the August Mystery Item Set, as well as the ability to buy Gems with Gold! The August Item Set will be revealed on the 24th, so keep your eyes peeled. Thanks for supporting the site <3
hr
a(href='/static/old-news', target='_blank') Read older news
mixin oldNews
+ h5 7/31/2015 - HABITICA NAMING DAY AND LAST CHANCE FOR SUMMER SPLASH
+ tr
+ td
+ .achievement_habiticaDay.pull-right
+ h5 Habitica Naming Day!
+ p It's finally here! HabitRPG has become Habitica. Your accounts should still stay exactly the same and work normally, just with some of the names and references changed. (For example, habitrpg.com now redirects to habitica.com.)
+ br
+ p In honor of the first annual Habitica Naming Day, we've given everyone an achievement, as well as some awesome treats...
+ p.small.muted by cheerskevin, Lemoness, and SabreCat
+ tr
+ td
+ span.Mount_Body_Gryphon-RoyalPurple.pull-right
+ span.Mount_Head_Gryphon-RoyalPurple.pull-right(style='margin:0')
+ h5 Habitica Gryphon Mount and Contest
+ p Our new logo features a Gryphon, and now, so does your stable! We've given everyone a Royal Purple Gryphon Mount, under Inventory > Mounts.
+ br
+ p Furthermore, we need your help to give our Gryphon a name! Check out the Official Name the Gryphon Challenge here. If we choose your name for the Gryphon in our logo, you'll win 30 Gems. You have until August 10th to submit a name.
+ p.small.muted by Lemoness and Baconsaur
+ tr
+ td
+ .promo_veteran_pets.pull-right
+ h5 Veteran Pets
+ p Since you are all veterans who have weathered the name change to Habitica, we've awarded everyone a Veteran Pet! If this is your first Veteran Pet, you've received the Veteran Wolf; if you already had the Wolf, you got the Veteran Tiger. You can find it under Inventory > Pets, in the Rare Pets section.
+ p.small.muted by Lemoness and Shaner
+ tr
+ td
+ .promo_summer_classes_2015.pull-right
+ h5 Last Chance for Summer Splash Outfits, Hair and Skins, and Seafoam!
+ p Today is the final day of the Summer Splash Festival, so if you still have any remaining Summer Splash Items that you want to buy, you'd better do it now! The Seasonal Edition items, Skins, and Hair Colors won't be back until next June, and if the Limited Edition items return they will have increased prices or changed art, so strike while the iron is hot!
+ tr
+ td
+ .promo_mystery_201507.pull-right
+ h5 Last Chance for Rad Surfer Item Set
+ p Reminder: this is the final day to subscribe and receive the Rad Surfer Item Set! If you want the Rad Surfboard or the Rad Sunglasses, now's the time! Thanks so much for your support <3
h5 7/29/2015 - HABITICA NAMING DAY ON JULY 31ST!
tr
td