From b57070a79999eeb08a9082d12f899b801c0a6661 Mon Sep 17 00:00:00 2001 From: zhl Date: Fri, 26 Feb 2021 12:03:24 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9C=BA=E5=99=A8=E4=BA=BA=E5=87=BA=E7=89=8C?= =?UTF-8?q?=E6=97=B6,=20=E5=A2=9E=E5=8A=A0=E6=A0=B9=E6=8D=AE=E9=85=8D?= =?UTF-8?q?=E7=BD=AE=E6=9D=A5=E5=88=A4=E6=96=AD=E6=98=AF=E5=90=A6=E8=83=BD?= =?UTF-8?q?=E5=90=83=E7=89=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/cfg/GameEnv.ts | 6 ++++++ src/constants/BaseConst.ts | 5 ++++- src/robot/Robot.ts | 9 ++++++++- src/robot/RobotClient.ts | 10 +++++++++- src/rooms/schema/CardGameState.ts | 4 ++++ 5 files changed, 31 insertions(+), 3 deletions(-) diff --git a/src/cfg/GameEnv.ts b/src/cfg/GameEnv.ts index 30dfd26..00a077e 100644 --- a/src/cfg/GameEnv.ts +++ b/src/cfg/GameEnv.ts @@ -58,6 +58,10 @@ export class GameEnv { public emptyRoundTime: number; // 玩家初始卡牌数 public playerInitNums: number[] = []; + // 初级场能否吃牌 + public canEatBase: boolean; + // 进阶场能否吃牌 + public canEatAdv: boolean; public init(data: Map) { this.initCardNum = data.get(BaseConst.INIT_CARD_NUM).value; @@ -92,5 +96,7 @@ export class GameEnv { data.get(BaseConst.PLAYER3_INIT_NUM).value, data.get(BaseConst.PLAYER4_INIT_NUM).value, ] + this.canEatBase = !!data.get(BaseConst.CAN_EAT_BASE).value; + this.canEatAdv = !!data.get(BaseConst.CAN_EAT_ADV).value; } } diff --git a/src/constants/BaseConst.ts b/src/constants/BaseConst.ts index 6e811d7..da2a8b9 100644 --- a/src/constants/BaseConst.ts +++ b/src/constants/BaseConst.ts @@ -56,7 +56,10 @@ export class BaseConst { public static readonly PLAYER2_INIT_NUM = 99028 public static readonly PLAYER3_INIT_NUM = 99029 public static readonly PLAYER4_INIT_NUM = 99030 - + // 初级场能否吃牌 + public static readonly CAN_EAT_BASE = 99039 + // 进阶场能否吃牌 + public static readonly CAN_EAT_ADV = 99040 public static readonly COMPOUND = 'compound' public static readonly EFFECTCARD = 'effectcard' diff --git a/src/robot/Robot.ts b/src/robot/Robot.ts index 97fc9cf..4745206 100644 --- a/src/robot/Robot.ts +++ b/src/robot/Robot.ts @@ -4,6 +4,7 @@ import {GameStateConst} from "../constants/GameStateConst"; import {Player} from "../rooms/schema/Player"; import assistantUtil from "../utils/assistant.util"; import {delay, wait} from "../decorators/cfg"; +import { GameEnv } from '../cfg/GameEnv' export class Robot { host: string; @@ -159,7 +160,13 @@ export class Robot { @wait('maxDiscardTime') private async discard() { let targetCard - if (this.room.state.cards.size == 1) { + let canEat = false + if (this.room.state.advMode && new GameEnv().canEatAdv) { + canEat = true + } else if (!this.room.state.advMode && new GameEnv().canEatBase) { + canEat = true + } + if (this.room.state.cards.size == 1 && canEat) { targetCard =[...this.room.state.cards.values()][0]; } let self = this; diff --git a/src/robot/RobotClient.ts b/src/robot/RobotClient.ts index 890dd78..5cf2558 100644 --- a/src/robot/RobotClient.ts +++ b/src/robot/RobotClient.ts @@ -8,6 +8,7 @@ import {Card} from "../rooms/schema/Card"; import {Player} from "../rooms/schema/Player"; import assistantUtil from "../utils/assistant.util"; import {wait} from "../decorators/cfg"; +import { GameEnv } from '../cfg/GameEnv' /** * 服务端辅助机器人 @@ -136,7 +137,14 @@ export class RobotClient implements Client { @wait('maxDiscardTime') private async discard() { let targetCard - if (this.svrstate.cards.size == 1) { + let canEat = false + if (this.svrstate.advMode && new GameEnv().canEatAdv) { + canEat = true + } else if (!this.svrstate.advMode && new GameEnv().canEatBase) { + canEat = true + } + + if (this.svrstate.cards.size == 1 && canEat) { targetCard =[...this.svrstate.cards.values()][0]; } let self = this; diff --git a/src/rooms/schema/CardGameState.ts b/src/rooms/schema/CardGameState.ts index 676c044..210dec7 100644 --- a/src/rooms/schema/CardGameState.ts +++ b/src/rooms/schema/CardGameState.ts @@ -81,4 +81,8 @@ export class CardGameState extends Schema { this.currentTurn = val; this.$listeners?.currentTurn?.invoke(val, preVal); } + + get advMode() { + return this.mode == 1 || this.mode == 2 + } }