diff --git a/server/Battle.js b/server/Battle.js index da84616..fe8a027 100644 --- a/server/Battle.js +++ b/server/Battle.js @@ -389,8 +389,12 @@ var Battle = (function(){ r.userLeft = function(sideName){ var side = this[sideName]; - side.foe.send("foe:left", null, true); + if(side.foe){ + side.foe.send("foe:left", null, true); + return; + } + console.log("side foe not defined!", side.foe); } r.shutDown = function(){ diff --git a/server/Battleside.js b/server/Battleside.js index 6935035..ec4283d 100644 --- a/server/Battleside.js +++ b/server/Battleside.js @@ -77,7 +77,13 @@ Battleside = (function(){ this.receive("decoy:replaceWith", function(data){ if(self._isWaiting) return; var card = self.findCardOnFieldByID(data.cardID); - if(card === -1) throw new Error("decoy:replace | unknown card"); + /*if(card === -1) throw new Error("decoy:replace | unknown card");*/ + if(card === -1) { + console.log("decoy:replace | unknown card: ", card); + self.sendNotificationTo(self, "Possible bug occured: unknown card was chosen by playing decoy ability."); + //self.endTurn(); + return; + } self.runEvent("Decoy:replaceWith", self, [card]); }) this.receive("cancel:decoy", function(){ diff --git a/server/Field.js b/server/Field.js index 300cac0..c0d3043 100644 --- a/server/Field.js +++ b/server/Field.js @@ -75,7 +75,9 @@ var Field = (function(){ this._cards[index] = newCard; oldCard.reset(); for(var event in oldCard._uidEvents) { - this.side.off(event, oldCard.getUidEvents(event)); + if(this.side && this.side.off){ + this.side.off(event, oldCard.getUidEvents(event)); + } } return oldCard; } @@ -102,13 +104,15 @@ var Field = (function(){ } this._cards[i] = null; }*/ - tmp.forEach(function(card, i) { + tmp.forEach(function(card, i){ card.reset(); if(card.__lock){ return; } for(var event in card._uidEvents) { - this.side.off(event, card.getUidEvents(event)); + if(this.side && this.side.off){ + this.side.off(event, card.getUidEvents(event)); + } } this._cards[i] = null; }, this) @@ -137,7 +141,9 @@ var Field = (function(){ cards.forEach(function(card){ card.reset(); for(var event in card._uidEvents) { - this.side.off(event, card.getUidEvents(event)); + if(this.side && this.side.off){ + this.side.off(event, card.getUidEvents(event)); + } } res.push(_cards.splice(self.getPosition(card), 1)[0]); })