From eaaab35f314e46c81e2c042db5dc1a28daa13275 Mon Sep 17 00:00:00 2001 From: Sabe Jones Date: Thu, 1 Dec 2016 18:49:40 +0000 Subject: [PATCH] fix(stats): back & body works Also adds December Take This migration --- migrations/20161201_takeThis.js | 78 +++++++++++++++++++++ website/common/script/libs/statsComputed.js | 3 +- 2 files changed, 80 insertions(+), 1 deletion(-) create mode 100644 migrations/20161201_takeThis.js diff --git a/migrations/20161201_takeThis.js b/migrations/20161201_takeThis.js new file mode 100644 index 0000000000..4a7ecb5519 --- /dev/null +++ b/migrations/20161201_takeThis.js @@ -0,0 +1,78 @@ +var migrationName = '20161201_takeThis.js'; +var authorName = 'Sabe'; // in case script author needs to know when their ... +var authorUuid = '7f14ed62-5408-4e1b-be83-ada62d504931'; //... own data is done + +/* + * Award Take This ladder items to participants in this month's challenge + */ + +var mongo = require('mongoskin'); + +var connectionString = 'mongodb://localhost:27017/habitrpg?auto_reconnect=true'; // FOR TEST DATABASE + +var dbUsers = mongo.db(connectionString).collection('users'); + +// specify a query to limit the affected users (empty for all users): +var query = { + 'migration':{$ne:migrationName}, + 'challenges':{$in:['ff674aba-a114-4a6f-8ebc-1de27ffb646e']} +}; + +// specify fields we are interested in to limit retrieved data (empty if we're not reading data): +var fields = { + 'items.gear.owned': 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.'); + setTimeout(displayData, 300000); + return; + } + count++; + + // specify user data to change: + var set = {}; + + if (typeof user.items.gear.owned.body_special_takeThis !== 'undefined') { + set = {'migration':migrationName, 'items.gear.owned.back_special_takeThis':false}; + } else if (typeof user.items.gear.owned.head_special_takeThis !== 'undefined') { + set = {'migration':migrationName, 'items.gear.owned.body_special_takeThis':false}; + } else if (typeof user.items.gear.owned.armor_special_takeThis !== 'undefined') { + set = {'migration':migrationName, 'items.gear.owned.head_special_takeThis':false}; + } else if (typeof user.items.gear.owned.weapon_special_takeThis !== 'undefined') { + set = {'migration':migrationName, 'items.gear.owned.armor_special_takeThis':false}; + } else if (typeof user.items.gear.owned.shield_special_takeThis !== 'undefined') { + set = {'migration':migrationName, 'items.gear.owned.weapon_special_takeThis':false}; + } else { + set = {'migration':migrationName, 'items.gear.owned.shield_special_takeThis':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); +} + + diff --git a/website/common/script/libs/statsComputed.js b/website/common/script/libs/statsComputed.js index a239b2039c..e73b3698e2 100644 --- a/website/common/script/libs/statsComputed.js +++ b/website/common/script/libs/statsComputed.js @@ -4,7 +4,8 @@ import * as statHelpers from '../statHelpers'; module.exports = function statsComputed (user) { let paths = ['stats', 'stats.buffs', 'items.gear.equipped.weapon', 'items.gear.equipped.armor', - 'items.gear.equipped.head', 'items.gear.equipped.shield']; + 'items.gear.equipped.head', 'items.gear.equipped.shield', 'items.gear.equipped.body', + 'items.gear.equipped.back']; let computed = _.reduce(['per', 'con', 'str', 'int'], (m, stat) => { m[stat] = _.reduce(paths, (m2, path) => { let val = _.get(user, path);