修正出牌超时将效果卡加入吃牌队列的bug, 修正吃牌时, 没有传fromPlayer的bug

This commit is contained in:
zhl 2021-03-19 18:27:55 +08:00
parent 2576e0183e
commit ffe4d17057
3 changed files with 20 additions and 13 deletions

View File

@ -170,13 +170,15 @@ export class DiscardCommand extends Command<CardGameState, { client: Client, car
let cardArr: Card[] = [...player.cardQueue.values()]
let self = this
let cardMsg: any = { player: player.id, errcode: 0, errmsg: '' }
let targetUser
if (targetCard) {
cardMsg.target = targetCard.owner
targetUser = this.state.players.get(targetCard.owner)
}
this.room.broadcast('eat_card_s2c', cardMsg, { except: client })
cardMsg.cards = cards
this.room.send(client, 'eat_card_s2c', cardMsg)
let delay = this.room.battleMan.onCardLinkOver(player, cardArr)
let delay = this.room.battleMan.onCardLinkOver(player, cardArr, targetUser)
player.statData.inc(StateTypeEnum.EATCOUNT, 1)
await this.delay(delay)
let time = new GameEnv().playerActTime * 1000 + player.extraTime

View File

@ -230,6 +230,7 @@ let assistantUtil = {
rate: number,
noEatRate: number,
noTripleRate: number}): {cards: Card[], nums?: number[]} {
const pointCardArr = cardArr.filter(c => c.type == CardType.general || c.type == CardType.variable_unit)
const {
selfEat,
otherEat,
@ -237,8 +238,8 @@ let assistantUtil = {
normalPairs,
eatSecs,
normalSecs
} = this.checkDiscard({cardArr, eatCard})
robotLog(`[discard] check: eatself: ${selfEat}, eatother: ${otherEat}, self: ${cardArr.map(o=>o.number)}, target: ${eatCard?.number}`)
} = this.checkDiscard({cardArr: pointCardArr, eatCard})
robotLog(`[discard] check: eatself: ${selfEat}, eatother: ${otherEat}, self: ${pointCardArr.map(o=>o.number)}, target: ${eatCard?.number}`)
let results: Card[] = []
let random = getRandom(0, 100)
if (otherEat && random <= noEatRate) {

View File

@ -7,6 +7,7 @@ import { ClockNameConst } from '../constants/ClockNameConst'
import { GameEnv } from '../cfg/GameEnv'
import { Player } from '../rooms/schema/Player'
import { EatCard } from '../message/EatCard'
import { CardType } from '../cfg/enums/CardType'
/**
*
@ -23,17 +24,20 @@ export function addDrawCardClock(room: Room) {
const client = room.getClient(sessionId)
const card = player.cards.values().next().value
debugRoom('出牌时间到, 自动出牌: ', card.id)
let old: EatCard = null
if (room.state.cards.size > 0) {
let card = room.state.cards.values().next().value
old = EatCard.fromCard(card)
if (card.type == CardType.general || card.type == CardType.variable_unit) {
let old: EatCard = null
if (room.state.cards.size > 0) {
let card = room.state.cards.values().next().value
old = EatCard.fromCard(card)
}
for (let [key, val] of room.state.cards) {
room.state.cards.delete(key)
}
card.round = room.state.round
room.state.cards.set(card.id + '', card)
room.bEatChange({type: 'replace', old, current: EatCard.fromCard(card)})
}
for (let [key, val] of room.state.cards) {
room.state.cards.delete(key)
}
card.round = room.state.round
room.state.cards.set(card.id + '', card)
room.bEatChange({type: 'replace', old, current: EatCard.fromCard(card)})
player.extraTime = 0
if (client && card) {
room.dispatcher.dispatch(new DiscardCommand(), {