From 1a7a6361d57c799b42a18a9f5afcae11545dbee1 Mon Sep 17 00:00:00 2001 From: zhl Date: Wed, 23 Dec 2020 19:09:41 +0800 Subject: [PATCH] =?UTF-8?q?=E6=A0=B9=E6=8D=AE=E6=9C=80=E6=96=B0=E8=A7=84?= =?UTF-8?q?=E5=88=99=E4=BF=AE=E6=94=B9=E6=B7=BB=E5=8A=A0=E7=89=B9=E5=AE=9A?= =?UTF-8?q?=E5=8D=A1=E7=9A=84gm=E5=91=BD=E4=BB=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/rooms/RoomExtMethod.ts | 4 +++- src/utils/game.util.ts | 29 +++++++++++++++++++++-------- 2 files changed, 24 insertions(+), 9 deletions(-) diff --git a/src/rooms/RoomExtMethod.ts b/src/rooms/RoomExtMethod.ts index 397c140..bbe16f7 100644 --- a/src/rooms/RoomExtMethod.ts +++ b/src/rooms/RoomExtMethod.ts @@ -182,7 +182,9 @@ Object.defineProperties(Room.prototype, { for (let i = 0; i < realCount; i++) { let cardId = 1000 + (this.state.maxCardId ++ ); let card = gameUtil.generateCardWithEffect(effectId, cardId, options); - tmpCards.push(card); + if (card) { + tmpCards.push(card); + } } diff --git a/src/utils/game.util.ts b/src/utils/game.util.ts index afa4443..0bc636e 100644 --- a/src/utils/game.util.ts +++ b/src/utils/game.util.ts @@ -47,14 +47,25 @@ let gameUtil = { */ generateCardWithEffect(effectId: number, preCardId: number, options?: any): Card { let numCfgMap: Map = global.$cfg.get(BaseConst.SYSTEMCARD); + const effectMap = global.$cfg.get(BaseConst.EFFECTCARD); let cfgs = []; - for (let [, cfg] of numCfgMap) { - if (cfg.weight.indexOf(effectId + '') >= 0) { - cfgs.push(cfg); - } + const effectCfg = effectMap.get(effectId); + if (!effectCfg) { + return null; } - let cfg: SystemCardCfg = cfgs.randomOne(); - return new Card(preCardId + 1, cfg.point, cfg.type_id, effectId); + if (effectCfg.type_id == EffectType.unit) { + let point = Math.random2(1, 11) | 0; + return new Card(preCardId + 1, point, CardType.variable_unit, effectId); + } else { + for (let [, cfg] of numCfgMap) { + if (cfg.weight.indexOf(effectId + '') >= 0) { + cfgs.push(cfg); + } + } + let cfg: SystemCardCfg = cfgs.randomOne(); + return new Card(preCardId + 1, cfg.point, cfg.type_id, effectId); + } + }, /** * 获取随机的随从 @@ -201,9 +212,10 @@ let gameUtil = { * @param fromplayer */ addCardToPlayer(room: Room, player: Player, cards: Card[], fromplayer?: Player) { + const effectMap = global.$cfg.get(BaseConst.EFFECTCARD); for (let card of cards) { // 如果card的type == 11, 说明是自选随从卡, 则替换成玩家牌组中的卡 - if (card.type == CardType.variable_unit) { + if (card.type == CardType.variable_unit && effectMap.get(card.effect).type_id == EffectType.variable_unit) { card.effect = this.getRandomServant(player); } player.cards.set(card.id + '', card); @@ -219,6 +231,7 @@ let gameUtil = { * @param targetCards */ changeCard(cardArr: Card[], player: Player, targetCards: Card[]): Card[] { + const effectMap = global.$cfg.get(BaseConst.EFFECTCARD); let cards: Card[] = []; for (let card of targetCards) { player.cards.delete(card.id + ''); @@ -228,7 +241,7 @@ let gameUtil = { let count = targetCards.length; for (let i = 0; i < count; i++) { let card = cardArr.pop(); - if (card.type == CardType.variable_unit) { + if (card.type == CardType.variable_unit && effectMap.get(card.effect).type_id == EffectType.variable_unit) { card.effect = this.getRandomServant(player); } cards.push(card);