import { lib, game, ui, get, ai, _status } from "../noname.js"; game.import("card", function () { return { name: "yingbian", connect: true, card: { suijiyingbian: { global: "suijiyingbian_skill", fullskin: true, type: "trick", }, zhujinqiyuan: { type: "trick", enable: true, audio: true, filterTarget: function (card, player, target) { return target != player && target.countCards("hej") > 0; }, defaultYingbianEffect: "add", content: function () { var dist = get.distance(player, target); if (dist > 1 || card.yingbian_all) player .discardPlayerCard(target, "hej", true) .set("target", target) .set("ai", lib.card.guohe.ai.button); if (dist <= 1 || card.yingbian_all) player .gainPlayerCard(target, "hej", true) .set("target", target) .set("ai", lib.card.shunshou.ai.button); }, fullskin: true, postAi: function (targets) { return targets.length == 1 && targets[0].countCards("j"); }, ai: { wuxie: function (target, card, player, viewer, status) { if (get.attitude(viewer, player._trueMe || player) > 0) return 0; if ( !card.yingbian_all && get.distance(player, target) > 1 && !target.hasCard((i) => { let val = get.value(i, target), subtypes = get.subtypes(i); if ( val < 8 && target.hp < 2 && !subtypes.includes("equip2") && !subtypes.includes("equip5") ) return false; return val > 3 + Math.min(5, target.hp); }, "e") && target.countCards("h") * _status.event.getRand("guohe_wuxie") > 1.57 ) return 0; }, yingbian: function (card, player, targets, viewer) { if (get.attitude(viewer, player) <= 0) return 0; var base = 0; if (get.cardtag(card, "yingbian_all")) { if ( targets.filter(function (current) { var att = get.attitude(player, current); if (att <= 0) return ( current.countCards("he", function (card) { return get.value(card, current) > 0; }) > 1 ); return ( current.countCards("ej", function (card) { return get.position(card) == "j" || get.value(card, current) <= 0; }) > 1 ); }).length ) base += 6; } if (get.cardtag(card, "yingbian_add")) { if ( game.hasPlayer(function (current) { return ( !targets.includes(current) && lib.filter.targetEnabled2(card, player, current) && get.effect(current, card, player, player) > 0 ); }) ) base += 5; } if (get.cardtag(card, "yingbian_hit")) { if ( game.hasPlayer(function (current) { return get.attitude(current, player) < 0 && current.hasWuxie(); }) ) base += 3 * targets.length; } return base; }, basic: { order: 7.5, useful: (card, i) => 9.6 / (2 + i), value: (card, player) => { let max = 0; game.countPlayer((cur) => { let dist = get.distance(player, cur); if (dist > 1 || card.yingbian_all) max = Math.max( max, lib.card.shunshou.ai.result.target(player, cur) * get.attitude(player, cur) ); else max = Math.max( max, lib.card.guohe.ai.result.target(player, cur) * get.attitude(player, cur) ); }); if (max <= 0) return 7; if (card.yingbian_all) return 0.75 * max; return 0.6 * max; }, }, result: { target: function (player, target) { var discard = get.distance(player, target) > 1; if (get.attitude(player, target) <= 0) return target.countCards("he", function (card) { return ( get.value(card, target) > 0 && (discard || card != target.getEquip("jinhe")) ); }) > 0 ? -1.5 : 1.5; var js = target.getCards("j"); if (js.length) { var jj = js[0].viewAs ? { name: js[0].viewAs } : js[0]; if (js.length == 1 && get.effect(target, jj, target, player) >= 0) { return -1.5; } return 3; } return -1.5; }, player: function (player, target) { if (get.distance(player, target) > 1) return 0; if ( get.attitude(player, target) < 0 && !target.countCards("he", function (card) { return get.value(card, target) > 0 && card != target.getEquip("jinhe"); }) ) { return 0; } if (get.attitude(player, target) > 1) { var js = target.getCards("j"); if (js.length) { var jj = js[0].viewAs ? { name: js[0].viewAs } : js[0]; if (js.length == 1 && get.effect(target, jj, target, player) >= 0) { return 0; } return 1; } return 0; } return 1; }, }, tag: { loseCard: 1, gain: 1, }, }, }, dongzhuxianji: { audio: true, fullskin: true, type: "trick", enable: true, selectTarget: -1, toself: true, filterTarget: function (card, player, target) { return target == player; }, modTarget: true, content: function () { target.chooseToGuanxing(2); target.draw(2); }, ai: { basic: { order: 7.2, useful: 4.5, value: 9.2, }, result: { target: 2.5, }, tag: { draw: 2, }, }, }, chuqibuyi: { audio: true, enable: true, type: "trick", fullskin: true, filterTarget: function (card, player, target) { return target != player && target.countCards("h") > 0; }, defaultYingbianEffect: "add", content: function () { "step 0"; if (player.isDead() || !target.countCards("h")) { event.finish(); return; } player.choosePlayerCard(target, "h", true); "step 1"; if (result.bool) { target.showCards(result.cards); if (get.suit(card) != get.suit(result.cards[0])) target.damage(); } }, ai: { basic: { order: 5, useful: 2, value: 6, }, yingbian: function (card, player, targets, viewer) { if (get.attitude(viewer, player) <= 0) return 0; if ( game.hasPlayer(function (current) { return ( !targets.includes(current) && lib.filter.targetEnabled2(card, player, current) && get.effect(current, card, player, player) > 0 ); }) ) return 6; return 0; }, result: { target: (player, target, card) => { //if(typeof card!=='object') return -2; let suit = get.suit(card), view = player.hasSkillTag("viewHandcard", null, target, true), fz = 0, fm = 0; target.getCards("h", (i) => { if (i.isKnownBy(player)) { if (suit !== get.suit(i)) { if (view || get.is.shownCard(i)) return -2; fz++; fm++; } else if (!view && !get.is.shownCard(i)) fm++; } else { fz += 0.75; fm++; } }); if (!fm) return 0; return (-2 * fz) / fm; }, }, tag: { damage: 1, }, }, }, wuxinghelingshan: { audio: true, fullskin: true, type: "equip", subtype: "equip1", distance: { attackFrom: -3 }, ai: { basic: { equipValue: 2, }, }, skills: ["wuxinghelingshan_skill"], }, wutiesuolian: { audio: true, fullskin: true, type: "equip", subtype: "equip1", distance: { attackFrom: -2 }, ai: { basic: { equipValue: 2, }, }, skills: ["wutiesuolian_skill"], }, heiguangkai: { audio: true, fullskin: true, type: "equip", subtype: "equip2", ai: { basic: { equipValue: 2, }, }, skills: ["heiguangkai_skill"], }, tongque: { audio: true, fullskin: true, type: "equip", subtype: "equip5", ai: { basic: { equipValue: 6.5, }, }, skills: ["tongque_skill"], }, tianjitu: { audio: true, fullskin: true, type: "equip", subtype: "equip5", skills: ["tianjitu_skill"], onLose: function () { player.addTempSkill("tianjitu_skill_lose"); }, loseDelay: false, ai: { value: function (card, player) { if (player.countCards("h") > 3 || get.position(card) != "e") return 0.5; return (player.countCards("h") - 4) * 5; }, equipValue: function (card, player) { if (player.countCards("h") > 3 || get.position(card) != "e") return 0.5; return (player.countCards("h") - 4) * 5; }, basic: { equipValue: 0.5, }, }, }, taigongyinfu: { audio: true, fullskin: true, type: "equip", subtype: "equip5", ai: { basic: { equipValue: 3, }, }, skills: ["taigongyinfu_skill", "taigongyinfu_link"], }, }, skill: { suijiyingbian_skill: { mod: { cardname: function (card, player) { if (card.name == "suijiyingbian" && player.storage.suijiyingbian) return player.storage.suijiyingbian; }, cardnature: function (card, player) { if (card.name == "suijiyingbian" && player.storage.suijiyingbian_nature) return player.storage.suijiyingbian_nature; }, }, trigger: { player: ["useCard1", "respond"], global: "phaseBeginStart", }, silent: true, firstDo: true, filter: function (event, player, name) { if (name == "phaseBeginStart") return true; var type = get.type(event.card); return type == "basic" || type == "trick"; }, content: function () { if (event.triggername == "phaseBeginStart") { delete player.storage.suijiyingbian; delete player.storage.suijiyingbian_nature; } else { player.storage.suijiyingbian = trigger.card.name; player.storage.suijiyingbian_nature = trigger.card.nature; } }, }, wuxinghelingshan_skill: { equipSkill: true, trigger: { player: "useCard1" }, filter: function (event, player) { return ( event.card.name == "sha" && lib.linked.some((n) => n != "kami" && game.hasNature(event.card, n)) ); }, audio: true, direct: true, content: function () { "step 0"; var list = lib.linked.slice(0); list.remove("kami"); list.removeArray(get.natureList(trigger.card)); list.push("cancel2"); player .chooseControl(list) .set("prompt", get.prompt("wuxinghelingshan_skill")) .set("prompt2", "将" + get.translation(trigger.card) + "转换为以下属性之一"); "step 1"; if (result.control != "cancel2") { player.logSkill("wuxinghelingshan_skill"); player.popup(get.translation(result.control) + "杀", result.control); game.log(trigger.card, "被转为了", "#y" + get.translation(result.control), "属性"); game.setNature(trigger.card, result.control); } }, }, wutiesuolian_skill: { trigger: { player: "useCardToPlayered" }, forced: true, equipSkill: true, audio: true, filter: function (event, player) { return event.card.name == "sha" && !event.target.isLinked(); //||event.target.countCards('h')); }, logTarget: "target", content: function () { var target = trigger.target; if (!target.isLinked()) target.link(); //else player.viewHandcards(target); }, }, heiguangkai_skill: { equipSkill: true, trigger: { target: "useCardToTargeted" }, forced: true, audio: true, filter: function (event, player) { if (event.targets.length < 2) return false; if (event.card.name != "sha") { var type = get.type(event.card); if (type != "trick") return false; if (get.color(event.card) != "black" && !get.tag(event.card, "damage")) return false; } if (player.hasSkillTag("unequip2")) return false; if ( event.player.hasSkillTag("unequip", false, { name: event.card ? event.card.name : null, target: player, card: event.card, }) ) return false; return true; }, content: function () { trigger.excluded.add(player); }, global: "heiguangkai_ai", }, tongque_skill: { trigger: { player: "yingbian" }, equipSkill: true, forced: true, filter: (event, player) => get.is.yingbianConditional(event.card) && player.getHistory("useCard", (evt) => get.is.yingbianConditional(evt.card)).length < 2, content: () => { trigger.forceYingbian = true; }, }, tianjitu_skill: { audio: true, trigger: { player: "equipAfter" }, forced: true, equipSkill: true, filter: (event, player) => event.card.name == "tianjitu" && player.hasCard((card) => card != event.card, "he"), content: () => { player.chooseToDiscard(true, (card) => card != _status.event.getTrigger().card, "he"); }, subSkill: { lose: { audio: "tianjitu_skill", forced: true, charlotte: true, equipSkill: true, trigger: { player: "loseAfter", global: [ "equipAfter", "addJudgeAfter", "gainAfter", "loseAsyncAfter", "addToExpansionAfter", ], }, filter: (event, player) => { if (player.countCards("h") >= 5) return false; var evt = event.getl(player); return evt && evt.es.some((card) => card.name == "tianjitu"); }, content: function () { player.drawTo(5); }, }, }, }, taigongyinfu_skill: { equipSkill: true, audio: true, trigger: { player: "phaseUseEnd" }, direct: true, filter: function (event, player) { return player.countCards("h") > 0; }, content: function () { "step 0"; player .chooseCard("h", "是否发动【太公阴符】重铸一张手牌?", lib.filter.cardRecastable) .set("ai", function (card) { return 5 - get.value(card); }); "step 1"; if (result.bool) { player.logSkill("taigongyinfu_skill"); player.recast(result.cards); } }, }, taigongyinfu_link: { audio: "taigongyinfu_skill", trigger: { player: "phaseUseBegin" }, equipSkill: true, //filter:function(event,player){ // return game.hasPlayer(function(current){ // return !current.isLinked(); // }); //}, direct: true, content: function () { "step 0"; player .chooseTarget( //function(card,player,target){ // return !target.isLinked(); //}, "是否发动【太公阴符】横置或重置一名角色?" ) .set("ai", function (target) { return get.effect( target, { name: "tiesuo" }, _status.event.player, _status.event.player ); }); "step 1"; if (result.bool) { var target = result.targets[0]; player.logSkill("taigongyinfu_link", target); target.link(); } }, ai: { expose: 0.2, }, }, _yingbian: { trigger: { player: "yingbian" }, forced: true, popup: false, ruleSkill: true, forceLoad: true, filter: (event, player) => { if (event.card.yingbian) return false; const temporaryYingbian = event.temporaryYingbian || [], card = event.card; if (temporaryYingbian.includes("force") || get.cardtag(card, "yingbian_force")) return true; const forceYingbian = event.forceYingbian || player.hasSkillTag("forceYingbian"); for (const entry of lib.yingbian.condition.simple) { const key = entry[0]; if ( (temporaryYingbian.includes(key) || get.cardtag(card, `yingbian_${key}`)) && (forceYingbian || entry[1](event)) ) return true; } const complexYingbianConditions = get.complexYingbianConditions(); return ( temporaryYingbian.some((value) => complexYingbianConditions.includes(value)) || get.is.complexlyYingbianConditional(card) ); }, content: () => { "step 0"; event.card = trigger.card; event.temporaryYingbian = trigger.temporaryYingbian || []; var yingbianConditionSatisfied = false; lib.yingbian.condition.simple.forEach((value, key) => { if ( (!event.temporaryYingbian.includes(key) && !get.cardtag(event.card, `yingbian_${key}`)) || !value(trigger) ) return; player.popup(`yingbian_${key}_tag`, lib.yingbian.condition.color.get(key)); if (!yingbianConditionSatisfied) yingbianConditionSatisfied = true; }); if ( event.temporaryYingbian.includes("force") || get.cardtag(event.card, "yingbian_force") || trigger.forceYingbian || player.hasSkillTag("forceYingbian") ) { player.popup("yingbian_force_tag", lib.yingbian.condition.color.get("force")); if (!yingbianConditionSatisfied) yingbianConditionSatisfied = true; } if (yingbianConditionSatisfied) { game.log(player, "触发了", event.card, "的应变条件"); event.goto(4); } else if ( (event.num = 0) >= (event.yingbianConditions = get.complexYingbianConditions()).length ) event.finish(); "step 1"; var yingbianCondition = event.yingbianConditions[num]; if ( event.temporaryYingbian.includes(yingbianCondition) || get.cardtag(card, `yingbian_${yingbianCondition}`) ) lib.yingbian.condition.complex.get(yingbianCondition)(trigger); else event.goto(3); "step 2"; if (result.bool) event.goto(4); "step 3"; event.num++; if (event.num < event.yingbianConditions.length) event.goto(1); else event.finish(); "step 4"; trigger.card.yingbian = true; var yingbianEffectExecuted = false; lib.yingbian.effect.forEach((value, key) => { if (!event.temporaryYingbian.includes(key) && !get.cardtag(card, `yingbian_${key}`)) return; game.yingbianEffect(trigger, value); if (!yingbianEffectExecuted) yingbianEffectExecuted = true; }); if (!yingbianEffectExecuted) { var defaultYingbianEffect = get.defaultYingbianEffect(card); if (lib.yingbian.effect.has(defaultYingbianEffect)) { game.yingbianEffect(trigger, lib.yingbian.effect.get(defaultYingbianEffect)); if (!yingbianEffectExecuted) yingbianEffectExecuted = true; } } if (yingbianEffectExecuted) player.addTempSkill("yingbian_changeTarget"); }, }, yingbian_changeTarget: { trigger: { player: "useCard2" }, forced: true, popup: false, charlotte: true, filter: function (event, player) { if (event.yingbian_removeTarget && event.targets && event.targets.length > 1) return true; if (!event.yingbian_addTarget) return false; var info = get.info(event.card); if (info.allowMultiple == false) return false; if (event.targets && !info.multitarget) { if ( game.hasPlayer(function (current) { return ( !event.targets.includes(current) && lib.filter.targetEnabled2(event.card, player, current) && lib.filter.targetInRange(event.card, player, current) ); }) ) { return true; } } return false; }, content: function () { "step 0"; if (trigger.yingbian_addTarget) player .chooseTarget( "应变:是否为" + get.translation(trigger.card) + "增加一个目标?", function (card, player, target) { var trigger = _status.event.getTrigger(); var card = trigger.card; return ( !trigger.targets.includes(target) && lib.filter.targetEnabled2(card, player, target) && lib.filter.targetInRange(card, player, target) ); } ) .set("ai", function (target) { var player = _status.event.player; var card = _status.event.getTrigger().card; return get.effect(target, card, player, player); }); else event.goto(2); "step 1"; if (result.bool) { var target = result.targets[0]; player.line(target, "green"); game.log(player, "发动应变效果,令", target, "也成为了", trigger.card, "的目标"); trigger.targets.add(target); } "step 2"; if (trigger.yingbian_removeTarget && trigger.targets.length > 1) player .chooseTarget( "应变:是否为" + get.translation(trigger.card) + "减少一个目标?", function (card, player, target) { var trigger = _status.event.getTrigger(); return trigger.targets.includes(target); } ) .set("ai", function (target) { var player = _status.event.player; var card = _status.event.getTrigger().card; return -get.effect(target, card, player, player); }); else event.finish(); "step 3"; if (result.bool) { var target = result.targets[0]; player.line(target, "green"); game.log(player, "发动应变效果,将", target, "从", trigger.card, "的目标中移除了"); trigger.targets.remove(target); } }, }, heiguangkai_ai: { ai: { effect: { player: function (card, player, target) { if ( typeof card !== "object" || !target || (get.name(card) !== "sha" && (get.type(card) !== "trick" || (get.color(card) !== "black" && !get.tag(card, "damage")))) ) return; if ( !target.hasSkill("heiguangkai_skill") || target.hasSkillTag("unequip2") || player.hasSkillTag("unequip", false, { name: card ? card.name : null, target: target, card: card, }) || player.hasSkillTag("unequip_ai", false, { name: card ? card.name : null, target: target, card: card, }) ) return; let targets = [], evt = _status.event.getParent("useCard"); targets.addArray(ui.selected.targets); if (evt && evt.card == card) targets.addArray(evt.targets); if (targets.length) { if (targets.length > 1 || !targets.includes(target)) return "zeroplayertarget"; return; } let info = get.info(card); if (!info || info.notarget || !info.filterTarget) return; let range, select = get.copy(info.selectTarget), filter; if (select === undefined) range = [1, 1]; else if (typeof select === "number") range = [select, select]; else if (get.itemtype(select) === "select") range = select; else if (typeof select === "function") range = select(card, player); if (info.singleCard) range = [1, 1]; game.checkMod(card, player, range, "selectTarget", player); if (range[1] < -1) range = [1, 1]; else if (range[0] < 0) { if (info.filterTarget === true) filter = game.players.length; else filter = game.countPlayer((current) => { return info.filterTarget(card, player, current); }); range = [filter, filter]; } if (!range) return; if (range[0] > 1 && range[1] > 1) return "zeroplayertarget"; return [1, 0, 0.7, 0]; }, }, }, }, }, translate: { suijiyingbian: "随机应变", suijiyingbian_info: "此牌的牌名视为你本回合内使用或打出的上一张基本牌或普通锦囊牌的牌名。", zhujinqiyuan: "逐近弃远", zhujinqiyuan_info: "出牌阶段,对一名有牌的其他角色使用。若你至其距离的大于1,你弃置其区域内的一张牌。若你至其的距离等于1,你获得其区域内的一张牌。", dongzhuxianji: "洞烛先机", dongzhuxianji_info: "出牌阶段,对包含你在内的一名角色使用。目标角色卜算2,然后摸两张牌。", chuqibuyi: "出其不意", chuqibuyi_info: "出牌阶段,对一名有手牌的其他角色使用。你展示其一张手牌,若此牌与【出其不意】的花色不同,则你对其造成1点伤害。", wuxinghelingshan: "五行鹤翎扇", wuxinghelingshan_skill: "五行鹤翎扇", wuxinghelingshan_info: "当你声明使用不为神属性的属性【杀】后,你可将此【杀】的属性改为不为神属性的其他属性。", wutiesuolian: "乌铁锁链", wutiesuolian_skill: "乌铁锁链", wutiesuolian_info: "锁定技,当你使用【杀】指定目标后,若其未横置,则其横置。", heiguangkai: "黑光铠", heiguangkai_skill: "黑光铠", heiguangkai_info: "锁定技,当你成为【杀】或伤害类锦囊牌或黑色普通锦囊牌的目标后,若此牌的目标数大于1,则你令此牌对你无效。", tongque: "铜雀", tongque_skill: "铜雀", tongque_info: "锁定技,你于一回合内使用的第一张带有“应变”效果的牌无视条件直接生效。", tianjitu: "天机图", tianjitu_skill: "天机图", tianjitu_info: "锁定技,当此牌进入你的装备区时,你弃置一张不为此【天机图】的牌。当此牌离开你的装备区时,你将手牌摸至五张。", taigongyinfu: "太公阴符", taigongyinfu_info: "出牌阶段开始时,你可以横置或重置一名角色。出牌阶段结束时,你可以重铸一张手牌。", taigongyinfu_skill: "太公阴符", taigongyinfu_link: "太公阴符", yingbian_zhuzhan_tag: "助战", yingbian_kongchao_tag: "空巢", yingbian_fujia_tag: "富甲", yingbian_canqu_tag: "残躯", yingbian_force_tag: "应变", _yingbian: "应变", yingbian_changeTarget: "应变", yingbian_add_tag: "(目标+)", yingbian_remove_tag: "(目标-)", yingbian_damage_tag: "(伤害+)", yingbian_draw_tag: "(摸牌)", yingbian_gain_tag: "(反甲)", yingbian_hit_tag: "(强命)", yingbian_all_tag: "(双项)", }, list: [ ["spade", 1, "juedou"], ["spade", 1, "taigongyinfu"], ["spade", 1, "guding"], ["spade", 2, "cixiong"], ["spade", 2, "bagua"], ["spade", 2, "tengjia"], ["spade", 2, "suijiyingbian"], ["spade", 3, "jiu"], ["spade", 3, "zhujinqiyuan"], ["spade", 3, "shuiyanqijunx", null, ["yingbian_zhuzhan", "yingbian_add"]], ["spade", 4, "sha", "thunder"], ["spade", 4, "guohe"], ["spade", 4, "shuiyanqijunx", null, ["yingbian_zhuzhan", "yingbian_add"]], ["spade", 5, "sha", "thunder"], ["spade", 5, "qinglong"], ["spade", 5, "jueying"], ["spade", 6, "sha", "thunder"], ["spade", 6, "lebu"], ["spade", 6, "qinggang"], ["spade", 7, "sha", "ice"], ["spade", 7, "sha", "ice"], ["spade", 7, "nanman", null, ["yingbian_fujia", "yingbian_remove"]], ["spade", 8, "sha", "ice"], ["spade", 8, "sha", "ice"], ["spade", 8, "sha", "ice"], ["spade", 9, "sha", null, ["yingbian_canqu", "yingbian_add"]], ["spade", 9, "sha", null, ["yingbian_canqu", "yingbian_add"]], ["spade", 9, "jiu"], ["spade", 10, "sha"], ["spade", 10, "sha", null, ["yingbian_zhuzhan", "yingbian_add"]], ["spade", 10, "bingliang"], ["spade", 11, "wuxie"], ["spade", 11, "shunshou"], ["spade", 11, "tiesuo"], ["spade", 12, "zhujinqiyuan", null, ["yingbian_fujia", "yingbian_hit"]], ["spade", 12, "tiesuo"], ["spade", 12, "zhangba"], ["spade", 13, "wuxie", null, ["yingbian_kongchao", "yingbian_draw"]], ["spade", 13, "nanman", null, ["yingbian_fujia", "yingbian_remove"]], ["spade", 13, "dawan"], ["heart", 1, "taoyuan", null, ["yingbian_fujia", "yingbian_remove"]], ["heart", 1, "wanjian", null, ["yingbian_fujia", "yingbian_remove"]], ["heart", 1, "wuxie"], ["heart", 2, "shan", null, ["yingbian_kongchao", "yingbian_draw"]], ["heart", 2, "shan", null, ["yingbian_kongchao", "yingbian_draw"]], ["heart", 2, "guohe", null, ["yingbian_zhuzhan", "yingbian_add"]], ["heart", 3, "wugu"], ["heart", 3, "tao"], ["heart", 3, "chuqibuyi"], ["heart", 4, "sha", "fire"], ["heart", 4, "tao"], ["heart", 4, "wugu"], ["heart", 5, "chitu"], ["heart", 5, "tao"], ["heart", 5, "qilin"], ["heart", 6, "tao"], ["heart", 6, "tao"], ["heart", 6, "lebu"], ["heart", 7, "sha", "fire"], ["heart", 7, "tao"], ["heart", 7, "dongzhuxianji"], ["heart", 8, "tao"], ["heart", 8, "shan"], ["heart", 8, "dongzhuxianji"], ["heart", 9, "tao"], ["heart", 9, "shan"], ["heart", 9, "dongzhuxianji"], ["heart", 10, "sha", "fire", ["yingbian_kongchao", "yingbian_damage"]], ["heart", 10, "sha"], ["heart", 10, "sha"], ["heart", 11, "sha"], ["heart", 11, "shan"], ["heart", 11, "dongzhuxianji"], ["heart", 12, "tao"], ["heart", 12, "shan"], ["heart", 12, "guohe"], ["heart", 12, "shandian"], ["heart", 13, "wuxie", null, ["yingbian_kongchao", "yingbian_gain"]], ["heart", 13, "shan"], ["heart", 13, "zhuahuang"], ["club", 1, "juedou"], ["club", 1, "zhuge"], ["club", 1, "huxinjing"], ["club", 2, "sha", null, ["yingbian_kongchao", "yingbian_add"]], ["club", 2, "heiguangkai"], ["club", 2, "tengjia"], ["club", 2, "renwang"], ["club", 3, "sha", null, ["yingbian_kongchao", "yingbian_add"]], ["club", 3, "jiu"], ["club", 3, "zhujinqiyuan", null, ["yingbian_zhuzhan", "yingbian_add"]], ["club", 4, "sha", null, ["yingbian_kongchao", "yingbian_add"]], ["club", 4, "bingliang"], ["club", 4, "zhujinqiyuan", null, ["yingbian_zhuzhan", "yingbian_add"]], ["club", 5, "sha"], ["club", 5, "sha", "thunder"], ["club", 5, "dilu"], ["club", 6, "sha"], ["club", 6, "sha", "thunder"], ["club", 6, "lebu"], ["club", 7, "sha"], ["club", 7, "sha", "thunder"], ["club", 7, "nanman", null, ["yingbian_fujia", "yingbian_remove"]], ["club", 8, "sha"], ["club", 8, "sha", "thunder"], ["club", 8, "sha"], ["club", 9, "sha", "thunder"], ["club", 9, "sha", "thunder"], ["club", 9, "jiu"], ["club", 10, "sha", "thunder"], ["club", 10, "sha", "thunder"], ["club", 10, "tiesuo"], ["club", 11, "sha"], ["club", 11, "sha", null, ["yingbian_canqu", "yingbian_add"]], ["club", 11, "tiesuo"], ["club", 12, "wuxie"], ["club", 12, "tianjitu"], ["club", 12, "tiesuo"], ["club", 13, "wuxie", null, ["yingbian_canqu", "yingbian_draw"]], ["club", 13, "tongque"], ["club", 13, "tiesuo"], ["diamond", 1, "juedou"], ["diamond", 1, "zhuge"], ["diamond", 1, "wuxinghelingshan"], ["diamond", 2, "tao"], ["diamond", 2, "shan", null, ["yingbian_kongchao", "yingbian_draw"]], ["diamond", 2, "shan", null, ["yingbian_kongchao", "yingbian_draw"]], ["diamond", 3, "tao"], ["diamond", 3, "shan"], ["diamond", 3, "shunshou"], ["diamond", 4, "sha", "fire", ["yingbian_kongchao", "yingbian_damage"]], ["diamond", 4, "shan", null, ["yingbian_canqu", "yingbian_gain"]], ["diamond", 4, "shunshou"], ["diamond", 5, "sha", "fire"], ["diamond", 5, "shan"], ["diamond", 5, "guanshi"], ["diamond", 6, "sha"], ["diamond", 6, "shan"], ["diamond", 6, "shan"], ["diamond", 7, "sha"], ["diamond", 7, "shan"], ["diamond", 7, "shan"], ["diamond", 8, "sha", null, ["yingbian_canqu", "yingbian_hit"]], ["diamond", 8, "shan"], ["diamond", 8, "shan"], ["diamond", 9, "sha"], ["diamond", 9, "shan"], ["diamond", 9, "jiu"], ["diamond", 10, "sha", "fire"], ["diamond", 10, "shan"], ["diamond", 10, "shan"], ["diamond", 11, "shan"], ["diamond", 11, "shan"], ["diamond", 11, "shan"], ["diamond", 12, "tao"], ["diamond", 12, "chuqibuyi"], ["diamond", 12, "wutiesuolian"], ["diamond", 12, "wuxie"], ["diamond", 13, "sha"], ["diamond", 13, "zixin"], ["diamond", 13, "hualiu"], ["diamond", 5, "muniu"], ], help: { 应变篇: '