diff --git a/src/cfg/parsers/SystemCardCfg.ts b/src/cfg/parsers/SystemCardCfg.ts index 00573a0..eff160a 100644 --- a/src/cfg/parsers/SystemCardCfg.ts +++ b/src/cfg/parsers/SystemCardCfg.ts @@ -7,6 +7,8 @@ export class SystemCardCfg implements Cfg { public point: number; public weight: string; public weightArr: number[][]; + public baseUsage: boolean; + public advUsage: boolean; public decode(data: any) { this.id = data.id; this.type_id = data.type_id; @@ -19,5 +21,7 @@ export class SystemCardCfg implements Cfg { let subArr = str.split(':'); this.weightArr.push([parseInt(subArr[0]), parseInt(subArr[1])]); } + this.baseUsage = !!data.primaryaccess + this.advUsage = !!data.intermediateaccess } } diff --git a/src/rooms/commands/BeginGameCommand.ts b/src/rooms/commands/BeginGameCommand.ts index e6a9892..9160dbd 100644 --- a/src/rooms/commands/BeginGameCommand.ts +++ b/src/rooms/commands/BeginGameCommand.ts @@ -14,8 +14,8 @@ export class BeginGameCommand extends Command { async execute() { this.state.maxCardId = 0; - let card0 = gameUtil.initCardQue(1); - let card1 = gameUtil.initCardQue(card0.length + 1); + let card0 = gameUtil.initCardQue(1, this.state.advMode); + let card1 = gameUtil.initCardQue(card0.length + 1, this.state.advMode); let cardAll = card0.concat(card1); cardAll.randomSort(); //FixMe:: 移除 diff --git a/src/utils/game.util.ts b/src/utils/game.util.ts index 5e8c561..d24d645 100644 --- a/src/utils/game.util.ts +++ b/src/utils/game.util.ts @@ -16,7 +16,7 @@ let gameUtil = { /** * 游戏开始时, 初始化卡组 */ - initCardQue(beginNum: number) { + initCardQue(beginNum: number, advMode: boolean) { let cards: Card[] = [] let numCfgMap: Map = global.$cfg.get(BaseConst.SYSTEMCARD) let effCfgMap: Map = global.$cfg.get(BaseConst.EFFECTCARD) @@ -24,15 +24,17 @@ let gameUtil = { let countMap: Map = new Map() let localId = beginNum for (let [, cfg] of numCfgMap) { - for (let i = 0; i < cfg.count; i++) { - let [effid, effType] = this.getRandomEffect(cfg.weightArr, effCfgMap, countMap) - let type = cfg.type_id - // 如果效果的type_id为11, 说明是自选随从卡, 则将card的type改为11 - if (effType == EffectType.variable_unit) { - type = CardType.variable_unit + if ((advMode && cfg.advUsage) || (!advMode && cfg.baseUsage)) { + for (let i = 0; i < cfg.count; i++) { + let [effid, effType] = this.getRandomEffect(cfg.weightArr, effCfgMap, countMap) + let type = cfg.type_id + // 如果效果的type_id为11, 说明是自选随从卡, 则将card的type改为11 + if (effType == EffectType.variable_unit) { + type = CardType.variable_unit + } + let card = new Card(localId++, cfg.point, type, effid) + cards.push(card) } - let card = new Card(localId++, cfg.point, type, effid) - cards.push(card) } }