feat(armoire): August additions

Also includes the August backgrounds and upgrades the "restock Armoire" migration to use @Alys's progressive output script.
This commit is contained in:
Sabe Jones
2015-08-04 12:45:01 -05:00
parent a8d98e5f57
commit 60e65a8bea
22 changed files with 8627 additions and 8490 deletions

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

Binary file not shown.

Before

Width:  |  Height:  |  Size: 222 KiB

After

Width:  |  Height:  |  Size: 238 KiB

File diff suppressed because it is too large Load Diff

Binary file not shown.

Before

Width:  |  Height:  |  Size: 25 KiB

After

Width:  |  Height:  |  Size: 25 KiB

File diff suppressed because it is too large Load Diff

Binary file not shown.

Before

Width:  |  Height:  |  Size: 109 KiB

After

Width:  |  Height:  |  Size: 110 KiB

File diff suppressed because it is too large Load Diff

Binary file not shown.

Before

Width:  |  Height:  |  Size: 88 KiB

After

Width:  |  Height:  |  Size: 88 KiB

File diff suppressed because it is too large Load Diff

Binary file not shown.

Before

Width:  |  Height:  |  Size: 551 KiB

After

Width:  |  Height:  |  Size: 551 KiB

File diff suppressed because it is too large Load Diff

Binary file not shown.

Before

Width:  |  Height:  |  Size: 235 KiB

After

Width:  |  Height:  |  Size: 236 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.0 KiB

View File

@@ -111,5 +111,13 @@
"backgroundGiantWaveText": "Giant Wave",
"backgroundGiantWaveNotes": "Surf a Giant Wave!",
"backgroundSunkenShipText": "Sunken Ship",
"backgroundSunkenShipNotes": "Explore a Sunken Ship."
"backgroundSunkenShipNotes": "Explore a Sunken Ship.",
"backgrounds082015": "SET 15: Released August 2015",
"backgroundPyramidsText": "Pyramids",
"backgroundPyramidsNotes": "Admire the Pyramids.",
"backgroundSunsetSavannahText": "Sunset Savannah",
"backgroundSunsetSavannahNotes": "Stalk across the Sunset Savannah.",
"backgroundTwinklyPartyLightsText": "Twinkly Party Lights",
"backgroundTwinklyPartyLightsNotes": "Dance under Twinkly Party Lights!"
}

View File

@@ -155,6 +155,10 @@
"weaponArmoireLunarSceptreNotes": "The healing power of this wand waxes and wanes. Increases Constitution by <%= con %> and Intelligence by <%= int %>. Enchanted Armoire: Soothing Lunar Set (Item 3 of 3).",
"weaponArmoireRancherLassoText": "Rancher Lasso",
"weaponArmoireRancherLassoNotes": "Lassos: the ideal tool for rounding up and wrangling. Increases Strength by <%= str %>, Perception by <%= per %>, and Intelligence by <%= int %>. Enchanted Armoire: Rancher Set (Item 3 of 3).",
"weaponArmoireMythmakerSwordText": "Mythmaker Sword",
"weaponArmoireMythmakerSwordNotes": "Though it may seem humble, this sword has made many mythic heroes. Increases Perception and Strength by <%= attrs %> each. Enchanted Armoire: Golden Toga Set (Item 3 of 3)",
"weaponArmoireIronCrookText": "Iron Crook",
"weaponArmoireIronCrookNotes": "Fiercely hammered from iron, this iron crook is good at herding sheep. Increases Perception and Strength by <%= attrs %> each. Enchanted Armoire: Horned Iron Set (Item 3 of 3)",
"armor": "armor",
@@ -319,6 +323,10 @@
"armorArmoireGladiatorArmorNotes": "To be a gladiator you must be not only cunning... but strong. Increases Perception by <%= per %> and Strength by <%= str %>. Enchanted Armoire: Gladiator Set (Item 2 of 3).",
"armorArmoireRancherRobesText": "Rancher Robes",
"armorArmoireRancherRobesNotes": "Wrangle your mounts and round up your pets while wearing these magical Rancher Robes! Increases Strength by <%= str %>, Perception by <%= per %>, and Intelligence by <%= int %>. Enchanted Armoire: Rancher Set (Item 2 of 3).",
"armorArmoireGoldenTogaText": "Golden Toga",
"armorArmoireGoldenTogaNotes": "This glimmering toga is only worn by true heroes. Increases Strength and Constitution by <%= attrs %> each. Enchanted Armoire: Golden Toga Set (Item 1 of 3).",
"armorArmoireHornedIronArmorText": "Horned Iron Armor",
"armorArmoireHornedIronArmorNotes": "Fiercely hammered from iron, this horned armor is nearly impossible to break. Increases Constitution by <%= con %> and Perception by <%= per %>. Enchanted Armoire: Horned Iron Set (Item 2 of 3).",
"headgear": "headgear",
@@ -485,6 +493,10 @@
"headArmoireBlueHairbowNotes": "Become perceptive, tough, and smart while wearing this beautiful Blue Hairbow! Increases Perception by <%= per %>, Constitution by <%= con %>, and Intelligence by <%= int %>. Enchanted Armoire: Independent Item.",
"headArmoireRoyalCrownText": "Royal Crown",
"headArmoireRoyalCrownNotes": "Hooray for the ruler, mighty and strong! Increases Strength by <%= str %>. Enchanted Armoire: Independent Item.",
"headArmoireGoldenLaurelsText": "Golden Laurels",
"headArmoireGoldenLaurelsNotes": "These golden laurels reward those who have conquered bad habits. Increses Perception and Constitution by <%= attrs %> each. Enchanted Armoire: Golden Toga Set (Item 2 of 3).",
"headArmoireHornedIronHelmText": "Horned Iron Helm",
"headArmoireHornedIronHelmNotes": "Fiercely hammered from iron, this horned helmet is nearly impossible to break. Increases Constitution by <%= con %> and Strength by <%= str %>. Enchanted Armoire: Horned Iron Set (Item 1 of 3).",
"offhand": "shield-hand item",

