game.import("extension", function (lib, game, ui, get, ai, _status) { return { name: "超界Ⅱ期", content: function (config, pack) {}, precontent: function () {}, help: {}, config: {}, package: { character: { character: { "sup2_luxun": ["male", "wu", 3, ["qianxun", "sup2_lianying"], []], "sup2_caopi": ["male", "wei", "3/4", ["sup2_xingshang", "sup2_fangzhu", "songwei"], []], "sup2_weiyan": ["male", "shu", "2/4/3", ["sup2_kuanggu", "sup2_qimou"], []], "sup_caiwenji": ["female", "qun", 3, ["sup_beige", "sup_duanchang"], []], "sup2_yuanshu": ["male", "qun", 5, ["sup2_yongsi", "sup2_weidi"], []], "sup2_machao": ["male", "shu", 5, ["sup2_tieji", "sup2_mashu"], []], }, translate: { "sup2_luxun": "超陆逊", "sup2_caopi": "超曹丕", "sup2_weiyan": "超魏延", "sup_caiwenji": "超蔡琰", "sup2_yuanshu": "超袁术", "sup2_machao": "超马超" } }, card: { card: {}, translate: {}, list: [] }, skill: { skill: { "sup2_lianying": { audio: "ext:超界Ⅱ期:2", trigger: { player: "loseAfter" }, frequent: true, filter(event, player) { return true; if (player.countCards("h")) return false; const evt = event.getl(player); return evt && evt.player == player && evt.hs && evt.hs.length > 0; }, async content(event, trigger, player) { player.draw(); }, ai: { threaten: 0.8, effect: { target(card) { if (card.name == "guohe" || card.name == "liuxinghuoyu") return 0.5; } }, noh: true, skillTagFilter(player, tag) { if (tag == "noh") { if (player.countCards("h") != 1) return false; } } }, "_priority": 0 }, "sup2_fangzhu": { audio: "ext:超界Ⅱ期:2", trigger: { player: "damageBegin4" }, filtet: function (event, player) { return 1 || player.getDamagedHp() > 0; }, direct: true, preHidden: true, content: function () { "step 0" var draw = player.getDamagedHp() + trigger.num; player .chooseTarget( [1, draw], get.prompt("sup2_fangzhu"), "令至多" + draw + "名其他角色翻面" + (draw > 0 ? "并摸" + get.cnNumber(draw) + "张牌" : ""), function (card, player, target) { return 1 || player != target; } ) .setHiddenSkill("fangzhu") .set("ai", target => { if (target.hasSkillTag("noturn")) return 0; var player = _status.event.player; var current = _status.currentPhase; var dis = current ? get.distance(current, target, "absolute") : 1; var draw = player.getDamagedHp(); var att = get.attitude(player, target); if (att == 0) return target.hasJudge("lebu") ? Math.random() / 3 : Math.sqrt(get.threaten(target)) / 5 + Math.random() / 2; if (att > 0) { if (target.isTurnedOver()) return att + draw; if (draw < 4) return -1; if (current && target.getSeatNum() > current.getSeatNum()) return att + draw / 3; return (10 * Math.sqrt(Math.max(0.01, get.threaten(target)))) / (3.5 - draw) + dis / (2 * game.countPlayer()); } else { if (target.isTurnedOver()) return att - draw; if (draw >= 5) return -1; if (current && target.getSeatNum() <= current.getSeatNum()) return -att + draw / 3; return (4.25 - draw) * 10 * Math.sqrt(Math.max(0.01, get.threaten(target))) + (2 * game.countPlayer()) / dis; } }); "step 1" if (result.bool) { player.logSkill("fangzhu", result.targets); var draw = player.getDamagedHp() + trigger.num; if (draw == 0) { draw = 1; //return event.finish() } for (let target of result.targets) { if (draw > 0) target.draw(draw); target.turnOver(); } } }, ai: { maixie: true, "maixie_hp": true, effect: { target: function (card, player, target) { if (get.tag(card, "damage")) { if (player.hasSkillTag("jueqing", false, target)) return [1, -2]; if (target.hp <= 1) return; if (!target.hasFriend()) return; var hastarget = false; var turnfriend = false; var players = game.filterPlayer(); for (var i = 0; i < players.length; i++) { if (get.attitude(target, players[i]) < 0 && !players[i].isTurnedOver()) { hastarget = true; } if (get.attitude(target, players[i]) > 0 && players[i].isTurnedOver()) { hastarget = true; turnfriend = true; } } if (get.attitude(player, target) > 0 && !hastarget) return; if (turnfriend || target.hp == target.maxHp) return [0.5, 1]; if (target.hp > 1) return [1, 0.5]; } } } }, "_priority": 0 }, "sup2_xingshang": { audio: "ext:超界Ⅱ期:2", trigger: { global: "die" }, filter: function (event, player) { return player.isDamaged() || event.player.countCards("he") > 0; }, direct: true, content: function () { "step 0" var choice = []; if (player.isDamaged()) choice.push("回复体力"); if (trigger.player.countCards("he")) choice.push("获得牌"); choice.push("cancel2"); player.logSkill(event.name, trigger.player); if (1 || result.control == "获得牌") { event.togain = trigger.player.getCards("he"); player.gain(event.togain, trigger.player, "giveAuto", "bySelf"); } player.recover(); "step 1" player.damage("nosource"); }, "_priority": 0 }, "sup2_kuanggu": { audio: "kuanggu", audioname: ["re_weiyan", "ol_weiyan"], trigger: { source: "damageSource" }, filter: function (event, player) { return event.num > 0; }, frequent: true, preHidden: true, mod: { cardUsable: function (card, player, num) { if (card.name == "sha") return num + player.storage.sup2_kuanggu_num; } }, init: function (player) { player.storage.sup2_kuanggu_num = 0; }, content: function () { "step 0" event.num = trigger.num; "step 1" if (player.hp == player.maxHp) player.changeHujia(1); player.recover(); player.draw([1, 2].randomGet()); player.storage.sup2_kuanggu_num += 1; "step 2" event.num--; if (event.num > 0) { event.goto(1); } }, group: "sup2_kuanggu_1", subSkill: { "1": { trigger: { global: "phaseEnd" }, direct: true, content: function () { player.storage.sup2_kuanggu_num = 0; }, sub: true, "_priority": 0 } }, "_priority": 0 }, "sup2_qimou": { unique: true, limited: true, audio: "ext:超界Ⅱ期:2", enable: "phaseUse", filter: function (event, player) { return !player.storage.sup2_qimou; }, init: function (player) { player.storage.sup2_qimou = false; }, mark: true, intro: { content: "limited" }, skillAnimation: true, animationColor: "orange", content: function () { "step 0" player.loseMaxHp(); "step 1" var num = Math.min(player.maxHp - 1, player.hp + player.hujia - 1); if (player.countCards("hs", { name: ["tao", "jiu"] })) { num -= -parseInt(player.countCards("hs", { name: ["tao", "jiu"] }) / 2); } var map = {}; var list = []; for (var i = 1; i <= player.hp + player.hujia; i++) { var cn = get.cnNumber(i, true); map[cn] = i; list.push(cn); } event.map = map; player.awakenSkill("sup2_qimou"); player.storage.sup2_qimou = true; player .chooseControl(list, function () { return get.cnNumber(_status.event.goon, true); }) .set("prompt", "对自己造成任意点伤害") .set("goon", num); "step 2" event.num = event.map[result.control] || 1; //player.storage.reqimou2=num; player.damage(event.num); "step 2" player.loseHp(event.num); //player.draw(num); //player.addTempSkill('reqimou2'); }, ai: { order: 14, result: { player: function (player) { if (player.hp + player.hujia < 3) return false; var mindist = player.hp; if (player.countCards("hs", card => player.canSaveCard(card, player))) mindist++; if ( game.hasPlayer(function (current) { return ( get.distance(player, current) <= mindist && player.canUse("sha", current, false) && get.effect(current, { name: "sha" }, player, player) > 0 ); }) ) { return 1; } return 0; } } }, "_priority": 0 }, "sup_beige": { audio: "beige", audioname: ["ol_caiwenji"], trigger: { global: ["damageEnd", "dying"] }, logTarget: "player", filter: function (event, player) { return event.player.isIn(); }, "_priority": -13235, check: function (event, player) { if(event.player !== player && event.player.hp > 0)return false let att = get.attitude(player, event.player); //if (event.player.hasSkill("xinleiji")) return att > 0; //if (att > 0 || event.player.isHealthy()) return true; //if (!event.source) return true; let att1 = get.attitude(player, event.source); //game.log(att,att1) return att > 0 && att1 < 0 //return att <= 0 || event.source.isTurnedOver(); }, mark: true, marktext: "歌", intro: { markcount: "expansion", mark: function (dialog, storage, player) { var cards = player.getExpansions("sup_beige"); if (!cards) cards = []; if (player.isUnderControl(true) && cards.length != 0) dialog.addAuto(cards); else return "共有" + get.cnNumber(cards.length) + "张牌"; } }, init:()=>{game.addGlobalSkill('sup_beige_hm')}, content: function () { "step 0" event.num1 = 0; "step 1" suits = new Set(); cards1 = player.getExpansions("sup_beige"); for (var i of cards1) { suits.add(get.suit(i, player)); } if (suits.size >= 4) { event.goto(2); } else { num = 4 - suits.size; player .chooseCard("h", false, [1, num], "悲歌:你可以选择至多" + num + "张花色各不相同的手牌", (card, player) => { // if(!ui.selected.cards.length) return true; var suit = get.suit(card); for (var i of ui.selected.cards) { if (get.suit(i, player) == suit) return false; } for (var i of player.getExpansions("sup_beige")) { if (get.suit(i, player) == suit) return false; } return true; }) .set("complexCard", true) .set("ai", card => 6); } "step 2" if (result.bool&&result.cards) { suits = new Set(); cards1 = player.getExpansions("sup_beige"); for (var i of cards1) { suits.add(get.suit(i, player)); } flag = true for(let c of result.cards){ if(suits.has(get.suit(c,player)))flag = false } if(flag)player.addToExpansion("giveAuto", result.cards, player).gaintag.add("sup_beige"); } "step 3" cards1 = player.getExpansions("sup_beige"); event.total = cards1.length; event.num = 0; "step 4" event.target = trigger.player; event.source = trigger.source; trigger.player.judge(card => { for (let c of player.getExpansions("sup_beige")) { if (get.suit(card) == get.suit(c)) return 1.5; } return -1.5; }); "step 5" event.judgeResult = get.copy(result); "step 6" target = event.target; source = event.source; suits = new Set(); cards1 = player.getExpansions("sup_beige"); for (var i of cards1) { suits.add(get.suit(i, player)); } if (suits.has(event.judgeResult.suit)) { for (var i of cards1) { if(player !== target && get.suit(i, player)==event.judgeResult.suit){ target.gain(i,'gain2').gaintag.add('sup_beige'); }; } switch (event.judgeResult.suit) { case "heart": if (target.isIn() && target.isDamaged()) target.recover(); player.recover(); break; case "diamond": if (target.isIn()) target.draw(2); player.draw(2); break; case "spade": if (source && source.isIn() && !source.isTurnedOver()) source.turnOver(); player.addExpose(0.1); break; case "club": if (source && source.isIn() && source.countCards("hej") > 0) target.gainPlayerCard("hej", source, true); player.addExpose(0.1); break; } } "step 7" target = event.target; source = event.source; suits = new Set(); cards1 = player.getExpansions("sup_beige"); for (var i of cards1) { suits.add(get.suit(i, player)); } if (suits.has(event.judgeResult.suit) && event.judgeResult.suit == "club") { if (source && source.isIn() && source.countCards("hej") > 0) player.gainPlayerCard("hej", source, true); } "step 8" event.num++; // game.log(event.num , event.total,event.num < event.total) if (event.num < event.total) event.goto(4); "step 9" event.num1++; //game.log(event.num1, trigger.num, trigger.name); if (event.num1 < trigger.num && trigger.name != "dying") event.goto(1); }, subSkill:{ hm:{ mod:{ ignoredHandcard:function(card,player){ if(card.hasGaintag('sup_beige')){ return true; } }, cardDiscardable:function(card,player,name){ if(name=='phaseDiscard'&&card.hasGaintag('sup_beige')){ return false; } }, }, } } }, "sup_duanchang": { audio: 2, audioname: ["re_caiwenji", "ol_caiwenji"], trigger: { player: "dying" }, forced: true, forceDie: true, locked: true, // skillAnimation: true, // animationColor: "gray", filter: function (event, player) { return event.source && event.source.isIn() && !player.storage.sup_duanchang_pArray.includes(event.source); }, init: function (p) { p.storage.sup_duanchang_pArray = []; }, content: function () { trigger.source.addSkill("sup_duanchang_baiban"); player.storage.sup_duanchang_pArray.push(trigger.source); }, logTarget: "source", ai: { "maixie_defend": true, threaten: function (player, target) { if (target.hp == 1) return 0.2; return 1.5; }, effect: { target: function (card, player, target, current) { if (!target.hasFriend()) return; if (target.hp <= 1 && get.tag(card, "damage")) { if (player.hasSkillTag("jueqing", false, target)) return 3; return [1, 0, 0, -3 * get.threaten(player)]; } } } }, group: ["sup_duanchang_removeBaiBan"], subSkill: { removeBaiBan: { trigger: { global: "roundStart" }, direct: true, content: function () { for (let p of player.storage.sup_duanchang_pArray) { p.removeSkill("sup_duanchang_baiban"); } player.storage.sup_duanchang_pArray = []; } }, baiban: { init: function (player, skill) { player.addSkillBlocker(skill); }, onremove: function (player, skill) { player.removeSkillBlocker(skill); }, charlotte: true, skillBlocker: function (skill, player) { return skill !== "sup_duanchang_baiban"&&!lib.skill[skill].charlotte; }, mark: true, intro: { content: function (storage, player, skill) { var list = player.getSkills(null, false, false).filter(function (i) { return lib.skill.sup_duanchang_baiban.skillBlocker(i, player); }); if (list.length) return "失效技能:" + get.translation(list); return "无失效技能"; } }, "_priority": 0 } } }, "sup2_yongsi": { audio: "ext:超界Ⅱ期:2", group: ["sup2_yongsi_1", "sup2_yongsi_2"], locked: true, subSkill: { "1": { audio: "drlt_yongsi", trigger: { player: "phaseDrawBegin2" }, forced: true, filter: function (event, player) { return !event.numFixed; }, content: function () { trigger.num += game.countPlayer(); }, sub: true, "_priority": 0 }, "2": { audio: "drlt_yongsi", trigger: { player: "phaseUseEnd" }, forced: true, filter: function (event, player) { var num = 0; player.getHistory("sourceDamage", function (evt) { if (evt.getParent("phaseUse") == event) num += evt.num; }); return !num || num > 1; }, content: function () { var numx = 0; player.getHistory("sourceDamage", function (evt) { if (evt.getParent("phaseUse") == trigger) numx += evt.num; }); if (!numx) { var num = player.hp - player.countCards("h"); if (num > 0) player.draw(num); } else { player.addTempSkill("drlt_yongsi1", { player: "phaseDiscardAfter" }); } }, sub: true, "_priority": 0 } }, "_priority": 0 }, "sup2_weidi": { audio: "ext:超界Ⅱ期:2", forceaudio: true, unique: true, zhuSkill: false, trigger: { player: "phaseDiscardBegin" }, direct: true, filter: function (event, player) { //if(!player.hasZhuSkill('drlt_weidi')) return false; return ( player.needsToDiscard() > 0 && game.countPlayer(function (current) { return current != player && current.group != "qun555"; }) > 0 ); }, content: function () { "step 0" var num = Math.min( player.needsToDiscard(), // game.countPlayer(function (target) { // return target != player; //&&target.group=='qun'; // }) ); if (num) { player.chooseCardTarget({ prompt: get.prompt("sup2_weidi"), prompt2: "你可以将" + (num > 1 ? "至多" : "") + get.cnNumber(num) + "张手牌交给等量的其他角色。先按顺序选中所有要给出的手牌,然后再按顺序选择等量的目标角色", selectCard: [1, num], selectTarget: function () { return 1; return ui.selected.cards.length; }, filterTarget: function (card, player, target) { return target != player; //&&target.group=='qun'; }, complexSelect: true, filterOk: function () { return ui.selected.cards.length > 0 && ui.selected.targets.length == 1; }, ai1: function (card) { var player = _status.event.player; var value = get.value(card, player, "raw"); if ( game.hasPlayer(function (target) { return ( target != player && target.group != "qun555" && !ui.selected.targets.includes(target) && get.sgn(value) == get.sgn(get.attitude(player, target)) ); }) ) return 1 / Math.max(1, get.useful(card)); return 0.5; }, ai2: function (target) { var player = _status.event.player; var card = ui.selected.cards[ui.selected.targets.length]; //if(card&&get.value(card,player,'raw')<0) return -get.attitude(player,target); return get.attitude(player, target); } }); } else event.finish(); "step 1" if (result.bool && result.cards.length > 0) { var list = []; for (var i = 0; i < result.targets.length; i++) { var target = result.targets[i]; var card = result.cards[i]; list.push([target, card]); } player.logSkill("drlt_weidi", result.targets); game .loseAsync({ gain_list: list, player: player, cards: result.cards, giver: player, animate: "giveAuto" }) .setContent("gaincardMultiple"); } else event.finish(); "step 2" if (player.needsToDiscard() > 0) event.goto(0); }, "_priority": 0 }, sup2_mashu:{ trigger:{ global:"phaseBefore", player:"enterGame", }, forced:true, filter(event,player){ return (event.name!='phase'||game.phaseNumber==0); }, content(){ player.disableEquip(2); player.disableEquip(1); let cards = [] for(let i = 0;i < 1;++i){ var card=get.cardPile2(function(c){ var type=get.subtype(c); if(!['equip4'].includes(type)) return false; if(cards.includes(c))return false return true; }); cards.push(card) if(card){ player.useCard(card,player) } } }, mod:{ canBeDiscarded:function(card){ if(get.position(card)=='e'&&['equip3','equip4'].includes(get.subtype(card))) return false; }, canBeGained:function(card){ if(get.position(card)=='e'&&['equip3','equip4'].includes(get.subtype(card))) return false; }, cardUsable:function(card,player,num){ if(card.name=='sha') return num+player.getCards('e',c=>get.subtype(c)==='equip4').length; }, cardDiscardable:function(card,player,name){ if(get.position(card)=='e'&&['equip3','equip4'].includes(get.subtype(card))){ return false; } }, // cardEnabled2(card,player){ // if(get.position(card)=='e'&&['equip3','equip4'].includes(get.subtype(card))){ // return false; // } // }, }, "_priority":0, group:['sup2_mashu_use','sup2_mashu_draw','sup2_mashu_loseBefore'], subSkill:{ 'loseBefore':{ trigger:{ player:['loseBefore'], }, direct:true, slient:true, filter:function(event,player){ for(let card of event.cards){ if(get.position(card)=='e'&&['equip3','equip4'].includes(get.subtype(card))){ return true; } } return false }, content(){ trigger.cards = trigger.cards.filter(card=>!(get.position(card)=='e'&&['equip3','equip4'].includes(get.subtype(card)))) } }, 'use':{ trigger:{ player:['useCard'], }, filter:function(event,player){ return ['equip3','equip4'].includes(get.subtype(event.card)) }, slient:true, forced:true, init:function(player){ player.storage.sup2_mashu_cCardA=[] }, content:function(){ player.draw() var card = trigger.card if(player.storage.sup2_mashu_cCardA.filter(c=>get.name(c)===get.name(card)).length === 0){ var new_card = game.createCard(card) new_card.discard() player.storage.sup2_mashu_cCardA.push(new_card) } if(get.subtype(card) === 'equip4'){ player.expandEquip(1); player.expandEquip(4); }else{ player.expandEquip(2); player.expandEquip(3); } } }, 'draw':{ trigger:{ player:"phaseDrawBegin2", }, frequent:true, filter(event,player){ return !event.numFixed; }, async content(event,trigger,player){ trigger.num+=player.getCards('e',c=>get.subtype(c)==='equip3').length; }, ai:{ threaten:1.3, }, "_priority":0, }, } }, sup2_tieji:{ shaRelated:true, audio:2, audioname:["boss_lvbu3"], trigger:{ player:"useCardToPlayered", }, check:function(event,player){ return get.attitude(player,event.target)<=0; }, init:function(p){ p.storage.sup2_tieqi_pArray=[] p.storage.sup2_tieqi_dHArray=[] }, filter:function(event,player){ return event.card.name=='sha'&&!player.storage.sup2_tieqi_pArray.includes(event.target) }, logTarget:"target", content:function(){ "step 0" player.storage.sup2_tieqi_pArray.push(trigger.target) let num = player.countCards('e',c=>['equip3','equip4'].includes(get.subtype(c))) if(trigger.target.getCards('hej').length === 0){ player.storage.sup2_tieqi_dHArray.push(trigger.target) trigger.target.addTempSkill('sup2_tieji_baiban') event.finish() }else{ player.chooseButton([`使用其中至多${num}张牌`,trigger.target.getCards('hej')],[0,num],true) .set("filterButton",(button)=>{ let card = button.link return player.hasUseTarget({name:get.name(card)}) }).set('ai',button=>{ var player=_status.event.player,card=button.link var val=player.getUseValue(card)+0.01; if(['equip3','equip4'].includes(get.subtype(card)))return 10 return val; }); } 'step 1' event.cards = result.links let f1=event.cards.filter(c=>get.type(c)==='basic').length!==0,f2=event.cards.filter(c=>get.type(c)==='trick').length!==0 // game.log(f1,f2,event.cards.length === 0) if(f1){ player.storage.sup2_tieqi_dHArray.push(trigger.target) } if(f2){ trigger.target.addTempSkill('sup2_tieji_baiban') } if(event.cards.length === 0){ player.storage.sup2_tieqi_dHArray.push(trigger.target) trigger.target.addTempSkill('sup2_tieji_baiban') } 'step 2' for(let c of event.cards){ player.chooseUseTarget(true,c) } }, group:['sup2_tieji_phaseEnd','sup2_tieji_directHit'], subSkill:{ phaseEnd:{ trigger:{ player:"phaseEnd", }, direct:true, slient:true, content(){ player.storage.sup2_tieqi_pArray=[] } }, directHit:{ trigger:{ player:"useCardToPlayered", }, direct:true, filter:function(event,player){ // game.log( player.storage.sup2_tieqi_dHArray.includes(event.player)) return player.storage.sup2_tieqi_dHArray.includes(event.target) }, content(){ // game.log('boom') trigger.directHit.push(trigger.target); }, "_priority":9684462, }, baiban:{ init: function (player, skill) { player.addSkillBlocker(skill); }, onremove: function (player, skill) { player.removeSkillBlocker(skill); }, charlotte: true, skillBlocker: function (skill, player) { return skill !== "sup2_tieji_baiban"&&!lib.skill[skill].charlotte; }, mark: true, intro: { content: function (storage, player, skill) { var list = player.getSkills(null, false, false).filter(function (i) { return lib.skill.sup_duanchang_baiban.skillBlocker(i, player); }); if (list.length) return "失效技能:" + get.translation(list); return "无失效技能"; } }, "_priority": 0 } }, ai:{ ignoreSkill:true, skillTagFilter:function(player,tag,arg){ if(tag=='directHit_ai'){ return get.attitude(player,arg.target)<=0; } if(!arg||arg.isLink||!arg.card||arg.card.name!='sha') return false; if(!arg.target||get.attitude(player,arg.target)>=0) return false; if(!arg.skill||!lib.skill[arg.skill]||lib.skill[arg.skill].charlotte||get.is.locked(arg.skill)||!arg.target.getSkills(true,false).includes(arg.skill)) return false; }, "directHit_ai":true, }, "_priority":9684463, } }, translate: { "sup2_lianying": "连营", "sup2_lianying_info": "当你失去牌时,你可以摸一张牌。", "sup2_fangzhu": "放逐", "sup2_fangzhu_info": "当你即将受到伤害时,你可令至多X名角色摸X张牌(X为你已损失的体力值+即将受到的伤害),然后这些角色依次将武将牌翻面。", "sup2_xingshang": "行殇", "sup2_xingshang_info": "当其他角色死亡后,你可以回复2点体力并获得其所有牌,然后你受到1点无来源伤害。", "sup2_kuanggu": "狂骨", "sup2_kuanggu_info": "当你造成1点伤害后,你可以回复1点体力(若你未受伤则改为获得1点护甲)并摸随机1-2张牌,然后你本回合可以额外使用一张【杀】。", "sup2_qimou": "奇谋", "sup2_qimou_info": "限定技,出牌阶段,你可以失去1点体力上限,然后对自己造成至多X点伤害并失去等量体力(X为你当前体力值与护甲值总和)。", "sup_beige": "悲歌", "sup_beige_info": "①当有角色受到1点伤害或进入濒死状态后,你可将任意张花色各不相同且与“歌”的花色各不相同的手牌置于武将牌上,称为“歌”,然后令其进行X次判定(X为你“歌”的数量)。对于每次判定结果,若判定结果花色存在于“歌”中:若受伤角色不为你则其获得对应花色的“歌”,然后根据花色执行以下的一个选项:
♥:你与其各回复1点体力
♦:你与其各摸2张牌
♣:你与其各获得伤害来源区域内的1张牌
♠:伤害来源将武将牌翻至背面朝上
②场上角色从“歌”中获得的牌不计入手牌上限。", "sup_duanchang": "断肠", "sup_duanchang_info": "锁定技,令你进入濒死阶段的角色当前的所有技能失效。一轮游戏开始时,你恢复场上以此法失效的技能。", "sup2_yongsi": "庸肆", "sup2_yongsi_info": "锁定技,摸牌阶段,你额外摸X张牌(X为当时场上人数);出牌阶段结束时,若你本回合:1.没有造成伤害,将手牌摸至当前体力值;2.造成的伤害超过1点,本回合手牌上限改为已损失体力值。", "sup2_weidi": "伪帝", "sup2_weidi_info": "弃牌阶段开始时,若你的手牌数大于手牌上限,则你可以将至多X张手牌交给1名其他角色。然后若X大于0,你可重复此流程(X为你的手牌数与手牌上限之差)。", 'sup2_tieji':"铁骑", 'sup2_tieji_info':"每回合每名角色限1次。当你使用【杀】指定一名角色为目标时,你可以观看其区域内的牌并选择其中至多X张使用之(X为你坐骑栏内的牌数量)。若你以此法选择:基本牌:其无法响应你使用的牌直到回合结束;锦囊牌:其所有技能失效直到回合结束。若你未选择任何牌,你依次令其获得以上两种效果。", "sup2_mashu":"马术", "sup2_mashu_info": "①游戏开始时,你废除你的武器栏与防具栏并使用牌堆中的1张进攻坐骑牌。
②当你使用坐骑牌时,你摸一张牌并复制一张相同的坐骑牌置入弃牌堆(复制牌每种牌名限一次)。若此牌为进攻/防御坐骑牌,你获得一个额外的武器栏与进攻马栏/防具栏与防御马栏。
③你坐骑栏内的牌无法被其他角色弃置或获得。
④摸牌阶段你摸牌数+X,出牌阶段你可以额外使用Y张【杀】(X/Y为你的装备栏的防御马/进攻马数量)。" } }, intro: "", author: "喵喵", diskURL: "", forumURL: "", version: "1.0" }, files: { "character": ["sup2_luxun.jpg", "sup2_caopi.jpg", "sup2_weiyan.jpg", "sup_caiwenji.jpg"], "card": [], "skill": [], "audio": [] } }; });