diff --git a/src/client/ui/templates/reputation/reputation.js b/src/client/ui/templates/reputation/reputation.js index 8f25edb2..64d0d262 100644 --- a/src/client/ui/templates/reputation/reputation.js +++ b/src/client/ui/templates/reputation/reputation.js @@ -64,10 +64,15 @@ define([ let nextTier = (tier === tiers.length - 1) ? tiers[tiers.length - 1] : tiers[tier + 1]; let percentage = (rep - prevTier.rep) / (nextTier.rep - prevTier.rep) * 100; + + if (tier === tiers.length - 1) + percentage = 100; + this.find('.bar-outer').show(); this.find('.front').css({ - width: percentage + '%' + width: percentage + '%', + minWidth: percentage + '%' }); let w = ~~(this.find('.front').width() / 5) * 5; diff --git a/src/server/components/auth/checkLoginRewards.js b/src/server/components/auth/checkLoginRewards.js index 5341c43b..1cd23ba5 100644 --- a/src/server/components/auth/checkLoginRewards.js +++ b/src/server/components/auth/checkLoginRewards.js @@ -1,6 +1,8 @@ const scheduler = require('../../misc/scheduler'); const rewardGenerator = require('../../misc/rewardGenerator'); +const maxRewardedDays = 21; + const calculateDaysSkipped = (oldTime, newTime) => { let daysSkipped = 1; @@ -59,10 +61,10 @@ module.exports = async (cpnAuth, data, character, cbDone) => { else loginStreak = 1; - loginStreak = Math.max(1, Math.min(21, loginStreak)); accountInfo.loginStreak = loginStreak; - const itemCount = 1 + ~~(loginStreak / 2); + const cappedLoginStreak = Math.max(1, Math.min(maxRewardedDays, loginStreak)); + const itemCount = 1 + ~~(cappedLoginStreak / 2); const rewards = rewardGenerator(itemCount); if (!rewards) { cbDone(); diff --git a/src/server/events/events.js b/src/server/events/events.js index 89cc1972..529658f8 100644 --- a/src/server/events/events.js +++ b/src/server/events/events.js @@ -310,7 +310,7 @@ module.exports = { } } ] - }, 'server'); + }, ['server']); } event.phases.forEach(function (p) { @@ -344,7 +344,7 @@ module.exports = { } } ] - }, 'server'); + }, ['server']); } if (desc) { diff --git a/src/server/security/router.js b/src/server/security/router.js index fbb5e13a..8cbb225d 100644 --- a/src/server/security/router.js +++ b/src/server/security/router.js @@ -62,9 +62,18 @@ module.exports = { return (typeof(value) !== 'string' && !Number.isInteger(value)); else if (dataType === 'integer') return !Number.isInteger(value); - else if (dataType === 'integerNullOrPosition') - return !Number.isInteger(value) && value !== null && (typeof(value) !== 'object' && value.hasOwnProperty('x') && value.hasOwnProperty('y')); - else if (dataType === 'arrayOfStrings') + else if (dataType === 'integerNullOrObject') { + const isCorrect = ( + Number.isInteger(value) || + value === null || + ( + typeof(value) === 'object' && + this.keysCorrect(value, spec) + ) + ); + + return !isCorrect; + } else if (dataType === 'arrayOfStrings') return (!Array.isArray(value) || value.some(v => typeof(v) !== 'string')); else if (dataType === 'arrayOfIntegers') return (!Array.isArray(value) || value.some(v => !Number.isInteger(v))); @@ -91,8 +100,6 @@ module.exports = { return foundIncorrectObject; } else if (dataType === 'stringOrNull') return (typeof(value) !== 'string' && value !== null); - else if (dataType === 'mixed') - return false; return true; }); diff --git a/src/server/security/routerConfig.js b/src/server/security/routerConfig.js index 9bcd69d9..19ef9d7a 100644 --- a/src/server/security/routerConfig.js +++ b/src/server/security/routerConfig.js @@ -158,7 +158,17 @@ const routerConfig = { }, { key: 'target', - dataType: 'integerNullOrPosition' + dataType: 'integerNullOrObject', + spec: [ + { + key: 'x', + dataType: 'integer' + }, + { + key: 'y', + dataType: 'integer' + } + ] }, { key: 'spell', diff --git a/src/server/world/syncer.js b/src/server/world/syncer.js index c4c3bcd9..ea582a3b 100644 --- a/src/server/world/syncer.js +++ b/src/server/world/syncer.js @@ -39,6 +39,8 @@ module.exports = { oLen--; i--; } + + this.sendServerModuleMessages(); }, updateZoneNotEmpty: function (objects, oList, oLen, pList, pLen) { @@ -220,6 +222,26 @@ module.exports = { data: this.buffer }); + this.buffer = {}; + }, + + sendServerModuleMessages: function () { + if (!this.dirty) + return; + + this.dirty = false; + + const serverModuleMsgs = this.buffer.serverModule; + + if (serverModuleMsgs) { + process.send({ + method: 'events', + data: { + serverModule: serverModuleMsgs + } + }); + } + this.buffer = {}; } };