View File

@@ -169,6 +169,8 @@ gear =
basicCrossbow: text: t('weaponArmoireBasicCrossbowText'), notes: t('weaponArmoireBasicCrossbowNotes', {str: 5, per: 5, con: 5}), value: 100, str: 5, per: 5, con: 5, canOwn: ((u)-> u.items.gear.owned.weapon_armoire_basicCrossbow?)
lunarSceptre: text: t('weaponArmoireLunarSceptreText'), notes: t('weaponArmoireLunarSceptreNotes', {con: 7, int: 7}), value: 100, con: 7, int: 7, set: 'soothing', canOwn: ((u)-> u.items.gear.owned.weapon_armoire_lunarSceptre?)
rancherLasso: twoHanded:true, text: t('weaponArmoireRancherLassoText'), notes: t('weaponArmoireRancherLassoNotes', {str: 5, per: 5, int: 5}), value: 100, str: 5, per: 5, int: 5, set: 'rancher', canOwn: ((u)-> u.items.gear.owned.weapon_armoire_rancherLasso?)
mythmakerSword: text: t('weaponArmoireMythmakerSwordText'), notes: t('weaponArmoireMythmakerSwordNotes', {attrs: 6}), value: 100, str: 6, per: 6, set: 'goldenToga', canOwn: ((u)-> u.items.gear.owned.weapon_armoire_mythmakerSword?)
ironCrook: text: t('weaponArmoireIronCrookText'), notes: t('weaponArmoireIronCrookNotes', {attrs: 7}), value: 100, str: 7, per: 7, set: 'hornedIron', canOwn: ((u)-> u.items.gear.owned.weapon_armoire_ironCrook?)
armor:
base:
@@ -261,6 +263,8 @@ gear =
lunarArmor: text: t('armorArmoireLunarArmorText'), notes: t('armorArmoireLunarArmorNotes', {str: 7, int: 7}), value: 100, str: 7, int: 7, set: 'soothing', canOwn: ((u)-> u.items.gear.owned.armor_armoire_lunarArmor?)
gladiatorArmor: text: t('armorArmoireGladiatorArmorText'), notes: t('armorArmoireGladiatorArmorNotes', {str: 7, per: 7}), value: 100, str: 7, per: 7, set: 'gladiator', canOwn: ((u)-> u.items.gear.owned.armor_armoire_gladiatorArmor?)
rancherRobes: text: t('armorArmoireRancherRobesText'), notes: t('armorArmoireRancherRobesNotes', {str: 5, per: 5, int: 5}), value: 100, str: 5, per: 5, int: 5, set: 'rancher', canOwn: ((u)-> u.items.gear.owned.armor_armoire_rancherRobes?)
goldenToga: text: t('armorArmoireGoldenTogaText'), notes: t('armorArmoireGoldenTogaNotes', {attrs: 8}), value: 100, str: 8, con: 8, set: 'goldenToga', canOwn: ((u)-> u.items.gear.owned.armor_armoire_goldenToga?)
hornedIronArmor: text: t('armorArmoireHornedIronArmorText'), notes: t('armorArmoireHornedIronArmorNotes', {con: 9, per: 7}), value: 100, con: 9, per: 7, set: 'hornedIron', canOwn: ((u)-> u.items.gear.owned.armor_armoire_hornedIronArmor?)
head:
base:
@@ -354,6 +358,8 @@ gear =
rancherHat: text: t('headArmoireRancherHatText'), notes: t('headArmoireRancherHatNotes', {str: 5, per: 5, int: 5}), value: 100, str: 5, per: 5, int: 5, set: 'rancher', canOwn: ((u)-> u.items.gear.owned.head_armoire_rancherHat?)
royalCrown: text: t('headArmoireRoyalCrownText'), notes: t('headArmoireRoyalCrownNotes', {str: 10}), value: 100, str: 10, canOwn: ((u)-> u.items.gear.owned.head_armoire_royalCrown?)
blueHairbow: text: t('headArmoireBlueHairbowText'), notes: t('headArmoireBlueHairbowNotes', {per: 5, int: 5, con: 5}), value: 100, per: 5, int: 5, con: 5, canOwn: ((u)-> u.items.gear.owned.head_armoire_blueHairbow?)
goldenLaurels: text: t('headArmoireGoldenLaurelsText'), notes: t('headArmoireGoldenLaurelsNotes', {attrs: 8}), value: 100, per: 8, con: 8, set: 'goldenToga', canOwn: ((u)-> u.items.gear.owned.head_armoire_goldenLaurels?)
hornedIronHelm: text: t('headArmoireHornedIronHelmText'), notes: t('headArmoireHornedIronHelmNotes', {con: 9, str: 7}), value: 100, con: 9, str:7, set: 'hornedIron', canOwn: ((u)-> u.items.gear.owned.head_armoire_hornedIronHelm?)
shield:
base:
@@ -2104,6 +2110,16 @@ api.backgrounds =
sunken_ship:
text: t('backgroundSunkenShipText')
notes: t('backgroundSunkenShipNotes')
backgrounds082015:
pyramids:
text: t('backgroundPyramidsText')
notes: t('backgroundPyramidsNotes')
sunset_savannah:
text: t('backgroundSunsetSavannahText')
notes: t('backgroundSunsetSavannahNotes')
twinkly_party_lights:
text: t('backgroundTwinklyPartyLightsText')
notes: t('backgroundTwinklyPartyLightsNotes')
api.subscriptionBlocks =
basic_earned: months:1, price:5

