e-champ-durak
Advanced tools
Comparing version 1.3.0 to 1.3.1
{ | ||
"name": "e-champ-durak", | ||
"version": "1.3.0", | ||
"version": "1.3.1", | ||
"description": "Online card game Durak for the E-Champ platform", | ||
@@ -5,0 +5,0 @@ "author": "Maxim Khorin", |
@@ -368,5 +368,2 @@ /** | ||
updateBots () { | ||
for (const {player} of this.botHands) { | ||
player.clearSolver(); | ||
} | ||
if (this.isFinished()) { | ||
@@ -373,0 +370,0 @@ return; |
@@ -254,3 +254,5 @@ /** | ||
onHandledEvents () { | ||
this.master.update(); | ||
if (!this.events.prediction) { | ||
this.master.update(); | ||
} | ||
} | ||
@@ -257,0 +259,0 @@ |
@@ -48,6 +48,11 @@ /** | ||
for (const {rank, suit} of this.items) { | ||
const card = attacker.cards.find(rank, suit) || attacker.cards.last(); | ||
attacker.removeCard(card); | ||
this.table.addAttack(card); | ||
cards.push(card); | ||
let card = attacker.cards.find(rank, suit); | ||
if (!card && !this.isMaster()) { | ||
card = attacker.cards.last(); | ||
} | ||
if (card) { | ||
attacker.removeCard(card); | ||
this.table.addAttack(card); | ||
cards.push(card); | ||
} | ||
} | ||
@@ -54,0 +59,0 @@ this.play.isAttackLimit() |
@@ -44,6 +44,11 @@ /** | ||
attacking = this.play.cards.find(attacking.rank, attacking.suit); | ||
defending = defender.cards.find(defending.rank, defending.suit) || defender.cards.last(); | ||
defender.removeCard(defending); | ||
this.table.addDefense(attacking, defending); | ||
cards.push({attacking, defending}); | ||
defending = defender.cards.find(defending.rank, defending.suit); | ||
if (!defending && !this.isMaster()) { | ||
defending = defender.cards.last(); | ||
} | ||
if (defending) { | ||
defender.removeCard(defending); | ||
this.table.addDefense(attacking, defending); | ||
cards.push({attacking, defending}); | ||
} | ||
} | ||
@@ -50,0 +55,0 @@ this.play.updateTurnedPlayers(); |
@@ -39,6 +39,11 @@ /** | ||
for (const {rank, suit} of this.items) { | ||
const card = defender.cards.find(rank, suit) || defender.cards.last(); | ||
defender.removeCard(card); | ||
this.table.addAttack(card); | ||
cards.push(card); | ||
let card = defender.cards.find(rank, suit); | ||
if (!card && this.play.defender !== this.play.master) { | ||
card = defender.cards.last(); | ||
} | ||
if (card) { | ||
defender.removeCard(card); | ||
this.table.addAttack(card); | ||
cards.push(card); | ||
} | ||
} | ||
@@ -45,0 +50,0 @@ this.play.setAttacker(defender); |
@@ -130,2 +130,3 @@ /** | ||
this.send(Club.Durak.ACTION_ATTACK, {cards}); | ||
this.addPredictedEvent(Club.DurakEvent.ATTACK, [this.pos, cards]); | ||
return true; | ||
@@ -139,2 +140,3 @@ } | ||
this.send(Club.Durak.ACTION_DEFEND, {pairs}); | ||
this.addPredictedEvent(Club.DurakEvent.DEFEND, [this.pos, pairs]); | ||
return true; | ||
@@ -147,2 +149,4 @@ } | ||
this.send(Club.Durak.ACTION_TRANSFER, {cards}); | ||
const target = this.play.getTransferTarget(); | ||
this.addPredictedEvent(Club.DurakEvent.TRANSFER, [target.pos, cards]); | ||
return true; | ||
@@ -245,2 +249,7 @@ } | ||
} | ||
addPredictedEvent () { | ||
this.play.events.addPrediction(...arguments); | ||
this.play.events.process(); | ||
} | ||
}; |
@@ -253,3 +253,5 @@ /* @copyright Copyright (c) 2021 Maxim Khorin <maksimovichu@gmail.com> */ | ||
onHandledEvents () { | ||
this.master.update(); | ||
if (!this.events.prediction) { | ||
this.master.update(); | ||
} | ||
} | ||
@@ -643,6 +645,11 @@ | ||
for (const {rank, suit} of this.items) { | ||
const card = attacker.cards.find(rank, suit) || attacker.cards.last(); | ||
attacker.removeCard(card); | ||
this.table.addAttack(card); | ||
cards.push(card); | ||
let card = attacker.cards.find(rank, suit); | ||
if (!card && !this.isMaster()) { | ||
card = attacker.cards.last(); | ||
} | ||
if (card) { | ||
attacker.removeCard(card); | ||
this.table.addAttack(card); | ||
cards.push(card); | ||
} | ||
} | ||
@@ -781,6 +788,11 @@ this.play.isAttackLimit() | ||
attacking = this.play.cards.find(attacking.rank, attacking.suit); | ||
defending = defender.cards.find(defending.rank, defending.suit) || defender.cards.last(); | ||
defender.removeCard(defending); | ||
this.table.addDefense(attacking, defending); | ||
cards.push({attacking, defending}); | ||
defending = defender.cards.find(defending.rank, defending.suit); | ||
if (!defending && !this.isMaster()) { | ||
defending = defender.cards.last(); | ||
} | ||
if (defending) { | ||
defender.removeCard(defending); | ||
this.table.addDefense(attacking, defending); | ||
cards.push({attacking, defending}); | ||
} | ||
} | ||
@@ -984,6 +996,11 @@ this.play.updateTurnedPlayers(); | ||
for (const {rank, suit} of this.items) { | ||
const card = defender.cards.find(rank, suit) || defender.cards.last(); | ||
defender.removeCard(card); | ||
this.table.addAttack(card); | ||
cards.push(card); | ||
let card = defender.cards.find(rank, suit); | ||
if (!card && this.play.defender !== this.play.master) { | ||
card = defender.cards.last(); | ||
} | ||
if (card) { | ||
defender.removeCard(card); | ||
this.table.addAttack(card); | ||
cards.push(card); | ||
} | ||
} | ||
@@ -1218,2 +1235,3 @@ this.play.setAttacker(defender); | ||
this.send(Club.Durak.ACTION_ATTACK, {cards}); | ||
this.addPredictedEvent(Club.DurakEvent.ATTACK, [this.pos, cards]); | ||
return true; | ||
@@ -1227,2 +1245,3 @@ } | ||
this.send(Club.Durak.ACTION_DEFEND, {pairs}); | ||
this.addPredictedEvent(Club.DurakEvent.DEFEND, [this.pos, pairs]); | ||
return true; | ||
@@ -1235,2 +1254,4 @@ } | ||
this.send(Club.Durak.ACTION_TRANSFER, {cards}); | ||
const target = this.play.getTransferTarget(); | ||
this.addPredictedEvent(Club.DurakEvent.TRANSFER, [target.pos, cards]); | ||
return true; | ||
@@ -1333,2 +1354,7 @@ } | ||
} | ||
addPredictedEvent () { | ||
this.play.events.addPrediction(...arguments); | ||
this.play.events.process(); | ||
} | ||
}; | ||
@@ -1335,0 +1361,0 @@ Club.DurakOpponent = class DurakOpponent extends Club.DurakPlayer { |
273398
4819