'use strict'; game.import('card',function(lib,game,ui,get,ai,_status){ return { name:'guozhan', connect:true, card:{ zhaoshu:{ audio:true, mode:['guozhan'], fullskin:true, type:'equip', subtype:'equip5', skills:['zhaoshu_skill'], content:function(){ cards=cards.filterInD(); if(cards.length&&target.isAlive()){ target.addToExpansion(cards,'gain2').gaintag.add('zhaoshu_skill'); target.addSkill('zhaoshu_skill'); game.addGlobalSkill('zhaoshu_global'); } }, onEquip:function(){ if(player.isAlive()){ player.addToExpansion(card,'giveAuto').gaintag.add('zhaoshu_skill'); player.markAuto('zhaoshu_skill',[card]); player.addSkill('zhaoshu_skill'); game.addGlobalSkill('zhaoshu_global'); } }, ai:{ order:12, value:3, useful:1, result:{ keepAI:true, target:1, }, } }, gz_haolingtianxia:{ audio:true, mode:['guozhan'], fullskin:true, type:'trick', enable:true, filterTarget:function(card,player,target){ return target!=player&&!target.isMinHp(); }, content:function(){ 'step 0' event.list=game.filterPlayer(function(current){ return current!=target; }).sortBySeat(); 'step 1' if(!target.isIn()){ event.finish(); return; } var current=event.list.shift(); if(!current||!current.isIn()||current.hasSkill('diaohulishan')){ if(event.list.length) event.redo(); else event.finish(); return; } event.current=current; if(current.identity!='wei'){ current.chooseToDiscard('he','弃置一张牌,并视为对'+get.translation(target)+'使用一张【杀】,或点击「取消」弃置其一张牌').set('ai',function(card){ if(!_status.event.goon) return 0; return 5-get.value(card); }).set('goon',(get.effect(target,{name:'guohe'},current){ let target=_status.event.getParent().target,hs=target.getCards('h'),type=[],att=get.attitude(_status.event.player,target); if(hs.length<2) return att>0?1:0; hs.forEach(i=>{ type.add(get.type2(i,target)); }); if(target.identity!=='qun'){ if(Boolean(att>0)===Boolean(type.length>1)) return 1; return 0; } if(type.length<2||target.hp<3) return att>0?1:0; if(hs.length===2) return att>0?0:1; return att>0?1:0; }); 'step 2' if(result.index==0){ var list=[],hs=target.getCards('h'); for(var i of hs){ if(lib.filter.cardDiscardable(i,target,'gz_wenheluanwu')) list.add(get.type2(i,target)); if(list.length>1) break; } if(list.length>1) target.chooseToDiscard('h',true,'请弃置两张类型不同的手牌',2,function(card,player){ if(!ui.selected.cards.length) return true; return get.type2(card,target)!=get.type2(ui.selected.cards[0],target); }).set('complexCard',true); else if(list.length==1) target.chooseToDiscard('h',true); else event.finish(); } else{ player.discardPlayerCard(target,'h',true,'visible'); } 'step 3' if(target.identity!='qun'||!result.bool||!result.cards||!result.cards.length||target.countCards('h')>0||target.hp<1) event.finish(); else target.draw(Math.min(5,target.hp)); }, ai:{ order:6, value:10, useful:6, tag:{ discard:1.5, loseCard:1.5, }, result:{target:-1.5}, }, }, liulongcanjia:{ audio:true, mode:['guozhan'], fullskin:true, type:'equip', subtype:'equip6', subtypes:['equip3','equip4'], nomod:true, nopower:true, //unique:true, distance:{ globalFrom:-1, globalTo:+1, }, skills:['liulongcanjia'], ai:{ equipValue:function(card,player){ if(player.countCards('e',{subtype:['equip3','equip4']})>1) return 1; if(player.hasSkill('gzzongyu')) return 9; if(game.hasPlayer(function(current){ return current.hasSkill('gzzongyu')&&get.attitude(player,current)<=0; })) return 1; return 7.2; }, basic:{ equipValue:7.2 } }, }, minguangkai:{ audio:true, mode:['guozhan'], fullskin:true, type:'equip', subtype:'equip2', skills:['minguangkai_cancel','minguangkai_link'], ai:{ basic:{ equipValue:6 } } }, dinglanyemingzhu:{ audio:true, mode:['guozhan'], fullskin:true, type:'equip', subtype:'equip5', nomod:true, nopower:true, unique:true, global:'g_dinglanyemingzhu_ai', skills:['dinglanyemingzhu_skill'], ai:{ equipValue:function(card,player){ if(player.hasSkill('jubao')) return 8; if(player.hasSkill('gzzhiheng')) return 6; if(game.hasPlayer(function(current){ return current.hasSkill('jubao')&&get.attitude(player,current)<=0; })){ return 0; } return 7; }, basic:{ equipValue:6.5 } } }, feilongduofeng:{ audio:true, mode:['guozhan'], fullskin:true, type:'equip', subtype:'equip1', nomod:true, nopower:true, unique:true, global:'g_feilongduofeng_ai', distance:{attackFrom:-1}, skills:['feilongduofeng','feilongduofeng3'], ai:{ equipValue:function(card,player){ if(player.hasSkill('zhangwu')) return 9; if(game.hasPlayer(function(current){ return current.hasSkill('zhangwu')&&get.attitude(player,current)<=0; })){ return 1; } return 8; }, basic:{ equipValue:7 } } }, taipingyaoshu:{ audio:true, fullskin:true, type:'equip', subtype:'equip2', nomod:true, nopower:true, unique:true, global:['g_taipingyaoshu_ai'], skills:['taipingyaoshu'], ai:{ equipValue:function(card,player){ if(player.hasSkill('wendao')) return 9; if(game.hasPlayer(function(current){ return current.hasSkill('wendao')&&get.attitude(player,current)<=0; })){ return 1; } return 6; }, basic:{ equipValue:6 } }, filterLose:function(card,player){ if(player.hasSkillTag('unequip2')) return false; return true; }, loseDelay:false, onLose:function(){ var next=game.createEvent('taipingyaoshu'); event.next.remove(next); var evt=event.getParent(); if(evt.getlx===false) evt=evt.getParent(); evt.after.push(next); next.player=player; next.setContent(lib.card.taipingyaoshu.onLosex); }, onLosex:function(){ 'step 0' player.logSkill('taipingyaoshu'); player.draw(2); 'step 1' if(player.hp>1||get.mode()=='guozhan') player.loseHp(); } }, yuxi:{ audio:true, mode:['guozhan'], fullskin:true, type:'equip', subtype:'equip5', skills:['yuxi_skill'], ai:{ equipValue:9 } }, xietianzi:{ audio:true, fullskin:true, type:'trick', enable:function(card,player,event){ if(get.mode()=='guozhan'&&!player.isMajor()) return false; if(player.hasSkill('xietianzi')) return false; if(_status.currentPhase!=player) return false; var evt=event||_status.event; if(evt.name!='chooseToUse') evt=evt.getParent('chooseToUse'); return evt.type=='phase'; }, filterTarget:function(card,player,target){ return player==target; }, selectTarget:-1, content:function(){ var evt=_status.event.getParent('phaseUse'); if(evt&&evt.name=='phaseUse'){ evt.skipped=true; } target.addTempSkill('xietianzi'); }, ai:{ order:0.5, value:4, useful:2, result:{ target:function(player,target){ if(target.countCards('h')>=2) return 1; return 0; } } } }, shuiyanqijunx:{ audio:'shuiyanqijun', fullskin:true, type:'trick', filterTarget:function(card,player,target){ return target!=player&&(get.mode()!='guozhan'||_status.mode=='yingbian'||_status.mode=='free'||target.countCards('e')>0); }, enable:true, defaultYingbianEffect:'add', content:function(){ 'step 0' if(event.card.yingbian_all){ target.discard(target.getCards('e',function(card){ return lib.filter.cardDiscardable(card,target,'shuiyanqijunx'); })); target.damage('thunder'); event.finish(); } else if(!target.countCards('e',function(card){ return lib.filter.cardDiscardable(card,target,'shuiyanqijunx'); })){ var next=target.damage(); if(!get.is.single()) game.setNature(next,'thunder',true); event.finish(); return; } else target.chooseControl('discard_card','take_damage',function(event,player){ let eff=get.damageEffect(player,event.player,player,'thunder'); if(eff>0) return 'take_damage'; if(player.hasSkillTag('noe')) return 'discard_card'; if(!eff) return 'take_damage'; if(player.isDamaged()&&player.hasCard((card)=>get.name(card)=='baiyin'&&get.recoverEffect(player,player,_status.event.player)>0,'e')) return 'discard_card'; if(player.hasCard((card)=>get.value(card,player)<=0,'e')&&!player.hasCard((card)=>get.value(card,player)>Math.max(7,12-player.hp),'e')) return 'discard_card'; if(player.hp>2&&player.countCards('e')>2||player.hp>1&&player.countCards('e')>3) return 'take_damage'; return 'discard_card'; }).set('prompt','水淹七军').set('prompt2','请选择一项:⒈弃置装备区里的所有牌;⒉受到'+get.translation(player)+'造成的1点雷电伤害。'); 'step 1' if(result.control=='discard_card'){ target.discard(target.getCards('e',function(card){ return lib.filter.cardDiscardable(card,target,'shuiyanqijunx'); })); } else{ var next=target.damage(); if(!get.is.single()) game.setNature(next,'thunder',true); } event.finish(); }, ai:{ canLink:function(player,target,card){ if(!target.isLinked()||player.hasSkill('jueqing')||target.hasSkill('gangzhi')||player.hasSkill('gangzhi')) return false; let es=target.getCards('e'),val=0; if(!es.length) return true; for(let i of es){ if(i.name=='baiyin'&&target.isDamaged()&&get.recoverEffect(target)) val+=get.value({name:'tao'},target); else val-=get.value(i,target); } if(0.15*val>2*get.sgn(get.damageEffect(target,player,target,'thunder'))) return false; return true; }, order:6, value:4, useful:2, tag:{ damage:1, thunderDamage:1, natureDamage:1, loseCard:1, }, 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){ return get.damageEffect(current,player,player,'thunder')>0&¤t.countCards('e',function(card){ return get.value(card,current)<=0; })<2&¤t.countCards('e',function(card){ return get.value(card,current)>0; })>0; }).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+=6; } return 0; }, result:{ target:function(player,target,card,isLink){ let es=target.getCards('e'), eff=2*get.sgn(get.damageEffect(target,player,target,'thunder')); if(isLink || !es.length) return eff; let val=0; for(let i of es){ if(i.name=='baiyin'&&target.isDamaged()&&get.recoverEffect(target)) val+=6; else val-=get.value(i,target); } return Math.max(eff,0.15*val); } } } }, lulitongxin:{ fullskin:true, audio:true, type:'trick', enable:function(card,player){ if(get.mode()=='versus') return true; return game.hasPlayer(function(current){ return current.isMajor(); }); }, mode:['guozhan','versus'], filterTarget:true, recastable:true, changeTarget:function(player,targets){ var target=targets[0]; game.filterPlayer(function(current){ if(get.mode()=='versus') return current.isFriendOf(target); return current.isMajor()==target.isMajor()&¤t!=target&&!current.hasSkill('diaohulishan'); },targets); }, content:function(){ if(get.mode()=='versus'){ if(target.isEnemyOf(player)) target.link(true); else if(target.isLinked()) target.draw(); } else if(target.isLinked()){ target.draw(); } else{ target.link(); } }, ai:{ order:7.5, value:4, useful:2, wuxie:function(){ return 0; }, result:{ target:function(player,target){ if(get.mode()=='versus'){ if(target.isFriendOf(player)) return target.isLinked()?1:0; return target.isLinked()?0:-1; } return target.isLinked()?1:-1; } } } }, lianjunshengyan:{ fullskin:true, audio:true, type:'trick', enable:function(card,player){ if(get.mode()=='guozhan') return !player.isUnseen(); return true; }, mode:['guozhan','boss'], filterTarget:function(card,player,target){ if(get.mode()=='guozhan') return target!=player&&target.identity!='unknown'&&!target.isFriendOf(player); return true; }, selectTarget:function(){ return get.mode()=='guozhan'?1:-1; }, changeTarget:function(player,targets){ if(get.mode()=='guozhan'){ var target=targets[0]; targets.push(player); if(target.identity!='ye'){ game.filterPlayer(function(current){ return target!=current&&target.isFriendOf(current)&&!current.hasSkill('diaohulishan'); },targets); } } },/* contentBefore:function(){ if(get.mode()=='guozhan'){ var evt=event.getParent(); if(evt&&evt.targets&&evt.targets.includes(player)){ evt.fixedSeat=true; evt.targets.sortBySeat(); evt.targets.remove(player); evt.targets.push(player); } } },*/ content:function(){ 'step 0' if(get.mode()!='guozhan'){ if(player==target) target.draw(game.filterPlayer().length); else target.chooseDrawRecover(true); event.finish(); } else{ if(target==player){ var num=targets.length-1; event.num=num; var damaged=target.maxHp-target.hp; if(damaged==0){ target.draw(num); event.finish(); } else{ var list=[]; for(var i=Math.min(num,damaged);i>=0;i--){ list.push('摸'+(num-i)+'回'+i); } target.chooseControl(list).set('prompt','请分配自己的摸牌数和回复量').ai=function(){ if(player.hasSkill('diaohulishan')) return 0; if(_status._aozhan) return list.length-1; return list.randomGet(); }; } } else{ target.draw(); } } 'step 1' if(target!=player) target.link(false); else if(typeof result.control=='string'){ var index=result.control.indexOf('回'); var draw=parseInt(result.control.slice(1,index)); var recover=parseInt(result.control.slice(index+1)); if(draw) target.draw(draw); if(recover) target.recover(recover); } }, ai:{ order:3, value:4, useful:2, result:{ target:function(player,target){ if(player==target) return 2; return 1; }, }, }, }, chiling:{ fullskin:true, audio:true, type:'trick', enable:function(){ return game.hasPlayer(function(current){ return current.isUnseen(); }); }, mode:['guozhan'], //global:['g_chiling1','g_chiling2','g_chiling3'], filterTarget:function(card,player,target){ return target.isUnseen(); }, selectTarget:-1, chooseai:function(event,player){ if(player.hasSkillTag('mingzhi_yes')) return '选项一'; if(_status.event.controls.includes('选项三')){ if(player.hasSkillTag('mingzhi_no')) return '选项三'; return Math.random()<0.5?'选项一':'选项三'; } else{ if(_status.event.getParent().nomingzhi){ if(_status.event.controls.includes('选项二')) return '选项二'; return '选项一'; } if(player.hasSkillTag('maixie_hp')||player.hp<=2) return '选项一'; return Math.random()<0.5?'选项一':'选项二'; } }, content:function(){ 'step 0' var choiceList=['明置一张武将牌,然后摸一张牌','失去1点体力']; event.nomingzhi=target.hasSkillTag('nomingzhi',false,null,true); if(event.nomingzhi){ choiceList.shift(); } if(target.countCards('he',{type:'equip'})){ choiceList.push('弃置一张装备牌'); } target.chooseControl(lib.card.chiling.chooseai).set('prompt','敕令').set('choiceList',choiceList); 'step 1' var index=result.index; if(event.nomingzhi){ index++; } if(index==0){ target.chooseControl('主将','副将',function(){ return Math.floor(Math.random()*2); }).set('prompt','选择要明置的武将牌'); } else if(index==1){ target.loseHp(); event.finish(); } else{ target.chooseToDiscard('he',{type:'equip'},true); event.finish(); } 'step 2' if(result.index==0){ target.showCharacter(0); } else{ target.showCharacter(1); } target.draw(); }, destroy:function(card,targetPosition,player,event){ if(event.name!='lose'||event.name!='cardsDiscard'||targetPosition!='discardPile') return false; var evt=event.getParent().relatedEvent; if(evt&&evt.name=='useCard') return false; return true; }, onDestroy:function(){ var currentPhase=_status.currentPhase; if(currentPhase){ _status.chiling=true; currentPhase.addTempSkill('g_chiling3'); } if(!lib.inpile.includes('zhaoshu')){ lib.inpile.push('zhaoshu'); var card=game.createCard2('zhaoshu','club',3); game.log(card,'被置于了牌堆底'); ui.cardPile.appendChild(card); game.updateRoundNumber(); } }, ai:{ order:6, result:{ target:-1 }, tag:{ multitarget:1, multineg:1, } } }, diaohulishan:{ fullskin:true, audio:true, type:'trick', enable:true, global:'g_diaohulishan', filterTarget:function(card,player,target){ return target!=player; }, selectTarget:[1,2], content:function(){ target.addTempSkill('diaohulishan'); }, ai:{ order:10, value:4, useful:[2,1], wuxie:function(){ return 0; }, result:{ player:function(player,target){ var att=get.attitude(player,target); if(target.hp==1&&att<0) return 0; if(game.hasPlayer(function(current){ return get.attitude(player,current)1){ player.chooseControl(controls).set('ai',function(){return 1}); } if(controls.length==0) event.finish(); "step 1" var content; var str=get.translation(target)+'的'; if(result.control){ if(result.control=='手牌'){ content=[str+'手牌',target.getCards('h')]; game.log(player,'观看了',target,'的手牌'); } else if(result.control=='主将'){ content=[str+'主将',[[target.name1],'character']]; game.log(player,'观看了',target,'的主将'); } else{ content=[str+'副将',[[target.name2],'character']]; game.log(player,'观看了',target,'的副将'); } } else if(target.countCards('h')){ content=[str+'手牌',target.getCards('h')]; game.log(player,'观看了',target,'的手牌'); } else if(target.isUnseen(0)){ content=[str+'主将',[[target.name1],'character']]; game.log(player,'观看了',target,'的主将'); } else{ content=[str+'副将',[[target.name2],'character']]; game.log(player,'观看了',target,'的副将'); } player.chooseControl('ok').set('dialog',content); }, mode:['guozhan'], ai:{ order:9.5, wuxie:function(){ return 0; }, result:{ player:function(player,target){ if(player.countCards('h')<=player.hp) return 0; if(player.storage.zhibi&&player.storage.zhibi.includes(target)) return 0; return target.isUnseen()?1:0; } } } }, yiyi:{ audio:true, fullskin:true, type:'trick', enable:true, filterTarget:function(card,player,target){ if(get.mode()=='guozhan'){ return target.isFriendOf(player); } else if(get.is.versus()){ return player.side==target.side; } else{ return true; } }, selectTarget:function(){ if(get.mode()=='guozhan') return -1; return [1,3]; }, content:function(){ target.draw(2); target.chooseToDiscard(2,'he',true).ai=get.disvalue; }, ai:{ wuxie:function(){ return 0; }, basic:{ useful:3, value:3, order:5 }, result:{ target:function(player,target){ var hs=target.getCards('h'); if(hs.length<=1){ if(target==player&&(hs.length==0||hs[0].name=='yiyi')){ return 0; } return 0.3; } return Math.sqrt(target.countCards('he')); }, }, tag:{ loseCard:1, discard:1, norepeat:1 } }, }, wuliu:{ fullskin:true, type:'equip', subtype:'equip1', global:'g_wuliu_skill', distance:{attackFrom:-1}, ai:{ equipValue:function(card,player){ if(player.identity=='unknown'||player.identity=='ye') return 2; return 2+game.countPlayer(function(current){ return current.isFriendOf(player); })/2; }, basic:{ equipValue:3 } }, skills:['wuliu_skill'], mode:['guozhan'], }, sanjian:{ fullskin:true, type:'equip', subtype:'equip1', distance:{attackFrom:-2}, ai:{ basic:{ equipValue:4 } }, skills:['sanjian_skill'] }, jingfanma:{ fullskin:true, type:'equip', subtype:'equip4', distance:{globalFrom:-1}, }, }, skill:{ zhaoshu_skill:{ equipSkill:true, charlotte:true, enable:'phaseUse', usable:1, filter:function(event,player){ var cards=player.getExpansions('zhaoshu_cards'); if(cards.length<4) return false; var list=[]; for(var i of cards){ list.add(get.suit(i,false)); if(list.length>=4) return true; } return false; }, delay:false, content:function(){ 'step 0' var cards=player.getExpansions('zhaoshu_cards'); player.loseToDiscardpile(cards); game.delayx(); 'step 1' var list=[ ['spade',12,'gz_haolingtianxia'], ['diamond',1,'gz_kefuzhongyuan'], ['heart',1,'gz_guguoanbang'], ['club',12,'gz_wenheluanwu'], ]; for(var i=0;i
  • 与你势力相同的角色的出牌阶段限一次,其可以将一张手牌(小势力角色改为至多两张)置于【诏书】上,称为“应”。
  • 出牌阶段限一次,若你的“应”中包含至少四种花色,则你可以发动“锦囊召唤”,将所有“应”置入弃牌堆,然后随机获得一张未加入游戏的势力锦囊牌。',false); var cards=player.getExpansions('zhaoshu_cards'); if(cards.length){ dialog.addAuto(cards) } }, content:'expansion', markcount:function(content,player){ return player.getExpansions('zhaoshu_cards').length; }, }, onremove:function(player,skill){ var cards=player.getExpansions(skill).concat(player.getExpansions('zhaoshu_cards')); if(cards.length) player.loseToDiscardpile(cards); }, }, zhaoshu_global:{ enable:'phaseUse', usable:1, filter:function(event,player){ if(!player.countCards('h')) return false; return game.hasPlayer(function(current){ return current.hasSkill('zhaoshu_skill')&¤t.isFriendOf(player); }); }, filterCard:true, selectCard:function(){ if(_status.event.player.isNotMajor()) return [1,2]; return [1,1]; }, position:'h', discard:false, lose:false, delay:false, check:function(card){ var player=_status.event.player,cards=ui.selected.cards.concat(game.findPlayer(function(current){ return current.hasSkill('zhaoshu_skill')&¤t.isFriendOf(player); }).getExpansions('zhaoshu_cards')),suit=get.suit(card,false); for(var i of cards){ if(get.suit(i)==suit) return 0; } return 5+player.needsToDiscard()*1.5-get.value(card); }, filterTarget:function(card,player,target){ return target.hasSkill('zhaoshu_skill')&&target.isFriendOf(player); }, selectTarget:function(){ if(game.countPlayer(function(current){ return current.hasSkill('zhaoshu_skill')&¤t.isFriendOf(_status.event.player); })==1) return -1; return 1; }, prompt:function(){ var player=_status.event.player; return '将'+(player.isNotMajor()?'至多两':'一')+'张手牌置于'+get.translation(game.filterPlayer(function(current){ return current.hasSkill('zhaoshu_skill')&¤t.isFriendOf(player); }))+'的【诏书】上'; }, content:function(){ 'step 0' target.addToExpansion(cards,player,'give').gaintag.add('zhaoshu_cards'); 'step 1' target.markSkill('zhaoshu_skill'); }, ai:{ order:1, result:{ player:1, }, }, }, liulongcanjia:{ equipSkill:true, mod:{ canBeReplaced:function(card,player){ if(player.getEquips('liulongcanjia').includes(card)) return false; }, }, }, minguangkai_cancel:{ equipSkill:true, trigger:{target:'useCardToTarget'}, forced:true, check:function(event,player){ return get.effect(event.target,event.card,event.player,player)<0; }, filter:function(event,player){ if(['huoshaolianying','huogong'].includes(event.card.name)) return true; if(event.card.name=='sha') return game.hasNature(event.card,'fire'); return false; }, content:function(){ trigger.getParent().targets.remove(player); }, ai:{ effect:{ target:function(card,player,target,current){ if(['huoshaolianying','huogong'].includes(card.name)||(card.name=='sha'&&game.hasNature(card,'fire'))){ return 'zeroplayertarget'; } }, } } }, minguangkai_link:{ equipSkill:true, trigger:{player:'linkBefore'}, forced:true, filter:function(event,player){ return player.isNotMajor()&&!player.isLinked(); }, content:function(){ trigger.cancel(); }, ai:{ effect:{ target:function(card,player,target,current){ if(target.isMinor()&&['tiesuo','lulitongxin'].includes(card.name)){ return 'zeroplayertarget'; } }, } } }, dinglanyemingzhu_skill:{ equipSkill:true, inherit:'zhiheng', filter:function(event,player){ return !player.hasSkill('gzzhiheng',true); }, selectCard:function(){ var player=_status.event.player; return [1,player.maxHp]; }, filterCard:function(card,player){ var cards=player.getEquips('dinglanyemingzhu'); if(cards.length) return cards.some(card2=>card2!=card&&!ui.selected.cards.includes(card2)) return true; }, prompt:'出牌阶段限一次,你可以弃置至多X张牌(X为你的体力上限),然后摸等量的牌' }, g_dinglanyemingzhu_ai:{ ai:{ effect:{ player:function(card,player){ if(player.hasSkill('jubao')) return; if(card.name=='dinglanyemingzhu'&&game.hasPlayer(function(current){ return current.hasSkill('jubao')&&get.attitude(player,current)<=0; })){ return [0,0,0,0]; } } } } }, g_feilongduofeng_ai:{ ai:{ effect:{ player:function(card,player){ if(player.hasSkill('zhangwu')) return; if(card.name=='feilongduofeng'&&game.hasPlayer(function(current){ return current.hasSkill('zhangwu')&&get.attitude(player,current)<=0; })){ return [0,0,0,0]; } } } } }, g_taipingyaoshu_ai:{ ai:{ effect:{ player:function(card,player){ if(player.hasSkill('wendao')) return; if(card.name=='taipingyaoshu'&&game.hasPlayer(function(current){ return current.hasSkill('wendao')&&get.attitude(player,current)<=0; })){ return [0,0,0,0]; } }, target:(card,player,target)=>{ if(target._g_taipingyaoshu_temp) return; if(get.subtype(card)==='equip2'&&target.getEquip('taipingyaoshu')&&!target.countEmpty(2)){ target._g_taipingyaoshu_temp=true; let lose=get.effect(target,{name:'losehp'},target,target), draw=2*get.effect(target,{name:'draw'},target,target); delete target._g_taipingyaoshu_temp; if(lose<0&&target.hp<=1&&!target.hasCard(i=>{ return get.name(i)==='tao'&&lib.filter.cardEnabled(i,target,'forceEnable'); })) draw=0; return [1,(lose+draw)/get.attitude(target,target)]; } } } } }, feilongduofeng:{ equipSkill:true, trigger:{player:'useCardToPlayered'}, logTarget:'target', check:function(event,player){ return get.attitude(player,event.target)<=0; }, filter:function(event,player){ return event.card.name=='sha'&&event.target.countCards('he'); }, content:function(){ trigger.target.chooseToDiscard('he',true); }, }, feilongduofeng2:{ equipSkill:true, trigger:{source:'dieAfter'}, filter:function(event,player){ if(event.reason&&event.reason.card&&event.reason.card.name=='sha'){ return event.player.isDead()&&lib.group.includes(player.identity)&&player.isMinor(); } return false; }, logTarget:'player', content:function(){ 'step 0' var list=[]; for(var i=0;i<_status.characterlist.length;i++){ var info=lib.character[_status.characterlist[i]]; if(info[4]&&info[4].includes('jun')) continue; if(info[1]==player.identity){ list.push(_status.characterlist[i]); } } event.identity=event.player.identity; if(trigger.player==game.me&&!_status.auto){ event.dialog=ui.create.dialog('是否选择一名角色重新加入游戏?',[list,'character']); event.filterButton=function(){return true}; event.player=game.me; event.custom.replace.confirm=function(){ if(!ui.selected.buttons.length){ event.directresult='refuse'; } else{ event.directresult=ui.selected.buttons[0].link; } event.dialog.close(); if(ui.confirm) ui.confirm.close(); delete event.player; game.resume(); } event.switchToAuto=function(){ event.directresult=list.randomGet(); event.dialog.close(); if(ui.confirm) ui.confirm.close(); delete event.player; }; game.check(); game.pause(); } else if(trigger.player.isOnline()){ trigger.player.send(function(player,list){ if(_status.auto){ _status.event._result=list.randomGet(); } else{ var next=game.createEvent('replacePlayer'); next.source=player; next.list=list; next.setContent(function(){ event.dialog=ui.create.dialog('是否选择一名角色重新加入游戏?',[event.list,'character']); event.filterButton=function(){return true}; event.player=event.source; event.custom.replace.confirm=function(){ if(!ui.selected.buttons.length){ event.result='refuse'; } else{ event.result=ui.selected.buttons[0].link; } event.dialog.close(); if(ui.confirm) ui.confirm.close(); delete event.player; game.resume(); game.uncheck(); } event.switchToAuto=function(){ event.result=list.randomGet(); event.dialog.close(); if(ui.confirm) ui.confirm.close(); delete event.player; game.uncheck(); }; game.check(); game.pause(); }); } game.resume(); },trigger.player,list); trigger.player.wait(); game.pause(); } else{ event.directresult=list.randomGet(); } event.list=list; 'step 1' game.uncheck(); if(!event.directresult){ if(event.resultOL){ event.directresult=event.resultOL[trigger.player.playerid]; } if(!event.directresult||event.directresult=='ai'){ event.directresult=event.list.randomGet(); } } if(event.directresult=='refuse'){ game.log(trigger.player,'拒绝重新加入游戏'); return; } game.log(trigger.player,'重新加入游戏'); var name=event.directresult; game.log(trigger.player,'将主将替换为','#b'+name); _status.characterlist.remove(name); game.broadcastAll(function(source,name,identity){ source.revive(2,false); source.identity=identity; source._group=identity; source.setIdentity(); if(source==game.me){ ui.arena.classList.remove('selecting'); } },trigger.player,name,event.identity); trigger.player.draw(); trigger.player.reinit(trigger.player.name1,name,false); trigger.player.removeCharacter(1); trigger.getParent('damage').untrigger(false,trigger.player); game.addVideo('setIdentity',trigger.player,event.identity); } }, feilongduofeng3:{ equipSkill:true, trigger:{source:'dying'}, filter:function(event,player){ var evt=event.getParent('damage'); return evt&&evt.card&&evt.card.name=='sha'&&event.player.countGainableCards(player,'h')>0; }, //priority:7, logTarget:'player', prompt2:'获得该角色的一张手牌', check:function(event,player){ return get.attitude(player,event.player)<0; }, content:function(){ player.gainPlayerCard(trigger.player,'h',true); }, }, taipingyaoshu:{ equipSkill:true, mod:{ maxHandcard:function(player,num){ if(get.mode()=='guozhan'){ if(player.hasSkill('huangjintianbingfu')){ num+=player.getExpansions('huangjintianbingfu').length; } return num+game.countPlayer(function(current){ return current.isFriendOf(player); }); } return num+game.countGroup()-1; } }, trigger:{player:'damageBegin4'}, filter:function(event,player){ if(player.hasSkillTag('unequip2')) return false; if(event.source&&event.source.hasSkillTag('unequip',false,{ name:event.card?event.card.name:null, target:player, card:event.card })) return false; if(event.nature) return true; }, forced:true, content:function(){ trigger.cancel(); }, ai:{ nofire:true, nothunder:true, effect:{ target:function(card,player,target,current){ if(target.hasSkillTag('unequip2')) return; if(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; if(get.tag(card,'natureDamage')) return 'zeroplayertarget'; if(card.name=='tiesuo'){ return [0,0]; } } } } }, g_taipingyaoshu:{}, yuxi_skill:{ equipSkill:true, trigger:{player:'phaseDrawBegin2'}, forced:true, filter:function(event,player){ return !player.isUnseen()&&!event.numFixed; }, content:function(){ trigger.num++; }, ai:{ threaten:1.3, forceMajor:true, }, group:'yuxi_skill2' }, yuxi_skill2:{ equipSkill:true, trigger:{player:'phaseUseBegin'}, forced:true, filter:function(event,player){ if(player.isUnseen()) return false; return game.hasPlayer(function(current){ return player.canUse('zhibi',current); }); }, content:function(){ player.chooseUseTarget('玉玺:选择知己知彼的目标',{name:'zhibi'}); } }, xietianzi:{ forced:true, popup:false, filter:function(event,player){ return player.countCards('h')>0; }, trigger:{ player:'phaseDiscardAfter', }, content:function(){ "step 0" player.removeSkill('xietianzi'); player.chooseToDiscard('h','是否弃置一张手牌并获得一个额外回合?').set('ai',function(card){ return 10-get.value(card); }); "step 1" if(result.bool){ player.insertPhase(); } }, }, g_chiling3:{ mode:['guozhan'], trigger:{player:'phaseEnd'}, forced:true, popup:false, filter:function(){ return _status.chiling==true; }, content:function(){ 'step 0' _status.chiling=false; var targets=game.filterPlayer(function(target){ return target.isUnseen(); }); targets.sort(lib.sort.seat); event.targets=targets; 'step 1' if(event.targets.length){ var target=event.targets.shift(); event.current=target; var choiceList=['明置一张武将牌,然后摸一张牌','失去1点体力']; if(target.countCards('he',{type:'equip'})){ choiceList.push('弃置一张装备牌'); } target.chooseControl(lib.card.chiling.chooseai).set('prompt','敕令').set('choiceList',choiceList); } else{ event.finish(); } 'step 2' var target=event.current; if(result.control=='选项一'){ target.chooseControl('主将','副将',function(){ return Math.floor(Math.random()*2); }).set('prompt','选择要明置的武将牌'); } else if(result.control=='选项二'){ target.loseHp(); event.goto(1); } else{ target.chooseToDiscard('he',{type:'equip'},true); event.goto(1); } 'step 3' var target=event.current; if(result.index==0){ target.showCharacter(0); } else{ target.showCharacter(1); } target.draw(); event.goto(1); } }, g_diaohulishan:{}, diaohulishan:{ charlotte:true, group:'undist', init:function(player){ if(player.isIn()){ game.broadcastAll(function(player){ player.classList.add('out'); },player); game.log(player,'移出了游戏'); } }, onremove:function(player){ if(player.isOut()){ game.broadcastAll(function(player){ player.classList.remove('out'); },player); game.log(player,'移回了游戏'); } }, }, huxinjing:{ equipSkill:true, trigger:{player:'damageBegin4'}, // forced:true, filter:function(event,player){ if(player.hasSkillTag('unequip2')) return false; if(event.source&&event.source.hasSkillTag('unequip',false,{ name:event.card?event.card.name:null, target:player, card:event.card })) return false; var cards=player.getEquips('huxinjing'); if(!cards.length) return false; if(get.mode()!='guozhan'&&event.num>1) return true; return event.num>=player.hp; }, content:function(){ trigger.cancel(); var e2=player.getEquips('huxinjing'); if(e2.length){ player.discard(e2); } player.removeSkill('huxinjing'); } }, wuliu_skill:{ equipSkill:true, }, g_wuliu_skill:{ equipSkill:true, mod:{ attackRange:function(player,distance){ return distance+game.countPlayer(function(current){ if(current==player||!current.isFriendOf(player)) return false; if(current.hasSkill('wuliu_skill')) return true; }); } } }, sanjian_skill:{ equipSkill:true, audio:true, trigger:{source:'damageSource'}, direct:true, filter:function(event,player){ if(event.player.isDead()) return false; if(player.countCards('h')==0) return false; if(!event.card) return false; if(event.card.name!='sha') return false; if(!event.notLink()) return false; return game.hasPlayer(function(current){ return current!=event.player&&get.distance(event.player,current)<=1; }); }, content:function(){ "step 0" var damaged=trigger.player; player.chooseCardTarget({ filterCard:lib.filter.cardDiscardable, filterTarget:function(card,player,target){ var damaged=_status.event.damaged; return get.distance(damaged,target)<=1&&target!=damaged; }, ai1:function(card){ return 9-get.value(card); }, ai2:function(target){ var player=_status.event.player; return get.damageEffect(target,player,player); }, prompt:get.prompt('sanjian') }).set('damaged',damaged); "step 1" if(result.bool){ player.logSkill('sanjian_skill',result.targets); player.discard(result.cards); result.targets[0].damage(); } } }, }, translate:{ liulongcanjia:'六龙骖驾', liulongcanjia_info:'锁定技。此牌占用1个进攻坐骑和1个防御坐骑槽位,且不可被替换。你计算与其他角色的距离-1,其他角色计算与你的距离+1。', minguangkai:'明光铠', minguangkai_cancel:'明光铠', minguangkai_link:'明光铠', minguangkai_info:'锁定技。①当你成为【火烧连营】、【火攻】或火【杀】的目标时,取消之。②当你即将横置前,若你是小势力角色,取消之。', dinglanyemingzhu:'定澜夜明珠', dinglanyemingzhu_bg:'珠', dinglanyemingzhu_info:'锁定技。若你拥有〖制衡〗,则你取消〖制衡〗的弃置牌数限制,否则你视为拥有〖制衡〗。', dinglanyemingzhu_skill:'制衡', dinglanyemingzhu_skill_info:'出牌阶段限一次。你可以弃置至多X张牌(X为你的体力上限),然后摸等量的牌。', feilongduofeng:'飞龙夺凤', feilongduofeng2:'飞龙夺凤', feilongduofeng3:'飞龙夺凤', feilongduofeng_info:'①当你使用【杀】指定目标后,你可令目标角色弃置一张牌。②当你因使用【杀】而令其他角色进入濒死状态时,你可以获得其一张手牌。', taipingyaoshu:'太平要术', taipingyaoshu_info:'锁定技。①当你即将受到属性伤害时,取消之。②你的手牌上限+X(X为场上势力数-1)。③当你失去装备区里的【太平要术】时,你摸两张牌,然后若你的体力值大于1,你失去1点体力。', taipingyaoshu_info_guozhan:'锁定技。①当你即将受到属性伤害时,取消之。②你的手牌上限+X(X为与你势力相同的角色数)。③当你失去装备区里的【太平要术】时,你摸两张牌,然后你失去1点体力。', yuxi_skill:'玉玺', yuxi_skill2:'玉玺', yuxi:'玉玺', yuxi_info:'锁定技。若你有明置的武将牌,则:①你的势力视为唯一的大势力。②摸牌阶段开始时,你令额定摸牌数+1。③出牌阶段开始时,你视为使用【知己知彼】。', xietianzi:'挟令', xietianzi_info:'出牌阶段,对自己使用。你结束出牌阶段。本回合的弃牌阶段结束时,你可以弃置一张手牌,获得一个额外的回合。', xietianzi_info_guozhan:'出牌阶段,对身为大势力角色的自己使用。你结束出牌阶段。本回合的弃牌阶段结束时,你可以弃置一张手牌,获得一个额外的回合。', shuiyanqijunx:'水淹七军', shuiyanqijunx_info:'出牌阶段,对一名其他角色使用。目标角色选择一项:⒈弃置装备区里的所有牌(至少一张)。⒉受到你造成的1点雷电伤害。', shuiyanqijunx_info_guozhan:'出牌阶段,对一名装备区里有牌的其他角色使用。目标角色选择一项:⒈弃置装备区里的所有牌。⒉受到你造成的1点雷电伤害。', lulitongxin:'勠力同心', lulitongxin_info:'出牌阶段,对所有大势力角色或所有小势力角色使用。若目标角色:未横置,则其横置;已横置,则其摸一张牌。', lulitongxin_info_versus:'出牌阶段,对所有己方角色或所有敌方角色使用。若目标角色:未横置,则其横置;已横置,则其摸一张牌。', lianjunshengyan:'联军盛宴', lianjunshengyan_info:'出牌阶段,对你和你选择的除你的势力外的一个势力的所有角色使用。若目标角色:为你,你选择摸Y张牌并回复X-Y点体力(X为该势力的角色数,Y∈[0,X]);不为你,其摸一张牌,然后重置。', lianjunshengyan_info_boss:'出牌阶段,对场上所有角色使用。你摸X张牌(X为存活角色数),其他角色依次选择回复1点体力或摸一张牌。', chiling:'敕令', chiling_info:'①出牌阶段,对所有没有势力的角色使用。目标角色选择一项:1、明置一张武将牌,然后摸一张牌;2、弃置一张装备牌;3、失去1点体力。②当【敕令】因判定或弃置而置入弃牌堆时,系统将之移出游戏并将【诏书】置于牌堆底,然后系统于当前回合结束后视为对所有没有势力的角色使用【敕令】。', diaohulishan:'调虎离山', diaohulishan_info:'出牌阶段,对至多两名其他角色使用。目标角色于此回合视为移出游戏。', huoshaolianying:'火烧连营', huoshaolianying_bg:'烧', huoshaolianying_info_guozhan:'出牌阶段,对你的下家及其队列中的所有角色使用。你对目标角色造成1点火属性伤害。', huoshaolianying_info:'出牌阶段,对距离最小的一名横置角色使用(若无横置角色,则改为对距离最小的所有角色使用),你对目标造成1点火属性伤害。', yuanjiao:'远交近攻', yuanjiao_info:'出牌阶段,对一名与你势力不同的其他角色使用。其摸一张牌,然后你摸三张牌。', yuanjiao_info_guozhan:'出牌阶段,对一名与你势力不同且已确定势力的其他角色使用。其摸一张牌,然后你摸三张牌。', yuanjiao_bg:'交', zhibi:'知己知彼', zhibi_info:'出牌阶段,对一名有手牌或有暗置武将牌的其他角色使用。你选择一项:⒈观看其手牌。⒉观看其的一张暗置武将牌。', yiyi:'以逸待劳', yiyi_info_guozhan:'出牌阶段,对所有己方角色使用。目标角色摸两张牌,然后弃置两张牌。', yiyi_info_combat:'出牌阶段,对所有己方角色使用。目标角色摸两张牌,然后弃置两张牌。', yiyi_info:'出牌阶段,对至多三名角色使用。目标角色摸两张牌,然后弃置两张牌。', yiyi_bg:'逸', wuliu:'吴六剑', wuliu_info:'锁定技。与你势力相同的所有其他角色的攻击范围+1。', sanjian:'三尖两刃刀', sanjian_info:'当你因执行【杀】而对A造成伤害后,你可以弃置一张牌并选择一名其他角色B(A至B的距离需为1)。你对B造成1点伤害。', wuliu_skill:'吴六剑', sanjian_skill:'三尖两刃刀', jingfanma_bg:'-马', jingfanma:'惊帆', jingfanma_info:'锁定技,你计算与其他角色的距离-1。', huxinjing_bg:'镜', huxinjing:'护心镜', huxinjing_info:'此牌可对其他角色使用。当你受到伤害时,若伤害值大于1或大于等于你的体力值,则你可以将所有【护心镜】置入弃牌堆,然后防止此伤害。', huxinjing_info_guozhan:'当你受到伤害时,若伤害值大于等于你的体力值,则你可以将所有【护心镜】置入弃牌堆,然后防止此伤害。', gz_haolingtianxia:'号令天下', gz_haolingtianxia_info:'出牌阶段,对一名体力值不为全场最少的角色使用。所有其他角色依次选择一项:①弃置一张牌(魏势力角色无需弃牌),视为对目标角色使用一张【杀】;②弃置目标角色的一张牌(魏势力角色改为获得其一张牌)。', gz_kefuzhongyuan:'克复中原', gz_kefuzhongyuan_info:'出牌阶段,对任意名角色使用。目标角色选择一项:①视为使用一张【杀】(蜀势力角色以此法使用【杀】的伤害值基数+1);②摸一张牌(蜀势力角色改为摸两张牌)。', gz_guguoanbang:'固国安邦', gz_guguoanbang_info:'出牌阶段,对你自己使用。你摸八张牌,然后弃置至少六张手牌。然后若你的势力为吴,则你可以将你以此法弃置的牌交给其他吴势力角色(每名角色至多获得两张牌)。', gz_wenheluanwu:'文和乱武', gz_wenheluanwu_info:'出牌阶段,对所有角色使用。目标角色展示所有手牌,然后你选择一项:①令其弃置两张类型不同的手牌;②你弃置其一张手牌。然后若其为群势力角色且其没有手牌,则其将手牌摸至当前体力值(至多为5)。', zhaoshu:'诏书', zhaoshu_skill:'锦囊召唤', zhaoshu_global:'诏书', zhaoshu_info:'
  • 出牌阶段,对你自己使用。你将此牌置于目标的武将牌上。
  • 与你势力相同的角色的出牌阶段限一次,其可以将一张手牌(小势力角色改为至多两张)置于【诏书】上,称为“应”。
  • 出牌阶段限一次,若你的“应”中包含至少四种花色,则你可以发动“锦囊召唤”:将所有“应”置入弃牌堆,然后随机获得一张未加入游戏的势力锦囊牌。', }, list:[ ['heart',9,'yuanjiao'], ['club',3,'zhibi'], ['club',4,'zhibi'], ['diamond',4,'yiyi'], ['heart',11,'yiyi'], ['diamond',6,'wuliu'], ['diamond',12,'sanjian'], ['heart',3,'jingfanma'], ["spade",4,'shunshou'], ["spade",12,'guohe'], ["spade",11,'wuxie'], ['spade',3,'huoshaolianying','fire'], ['club',11,'huoshaolianying','fire'], ['heart',12,'huoshaolianying','fire'], ['club',2,'huxinjing'], ['heart',2,'diaohulishan'], ['diamond',10,'diaohulishan'], ['heart',1,'lianjunshengyan'], ['club',3,'chiling'], ['spade',12,'lulitongxin'], ['club',10,'lulitongxin'], ['club',12,'shuiyanqijunx'], ['heart',13,'shuiyanqijunx'], ['spade',1,'xietianzi'], ['diamond',1,'xietianzi'], ['diamond',4,'xietianzi'], ['club',1,'yuxi'], ], } });