View File

@@ -1,5 +1,63 @@
db.users.update(
{'flags.armoireEmpty':true},
{$set:{'flags.armoireEmpty':false}},
{multi:true}
);
var migrationName = 'restock_armoire.js';
var authorName = 'Sabe'; // in case script author needs to know when their ...
var authorUuid = '7f14ed62-5408-4e1b-be83-ada62d504931'; //... own data is done
/*
* Remove flag stating that the Enchanted Armoire is empty, for when new equipment is added
*/
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.armoireEmpty':true
};
// specify fields we are interested in to limit retrieved data (empty if we're not reading data):
var fields = {
'flags.armoireEmpty':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.armoireEmpty':false};
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);
}

View File

@@ -1,15 +1,34 @@
h5 8/2/2015 - AUGUST MYSTERY BOX!
h5 8/4/2015 - NEW ITEMS IN THE ENCHANTED ARMOIRE AND AUGUST BACKGROUNDS
hr
tr
td
.inventory_present_08.pull-right
h5 August Mystery Box
p How curious! All Habiticans who are <a href='/#/options/settings/subscription'>subscribed</a> 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
.background_pyramids.pull-right
h5 August Backgrounds Revealed
p There are three new avatar backgrounds in the <a href='/#/options/profile/backgrounds'>Background Shop</a>! Now your avatar can admire the Pyramids, stalk across the Sunset Savannah, or dance under Twinkly Party Lights!
p.small.muted by (in order): minac1, Bambin, and rosiesully
tr
td
.promo_enchanted_armoire_201508.pull-right
h5 New Items in the Enchanted Armoire!
p There is new equipment in Enchanted Armoire, a 100 GP Reward in the Rewards Column which unlocks after you've attained Ultimate Gear!
br
p Click on the Enchanted Armoire for a random chance at special Equipment, including the Golden Toga Item Set and the Horned Iron Item Set.! It may also give you random XP or food items. We'll be adding new equipment to it during the first week of each month, but even when you've exhausted the current supply, you can keep clicking for a chance at food and XP.
br
p Now go spend all that accumulated Gold! May the Random Number Generator smile upon you...
br
p.small.muted by Lemoness and SabreCat
p.small.muted Art by Kiwibot, Starsystemic, Podcod, and UncommonCriminal
hr
a(href='/static/old-news', target='_blank') Read older news
mixin oldNews
h5 8/2/2015 - AUGUST MYSTERY BOX!
tr
td
.inventory_present_08.pull-right
h5 August Mystery Box
p How curious! All Habiticans who are <a href='/#/options/settings/subscription'>subscribed</a> 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
h5 7/31/2015 - HABITICA NAMING DAY AND LAST CHANCE FOR SUMMER SPLASH
tr
td