diff --git a/src/server/components/auth.js b/src/server/components/auth.js index bbe21089..7a36db04 100644 --- a/src/server/components/auth.js +++ b/src/server/components/auth.js @@ -57,7 +57,7 @@ module.exports = { customChannels: [], play: async function (data) { - if (!this.username) + if (!this.username || this.charname) return; let character = this.characters[data.data.name]; diff --git a/src/server/components/inventory.js b/src/server/components/inventory.js index 15f51a05..abecb8a6 100644 --- a/src/server/components/inventory.js +++ b/src/server/components/inventory.js @@ -148,7 +148,7 @@ module.exports = { learnAbility: function ({ itemId, slot }) { let item = this.findItem(itemId); let statValues = this.obj.stats.values; - if (!item) + if (!item || item.eq) return; else if (!item.spell) { item.eq = false; diff --git a/src/server/security/connections.js b/src/server/security/connections.js index ff627b50..ba89329e 100644 --- a/src/server/security/connections.js +++ b/src/server/security/connections.js @@ -12,6 +12,9 @@ module.exports = { playing: 0, onHandshake: function (socket) { + if (this.players.some(p => p.socket.id === socket.id)) + return; + const p = objects.build(); p.socket = socket; p.addComponent('auth'); @@ -107,6 +110,7 @@ module.exports = { //A hack to allow us to actually call methods again (like retrieve the player list) player.dead = false; player.permadead = false; + delete player.auth.charname; this.modifyPlayerCount(-1); },