根据最新规则修改添加特定卡的gm命令

This commit is contained in:
zhl 2020-12-23 19:09:41 +08:00
parent 54e3d589c1
commit 1a7a6361d5
2 changed files with 24 additions and 9 deletions

View File

@ -182,7 +182,9 @@ Object.defineProperties(Room.prototype, {
for (let i = 0; i < realCount; i++) { for (let i = 0; i < realCount; i++) {
let cardId = 1000 + (this.state.maxCardId ++ ); let cardId = 1000 + (this.state.maxCardId ++ );
let card = gameUtil.generateCardWithEffect(effectId, cardId, options); let card = gameUtil.generateCardWithEffect(effectId, cardId, options);
tmpCards.push(card); if (card) {
tmpCards.push(card);
}
} }

View File

@ -47,14 +47,25 @@ let gameUtil = {
*/ */
generateCardWithEffect(effectId: number, preCardId: number, options?: any): Card { generateCardWithEffect(effectId: number, preCardId: number, options?: any): Card {
let numCfgMap: Map<number, SystemCardCfg> = global.$cfg.get(BaseConst.SYSTEMCARD); let numCfgMap: Map<number, SystemCardCfg> = global.$cfg.get(BaseConst.SYSTEMCARD);
const effectMap = global.$cfg.get(BaseConst.EFFECTCARD);
let cfgs = []; let cfgs = [];
for (let [, cfg] of numCfgMap) { const effectCfg = effectMap.get(effectId);
if (cfg.weight.indexOf(effectId + '') >= 0) { if (!effectCfg) {
cfgs.push(cfg); return null;
}
} }
let cfg: SystemCardCfg = cfgs.randomOne(); if (effectCfg.type_id == EffectType.unit) {
return new Card(preCardId + 1, cfg.point, cfg.type_id, effectId); 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 * @param fromplayer
*/ */
addCardToPlayer(room: Room, player: Player, cards: Card[], fromplayer?: Player) { addCardToPlayer(room: Room, player: Player, cards: Card[], fromplayer?: Player) {
const effectMap = global.$cfg.get(BaseConst.EFFECTCARD);
for (let card of cards) { for (let card of cards) {
// 如果card的type == 11, 说明是自选随从卡, 则替换成玩家牌组中的卡 // 如果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); card.effect = this.getRandomServant(player);
} }
player.cards.set(card.id + '', card); player.cards.set(card.id + '', card);
@ -219,6 +231,7 @@ let gameUtil = {
* @param targetCards * @param targetCards
*/ */
changeCard(cardArr: Card[], player: Player, targetCards: Card[]): Card[] { changeCard(cardArr: Card[], player: Player, targetCards: Card[]): Card[] {
const effectMap = global.$cfg.get(BaseConst.EFFECTCARD);
let cards: Card[] = []; let cards: Card[] = [];
for (let card of targetCards) { for (let card of targetCards) {
player.cards.delete(card.id + ''); player.cards.delete(card.id + '');
@ -228,7 +241,7 @@ let gameUtil = {
let count = targetCards.length; let count = targetCards.length;
for (let i = 0; i < count; i++) { for (let i = 0; i < count; i++) {
let card = cardArr.pop(); 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); card.effect = this.getRandomServant(player);
} }
cards.push(card); cards.push(card);