修改吃牌规则, 可以吃上一张单牌

This commit is contained in:
zhl 2021-03-12 11:39:49 +08:00
parent 211320ffb9
commit fd768743e0

View File

@ -79,7 +79,7 @@ export class DiscardCommand extends Command<CardGameState, { client: Client, car
})
return
}
if (this.state.cards.size > 1) {
if (this.state.cards.size > 1 || this.state.cards.size == 0) {
this.room.send(client, 'discard_card_s2c', {
errcode: 6,
errmsg: '不符合吃牌规则'
@ -104,6 +104,9 @@ export class DiscardCommand extends Command<CardGameState, { client: Client, car
})
return
}
for (let [key, val] of this.state.cards) {
this.state.cards.delete(key)
}
} else {
if (!gameUtil.checkDiscard(tmpCards, new GameEnv().selfEatCount)) {
this.room.send(client, 'discard_card_s2c', {
@ -112,9 +115,6 @@ export class DiscardCommand extends Command<CardGameState, { client: Client, car
})
return
}
for (let [key, val] of this.state.cards) {
this.state.cards.delete(key)
}
}
@ -122,10 +122,17 @@ export class DiscardCommand extends Command<CardGameState, { client: Client, car
stopDrawCardClock(this.room, player)
for (let card of tmpCards) {
this.state.cards.set(card.id + '', card)
player.cardQueue.push(card)
gameUtil.deleteCardFromPlayer(player, card.id)
}
// 如果当前出的牌只有一张, 且是法术牌或者随从牌, 则替换state.cards中的牌
if (tmpCards.length == 1 && (tmpCards[0].type == CardType.general || tmpCards[0].type == CardType.variable_unit)) {
for (let [key, val] of this.state.cards) {
this.state.cards.delete(key)
}
let card = tmpCards[0]
this.state.cards.set(card.id + '', card)
}
/**
* ,
* ,
@ -138,7 +145,7 @@ export class DiscardCommand extends Command<CardGameState, { client: Client, car
})
const singleEat = !!this.state.rules.get(RULE_SINGLEEAT)
if (cards.length === 1
&& !(singleEat && tmpCards.length == 1 && (tmpCards[0].type == 1 || tmpCards[0].type == 11))) {
&& !(singleEat && tmpCards.length == 1 && (tmpCards[0].type == CardType.general || tmpCards[0].type == CardType.variable_unit))) {
let cardArr: Card[] = [...this.state.cards.values()]
let time = this.room.battleMan.onCardDiscarded(player, cardArr[0])
await this.delay(time)