From df5ff3d5a1ad9b9cd6e0d384a966606e1cbd1293 Mon Sep 17 00:00:00 2001 From: Blade Barringer Date: Thu, 12 Feb 2015 13:31:21 -0600 Subject: [PATCH] Downgraded coffeescript module to 1.6 --- common/dist/scripts/habitrpg-shared.js | 207 ++++++++++++------------- package.json | 2 +- website/src/server.js | 2 +- 3 files changed, 104 insertions(+), 107 deletions(-) diff --git a/common/dist/scripts/habitrpg-shared.js b/common/dist/scripts/habitrpg-shared.js index 2a9d7bc978..4d7611a401 100644 --- a/common/dist/scripts/habitrpg-shared.js +++ b/common/dist/scripts/habitrpg-shared.js @@ -34,13 +34,13 @@ t = function(string, vars) { return func; }; - /* --------------------------------------------------------------- Gear (Weapons, Armor, Head, Shield) Item definitions: {index, text, notes, value, str, def, int, per, classes, type} --------------------------------------------------------------- - */ +*/ + classes = ['warrior', 'rogue', 'healer', 'wizard']; @@ -2284,11 +2284,11 @@ gear = { } }; - /* The gear is exported as a tree (defined above), and a flat list (eg, {weapon_healer_1: .., shield_special_0: ...}) since they are needed in different froms at different points in the app - */ +*/ + api.gear = { tree: gear, @@ -2328,10 +2328,10 @@ _.each(gearTypes, function(type) { }); }); - /* Time Traveler Store, mystery sets need their items mapped in - */ +*/ + _.each(api.mystery, function(v, k) { return v.items = _.where(api.gear.flat, { @@ -2351,12 +2351,12 @@ api.timeTravelerStore = function(owned) { }, {}); }; - /* --------------------------------------------------------------- Potion --------------------------------------------------------------- - */ +*/ + api.potion = { type: 'potion', @@ -2366,25 +2366,24 @@ api.potion = { key: 'potion' }; - /* --------------------------------------------------------------- Classes --------------------------------------------------------------- - */ +*/ + api.classes = classes; - /* --------------------------------------------------------------- Gear Types --------------------------------------------------------------- - */ +*/ + api.gearTypes = gearTypes; - /* --------------------------------------------------------------- Spells @@ -2404,7 +2403,8 @@ api.gearTypes = gearTypes; so you'll want to iterate over them like: `_.each(target,function(member){...})` Note, user.stats.mp is docked after automatically (it's appended to functions automatically down below in an _.each) - */ +*/ + diminishingReturns = function(bonus, max, halfway) { if (halfway == null) { @@ -2760,12 +2760,12 @@ _.each(api.spells, function(spellClass) { api.special = api.spells.special; - /* --------------------------------------------------------------- Drops --------------------------------------------------------------- - */ +*/ + api.dropEggs = { Wolf: { @@ -4700,32 +4700,30 @@ $w = api.$w = function(s) { }; api.dotSet = function(obj, path, val) { - var arr; + var arr, + _this = this; arr = path.split('.'); - return _.reduce(arr, (function(_this) { - return function(curr, next, index) { - if ((arr.length - 1) === index) { - curr[next] = val; - } - return curr[next] != null ? curr[next] : curr[next] = {}; - }; - })(this), obj); + return _.reduce(arr, function(curr, next, index) { + if ((arr.length - 1) === index) { + curr[next] = val; + } + return curr[next] != null ? curr[next] : curr[next] = {}; + }, obj); }; api.dotGet = function(obj, path) { - return _.reduce(path.split('.'), ((function(_this) { - return function(curr, next) { - return curr != null ? curr[next] : void 0; - }; - })(this)), obj); + var _this = this; + return _.reduce(path.split('.'), (function(curr, next) { + return curr != null ? curr[next] : void 0; + }), obj); }; - /* Reflists are arrays, but stored as objects. Mongoose has a helluvatime working with arrays (the main problem for our syncing issues) - so the goal is to move away from arrays to objects, since mongoose can reference elements by ID no problem. To maintain sorting, we use these helper functions: - */ +*/ + api.refPush = function(reflist, item, prune) { if (prune == null) { @@ -4743,19 +4741,19 @@ api.planGemLimits = { convCap: 25 }; - /* ------------------------------------------------------ Time / Day ------------------------------------------------------ - */ +*/ /* Each time we're performing date math (cron, task-due-days, etc), we need to take user preferences into consideration. Specifically {dayStart} (custom day start) and {timezoneOffset}. This function sanitizes / defaults those values. {now} is also passed in for various purposes, one example being the test scripts scripts testing different "now" times - */ +*/ + sanitizeOptions = function(o) { var dayStart, now, timezoneOffset, _ref; @@ -4805,10 +4803,10 @@ api.dayMapping = { 6: 's' }; - /* Absolute diff from "yesterday" till now - */ +*/ + api.daysSince = function(yesterday, options) { var o; @@ -4823,10 +4821,10 @@ api.daysSince = function(yesterday, options) { }, o)), 'days')); }; - /* Should the user do this taks on this date, given the task's repeat options and user.preferences.dayStart? - */ +*/ + api.shouldDo = function(day, repeat, options) { var o, selected; @@ -4843,24 +4841,24 @@ api.shouldDo = function(day, repeat, options) { return selected; }; - /* ------------------------------------------------------ Scoring ------------------------------------------------------ - */ +*/ + api.tnl = function(lvl) { return Math.round(((Math.pow(lvl, 2) * 0.25) + (10 * lvl) + 139.75) / 10) * 10; }; - /* A hyperbola function that creates diminishing returns, so you can't go to infinite (eg, with Exp gain). {max} The asymptote {bonus} All the numbers combined for your point bonus (eg, task.value * user.stats.int * critChance, etc) {halfway} (optional) the point at which the graph starts bending - */ +*/ + api.diminishingReturns = function(bonus, max, halfway) { if (halfway == null) { @@ -4873,13 +4871,13 @@ api.monod = function(bonus, rateOfIncrease, max) { return rateOfIncrease * max * bonus / (rateOfIncrease * bonus + max); }; - /* Preen history for users with > 7 history entries This takes an infinite array of single day entries [day day day day day...], and turns it into a condensed array of averages, condensing more the further back in time we go. Eg, 7 entries each for last 7 days; 1 entry each week of this month; 1 entry for each month of this year; 1 entry per previous year: [day*7 week*4 month*12 year*infinite] - */ +*/ + preenHistory = function(history) { var newHistory, preen, thisMonth; @@ -4915,10 +4913,10 @@ preenHistory = function(history) { return newHistory; }; - /* Update the in-browser store with new gear. FIXME this was in user.fns, but it was causing strange issues there - */ +*/ + sortOrder = _.reduce(content.gearTypes, (function(m, v, k) { m[v] = k; @@ -4951,21 +4949,21 @@ api.updateStore = function(user) { }); }; - /* ------------------------------------------------------ Content ------------------------------------------------------ - */ +*/ + api.content = content; - /* ------------------------------------------------------ Misc Helpers ------------------------------------------------------ - */ +*/ + api.uuid = function() { return "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g, function(c) { @@ -4982,11 +4980,11 @@ api.countExists = function(items) { }), 0); }; - /* Even though Mongoose handles task defaults, we want to make sure defaults are set on the client-side before sending up to the server for performance - */ +*/ + api.taskDefaults = function(task) { var defaults, _ref, _ref1, _ref2; @@ -5064,10 +5062,10 @@ api.percent = function(x, y, dir) { return Math.max(0, roundFn(x / y * 100)); }; - /* Remove whitespace #FIXME are we using this anywwhere? Should we be? - */ +*/ + api.removeWhitespace = function(str) { if (!str) { @@ -5076,10 +5074,10 @@ api.removeWhitespace = function(str) { return str.replace(/\s/g, ''); }; - /* Encode the download link for .ics iCal file - */ +*/ + api.encodeiCalLink = function(uid, apiToken) { var loc, _ref; @@ -5087,10 +5085,10 @@ api.encodeiCalLink = function(uid, apiToken) { return encodeURIComponent("http://" + loc + "/v1/users/" + uid + "/calendar.ics?apiToken=" + apiToken); }; - /* Gold amount from their money - */ +*/ + api.gold = function(num) { if (num) { @@ -5100,10 +5098,10 @@ api.gold = function(num) { } }; - /* Silver amount from their money - */ +*/ + api.silver = function(num) { if (num) { @@ -5113,10 +5111,10 @@ api.silver = function(num) { } }; - /* Task classes given everything about the class - */ +*/ + api.taskClasses = function(task, filters, dayStart, lastCron, showCompleted, main) { var classes, completed, enabled, filter, repeat, type, value, _ref; @@ -5187,19 +5185,19 @@ api.taskClasses = function(task, filters, dayStart, lastCron, showCompleted, mai return classes; }; - /* Friendly timestamp - */ +*/ + api.friendlyTimestamp = function(timestamp) { return moment(timestamp).format('MM/DD h:mm:ss a'); }; - /* Does user have new chat messages? - */ +*/ + api.newChatMessages = function(messages, lastMessageSeen) { if (!((messages != null ? messages.length : void 0) > 0)) { @@ -5208,10 +5206,10 @@ api.newChatMessages = function(messages, lastMessageSeen) { return (messages != null ? messages[0] : void 0) && (messages[0].id !== lastMessageSeen); }; - /* are any tags active? - */ +*/ + api.noTags = function(tags) { return _.isEmpty(tags) || _.isEmpty(_.filter(tags, function(t) { @@ -5219,10 +5217,10 @@ api.noTags = function(tags) { })); }; - /* Are there tags applied? - */ +*/ + api.appliedTags = function(userTags, taskTags) { var arr; @@ -5283,12 +5281,11 @@ api.countTriad = function(pets) { return count3; }; - /* ------------------------------------------------------ User (prototype wrapper to give it ops, helper funcs, and virtuals ------------------------------------------------------ - */ +*/ /* @@ -5319,7 +5316,8 @@ TODO user on the server is a Mongoose model, so we can use prototype - but to do it on the client, we'd probably have to move to $resource for user * Move to $resource! - */ +*/ + api.wrap = function(user, main) { if (main == null) { @@ -6545,11 +6543,11 @@ api.wrap = function(user, main) { } return message; }, - /* Because the same op needs to be performed on the client and the server (critical hits, item drops, etc), we need things to be "random", but technically predictable so that they don't go out-of-sync - */ + */ + predictableRandom: function(seed) { var x; if (!seed || seed === Math.PI) { @@ -6577,11 +6575,11 @@ api.wrap = function(user, main) { return 1; } }, - /* Get a random property from an object returns random property (the value) - */ + */ + randomVal: function(obj, options) { var array, rand; array = (options != null ? options.key : void 0) ? _.keys(obj) : _.values(obj); @@ -6589,13 +6587,13 @@ api.wrap = function(user, main) { array.sort(); return array[Math.floor(rand * array.length)]; }, - /* This allows you to set object properties by dot-path. Eg, you can run pathSet('stats.hp',50,user) which is the same as user.stats.hp = 50. This is useful because in our habitrpg-shared functions we're returning changesets as {path:value}, so that different consumers can implement setters their own way. Derby needs model.set(path, value) for example, where Angular sets object properties directly - in which case, this function will be used. - */ + */ + dotSet: function(path, val) { return api.dotSet(user, path, val); }, @@ -6673,12 +6671,12 @@ api.wrap = function(user, main) { return user.items.lastDrop.count++; } }, - /* Updates user stats with new stats. Handles death, leveling up, etc {stats} new stats {update} if aggregated changes, pass in userObj as update. otherwise commits will be made immediately - */ + */ + autoAllocate: function() { return user.stats[(function() { var diff, ideal, preference, stats, suggested; @@ -6783,7 +6781,7 @@ api.wrap = function(user, main) { _base[k] = 0; } user.items.quests[k]++; - ((_base1 = user.flags).levelDrops != null ? _base1.levelDrops : _base1.levelDrops = {})[k] = true; + ((_base1 = user.flags).levelDrops != null ? (_base1 = user.flags).levelDrops : _base1.levelDrops = {})[k] = true; if (typeof user.markModified === "function") { user.markModified('flags.levelDrops'); } @@ -6802,12 +6800,11 @@ api.wrap = function(user, main) { return user.flags.freeRebirth = true; } }, - /* ------------------------------------------------------ Cron ------------------------------------------------------ - */ + */ /* At end of day, add value to all incomplete Daily & Todo tasks (further incentive) @@ -6815,7 +6812,8 @@ api.wrap = function(user, main) { Make sure to run this function once in a while as server will not take care of overnight calculations. And you have to run it every time client connects. {user} - */ + */ + cron: function(options) { var clearBuffs, daysMissed, expTally, lvl, lvlDiv2, now, perfect, plan, progress, todoTally, _base, _base1, _base2, _base3, _progress, _ref, _ref1, _ref2; if (options == null) { @@ -6955,7 +6953,7 @@ api.wrap = function(user, main) { } } }); - ((_base1 = (user.history != null ? user.history : user.history = {})).todos != null ? _base1.todos : _base1.todos = []).push({ + ((_base1 = (user.history != null ? user.history : user.history = {})).todos != null ? (_base1 = (user.history != null ? user.history : user.history = {})).todos : _base1.todos = []).push({ date: now, value: todoTally }); @@ -6965,7 +6963,7 @@ api.wrap = function(user, main) { lvl++; expTally += api.tnl(lvl); } - ((_base2 = user.history).exp != null ? _base2.exp : _base2.exp = []).push({ + ((_base2 = user.history).exp != null ? (_base2 = user.history).exp : _base2.exp = []).push({ date: now, value: expTally }); @@ -6978,7 +6976,7 @@ api.wrap = function(user, main) { user.markModified('dailys'); } } - user.stats.buffs = perfect ? ((_base3 = user.achievements).perfect != null ? _base3.perfect : _base3.perfect = 0, user.achievements.perfect++, user.stats.lvl < 100 ? lvlDiv2 = Math.ceil(user.stats.lvl / 2) : lvlDiv2 = 50, { + user.stats.buffs = perfect ? ((_base3 = user.achievements).perfect != null ? (_base3 = user.achievements).perfect : _base3.perfect = 0, user.achievements.perfect++, user.stats.lvl < 100 ? lvlDiv2 = Math.ceil(user.stats.lvl / 2) : lvlDiv2 = 50, { str: lvlDiv2, int: lvlDiv2, per: lvlDiv2, @@ -7058,22 +7056,21 @@ api.wrap = function(user, main) { }; Object.defineProperty(user, '_statsComputed', { get: function() { - var computed; - computed = _.reduce(['per', 'con', 'str', 'int'], (function(_this) { - return function(m, stat) { - m[stat] = _.reduce($w('stats stats.buffs items.gear.equipped.weapon items.gear.equipped.armor items.gear.equipped.head items.gear.equipped.shield'), function(m2, path) { - var item, val; - val = user.fns.dotGet(path); - return m2 + (~path.indexOf('items.gear') ? (item = content.gear.flat[val], (+(item != null ? item[stat] : void 0) || 0) * ((item != null ? item.klass : void 0) === user.stats["class"] || (item != null ? item.specialClass : void 0) === user.stats["class"] ? 1.5 : 1)) : +val[stat] || 0); - }, 0); - if (user.stats.lvl < 100) { - m[stat] += (user.stats.lvl - 1) / 2; - } else { - m[stat] += 50; - } - return m; - }; - })(this), {}); + var computed, + _this = this; + computed = _.reduce(['per', 'con', 'str', 'int'], function(m, stat) { + m[stat] = _.reduce($w('stats stats.buffs items.gear.equipped.weapon items.gear.equipped.armor items.gear.equipped.head items.gear.equipped.shield'), function(m2, path) { + var item, val; + val = user.fns.dotGet(path); + return m2 + (~path.indexOf('items.gear') ? (item = content.gear.flat[val], (+(item != null ? item[stat] : void 0) || 0) * ((item != null ? item.klass : void 0) === user.stats["class"] || (item != null ? item.specialClass : void 0) === user.stats["class"] ? 1.5 : 1)) : +val[stat] || 0); + }, 0); + if (user.stats.lvl < 100) { + m[stat] += (user.stats.lvl - 1) / 2; + } else { + m[stat] += 50; + } + return m; + }, {}); computed.maxMP = computed.int * 2 + 30; return computed; } diff --git a/package.json b/package.json index abfe25d66a..d426e1b28c 100644 --- a/package.json +++ b/package.json @@ -8,7 +8,7 @@ "aws-sdk": "^2.0.25", "bower": "~1.3.12", "browserify": "~3.30.2", - "coffee-script": "1.7.1", + "coffee-script": "1.6.x", "coffeeify": "0.6.0", "connect-ratelimit": "0.0.7", "coupon-code": "~0.3.0", diff --git a/website/src/server.js b/website/src/server.js index 3fcfa7ae1e..fd0319715d 100644 --- a/website/src/server.js +++ b/website/src/server.js @@ -19,7 +19,7 @@ if (cores!==0 && cluster.isMaster && (isDev || isProd)) { }); } else { - require('coffee-script/register'); // remove this once we've fully converted over + require('coffee-script'); // remove this once we've fully converted over var express = require("express"); var http = require("http"); var path = require("path");