feat(armoire): August additions
Also includes the August backgrounds and upgrades the "restock Armoire" migration to use @Alys's progressive output script.
2
common/dist/sprites/habitrpg-shared.css
vendored
1430
common/dist/sprites/spritesmith0.css
vendored
BIN
common/dist/sprites/spritesmith0.png
vendored
|
Before Width: | Height: | Size: 222 KiB After Width: | Height: | Size: 238 KiB |
5812
common/dist/sprites/spritesmith1.css
vendored
BIN
common/dist/sprites/spritesmith1.png
vendored
|
Before Width: | Height: | Size: 25 KiB After Width: | Height: | Size: 25 KiB |
6962
common/dist/sprites/spritesmith2.css
vendored
BIN
common/dist/sprites/spritesmith2.png
vendored
|
Before Width: | Height: | Size: 109 KiB After Width: | Height: | Size: 110 KiB |
840
common/dist/sprites/spritesmith3.css
vendored
BIN
common/dist/sprites/spritesmith3.png
vendored
|
Before Width: | Height: | Size: 88 KiB After Width: | Height: | Size: 88 KiB |
832
common/dist/sprites/spritesmith4.css
vendored
BIN
common/dist/sprites/spritesmith4.png
vendored
|
Before Width: | Height: | Size: 551 KiB After Width: | Height: | Size: 551 KiB |
1106
common/dist/sprites/spritesmith5.css
vendored
BIN
common/dist/sprites/spritesmith5.png
vendored
|
Before Width: | Height: | Size: 235 KiB After Width: | Height: | Size: 236 KiB |
|
After Width: | Height: | Size: 10 KiB |
|
After Width: | Height: | Size: 6.5 KiB |
|
After Width: | Height: | Size: 25 KiB |
|
After Width: | Height: | Size: 5.0 KiB |
@@ -111,5 +111,13 @@
|
|||||||
"backgroundGiantWaveText": "Giant Wave",
|
"backgroundGiantWaveText": "Giant Wave",
|
||||||
"backgroundGiantWaveNotes": "Surf a Giant Wave!",
|
"backgroundGiantWaveNotes": "Surf a Giant Wave!",
|
||||||
"backgroundSunkenShipText": "Sunken Ship",
|
"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!"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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).",
|
"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",
|
"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).",
|
"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",
|
"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).",
|
"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",
|
"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).",
|
"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",
|
"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.",
|
"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",
|
"headArmoireRoyalCrownText": "Royal Crown",
|
||||||
"headArmoireRoyalCrownNotes": "Hooray for the ruler, mighty and strong! Increases Strength by <%= str %>. Enchanted Armoire: Independent Item.",
|
"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",
|
"offhand": "shield-hand item",
|
||||||
|
|
||||||
|
|||||||
@@ -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?)
|
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?)
|
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?)
|
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:
|
armor:
|
||||||
base:
|
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?)
|
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?)
|
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?)
|
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:
|
head:
|
||||||
base:
|
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?)
|
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?)
|
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?)
|
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:
|
shield:
|
||||||
base:
|
base:
|
||||||
@@ -2104,6 +2110,16 @@ api.backgrounds =
|
|||||||
sunken_ship:
|
sunken_ship:
|
||||||
text: t('backgroundSunkenShipText')
|
text: t('backgroundSunkenShipText')
|
||||||
notes: t('backgroundSunkenShipNotes')
|
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 =
|
api.subscriptionBlocks =
|
||||||
basic_earned: months:1, price:5
|
basic_earned: months:1, price:5
|
||||||
|
|||||||
@@ -1,5 +1,63 @@
|
|||||||
db.users.update(
|
var migrationName = 'restock_armoire.js';
|
||||||
{'flags.armoireEmpty':true},
|
var authorName = 'Sabe'; // in case script author needs to know when their ...
|
||||||
{$set:{'flags.armoireEmpty':false}},
|
var authorUuid = '7f14ed62-5408-4e1b-be83-ada62d504931'; //... own data is done
|
||||||
{multi:true}
|
|
||||||
);
|
/*
|
||||||
|
* 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);
|
||||||
|
}
|
||||||
|
|||||||
@@ -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
|
hr
|
||||||
tr
|
tr
|
||||||
td
|
td
|
||||||
.inventory_present_08.pull-right
|
.background_pyramids.pull-right
|
||||||
h5 August Mystery Box
|
h5 August Backgrounds Revealed
|
||||||
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
|
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
|
hr
|
||||||
a(href='/static/old-news', target='_blank') Read older news
|
a(href='/static/old-news', target='_blank') Read older news
|
||||||
|
|
||||||
mixin oldNews
|
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
|
h5 7/31/2015 - HABITICA NAMING DAY AND LAST CHANCE FOR SUMMER SPLASH
|
||||||
tr
|
tr
|
||||||
td
|
td
|
||||||
|
|||||||