'use strict'; character.sp={ connect:true, character:{ yangxiu:['male','wei',3,['jilei','danlao']], chenlin:['male','wei',3,['bifa','songci']], caohong:['male','wei',4,['yuanhu']], xiahouba:['male','shu',4,['baobian']], gongsunzan:['male','qun',4,['yicong']], yuanshu:['male','qun',4,['yongsi','weidi']], sp_diaochan:['female','qun',3,['lihun','biyue']], sp_zhaoyun:['male','qun',3,['longdan','chongzhen']], jsp_zhaoyun:['male','qun',3,['chixin','yicong','suiren']], liuxie:['male','qun',3,['tianming','mizhao']], zhugejin:['male','wu',3,['hongyuan','huanshi','mingzhe']], zhugeke:['male','wu',3,['aocai','duwu']], guanyinping:['female','shu',3,['huxiao','xueji','wuji']], simalang:['male','wei',3,['junbing','quji']], zhangxingcai:['female','shu',3,['shenxian','qiangwu']], fuwan:['male','qun',4,['moukui']], sp_sunshangxiang:['female','shu',3,['liangzhu','xiaoji']], caoang:['male','wei',4,['kaikang']], re_yuanshu:['male','qun',4,['wangzun','tongji']], sp_caoren:['male','wei',4,['kuiwei','yanzheng']], zhangbao:['male','qun',3,['zhoufu','yingbin']], zhangliang:['male','qun',3,['fulu','fuji']], maliang:['male','shu',3,['xiemu','naman']], sp_pangtong:['male','qun',3,['manjuan','zuixiang']], zhugedan:['male','wei',4,['gongao','juyi']], sp_jiangwei:['male','shu',4,['kunfen','fengliang']], sp_machao:['male','qun',4,['zhuiji','cihuai']], sunhao:['male','wu',5,['canshi','chouhai']], shixie:['male','qun',3,['biluan','lixia']], mayunlu:['female','shu',4,['fengpo','mashu']], zhanglu:['male','qun',3,['yishe','bushi','midao']], wutugu:['male','qun',15,['ranshang','hanyong']], sp_caiwenji:['female','wei',3,['chenqing','mozhi']], zhugeguo:['female','shu',3,['yuhua','qirang']], liuzan:['male','wu',4,['fenyin']], lingcao:['male','wu',4,['dujin']], sunru:['female','wu',3,['shixin','qingyi']], lingju:['female','qun',3,['jieyuan','fenxin']], lifeng:['male','shu',3,['tunchu','shuliang']], cuiyan:['male','wei',3,['yawang','xunzhi']], sp_zhangfei:['male','shu',4,['jie','dahe']], jsp_guanyu:['male','wei',4,['wusheng','danji']], jsp_huangyueying:['female','qun',3,['jiqiao','linglong']], sunluyu:['female','wu',3,['meibu','mumu']], hanba:['female','qun',4,['fentian','zhiri']], zumao:['male','wu',4,['yinbing','juedi']], wenpin:['male','wei',4,['zhenwei']], daxiaoqiao:['female','wu',3,['xingwu','luoyan']], sp_daqiao:['female','wu',3,['yanxiao','anxian']], sp_ganning:['male','wu',4,['yinling','junwei']], sp_xiahoudun:['male','wei',4,['fenyong','xuehen']], sp_lvmeng:['male','wu',3,['tanhu','mouduan']], wangji:['male','wei',3,['qizhi','jinqu']], guansuo:['male','shu',4,['zhengnan','xiefang']], tadun:['male','qun',4,['luanzhan']], yanbaihu:['male','qun',4,['zhidao','jili']], chengyu:['male','wei',3,['shefu','benyu']], wanglang:['male','wei',3,['gushe','jici']], sp_pangde:['male','wei',4,['mashu','juesi']], sp_jiaxu:['male','wei',3,['zhenlue','jianshu','yongdi']], }, perfectPair:{ zhugejin:['zhugeke'], guanyinping:['guanyu'], zhangxingcai:['liushan'], fuwan:['fuhuanghou'], sunshangxiang:['liubei'], caoang:['caocao'], zhangbao:['zhangliang','zhangjiao'], zhangliang:['zhangjiao'], maliang:['masu'], lingcao:['lingtong'], lingju:['diaochan','lvbu'], jiangqing:['zhoutai'], dingfeng:['xusheng'], caohong:['caoren'], daxiaoqiao:['zhouyu','sunce'], cuiyan:['caocao'], guansuo:['guanyu'], }, skill:{ weidi:{ trigger:{global:['gameStart','zhuUpdate']}, forced:true, popup:false, filter:function(event,player){ var mode=get.mode(); return (mode=='identity'||(mode=='versus'&&_status.mode=='four')); }, content:function(){ var list=[]; var zhu=get.zhu(player); if(zhu&&zhu!=player&&zhu.skills){ for(var i=0;i0; }, init:function(player){ player.storage.jianshu=false; }, filterTarget:function(card,player,target){ if(ui.selected.targets.length){ return target.num('h')>0&&target.distanceTo(ui.selected.targets[0])<=1; } return true; }, filterCard:{color:'black'}, mark:true, discard:false, prepare:function(cards,player,targets){ player.$give(cards,targets[0]); }, check:function(card){return 6-ai.get.value(card);}, selectTarget:2, multitarget:true, content:function(){ 'step 0' player.unmark('jianshu'); player.storage.jianshu=true; targets[0].gain(cards); 'step 1' targets[0].chooseToCompare(targets[1]); 'step 2' if(result.bool){ targets[0].chooseToDiscard('he',2,true); targets[1].loseHp(); } else{ targets[1].chooseToDiscard('he',2,true); targets[0].loseHp(); } }, intro:{ content:'limited' }, ai:{ expose:0.4, order:4, result:{ target:function(player,target){ if(player.hasUnknown()) return 0; if(ui.selected.targets.length) return -1; return -0.5; } } } }, yongdi:{ unique:true, trigger:{player:'damageEnd'}, animationColor:'fire', skillAnimation:'legend', filter:function(event,player){ return !player.storage.yongdi; }, init:function(player){ player.storage.yongdi=false; }, mark:true, direct:true, content:function(){ 'step 0' player.chooseTarget('是否发动【拥嫡】?',function(card,player,target){ return target.sex=='male'&&target!=player; }).set('ai',function(target){ if(!_status.event.goon) return 0; var player=_status.event.player; var att=ai.get.attitude(player,target); if(att<=1) return 0; var mode=get.mode(); if(mode=='identity'||(mode=='versus'&&_status.mode=='four')){ if(target.name&&lib.character[target.name]){ for(var i=0;i0; }, selectTarget:[1,3], filter:function(event,player){ return player.num('h')>0; }, multitarget:true, multiline:true, content:function(){ player.chooseToCompare(targets).callback=lib.skill.gushe.callback; }, init:function(player){ player.storage.gushe=0; }, intro:{ name:'饶舌', content:'mark' }, chat:['粗鄙之语','天地不容','谄谀之臣','皓首匹夫,苍髯老贼','二臣贼子','断脊之犬','我从未见过有如此厚顔无耻之人!'], callback:function(){ 'step 0' event.num1=event.card1.number; event.num2=event.card2.number; if(player.hasSkill('jici')&&event.num1<=player.storage.gushe){ player.chooseBool('是否发动【激词】?'); } else{ event.goto(2); } 'step 1' if(result.bool){ if(event.num1event.num2){ target.chooseToDiscard('he','弃置一张牌,或令'+get.translation(player)+'摸一张牌').set('ai',function(card){ if(_status.event.goon) return 6-ai.get.value(card); return 0; }).set('goon',ai.get.attitude(target,player)<0); } else{ target.chat(lib.skill.gushe.chat[player.storage.gushe]); game.delay(); player.storage.gushe++; player.markSkill('gushe'); if(player.storage.gushe>=7){ player.die(); } else{ // player.chooseToDiscard('弃置一张牌,或摸一张牌').set('ai',function(){return -1;}); event.finish(); } } 'step 3' if(!result.bool){ player.draw(); } }, ai:{ order:7, result:{ target:function(player,target){ var num=0; for(var i=0;i3) num=3; var hs=player.get('h'); for(var i=0;i5&&player.storage.gushe+num<=6) return -1; } } } return 0; }, } } }, jici:{}, juesi:{ enable:'phaseUse', filter:function(event,player){ return player.num('h','sha')>0; }, filterTarget:function(card,player,target){ return target!=player&&target.num('he')>0; }, filterCard:{name:'sha'}, content:function(){ 'step 0' target.chooseToDiscard('he',true); 'step 1' if(target.hp>=player.hp&&result.bool&&result.cards[0].name!='sha'){ player.useCard({name:'juedou'},target); } }, ai:{ order:2, result:{ target:function(player,target){ if(ai.get.effect(target,{name:'juedou'},player,player)<=0){ return 0; } if(target.hpplayer.hp) return -0.1; return 0; } var hs1=target.get('h','sha'); var hs2=player.get('h','sha'); if(hs1.length>hs2.length){ return 0; } var hsx=target.get('h'); if(hsx.length>2&&hs2.length<=1&&hsx[0].number<6){ return 0; } if(hsx.length>3&&hs2.length<=1){ return 0; } if(hs1.length>hs2.length-1&&hs1.length>0&&(hs2.length<=1||hs1[0].number>hs2[0].number)){ return 0; } return -1; } } } }, shefu:{ trigger:{player:'phaseEnd'}, direct:true, audio:2, init:function(player){ player.storage.shefu=[]; player.storage.shefu2=[]; }, filter:function(event,player){ return player.num('h')>0; }, intro:{ content:'cards', mark:function(dialog,content,player){ if(content&&content.length){ dialog.add(content); if(player.isUnderControl(true)){ var str=''; for(var i=0;i'+str+'') } } }, }, content:function(){ 'step 0' var list1=[],list2=[],list3=[]; for(var i=0;i=5) return false; if(nh2>nh2&&event.source.isDead()) return false; return true; }, direct:true, content:function(){ "step 0" var num1=player.num('h'); var num2=trigger.source.num('h'); if(num1>num2){ var next=player.chooseToDiscard([num2+1,num1],'贲育:是否弃置至少'+(num2+1)+'张手牌,并对'+get.translation(trigger.source)+'造成一点伤害?'); next.logSkill=['benyu',trigger.source]; next.set('ai',function(card){ var trigger=_status.event.getTrigger(); var player=_status.event.player; if(ui.selected.cards.length>=_status.event.num){ return -1; } if(ai.get.damageEffect(trigger.source,player,player)>0&&_status.event.num<=2){ return 8-ai.get.value(card); } return -1; }); next.set('num',num2+1); } else{ event.draw=true; event.num=Math.min(num2,5)-num1; player.chooseBool('是否发动【贲育】?'); } "step 1" if(result.bool){ if(event.draw){ player.logSkill('benyu',trigger.source); player.draw(event.num); } else{ trigger.source.damage(player); } } }, }, jili:{ trigger:{global:'useCard'}, forced:true, check:function(event,player){ return ai.get.effect(player,event.card,event.player,player)>0; }, filter:function(event,player){ if(get.color(event.card)!='red') return false; if(!event.targets) return false; if(event.player==player) return false; if(event.targets.contains(player)) return false; var type=get.type(event.card); if(type!='basic'&&type!='trick') return false; if(lib.filter.targetEnabled2(event.card,event.player,player)){ for(var i=0;i0&&event.player!=player&&!player.skills.contains('zhidao2'); }, forced:true, content:function(){ var num=0; if(trigger.player.num('h')) num++; if(trigger.player.num('e')) num++; if(trigger.player.num('j')) num++; if(num){ player.gainPlayerCard(trigger.player,num,'hej',true).set('filterButton',function(button){ for(var i=0;i0; }); }, content:function(){ 'step 0' player.chooseTarget('是否发动【奇制】?',function(card,player,target){ return !_status.event.getTrigger().targets.contains(target)&&target.num('he')>0; }).set('ai',function(target){ var player=_status.event.player; if(target==player) return 2; if(ai.get.attitude(player,target)<=0){ return 1 } return 0.5; }); 'step 1' if(result.bool){ player.storage.qizhi++; if(!event.isMine()) game.delay(); player.logSkill('qizhi',result.targets); player.discardPlayerCard(result.targets[0],true,'he'); event.target=result.targets[0]; } else{ event.finish(); } 'step 2' event.target.draw(); }, group:'qizhi2' }, qizhi2:{ trigger:{player:'phaseBegin'}, forced:true, popup:false, silent:true, content:function(){ player.storage.qizhi=0; } }, jinqu:{ trigger:{player:'phaseEnd'}, check:function(event,player){ return player.storage.qizhi>=player.num('h'); }, prompt:function(event,player){ if(typeof player.storage.qizhi!='number'){ '进趋:是否摸两张牌并将手牌弃置至'+get.cnNumber(0)+'张?'; } return '进趋:是否摸两张牌并将手牌弃置至'+get.cnNumber(player.storage.qizhi)+'张?'; }, content:function(){ 'step 0' player.draw(2); 'step 1' if(typeof player.storage.qizhi!='number'){ player.storage.qizhi=0; } var dh=player.num('h')-player.storage.qizhi; if(dh>0){ player.chooseToDiscard(dh,true); } } }, mouduan:{ init2:function(player){ game.broadcastAll(function(player){ player._mouduan_mark=player.mark('武',{ content:'拥有技能【激昂】、【谦逊】' }); },player); player.addAdditionalSkill('mouduan',['jiang','qianxun']); }, onremove:function(player){ game.broadcastAll(function(player){ if(player._mouduan_mark){ player._mouduan_mark.delete(); delete player._mouduan_mark; } },player); player.removeAdditionalSkill('mouduan'); }, trigger:{player:'loseEnd'}, forced:true, filter:function(event,player){ return player._mouduan_mark&&player._mouduan_mark.name=='武'&&player.num('h')<=2; }, content:function(){ game.broadcastAll(function(player){ if(!player._mouduan_mark) return; player._mouduan_mark.name='文'; player._mouduan_mark.skill='文'; player._mouduan_mark.firstChild.innerHTML='文'; player._mouduan_mark.info.content='拥有技能【英姿】、【克己】'; },player); player.addAdditionalSkill('mouduan',['yingzi','keji']); }, group:'mouduan2' }, mouduan2:{ trigger:{global:'phaseBegin'}, priority:5, filter:function(event,player){ return player._mouduan_mark&&player._mouduan_mark.name=='文'&&player.num('h')>2; }, direct:true, content:function(){ 'step 0' player.chooseToDiscard('he','谋断:是否弃置一张牌将标记变为“武”?').ai=function(){ return -1; } 'step 1' if(result.bool&&player.num('h')>2){ game.broadcastAll(function(player){ if(!player._mouduan_mark) return; player._mouduan_mark.name='武'; player._mouduan_mark.skill='武'; player._mouduan_mark.firstChild.innerHTML='武'; player._mouduan_mark.info.content='拥有技能【激昂】、【谦逊】'; },player); player.addAdditionalSkill('mouduan',['jiang','qianxun']); } } }, tanhu:{ enable:'phaseUse', usable:1, filterTarget:function(card,player,target){ return player!=target&&target.num('h'); }, filter:function(event,player){ return player.num('h')>0; }, content:function(){ 'step 0' player.chooseToCompare(target); 'step 1' if(result.bool){ target.addTempSkill('tanhu2','phaseAfter'); } }, ai:{ result:{ target:function(player,target){ var hs=player.get('h'); if(hs.length<3) return 0; var bool=false; for(var i=0;i=9&&ai.get.value(hs[i])<7){ bool=true; break; } } if(!bool) return 0; return -1; } }, order:9, }, group:'tanhu3' }, tanhu2:{ mark:true, intro:{ content:'已成为探虎目标' } }, tanhu3:{ mod:{ globalFrom:function(from,to){ if(to.skills.contains('tanhu2')) return -Infinity; } }, trigger:{player:'useCardToBegin'}, frequent:true, filter:function(event){ return get.type(event.card)=='trick'&&event.target&&event.target.skills.contains('tanhu2'); }, content:function(){ player.draw(); } }, jiqiao:{ trigger:{player:'phaseUseBegin'}, direct:true, filter:function(event,player){ return player.num('he',{type:'equip'})>0; }, content:function(){ 'step 0' player.chooseToDiscard('是否发动【机巧】?',[1,player.num('he',{type:'equip'})],'he',function(card){ return get.type(card)=='equip'; }).set('ai',function(card){ if(card.name=='bagua') return 10; return 7-ai.get.value(card); }); 'step 1' if(result.bool){ player.logSkill('jiqiao'); event.cards=get.cards(3*result.cards.length); player.showCards(event.cards); } else{ event.finish(); } 'step 2' var gained=[]; for(var i=0;i=2&&he<=3){ return '弃牌'; } if(player.maxHp-player.hp>=3&&he<=5){ return '弃牌'; } if(player.maxHp-player.hp>3){ return '弃牌'; } return '出杀'; } return '出杀'; }).set('prompt','弃置'+get.translation(trigger.player)+get.cnNumber(player.maxHp-player.hp)+'张牌,或对任意一名角色使用一张杀'); 'step 1' if(result.control=='弃牌'){ player.line(trigger.player,'green'); if(player.hp1) return false; if(!event.target) return false; if(event.target.hp>=player.hp) return false; var card=event.card; if(card.name=='sha') return true; if(get.color(card)=='black'&&get.type(card)=='trick') return true; return false; }, content:function(){ "step 0" var save=false; if(ai.get.attitude(player,trigger.target)>2){ if(trigger.card.name=='sha'){ if(player.num('h','shan')||player.get('e','2')|| trigger.target.hp==1||player.hp>trigger.target.hp+1){ if(!trigger.target.num('h','shan')||trigger.target.num('h')0; }, content:function(){ 'step 0' player.chooseToCompare(target); 'step 1' if(result.bool&&result.target){ event.type=true; event.card=result.target; player.chooseTarget('将'+get.translation(result.target)+'交给一名角色',function(card,player,target){ return target.hp<=player.hp; }).set('ai',function(target){ var att=ai.get.attitude(_status.event.player,target); if(_status.event.du) return -att; return att; }).set('du',event.card.name=='du'); target.addTempSkill('dahe2','phaseAfter'); } else{ event.type=false; if(player.num('h')){ player.showHandcards(); player.chooseToDiscard('h',true); } } 'step 2' if(event.type){ if(result.bool){ player.line(result.targets,'green'); result.targets[0].gain(event.card,'gain2'); } } }, ai:{ result:{ target:function(player,target){ var hs=player.get('h'); if(hs.length<3) return 0; var bool=false; for(var i=0;i=9&&ai.get.value(hs[i])<7){ bool=true; break; } } if(!bool) return 0; if(player.canUse('sha',target)&&(player.num('h','sha'))){ return -2; } return -0.5; } }, order:9, } }, dahe2:{ mark:true, intro:{ content:'非红桃闪无效' }, mod:{ cardRespondable:function(card,player){ if(card.name=='shan'&&get.suit(card)!='heart') return false; }, } }, xunzhi:{ trigger:{player:'phaseBegin'}, init:function(player){ player.storage.xunzhi=0; }, filter:function(event,player){ var previous=player.getPrevious(); var next=player.getNext(); if(previous&&next){ return player.hp!=previous.hp&&player.hp!=next.hp; } return false; }, check:function(event,player){ return player.hp>=3&&player.num('h')>player.hp+1; }, content:function(){ player.loseHp(); player.storage.xunzhi+=2; }, mark:true, intro:{ content:function(storage,player){ return '手牌上限+'+player.storage.xunzhi; } }, mod:{ maxHandcard:function(player,num){ if(typeof player.storage.xunzhi=='number'){ return num+player.storage.xunzhi; } } } }, yawang:{ trigger:{player:'phaseDrawBefore'}, forced:true, check:function(event,player){ var num=game.countPlayer(function(target){ return target.hp==player.hp; }); if(!player.skills.contains('xunzhi2')){ var nh=player.num('h'); if(nh>5) return false; if(num==3&&nh>3) return false; } return num>=3; }, prompt:function(event,player){ var num=game.countPlayer(function(target){ return target.hp==player.hp; }); return '雅望:是否放弃摸牌,改为摸'+get.cnNumber(num)+'张牌?'; }, content:function(){ trigger.untrigger(); trigger.finish(); var num=game.countPlayer(function(target){ return target.hp==player.hp; }); if(num){ player.draw(num); } player.storage.yawang=num; player.addTempSkill('yawang2','phaseAfter'); } }, yawang2:{ mod:{ cardEnabled:function(card,player){ if(_status.currentPhase!=player) return; if(get.cardCount(true,player)>=player.storage.yawang) return false; } } }, junwei:{ trigger:{player:'phaseEnd'}, direct:true, filter:function(event,player){ return player.storage.yinling&&player.storage.yinling.length>=3; }, content:function(){ 'step 0' if(player.storage.yinling.length>3){ player.chooseButton(3,['是否发动【军威】?','hidden',player.storage.yinling]).set('ai',function(button){ return 1; }); } else{ player.chooseBool().set('createDialog',['是否发动【军威】?','hidden',player.storage.yinling]).set('dialogselectx',true); event.cards=player.storage.yinling.slice(0); } 'step 1' if(result.bool){ var cards=event.cards||result.links; for(var i=0;i1) return 1; if(_status.event.player.hp>=3) return 0; return 1; }).set('nshan',nshan); } } else{ event.finish(); } 'step 3' if(!event.directfalse&&result.bool) game.delay(); ui.clear(); 'step 4' if(!event.directfalse&&result.bool){ event.cards=result.cards; event.target.$throw(result.cards); player.chooseTarget('将闪交给一名角色',true,function(card,player,target){ return target!=_status.event.getParent().target; }).set('ai',function(target){ return ai.get.attitude(_status.event.player,target)/(target.num('h','shan')+1); }); } else{ event.target.loseHp(); delete event.cards; } 'step 5' if(event.cards){ player.line(result.targets,'green'); result.targets[0].gain(event.cards,'gain2'); game.log(player,'将',event.cards,'交给',result.targets[0]); event.finish(); } else{ if(event.target.num('e')){ player.choosePlayerCard('e','将'+get.translation(event.target)+'的一张装备牌移出游戏',true,event.target); } else{ event.finish(); } } 'step 6' if(result.bool){ var card=result.links[0]; if(event.target.storage.junwei2){ event.target.storage.junwei2.push(card); event.target.markSkill('junwei2'); } else{ event.target.storage.junwei2=[card]; } event.target.lose(card,ui.special); event.target.addSkill('junwei2'); event.target.syncStorage('junwei2'); } } }, junwei2:{ mark:true, intro:{ content:'cards' }, trigger:{player:'phaseEnd'}, forced:true, content:function(){ 'step 0' if(player.storage.junwei2.length){ var card=player.storage.junwei2.shift(); player.equip(card); event.redo(); } 'step 1' player.removeSkill('junwei2'); delete player.storage.junwei2; } }, yinling:{ enable:'phaseUse', filterCard:{color:'black'}, position:'he', intro:{ content:'cards', onunmark:'throw' }, filter:function(event,player){ return player.num('he',{color:'black'})>0&&player.storage.yinling.length<4; }, filterTarget:function(card,player,target){ return target.num('he')>0&&target!=player; }, init:function(player){ player.storage.yinling=[]; }, check:function(card){ return 6-ai.get.value(card); }, content:function(){ 'step 0' player.choosePlayerCard('hej',target,true); 'step 1' target.$give(result.links,player); target.lose(result.links,ui.special); player.storage.yinling.push(result.links[0]); player.markSkill('yinling'); player.syncStorage('yinling'); }, ai:{ order:10.1, expose:0.1, result:{ target:function(player,target){ if(target.skills.contains('tuntian')) return 0; var es=target.get('e'); var nh=target.num('h'); var noe=(es.length==0||target.hasSkillTag('noe')); var noe2=(es.length==1&&es[0].name=='baiyin'&&target.hp=0){ return -1.5; } return 2; } return -1.5; }, }, } }, yanxiao:{ enable:'phaseUse', filterCard:{suit:'diamond'}, filterTarget:true, check:function(card){ return 7-ai.get.value(card); }, position:'he', filter:function(event,player){ return player.num('he',{suit:'diamond'})>0; }, discard:false, prepare:function(cards,player,targets){ player.$give(cards,targets[0]); }, content:function(){ if(target.skills.contains('yanxiao2')&&target.storage.yanxiao2){ target.storage.yanxiao2.push(cards[0]); target.syncStorage('yanxiao2'); target.markSkill('yanxiao2'); } else{ target.storage.yanxiao2=cards.slice(0); target.syncStorage('yanxiao2'); target.addSkill('yanxiao2'); } }, ai:{ order:8, result:{ target:function(player,target){ if(target.storage.yanxiao2&&target.storage.yanxiao2.length) return 0; if(target.num('j')) return 1; return 0; } } } }, yanxiao2:{ mark:true, intro:{ content:'cards' }, trigger:{player:'phaseJudgeBegin'}, forced:true, content:function(){ var cards=player.storage.yanxiao2.concat(player.get('j')); player.gain(cards,'gain2'); delete player.storage.yanxiao2; player.removeSkill('yanxiao2'); game.log(player,'获得了',cards); }, ai:{ effect:{ target:function(card){ if(get.type(card)=='delay') return [0,0.1]; } } } }, anxian:{ group:['anxian_source','anxian_target'], subSkill:{ source:{ trigger:{source:'damageBefore'}, filter:function(event,player){ return event.card&&event.card.name=='sha'; }, check:function(event,player){ if(ai.get.damageEffect(event.player,player,player)<=0) return true; return false; }, content:function(){ 'step 0' if(trigger.player.num('h')){ trigger.player.chooseToDiscard(true); } 'step 1' player.draw(); trigger.untrigger(); trigger.finish(); } }, target:{ trigger:{target:'shaBefore'}, direct:true, filter:function(event,player){ return player.num('h'); }, content:function(){ "step 0" var next=player.chooseToDiscard('是否发动【安娴】?'); next.set('ai',function(card){ var player=_status.event.player; var trigger=_status.event.getTrigger(); if(ai.get.attitude(player,trigger.player)>0){ return 9-ai.get.value(card); } if(player.num('h',{name:'shan'})) return -1; return 7-ai.get.value(card); }); next.logSkill='anxian'; "step 1" if(result.bool){ trigger.player.draw(); trigger.untrigger(); trigger.finish(); } }, } } }, luoyan:{ group:['luoyan_tianxiang','luoyan_liuli'], subSkill:{ tianxiang:{ audio:2, trigger:{player:'damageBefore'}, direct:true, filter:function(event,player){ if(!player.storage.xingwu) return false; if(!player.storage.xingwu.length) return false; return player.num('h',{suit:'heart'})>0&&event.num>0; }, content:function(){ "step 0" player.chooseCardTarget({ filterCard:function(card){ return get.suit(card)=='heart'; }, filterTarget:function(card,player,target){ return player!=target; }, ai1:function(card){ return 10-ai.get.value(card); }, ai2:function(target){ var att=ai.get.attitude(_status.event.player,target); var trigger=_status.event.getTrigger(); var da=0; if(_status.event.player.hp==1){ da=10; } if(trigger.num>1){ if(target.maxHp>5&&target.hp>1) return -att/10+da; return -att+da; } var eff=ai.get.damageEffect(target,trigger.source,target,trigger.nature); if(att==0) return 0.1+da; if(eff>=0&&trigger.num==1){ return att+da; } if(target.hp==target.maxHp) return -att+da; if(target.hp==1){ if(target.maxHp<=4&&!target.hasSkillTag('maixie')){ if(target.maxHp<=3){ return -att+da; } return -att/2+da; } return da; } if(target.hp==target.maxHp-1){ if(target.hp>2||target.hasSkillTag('maixie')) return att/5+da; if(att>0) return 0.02+da; return 0.05+da; } return att/2+da; }, prompt:'天香:弃置一张红桃牌转移伤害' }); "step 1" if(result.bool){ player.logSkill('tianxiang',result.targets); trigger.untrigger(); trigger.player=result.targets[0]; trigger.player.addSkill('tianxiang2'); player.discard(result.cards[0]); } else{ event.finish(); } "step 2" trigger.trigger('damageBefore'); }, ai:{ effect:{ target:function(card,player,target){ if(player.skills.contains('jueqing')) return; if(get.tag(card,'damage')&&target.num('h')>1) return 0.7; } }, threaten:function(player,target){ if(target.num('h')==0) return 2; } } }, liuli:{ audio:2, trigger:{target:'shaBefore'}, direct:true, priority:5, filter:function(event,player){ if(!player.storage.xingwu) return false; if(!player.storage.xingwu.length) return false; if(player.num('he')==0) return false; for(var i=0;i0; var vcard={name:'shacopy',nature:card.nature,suit:card.suit}; for(var i=0;i0){ if(!player.canUse(card,game.players[0])){ return [0,0.1]; } min=0; } } } return min; } } } } } }, xingwu:{ audio:2, group:['xingwu_color','xingwu_color2'], subSkill:{ color:{ trigger:{player:'phaseBegin'}, forced:true, popup:false, silent:true, content:function(){ player.storage.xingwu_color=['black','red']; } }, color2:{ trigger:{player:'useCard'}, forced:true, popup:false, silent:true, filter:function(event,player){ return Array.isArray(player.storage.xingwu_color)&&_status.currentPhase==player; }, content:function(){ player.storage.xingwu_color.remove(get.color(trigger.card)); } } }, trigger:{player:'phaseDiscardBegin'}, direct:true, filter:function(event,player){ var length=player.storage.xingwu_color.length; if(length==0) return false; var hs=player.get('h'); if(hs.length==0) return false; if(length==2) return true; var color=player.storage.xingwu_color[0]; for(var i=0;i0&& ai.get.attitude(player,game.players[i])<0){ notarget=false;break; } } if(notarget) return 0; } return 7-ai.get.value(card); }); 'step 1' if(result.bool){ player.logSkill('xingwu'); if(player.storage.xingwu.length<2){ player.$give(result.cards,player); } player.lose(result.cards,ui.special); player.storage.xingwu=player.storage.xingwu.concat(result.cards); player.markSkill('xingwu'); player.syncStorage('xingwu'); } else{ event.finish(); } 'step 2' if(player.storage.xingwu.length==3){ player.$throw(player.storage.xingwu); while(player.storage.xingwu.length){ ui.discardPile.appendChild(player.storage.xingwu.shift()); } player.unmarkSkill('xingwu'); player.chooseTarget(function(card,player,target){ return target!=player&&target.sex=='male'; },'对一名男性角色造成两点伤害并弃置其装备区内的牌').set('ai',function(target){ var player=_status.event.player; if(ai.get.attitude(player,target)>0) return -1; return ai.get.damageEffect(target,player,player)+target.num('e')/2; }); } else{ event.finish(); } 'step 3' if(result.bool){ var target=result.targets[0]; target.damage(2); event.target=target; player.line(target,'green'); } else{ event.finish(); } 'step 4' if(event.target&&event.target.isAlive()){ var es=event.target.get('e'); if(es.length){ event.target.discard(es); } } }, ai:{ threaten:1.5 } }, yinbing:{ trigger:{player:'phaseEnd'}, direct:true, audio:2, init:function(player){ player.storage.yinbing=[]; }, filter:function(event,player){ return player.num('he',{type:'basic'})0&& (event.card.name=='sha'||event.card.name=='juedou'); }, content:function(){ 'step 0' player.chooseCardButton('将一张引兵牌置入弃牌堆',true,player.storage.yinbing); 'step 1' var card=result.links[0]; player.storage.yinbing.remove(card); ui.discardPile.appendChild(card); player.$throw(card); game.log(player,'将',card,'置入弃牌堆'); player.syncStorage('yinbing'); if(player.storage.yinbing.length==0){ player.unmarkSkill('yinbing'); } } } }, group:'yinbing_discard' }, juedi:{ trigger:{player:'phaseBegin'}, filter:function(event,player){ return player.storage.yinbing&&player.storage.yinbing.length>0; }, direct:true, audio:2, content:function(){ 'step 0' player.chooseTarget('是否发动【绝地】?',function(card,player,target){ return player.hp>=target.hp; }).set('ai',function(target){ var player=_status.event.player; if(target==player) return 0.5; var att=ai.get.attitude(player,target); if(att<2) return 0; if(target.hp==1&&att>2){ att+=2; } if(player.num('j','lebu')){ if(target.hp==target.maxHp) return att-2; return att-1; } if(target.hp==target.maxHp) return 0; if(player.num('h')1; }, prompt:function(event,player){ return '是否对'+get.translation(event.player)+'发动【魅步】?' }, check:function(event,player){ if(ai.get.attitude(player,event.player)>=0) return false; var e2=player.get('e','2'); if(e2){ if(e2.name=='tengjia') return true; if(e2.name=='bagua') return true; } return player.num('h','shan')>0; }, content:function(){ var target=trigger.player; player.line(target,'green'); target.addTempSkill('meibu_viewas','phaseAfter'); target.addTempSkill('meibu_range','phaseAfter'); target.storage.meibu=player; target.markSkillCharacter('meibu',player,'魅步','锦囊牌均视为杀且'+get.translation(player)+'视为在攻击范围内'); }, ai:{ expose:0.2 }, subSkill:{ range:{ mod:{ targetInRange:function(card,player,target){ if(card.name=='sha'&&target==player.storage.meibu){ return true; } } }, onremove:function(player){ game.broadcast(function(player){ if(player.marks.meibu){ player.marks.meibu.delete(); delete player.marks.meibu; } },player); if(player.marks.meibu){ player.marks.meibu.delete(); delete player.marks.meibu; game.addVideo('unmark',player,'meibu'); } }, trigger:{player:'useCard'}, forced:true, popup:false, filter:function(event,player){ return event.skill=='meibu_viewas' }, content:function(){ player.removeSkill('meibu_viewas'); game.broadcastAll(function(player){ if(player.marks.meibu&&player.marks.meibu.info){ player.marks.meibu.info.content=player.marks.meibu.info.content.slice(8); } },player); } }, viewas:{ mod:{ cardEnabled:function(card,player){ if(card.name!='sha'&&get.type(card,'trick')=='trick') return false; }, cardUsable:function(card,player){ if(card.name!='sha'&&get.type(card,'trick')=='trick') return false; }, cardRespondable:function(card,player){ if(card.name!='sha'&&get.type(card,'trick')=='trick') return false; }, cardSavable:function(card,player){ if(card.name!='sha'&&get.type(card,'trick')=='trick') return false; }, }, enable:['chooseToUse','chooseToRespond'], filterCard:function(card){ return get.type(card,'trick')=='trick'; }, viewAs:{name:'sha'}, check:function(){return 1}, ai:{ effect:{ target:function(card,player,target,current){ if(get.tag(card,'respondSha')&¤t<0) return 0.8 } }, respondSha:true, order:4, useful:-1, value:-1 } } } }, mumu:{ enable:'phaseUse', usable:1, filterCard:function(card,player,target){ return card.name=='sha'||(get.type(card,'trick')=='trick'&&get.color(card)=='black'); }, check:function(card){ return 7-ai.get.value(card); }, filterTarget:function(card,player,target){ if(target==player) return false; return target.get('e','1')||target.get('e','2'); }, content:function(){ 'step 0' var e1=target.get('e','1'); var e2=target.get('e','2'); event.e1=e1; event.e2=e2; if(e1&&e2){ player.chooseControl('武器牌','防具牌').set('ai',function(){ if(_status.event.player.get('e','2')){ return '武器牌'; } return '防具牌'; }); } else if(e1){ event.choice='武器牌'; } else{ event.choice='防具牌'; } 'step 1' var choice=event.choice||result.control; if(choice=='武器牌'){ target.discard(event.e1); player.draw(); } else{ player.equip(event.e2); target.$give(event.e2,player); } }, ai:{ order:8, result:{ target:function(player,target){ if(target.get('e','2')&&!player.get('e','2')){ return -2; } return -1; } } } }, fentian:{ audio:2, trigger:{player:'phaseEnd'}, direct:true, filter:function(event,player){ if(player.num('h')>=player.hp) return false; for(var i=0;i0; }).set('ai',function(target){ return -ai.get.attitude(_status.event.player,target) }); 'step 1' if(result.bool){ player.logSkill('fentian',result.targets); event.target=result.targets[0]; player.choosePlayerCard(result.targets[0],'he',true); } else{ event.finish(); } 'step 2' if(result.bool){ event.target.$give(result.links,player); event.target.lose(result.links,ui.special); player.storage.fentian=player.storage.fentian.concat(result.links); player.syncStorage('fentian'); setTimeout(function(){ player.markSkill('fentian'); },700); } }, mod:{ attackFrom:function(from,to,distance){ return distance-from.storage.fentian.length; } } }, zhiri:{ trigger:{player:'phaseBegin'}, forced:true, unique:true, audio:2, skillAnimation:true, animationColor:'fire', filter:function(event,player){ return player.storage.fentian&&player.storage.fentian.length>=3&&!player.storage.zhiri; }, content:function(){ player.loseMaxHp(); player.addSkill('xintan'); player.storage.zhiri=true; } }, xintan:{ enable:'phaseUse', usable:1, audio:2, unique:true, filter:function(event,player){ return player.storage.fentian&&player.storage.fentian.length>=2; }, filterTarget:true, prompt:'两张“焚”置入弃牌堆并令一名角色失去一点体力', content:function(){ 'step 0' player.chooseCardButton(2,'两张“焚”置入弃牌堆并令'+get.translation(target)+'失去一点体力',player.storage.fentian,true); 'step 1' if(result.bool){ player.$throw(result.links); for(var i=0;iplayer.hp; }, content:function(){ player.storage.danji=true; player.loseMaxHp(); player.addSkill('mashu'); player.addSkill('nuzhan'); } }, nuzhan:{ trigger:{player:'useCard'}, filter:function(event,player){ return event.card&&event.card.name=='sha'&&event.cards&& event.cards.length==1&&get.type(event.cards[0],'trick')=='trick'; }, forced:true, content:function(){ if(player.stat[player.stat.length-1].card.sha>0){ player.stat[player.stat.length-1].card.sha--; } }, group:'nuzhan2' }, nuzhan2:{ trigger:{source:'damageBegin'}, forced:true, filter:function(event,player){ return event.card&&event.card.name=='sha'&&event.cards&& event.cards.length==1&&get.type(event.cards[0])=='equip'; }, content:function(){ trigger.num++; } }, tunchu:{ audio:2, trigger:{player:'phaseDrawBegin'}, check:function(event,player){ return player.num('h')-player.num('h',{type:'equip'})+2<=player.hp; }, content:function(){ trigger.num+=2; player.addTempSkill('tunchu_choose','phaseDrawAfter'); }, init:function(player){ player.storage.tunchu=[]; }, intro:{ content:'cards' }, group:'tunchu_disable', subSkill:{ choose:{ trigger:{player:'phaseDrawEnd'}, forced:true, popup:false, content:function(){ 'step 0' player.removeSkill('tunchu_choose'); if(player.num('h')){ player.chooseCard('h',true); } else{ event.finish(); } 'step 1' player.lose(result.cards,ui.special); player.storage.tunchu=player.storage.tunchu.concat(result.cards); player.markSkill('tunchu'); player.syncStorage('tunchu'); } }, disable:{ mod:{ cardEnabled:function(card,player){ if(player.storage.tunchu&&player.storage.tunchu.length&& (card.name=='sha'||card.name=='juedou')){ return false; } }, cardUsable:function(card,player){ if(player.storage.tunchu&&player.storage.tunchu.length&& (card.name=='sha'||card.name=='juedou')){ return false; } }, } } } }, shuliang:{ audio:2, trigger:{global:'phaseEnd'}, direct:true, filter:function(event,player){ return player.storage.tunchu&&player.storage.tunchu.length>0&&event.player.num('h')==0&&event.player.isAlive(); }, content:function(){ 'step 0' var goon=(ai.get.attitude(player,trigger.player)>0); player.chooseCardButton('是否对'+get.translation(trigger.player)+'发动【输粮】?',player.storage.tunchu).set('ai',function(){ if(_status.event.goon) return 1; return 0; }).set('goon',goon); 'step 1' if(result.bool){ player.logSkill('shuliang',trigger.player); player.storage.tunchu.remove(result.links[0]); player.$throw(result.links); ui.discardPile.appendChild(result.links[0]); player.syncStorage('tunchu'); if(player.storage.tunchu.length==0){ player.unmarkSkill('tunchu'); } trigger.player.draw(2); } } }, jieyuan:{ group:['jieyuan_more','jieyuan_less'], subSkill:{ more:{ audio:true, trigger:{source:'damageBegin'}, direct:true, filter:function(event,player){ if(!player.num('h',{color:'black'})) return false; return event.player.hp>=player.hp&&player!=event.player; }, content:function(){ 'step 0' var goon=(ai.get.attitude(player,trigger.player)<0); var next=player.chooseToDiscard('是否对'+get.translation(trigger.player)+'发动【竭缘】?',{color:'black'}); next.set('ai',function(card){ if(_status.event.goon){ return 8-ai.get.value(card); } return 0; }); next.set('goon',goon); next.logSkill=['jieyuan_more',trigger.player]; 'step 1' if(result.bool){ trigger.num++; } } }, less:{ audio:true, trigger:{player:'damageBegin'}, filter:function(event,player){ if(!player.num('h',{color:'red'})) return false; return event.source&&event.source.hp>=player.hp&&player!=event.source; }, direct:true, content:function(){ "step 0" var next=player.chooseToDiscard('竭缘:是否弃置一张红色手牌令伤害-1?',{color:'red'}); next.set('ai',function(card){ var player=_status.event.player; if(player.hp==1||_status.event.getTrigger().num>1){ return 9-ai.get.value(card); } if(player.hp==2){ return 8-ai.get.value(card); } return 7-ai.get.value(card); }); next.logSkill='jieyuan_less'; "step 1" if(result.bool){ game.delay(); trigger.num--; } } } }, ai:{ expose:0.2, threaten:1.5 } }, fenxin:{ mode:['identity'], trigger:{source:'dieBegin'}, init:function(player){ player.storage.fenxin=false; }, intro:{ content:'limited' }, skillAnimation:'epic', audio:2, mark:true, filter:function(event,player){ if(player.storage.fenxin) return false; return event.player.identity!='zhu'&&player.identity!='zhu'&& player.identity!='mingzhong'&&event.player.identity!='mingzhong'; }, check:function(event,player){ if(player.identity==event.player.identity) return Math.random()<0.5; var stat=ai.get.situation(); switch(player.identity){ case 'fan': if(stat<0) return false; if(stat==0) return Math.random()<0.6; return true; case 'zhong': if(stat>0) return false; if(stat==0) return Math.random()<0.6; return true; case 'nei': if(event.player.identity=='fan'&&stat<0) return true; if(event.player.identity=='zhong'&&stat>0) return true; if(stat==0) return Math.random()<0.7; return false; } }, prompt:function(event,player){ return '焚心:是否与'+get.translation(event.player)+'交换身份?'; }, content:function(){ game.broadcastAll(function(player,target,shown){ var identity=player.identity; player.identity=target.identity; if(shown||player==game.me){ player.setIdentity(); } target.identity=identity; },player,trigger.player,trigger.player.identityShown); player.line(trigger.player,'green'); player.storage.fenxin=true; player.unmarkSkill('fenxin'); } }, qingyi:{ group:['qingyi1','qingyi2'] }, qingyi1:{ audio:true, trigger:{player:'phaseBegin'}, direct:true, content:function(){ "step 0" player.addSkill('qingyi3'); var check= player.num('h')>2; player.chooseTarget('是否发动【轻逸】?',function(card,player,target){ if(player==target) return false; return player.canUse({name:'sha'},target); }).ai=function(target){ if(!check) return 0; return ai.get.effect(target,{name:'sha'},_status.event.player); } "step 1" if(result.bool){ player.logSkill('qingyi1',result.targets); player.useCard({name:'sha'},result.targets[0],false); player.skip('phaseJudge'); player.skip('phaseDraw'); } player.removeSkill('qingyi3'); } }, qingyi2:{ audio:true, trigger:{player:'phaseUseBefore'}, direct:true, filter:function(event,player){ return player.num('he',{type:'equip'})>0; }, content:function(){ "step 0" player.addSkill('qingyi3'); var check=player.num('h')<=player.hp; player.chooseCardTarget({ prompt:'是否发动【轻逸】?', filterCard:function(card){ return get.type(card)=='equip' }, position:'he', filterTarget:function(card,player,target){ if(player==target) return false; return player.canUse({name:'sha'},target); }, ai1:function(card){ if(!_status.event.check) return 0; return 6-ai.get.value(card); }, ai2:function(target){ if(!_status.event.check) return 0; return ai.get.effect(target,{name:'sha'},_status.event.player); }, check:check }); "step 1" if(result.bool){ player.logSkill('qingyi2',result.targets); player.discard(result.cards[0]); player.useCard({name:'sha'},result.targets[0]); trigger.untrigger(); trigger.finish(); } player.removeSkill('qingyi3'); } }, qingyi3:{ mod:{ targetInRange:function(card,player,target,now){ return true; } }, }, shixin:{ audio:2, trigger:{player:'damageBefore'}, filter:function(event){ return event.nature=='fire'; }, forced:true, content:function(){ trigger.untrigger(); trigger.finish(); }, ai:{ nofire:true, effect:{ target:function(card,player,target,current){ if(get.tag(card,'fireDamage')) return 0; } } } }, fenyin:{ audio:2, trigger:{player:'useCard'}, frequent:true, usable:3, filter:function(event,player){ if(!event.cards||event.cards.length!=1) return false; if(_status.currentPhase!=player) return false; if(!player.storage.fenyin) return false; return get.color(player.storage.fenyin)!=get.color(event.cards[0]); }, content:function(){ player.draw(); }, intro:{ content:'card' }, group:['fenyin2','fenyin3'] }, fenyin3:{ trigger:{player:'useCard'}, priority:-1, forced:true, popup:false, silent:true, filter:function(event,player){ if(!event.cards||event.cards.length!=1) return false; if(_status.currentPhase!=player) return false; return true; }, content:function(){ player.storage.fenyin=trigger.cards[0]; } }, fenyin2:{ trigger:{player:'phaseBefore'}, forced:true, silent:true, popup:false, priority:10, content:function(){ player.storage.fenyin=null; } }, dujin:{ audio:2, trigger:{player:'phaseDrawBegin'}, frequent:true, content:function(){ trigger.num+=1+Math.floor(player.num('e')/2); } }, qirang:{ audio:2, trigger:{player:'equipEnd'}, frequent:true, content:function(){ player.gain(get.cardPile(function(card){ return get.type(card,'trick')=='trick'; }),'gain2'); }, ai:{ effect:{ target:function(card,player,target,current){ if(get.type(card)=='equip') return [1,3]; } }, threaten:1.3 } }, yuhua:{ trigger:{player:'phaseDiscardBegin'}, forced:true, audio:2, filter:function(event,player){ return player.num('h',{type:'basic'})0){ var att1=ai.get.attitude(target,player); var att2=ai.get.attitude(target,trigger.player); var att3=ai.get.attitude(player,target); if(att3<0) return 0; return att1/2+att2+att3; } else{ return 0; // return ai.get.attitude(player,target); } }); 'step 1' if(result.bool){ player.addTempSkill('chenqing2',{player:'phaseBegin'}); event.target=result.targets[0]; event.target.draw(4); player.logSkill('chenqing',event.target); } else{ event.finish(); } 'step 2' var target=event.target; var tosave=trigger.player; var att=ai.get.attitude(target,tosave); var hastao=target.num('h','tao'); target.chooseToDiscard(4,true,'he').set('ai',function(card){ var hastao=_status.event.hastao; var att=_status.event.att; if(!hastao&&att>0){ var suit=get.suit(card); for(var i=0;i0&&player.num('h')>0; }, content:function(){ if(player.storage.mozhi.length&&player.num('h')){ var card=player.storage.mozhi.shift(); card={name:card.name,nature:card.nature,suit:card.suit,number:card.number}; if(lib.filter.cardEnabled(card)){ for(var i=0;i0; }, content:function(){ player.loseHp(player.storage.ranshang); } }, hanyong:{ trigger:{player:'useCard'}, filter:function(event,player){ return player.storage.hanyong>player.hp&&event.card&& (event.card.name=='nanman'||event.card.name=='wanjian'); }, content:function(){ player.addTempSkill('hanyong3','useCardAfter'); }, init:function(player){ player.storage.hanyong=0; }, group:'hanyong2' }, hanyong2:{ audio:false, trigger:{player:'phaseBegin'}, forced:true, popup:false, silent:true, content:function(){ player.storage.hanyong++; } }, hanyong3:{ audio:false, trigger:{source:'damageBegin'}, forced:true, filter:function(event,player){ return event.card&&(event.card.name=='nanman'||event.card.name=='wanjian'); }, content:function(){ trigger.num++; } }, yishe:{ trigger:{player:'phaseEnd'}, init:function(player){ player.storage.yishe=[]; }, filter:function(event,player){ return !player.storage.yishe||!player.storage.yishe.length; }, intro:{ content:'cards' }, content:function(){ 'step 0' player.draw(2); player.chooseCard(2,'he',true,'选择两张牌作为“米”'); 'step 1' player.storage.yishe=result.cards; player.lose(result.cards,ui.special); player.syncStorage('yishe'); player.markSkill('yishe'); } }, bushi:{ trigger:{player:'damageEnd',source:'damageEnd'}, filter:function(event,player){ return player.storage.yishe&&player.storage.yishe.length&&event.player.isAlive(); }, direct:true, content:function(){ 'step 0' trigger.player.chooseCardButton('选择获得一张“米”',player.storage.yishe); 'step 1' if(result.bool){ player.logSkill('bushi'); game.log(player,'获得了',result.links); trigger.player.gain(result.links[0],'draw2'); player.storage.yishe.remove(result.links[0]); player.syncStorage('yishe'); if(player.storage.yishe.length==0){ player.recover(); player.unmarkSkill('yishe'); } else{ player.markSkill('yishe'); } } } }, midao:{ unique:true, trigger:{global:'judge'}, direct:true, filter:function(event,player){ return player.storage.yishe&&player.storage.yishe.length&&event.player.isAlive(); }, content:function(){ "step 0" var list=player.storage.yishe; player.chooseButton([get.translation(trigger.player)+'的'+(trigger.judgestr||'')+'判定为'+get.translation(trigger.player.judging[0])+ ',是否发动【米道】?',list,'hidden'],function(button){ var card=button.link; var trigger=_status.event.getTrigger(); var player=_status.event.player; var judging=_status.event.judging; var result=trigger.judge(card)-trigger.judge(judging); var attitude=ai.get.attitude(player,trigger.player); return result*attitude; }).set('judging',trigger.player.judging); "step 1" if(result.bool){ player.logSkill('midao',trigger.player); var card=result.links[0]; player.storage.yishe.remove(card); player.syncStorage('yishe'); if(player.storage.yishe.length==0){ player.recover(); player.unmarkSkill('yishe'); } else{ player.markSkill('yishe'); } player.$throw(card); game.broadcastAll(function(card){ if(card.clone){ card.clone.classList.add('thrownhighlight'); } },card); if(trigger.player.judging[0].clone){ trigger.player.judging[0].clone.classList.remove('thrownhighlight'); game.broadcast(function(card){ if(card.clone){ card.clone.classList.remove('thrownhighlight'); } },trigger.player.judging[0]); game.addVideo('deletenode',player,get.cardsInfo([trigger.player.judging[0].clone])); } trigger.player.judging[0]=card; trigger.position.appendChild(card); game.log(player,'的判定牌改为',card); game.delay(2); } }, ai:{ tag:{ rejudge:0.6 } } }, fengpo:{ audio:2, trigger:{player:['shaBegin','juedouBegin']}, filter:function(event,player){ if(player.skills.contains('fengpo3')) return false; return event.target&&event.targets&&event.targets.length==1; }, direct:true, content:function(){ 'step 0' player.addTempSkill('fengpo3','phaseAfter'); player.chooseControl('draw_card','加伤害','cancel').set('prompt','是否发动【凤魄】?'); 'step 1' if(result.control&&result.control!='cancel'){ player.logSkill('fengpo'); var nd=trigger.target.num('h',{suit:'diamond'}); if(result.control=='draw_card'){ player.draw(nd); } else{ player.addTempSkill('fengpo2','useCardToAfter'); player.storage.fengpo=nd; } } } }, fengpo2:{ trigger:{source:'damageBegin'}, filter:function(event){ return event.card&&(event.card.name=='sha'||event.card.name=='juedou')&&event.notLink(); }, forced:true, audio:false, content:function(){ if(typeof player.storage.fengpo=='number'){ trigger.num+=player.storage.fengpo; } } }, fengpo3:{}, biluan:{ trigger:{player:'phaseDrawBefore'}, mark:true, unique:true, intro:{ content:function(storage){ if(storage>0){ return '防御距离+'+storage; } else if(storage<0){ return '防御距离'+storage; } else{ return '无距离变化'; } } }, init:function(player){ player.storage.biluan=0; }, check:function(event,player){ if(player.num('h')>player.hp) return true; if(player.num('j','lebu')) return true; var ng=[]; for(var i=0;i1){ nai++; } } } return nai>=2; }, filter:function(event,player){ for(var i=0;i1; }, forced:true, content:function(){ 'step 0' player.chooseTarget(function(card,player,target){ return target==player||target==_status.event.getTrigger().player; },true,'礼下:选择一个目标摸一张牌').set('ai',function(target){ return player==target?1:0; }); 'step 1' if(result.targets.length){ result.targets[0].draw(); player.line(result.targets[0],'green'); } player.storage.biluan--; player.markSkill('biluan'); game.addVideo('storage',player,['biluan',player.storage.biluan]); } }, fuji:{ trigger:{global:'damageBegin'}, filter:function(event){ return event.source&&event.nature=='thunder'; }, check:function(event,player){ return ai.get.attitude(player,event.source)>0&&ai.get.attitude(player,event.player)<0; }, prompt:function(event){ return get.translation(event.source)+'即将对'+get.translation(event.player)+'造成伤害,是否发动【辅祭】?'; }, content:function(){ "step 0" trigger.source.judge(ui.special); "step 1" if(result.color=='black'){ result.card.goto(ui.discardPile); trigger.num++; } else{ trigger.source.gain(result.card); trigger.source.$gain2(result.card); } } }, fulu:{ enable:'chooseToUse', filterCard:function(card){ return card.name=='sha'&&!card.nature; }, viewAs:{name:'sha',nature:'thunder'}, ai:{ order:function(){ return lib.card.sha.ai.order+0.1; } } }, canshi:{ audio:2, trigger:{player:'phaseDrawBefore'}, check:function(event,player){ var num=0; for(var i=0;i3) return true; } } return false; }, prompt:function(){ var num=0; for(var i=0;i0){ player.draw(num); } player.addTempSkill('canshi2','phaseAfter'); } }, canshi2:{ trigger:{player:'useCard'}, forced:true, filter:function(event,player){ if(player.num('he')==0) return false; var type=get.type(event.card,'trick'); return type=='basic'||type=='trick'; }, content:function(){ game.delay(0.5); player.chooseToDiscard(true,'he'); } }, chouhai:{ audio:2, trigger:{player:'damageBegin'}, forced:true, check:function(){ return false; }, filter:function(event,player){ return player.num('h')==0; }, content:function(){ trigger.num++; }, ai:{ effect:{ target:function(card,player,target,current){ if(get.tag(card,'damage')&&target.num('h')==0) return [1,-2]; } } } }, kunfen:{ audio:2, trigger:{player:'phaseEnd'}, direct:true, content:function(){ "step 0" if(player.storage.kunfen|| (lib.config.mode=='guozhan'&&player.hiddenSkills.contains('kunfen'))){ if(!player.storage.kunfen){ event.skillHidden=true; } player.chooseBool('是否发动【困奋】?').set('ai',function(){ var player=_status.event.player; if(player.hp>3) return true; if(player.hp==3&&player.num('h')<3) return true; if(player.hp==2&&player.num('h')==0) return true; return false; }); } else{ event.forced=true; } "step 1" if(event.forced||result.bool){ player.logSkill('kunfen'); player.loseHp(); } else{ event.finish(); } "step 2" player.draw(2); }, ai:{ threaten:1.5 } }, fengliang:{ skillAnimation:true, unique:true, audio:2, trigger:{player:'dying'}, priority:10, forced:true, filter:function(event,player){ return !player.storage.kunfen; }, content:function(){ "step 0" player.loseMaxHp(); "step 1" if(player.hp<2){ player.recover(2-player.hp); } "step 2" player.addSkill('tiaoxin'); player.storage.kunfen=true; }, }, zhuiji:{ mod:{ globalFrom:function(from,to){ if(from.hp>to.hp) return -Infinity; } } }, cihuai:{ trigger:{player:'phaseUseBegin'}, direct:true, filter:function(event,player){ return player.num('h','sha')==0; }, content:function(){ "step 0" player.chooseTarget('是否发动【刺槐】?',function(card,player,target){ return player.canUse({name:'sha'},target); }).set('ai',function(target){ var player=_status.event.player; return ai.get.effect(target,{name:'sha'},player,player); }); "step 1" if(result.bool){ player.logSkill('cihuai'); player.showHandcards(); player.useCard({name:'sha'},result.targets); } }, ai:{ expose:0.2, } }, jilei:{ trigger:{player:'damageEnd'}, priority:9, audio:2, check:function(event,player){ return ai.get.attitude(player,event.source)<0; }, filter:function(event){ return event&&event.source; }, content:function(){ trigger.source.addSkill('jilei2'); }, ai:{ threaten:0.6 } }, jilei2:{ unique:true, trigger:{global:'phaseAfter'}, forced:true, priority:10, audio:2, mod:{ cardEnabled:function(){ return false; }, cardUsable:function(){ return false; }, cardRespondable:function(){ return false; }, cardSavable:function(){ return false; } }, content:function(){ player.removeSkill('jilei2') }, }, danlao:{ priority:9, audio:2, filter:function(event,player){ return event.player!=player&&get.type(event.card)=='trick'&&event.targets&&event.targets.length>1; }, check:function(event,player){ return get.tag(event.card,'multineg')||ai.get.effect(player,event.card,event.player,player)<=0; }, trigger:{target:'useCardToBefore'}, content:function(){ trigger.untrigger(); trigger.finish(); player.draw(); }, ai:{ effect:{ target:function(card){ if(get.type(card)!='trick') return; if(card.name=='tiesuo') return [0,0]; if(card.name=='yihuajiemu') return [0,1]; if(get.tag(card,'multineg')) return [0,2]; } } } }, taichen:{ enable:'phaseUse', usable:1, filterTarget:function(card,player,target){ return player.canUse('sha',target); }, content:function(){ "step 0" player.loseHp(); "step 1" player.useCard({name:'sha'},target,false); }, ai:{ order:1, result:{ target:function(player,target){ if(player.hp>2&&player.hp>target.hp&&target.num('he')<4){ return ai.get.effect(target,{name:'sha'},player,target); } return 0; } } } }, manjuan:{ audio:true, trigger:{global:'discardAfter'}, filter:function(event,player){ if(event.player==player) return false; if(!player.num('he')) return false; for(var i=0;imaxval){ maxval=tempval; } } maxval+=cards.length-1; var next=player.chooseToDiscard('he',{suit:suits}); next.set('ai',function(card){ return _status.event.maxval-ai.get.value(card); }); next.set('maxval',maxval); next.set('dialog',['是否发动【'+get.translation(event.name)+'】?','hidden',cards]) next.logSkill=event.name; event.cards=cards; } "step 2" if(result.bool){ game.log(player,'获得了',event.cards); player.gain(event.cards,'gain2'); } }, ai:{ threaten:1.3 } }, zuixiang:{ skillAnimation:true, audio:true, unique:true, mark:true, trigger:{player:'phaseBegin'}, priority:10, filter:function(event,player){ if(player.storage.zuixiang) return false; return true; }, check:function(event,player){ return player.num('h')0; }, direct:true, content:function(){ "step 0" var next=player.chooseToDiscard('协穆:是否弃置一张杀并摸两张牌?',{name:'sha'}); next.set('ai',function(card){ return 9-ai.get.value(card); }); next.logSkill='xiemu'; "step 1" if(result.bool){ player.draw(2); } }, ai:{ effect:{ target:function(card,player,target){ if(get.color(card)=='black'&&target.num('h')>0){ return [1,0.5]; } } } } }, spmengjin:{ trigger:{player:'shaBegin'}, filter:function(event,player){ return event.target.num('he')>0; }, direct:true, content:function(){ "step 0" var att=ai.get.attitude(player,trigger.target); player.choosePlayerCard('是否发动【猛进】?','he',trigger.target).ai=function(button){ var val=ai.get.buttonValue(button); if(att>0) return -val; return val; }; "step 1" if(result.bool){ trigger.target.discard(result.links); player.logSkill('spmengjin',trigger.target); trigger.target.addTempSkill('mengjin2','shaAfter'); } }, ai:{ expose:0.2 } }, fenxun:{ audio:2, trigger:{player:'shaBefore'}, direct:true, filter:function(event,player){ return event.targets.length==1; }, position:'he', content:function(){ "step 0" player.chooseCardTarget({ filterCard:true, filterTarget:function(card,player,target){ var trigger=_status.event.getTrigger(); return lib.filter.targetEnabled(trigger.card,player,target)&&target!=trigger.targets[0]; }, ai1:function(card){ return 6-ai.get.value(card); }, ai2:function(target){ var trigger=_status.event.getTrigger(); var player=_status.event.player; return ai.get.effect(target,trigger.card,player,player); }, prompt:'是否发动【奋迅】?' }); "step 1" if(result.bool){ player.discard(result.cards); trigger.targets.push(result.targets[0]); player.logSkill('fenxun',result.targets); } } }, zhoufu:{ audio:2, enable:'phaseUse', usable:1, filterCard:true, filterTarget:function(card,player,target){ return player!=target&&!target.skills.contains('zhoufu2'); }, prepare:function(cards,player){ player.$throw(cards); }, discard:false, content:function(){ target.$gain2(cards); target.storage.zhoufu2=cards[0]; target.addSkill('zhoufu2'); target.storage.zhoufu3=player; ui.special.appendChild(cards[0]); target.syncStorage('zhoufu2'); }, check:function(card){ return 3-ai.get.value(card) }, ai:{ expose:0.1, order:1, result:{ player:1 } } }, zhoufu2:{ trigger:{player:'judge'}, forced:true, priority:10, mark:'card', content:function(){ "step 0" player.$throw(player.storage.zhoufu2); game.broadcastAll(function(card){ if(card.clone){ card.clone.classList.add('thrownhighlight'); } },player.storage.zhoufu2); if(player.judging[0].clone){ player.judging[0].clone.classList.remove('thrownhighlight'); game.broadcast(function(card){ if(card.clone){ card.clone.classList.remove('thrownhighlight'); } },player.judging[0]); game.addVideo('deletenode',player,get.cardsInfo([player.judging[0].clone])); } player.judging[0]=player.storage.zhoufu2; trigger.position.appendChild(player.storage.zhoufu2); game.log(player,'的判定牌改为',player.storage.zhoufu2); game.delay(2); "step 1" if(player.storage.zhoufu3.isAlive()&&player.storage.zhoufu3.get('s').contains('yingbin')){ player.storage.zhoufu3.logSkill('yingbin'); player.storage.zhoufu3.draw(2); } player.removeSkill('zhoufu2'); delete player.storage.zhoufu2; delete player.storage.zhoufu3; }, intro:{ content:'card' }, group:'zhoufu3' }, zhoufu3:{ trigger:{player:'phaseEnd'}, forced:true, content:function(){ if(player.storage.zhoufu2){ player.unmark(player.storage.zhoufu2.name); if(player.storage.zhoufu3.isAlive()){ player.storage.zhoufu3.gain(player.storage.zhoufu2); player.$give(player.storage.zhoufu2,player.storage.zhoufu3); game.delay(); } else{ ui.discardPile.appendChild(player.storage.zhoufu2); } } player.removeSkill('zhoufu2'); delete player.storage.zhoufu2; delete player.storage.zhoufu3; }, }, yingbin:{ audio:2, }, kuiwei:{ audio:2, trigger:{player:'phaseEnd'}, check:function(event,player){ if(player.isTurnedOver()) return true; var num=0; for(var i=0;i1; }, content:function(){ "step 0" player.turnOver(); "step 1" var num=0; for(var i=0;i=player.num('he')){ player.discard(player.get('he')); } else if(num){ player.chooseToDiscard('he',num,true); } player.removeSkill('kuiwei2'); } }, yanzheng:{ enable:'chooseToUse', audio:2, filter:function(event,player){ return player.hp0; }, viewAsFilter:function(player){ return player.hp0; }, filterCard:true, position:'e', viewAs:{name:'wuxie'}, prompt:'将一张装备区内的牌当无懈可击使用', check:function(card){return 8-ai.get.equipValue(card)}, threaten:1.2 }, tongji:{ global:'tongji_disable', unique:true, gainnable:true, subSkill:{ disable:{ mod:{ targetEnabled:function(card,player,target){ if(player.skills.contains('tongji')) return; if(card.name=='sha'){ if(target.skills.contains('tongji')) return; for(var i=0;i=0; }, content:function(){ "step 0" player.draw(); if(trigger.target!=player){ player.chooseCard(true,'he','交给'+get.translation(trigger.target)+'一张牌').set('ai',function(card){ if(get.position(card)=='e') return -1; if(card.name=='shan') return 1; if(get.type(card)=='equip') return 0.5; return 0; }); } else{ event.finish(); } "step 1" trigger.target.gain(result.cards); player.$give(result.cards,trigger.target); game.delay(); event.card=result.cards[0]; if(get.type(event.card)!='equip') event.finish(); "step 2" if(!trigger.target.isMin()){ trigger.target.chooseBool('是否装备'+get.translation(event.card)+'?').set('ai',function(){ var current=_status.event.player.get('e',{subtype:get.subtype(_status.event.card)}); if(current&¤t.length){ return ai.get.equipValue(event.card)>ai.get.equipValue(current[0]); } return true; }).set('card',event.card); } else{ event.finish(); } "step 3" if(result.bool){ trigger.target.equip(event.card); } }, ai:{ threaten:1.1 } }, liangzhu:{ audio:2, trigger:{global:'recoverAfter'}, check:function(event,player){ return ai.get.attitude(player,event.player)>=0; }, filter:function(event,player){ return event.player!=player&&_status.currentPhase==event.player; }, content:function(){ game.asyncDraw([trigger.player,player]); }, ai:{ expose:0.2 } }, mingshi:{ audio:2, trigger:{player:'damageBegin'}, direct:true, filter:function(event,player){ return event.source&&event.source.hp>player.hp; }, content:function(){ "step 0" var next=player.chooseToDiscard('是否发动【名士】?',{color:'black'}); next.set('ai',function(card){ return 9-ai.get.value(card); }); next.set('logSkill','mingshi'); "step 1" if(result.bool){ trigger.num--; } }, ai:{ threaten:0.8 } }, lirang:{ audio:2, trigger:{player:'discardAfter'}, filter:function(event,player){ for(var i=0;i0; }, content:function(){ trigger.target.discardPlayerCard(player,true); } }, shenxian:{ audio:2, trigger:{global:'discardAfter'}, filter:function(event,player){ if(event.player==player||_status.currentPhase==player) return false; if(player.skills.contains('shenxian2')) return false; for(var i=0;iplayer.storage.qiangwu) return Infinity; } }, group:['qiangwu2','qiangwu3'] }, qiangwu2:{ trigger:{player:'phaseUseBegin'}, forced:true, popup:false, silent:true, content:function(){ delete player.storage.qiangwu; } }, qiangwu3:{ trigger:{player:'useCard'}, filter:function(event,player){ if(_status.currentPhase==player&&event.card.name=='sha'&& event.card.number>player.storage.qiangwu) return true; return false; }, forced:true, popup:false, content:function(){ if(player.stat[player.stat.length-1].card.sha>0){ player.stat[player.stat.length-1].card.sha--; } }, }, zhendu:{ audio:2, trigger:{global:'phaseUseBegin'}, filter:function(event,player){ return event.player!=player&&player.num('h')>0; }, direct:true, content:function(){ "step 0" var nono=(Math.abs(ai.get.attitude(player,trigger.player))<3); if(ai.get.damageEffect(trigger.player,player,player)<=0){ nono=true } else if(trigger.player.hp>2){ nono=true; } else if(trigger.player.hp>1&&player.num('h')<3){ nono=true; } else if(trigger.player.canUse('sha',player)&&!player.num('h','shan')&&trigger.player.num('h')>=3){ nono=true; } var next=player.chooseToDiscard('是否对'+get.translation(trigger.player)+'发动【鸩毒】?'); next.set('ai',function(card){ if(_status.event.nono) return -1; return 7-ai.get.useful(card); }); next.set('logSkill',['zhendu',trigger.player]); next.set('nono',nono); "step 1" if(result.bool){ trigger.player.damage(); } else{ event.finish(); } "step 2" trigger.player.useCard({name:'jiu'},trigger.player); }, ai:{ threaten:2, expose:0.3 } }, qiluan:{ trigger:{source:'dieAfter'}, forced:true, priority:-10, silent:true, popup:false, filter:function(event){ return _status.currentPhase!=event.player; }, content:function(){ if(!player.storage.qiluan){ player.storage.qiluan=1; } else{ player.storage.qiluan++; } }, group:['qiluan2','qiluan3'] }, qiluan2:{ audio:2, trigger:{global:'phaseAfter'}, forced:true, filter:function(event,player){ return player.storage.qiluan?true:false; }, content:function(){ player.draw(3*player.storage.qiluan); player.storage.qiluan=0; } }, qiluan3:{ trigger:{source:'dieAfter'}, forced:true, priority:-10, filter:function(event){ return _status.currentPhase==event.player; }, content:function(){ var num=3; if(player.storage.qiluan){ num+=3*player.storage.qiluan; player.storage.qiluan=0; } player.draw(num); }, }, shangyi:{ audio:2, enable:'phaseUse', usable:1, filterTarget:function(card,player,target){ return player!=target&&target.num('h'); }, content:function(){ "step 0" player.chooseCardButton(target,target.get('h')).set('filterButton',function(button){ return get.color(button.link)=='black'; }); "step 1" if(result.bool){ target.discard(result.links[0]); } }, ai:{ order:11, result:{ target:function(player,target){ return -target.num('h'); } }, threaten:1.1 }, }, shengxi:{ trigger:{player:'phaseDiscardBegin'}, frequent:true, filter:function(event,player){ return !player.getStat('damage'); }, content:function(){ player.draw(2); }, audio:2, audioname:['liushan'] }, shoucheng:{ trigger:{global:'loseEnd'}, audio:2, check:function(event,player){ return ai.get.attitude(player,event.player)>0; }, filter:function(event,player){ if(event.player.num('h')) return false; if(_status.currentPhase==event.player) return false; for(var i=0;i0){ num+=2; } if(num>1) return true; } return false; }, content:function(){ "step 0" var targets=game.players.slice(0); targets.remove(player); targets.sort(lib.sort.seat); event.targets=targets; event.num=0; trigger.untrigger(); trigger.finish(); "step 1" if(num
【勇决】
每当其他角色于回合内使用一张杀,若目标不是你,你可以获得之(每回合最多能以此法获得一张杀)
'); "step 1" player.turnOver(); player.removeSkill('guixiu'); }, intro:{ content:'limited' }, ai:{ order:4, result:{ target:function(player,target){ if(target.isMin()) return 0; if(player.hp>1){ if(game.phaseNumber2) return 0; if(ai.get.attitude(player,target)<5) return 0; } if(ai.get.attitude(player,target)<5) return 0; if(target.hp==1&&target.maxHp>2) return 0.2; if(target==game.me) return 1.2; return 1; } }, expose:0.5, threaten:1.5 } }, fenming:{ audio:2, trigger:{player:'phaseEnd'}, check:function(event,player){ var num=0; for(var i=0;i0; }, filter:function(event,player){ return event.player.isAlive()&&event.player!=player&&player.num('h',{type:'basic'}); }, direct:true, content:function(){ "step 0" var nono=(Math.abs(ai.get.attitude(player,trigger.player))<3); if(ai.get.damageEffect(trigger.player,player,player)<=0){ nono=true; } var next=player.chooseToDiscard('是否对'+get.translation(trigger.player)+'发动【骁果】?',{type:'basic'}); next.set('ai',function(card){ if(_status.event.nono) return 0; return 8-ai.get.useful(card); }); next.set('logSkill',['xiaoguo',trigger.player]); next.set('nono',nono); "step 1" if(result.bool){ var nono=(ai.get.damageEffect(trigger.player,player,trigger.player)>=0); trigger.player.chooseToDiscard('he',{type:'equip'}).set('ai',function(card){ if(_status.event.nono){ return 0; } if(_status.event.player.hp==1) return 10-ai.get.value(card); return 9-ai.get.value(card); }).set('nono',nono); } else{ event.finish(); } "step 2" if(result.bool){ player.draw(); } else{ trigger.player.damage(); } }, ai:{ expose:0.3, threaten:1.3 } }, suishi:{ trigger:{global:'dying'}, forced:true, popup:false, priority:6, check:function(){ return false; }, filter:function(event,player){ return event.player!=player&&event.parent.name=='damage'&&event.parent.source&&event.parent.source!=event.player; }, content:function(){ 'step 0' var str; if(trigger.parent.source==player){ str='随势:是否摸一张牌?'; } else{ str='随势:是否令'+get.translation(player)+'摸一张牌?' } trigger.parent.source.chooseBool(str).set('ai',function(){ return ai.get.attitude(_status.event.player,_status.event.target)>0; }).set('target',player); 'step 1' if(result.bool){ player.logSkill('suishi'); trigger.parent.source.line(player,'green'); player.draw(); } }, group:'suishi2' }, suishi2:{ trigger:{global:'dieAfter'}, forced:true, popup:false, check:function(){ return false; }, filter:function(event,player){ return event.player!=player&&event.source&&event.source!=player&&event.source!=event.player; }, content:function(){ 'step 0' var str; if(trigger.source==player){ str='随势:是否流失一点体力?'; } else{ str='随势:是否令'+get.translation(player)+'流失一点体力?' } trigger.source.chooseBool(str).set('ai',function(){ return ai.get.attitude(_status.event.player,_status.event.target)<0; }).set('target',player); 'step 1' if(result.bool){ player.logSkill('suishi'); trigger.source.line(player,'green'); player.loseHp(); } }, }, sijian:{ trigger:{player:'loseEnd'}, direct:true, audio:2, filter:function(event,player){ if(player.num('h')) return false; for(var i=0;i0; }).set('ai',function(target){ return -ai.get.attitude(_status.event.player,target); }); "step 1" if(result.bool){ player.logSkill('sijian',result.targets); event.target=result.targets[0]; player.discardPlayerCard(event.target,true); } else{ event.finish(); } }, ai:{ expose:0.2, } }, quji:{ enable:'phaseUse', usable:1, position:'he', filterCard:true, selectCard:function(){ var player=_status.event.player; var num=0; for(var i=0;i1) return false; for(var i=0;i-1; if(num==2) return att>0; return att>1; } } return false; }, content:function(){ "step 0" player.draw(); if(player.hasSkill('junbing')){ event.finish(); } else{ for(var i=0;i=3&&num>=3) return 0; var mode=get.mode(); if(mode=='identity'||mode=='guozhan'){ for(var i=0;i=2||target.hp>=target.maxHp-1) return 'draw_card'; if(target.hp==2&&target.num('h')==0) return 'draw_card'; return 'recover_hp'; }); } } else{ event.finish(); } "step 2" if(result.control=='draw_card'){ target.draw(2); } else{ target.recover(); } }, ai:{ threaten:0.8, expose:0.1 } }, shenzhi:{ audio:2, trigger:{player:'phaseBegin'}, check:function(event,player){ if(player.hp>2) return false; var cards=player.get('h'); if(cards.length3) return false; for(var i=0;i7||get.tag(cards[i],'recover')>=1) return false; } return true; }, filter:function(event,player){ return player.num('h')>0; }, content:function(){ "step 0" var cards=player.get('h'); event.bool=cards.length>=player.hp; player.discard(cards); "step 1" if(event.bool){ player.recover(); } } }, wuji:{ skillAnimation:true, audio:2, trigger:{player:'phaseEnd'}, forced:true, filter:function(event,player){ return player.getStat('damage')>=3&&player.skills.contains('huxiao'); }, content:function(){ "step 0" player.removeSkill('huxiao'); player.gainMaxHp(); "step 1" player.recover(); } }, xueji:{ audio:2, enable:'phaseUse', usable:1, filter:function(event,player){ return player.hp0; }, filterTarget:function(card,player,target){ return player!=target&&get.distance(player,target,'attack')<=1; }, selectTarget:function(){ return [1,_status.event.player.maxHp-_status.event.player.hp]; }, position:'he', filterCard:function(card){ return get.color(card)=='red'; }, check:function(card){ return 8-ai.get.useful(card); }, content:function(){ "step 0" target.damage(); "step 1" target.draw(); }, ai:{ order:7, result:{ target:function(player,target){ return ai.get.damageEffect(target,player); } }, threaten:function(player,target){ if(target.hp==1) return 2; if(target.hp==2) return 1.5; return 0.5; }, maixie:true, effect:{ target:function(card,player,target){ if(get.tag(card,'damage')){ if(target.hp==target.maxHp&&target.hasFriend()) return [0,1]; } if(get.tag(card,'recover')&&player.hp>=player.maxHp-1) return [0,0]; } } } }, huxiao:{ audio:2, trigger:{player:'shaMiss'}, forced:true, content:function(){ player.storage.huxiao++; }, check:function(event,player){ return player.num('h','sha')>0; }, mod:{ cardUsable:function(card,player,num){ if(card.name=='sha') return num+player.storage.huxiao; } }, group:'huxiao2' }, huxiao2:{ trigger:{player:'phaseUseBegin'}, forced:true, popup:false, silent:true, content:function(){ player.storage.huxiao=0; }, }, aocai:{ audio:2, trigger:{player:'chooseToRespondBegin'}, frequent:true, filter:function(event,player){ if(event.responded) return false; return _status.currentPhase!==player; }, content:function(){ "step 0" var cards=[]; if(ui.cardPile.childNodes.length<2){ var discardcards=get.cards(2); for(var i=0;i1){ num++; } } } check=(num>=2); } player.chooseTarget('是否发动【弘援】?',[1,2],function(card,player,target){ return player!=target; }, function(target){ if(!_status.event.check) return 0; return ai.get.attitude(_status.event.player,target); }).set('check',check); "step 1" if(result.bool){ player.logSkill('hongyuan',result.targets); // for(var i=0;i0; }, check:function(event,player){ if(ai.get.attitude(player,event.player)<=0) return false; var cards=player.get('he'); var judge=event.judge(event.player.judging[0]); for(var i=0;ijudge) return true; } return false; }, content:function(){ "step 0" var target=trigger.player; player.line(target,'green'); var judge=trigger.judge(target.judging[0]); var attitude=ai.get.attitude(target,player); target.choosePlayerCard('请选择代替判定的牌','he','visible',true,player).set('ai',function(button){ var card=button.link; var judge=_status.event.judge; var attitude=_status.event.attitude; var result=trigger.judge(card)-judge; var player=_status.event.player; if(result>0){ return 20+result; } if(result==0){ if(_status.currentPhase==player) return 0; if(attitude>=0){ return get.color(card)=='red'?7:0-ai.get.value(card); } else{ return get.color(card)=='black'?10:0+ai.get.value(card); } } if(attitude>=0){ return get.color(card)=='red'?0:-10+result; } else{ return get.color(card)=='black'?0:-10+result; } }).set('judge',judge).set('attitude',attitude); "step 1" if(result.bool){ event.card=result.links[0]; player.respond(event.card,'highlight'); } else{ event.finish(); } "step 2" if(result.bool){ if(trigger.player.judging[0].clone){ trigger.player.judging[0].clone.classList.remove('thrownhighlight'); game.broadcast(function(card){ if(card.clone){ card.clone.classList.remove('thrownhighlight'); } },trigger.player.judging[0]); game.addVideo('deletenode',player,get.cardsInfo([trigger.player.judging[0].clone])); } ui.discardPile.appendChild(trigger.player.judging[0]); trigger.player.judging[0]=event.card; if(!get.owner(event.card,'judge')){ trigger.position.appendChild(event.card); } game.log(trigger.player,'的判定牌改为',event.card); game.delay(2); } }, ai:{ tag:{ rejudge:1, } } }, mingzhe:{ audio:2, trigger:{player:['useCardAfter','respondAfter','discardAfter']}, frequent:true, filter:function(event,player){ if(player==_status.currentPhase) return false; if(event.cards){ for(var i=0;i1){ event.finish(); } "step 1" player.addSkill('duwu2'); player.loseHp(); }, ai:{ order:2, result:{ target:function(player,target){ return ai.get.damageEffect(target,player); } }, threaten:1.5, expose:0.3 } }, duwu2:{ trigger:{player:'phaseBegin'}, forced:true, popup:false, audio:false, content:function(){ player.removeSkill('duwu2'); } }, yicong:{ mod:{ globalFrom:function(from,to,current){ if(from.hp>2) return current-1; }, globalTo:function(from,to,current){ if(to.hp<=2) return current+1; }, }, ai:{ threaten:0.8 } }, yongsi:{ group:['yongsi1','yongsi2'], ai:{ threaten:2.2 } }, yongsi1:{ audio:2, trigger:{player:'phaseDrawBegin'}, forced:true, content:function(){ var list=['wei','shu','wu','qun'],num=0; for(var i=0;i0; }, content:function(){ "step 0" for(var i=0;itarget.hp){ target.chooseToDiscard(2,'he',true); } else{ target.draw(2); } target.storage.songci=true; target.markSkill('songci'); }, intro:{ content:'已发动' }, ai:{ order:7, threaten:1.5, expose:0.2, result:{ target:function(player,target){ if(target.num('h')target.hp){ if(target.num('h')<=3) return -1; } } } } }, baobian:{ trigger:{player:['phaseBefore','changeHp']}, forced:true, popup:false, unique:true, content:function(){ if(!player.storage.baobian){ player.storage.baobian=[]; if(player.skills.contains('tiaoxin')){ player.storage.baobian.push('tiaoxin'); } if(player.skills.contains('paoxiao')){ player.storage.baobian.push('paoxiao'); } if(player.skills.contains('shensu')){ player.storage.baobian.push('shensu'); } } if(player.storage.baobian.contains('tiaoxin')==false){ player.removeSkill('tiaoxin'); } if(player.storage.baobian.contains('paoxiao')==false){ player.removeSkill('paoxiao'); } if(player.storage.baobian.contains('shensu')==false){ player.removeSkill('shensu'); } if(player.hp<=3){ player.addSkill('tiaoxin'); } if(player.hp<=2){ player.addSkill('paoxiao'); } if(player.hp==1){ player.addSkill('shensu'); } }, ai:{ maixie:true, effect:{ target:function(card,player,target){ if(get.tag(card,'damage')){ if(!target.hasFriend()) return; if(target.hp>=4) return [0,1]; } if(get.tag(card,'recover')&&player.hp>=player.maxHp-1) return [0,0]; } } } }, chongzhen:{ group:['chongzhen1','chongzhen2'], ai:{ mingzhi:false, effect:{ target:function(card,player,target,current){ if(get.tag(card,'respondShan')||get.tag(card,'respondSha')){ if(ai.get.attitude(target,player)<=0){ if(current>0) return; if(target.num('h')==0) return 1.6; if(target.num('h')==1) return 1.2; if(target.num('h')==2) return [0.8,0.2,0,-0.2]; return [0.4,0.7,0,-0.7]; } } }, }, } }, chongzhen1:{ audio:2, trigger:{player:'shaBefore'}, filter:function(event,player){ if(event.skill!='longdan_sha') return false; return event.target.num('h')>0; }, content:function(){ player.gain(trigger.target.get('h').randomGet()); trigger.target.$give(1,player); game.delay(); } }, chongzhen2:{ audio:2, trigger:{player:'respond'}, filter:function(event,player){ if(event.skill!='longdan_shan'&&event.skill!='longdan_sha') return false; return event.source&&event.source.num('h')>0; }, content:function(){ player.gain(trigger.source.get('h').randomGet()); trigger.source.$give(1,player); game.delay(); } }, lihun:{ audio:2, enable:'phaseUse', usable:1, filterTarget:function(card,player,target){ return player!=target&&target.sex=='male'; }, filterCard:true, position:'he', content:function(){ player.gain(target.get('h')); target.$give(target.num('h'),player); player.turnOver(); player.addSkill('lihun2'); player.storage.lihun=target; }, check:function(card){return 8-ai.get.value(card)}, ai:{ order:10, result:{ player:function(player){ if(player.classList.contains('turnedover')) return 10; return 0; }, target:function(player,target){ if(target.num('h')>target.hp) return target.hp-target.num('h'); return 0; } }, threaten:1.5, effect:{ target:function(card){ if(card.name=='guiyoujie') return [0,2]; } } }, }, lihun2:{ trigger:{player:'phaseUseEnd'}, forced:true, popup:false, audio:false, content:function(){ "step 0" player.removeSkill('lihun2'); if(player.storage.lihun.classList.contains('dead')){ event.finish(); } else{ player.chooseCard('he',true,player.storage.lihun.hp); } "step 1" player.storage.lihun.gain(result.cards); player.$give(result.cards.length,player.storage.lihun); } }, yuanhu:{ audio:3, trigger:{player:'phaseEnd'}, direct:true, filter:function(event,player){ return player.num('he',{type:'equip'})>0; }, content:function(){ "step 0" player.chooseCardTarget({ filterCard:function(card){ return get.type(card)=='equip'; }, position:'he', filterTarget:function(card,player,target){ return !target.get('e',get.subtype(card)[5]); }, ai1:function(card){ return 6-ai.get.value(card); }, ai2:function(target){ return ai.get.attitude(_status.event.player,target)-3; }, prompt:'是否发动援护?' }); "step 1" if(result.bool){ player.logSkill('yuanhu',result.targets); var thisTarget=result.targets[0]; var thisCard=result.cards[0]; thisTarget.equip(thisCard); event.target=thisTarget; if(thisTarget!=player){ player.$give(thisCard,thisTarget); } switch(get.subtype(thisCard)){ case 'equip1':{ for(var i=0;i0&&target.num('j')){ return attitude*1.5; } return -attitude; }).set('thisTarget',thisTarget); return; } case 'equip2':{ thisTarget.draw();event.finish(); return; } default:{ thisTarget.recover(); event.finish(); return; } } } else{ event.finish(); } "step 2" if(result.targets.length){ player.discardPlayerCard(true,result.targets[0],'hej'); } }, ai:{ threaten:1.2 } }, tianming:{ audio:2, trigger:{target:'shaBegin'}, check:function(event,player){ var cards=player.get('h'); if(cards.length<=2){ for(var i=0;iplayers[1].hp&&players[0]!=player){ players[0].chooseBool('是否发动天命?'); event.player=players[0]; } else{ event.finish(); } "step 1" if(result.bool){ player.chooseToDiscard(2,true,'he'); player.draw(2); } }, ai:{ effect:{ target:function(card,player,target,current){ if(card.name=='sha') return [1,0.5]; } } } }, mizhao:{ enable:'phaseUse', usable:1, audio:2, filter:function(event,player){ return player.num('h')>0; }, filterCard:true, selectCard:-1, filterTarget:function(card,player,target){ return player!=target; }, discard:false, prepare:function(cards,player,targets){ player.$give(cards.length,targets[0]); player.line(targets[0]); }, ai:{ order:1, result:{ player:0, target:function(player,target){ if(player.num('h')>1){ return 1; } for(var i=0;i0){ return eff-10; } return eff; }).set('target1',event.target1); "step 2" if(result.targets.length){ event.target2=result.targets[0]; event.target1.line(event.target2); event.target1.chooseToCompare(event.target2); } else{ event.finish(); } "step 3" if(result.bool){ event.target1.useCard({name:'sha'},event.target2); } else{ event.target2.useCard({name:'sha'},event.target1); } } }, gongao:{ audio:2, trigger:{global:'dieAfter'}, forced:true, unique:true, content:function(){ player.gainMaxHp(); player.recover(); }, ai:{ threaten:1.5 } }, juyi:{ skillAnimation:true, audio:true, trigger:{player:'phaseBegin'}, filter:function(event,player){ return player.maxHp>game.players.length&&player.hp0){ player.draw(num); } player.addSkill('benghuai'); player.addSkill('weizhong'); player.storage.juyi=true; } }, weizhong:{ audio:true, trigger:{player:['gainMaxHpEnd','loseMaxHpEnd']}, forced:true, content:function(){ player.draw(); } }, chixin:{ group:['chixin1','chixin2'], mod:{ cardUsable:function(card,player,num){ if(card.name=='sha'){ return num+20; } }, }, trigger:{player:'shaBefore'}, forced:true, popup:false, check:function(event,player){ return player.num('h','sha')>0; }, filter:function(event,player){ return _status.currentPhase==player; }, content:function(){ var target=trigger.target; if(target.skills.contains('chixin3')){ target.storage.chixin++; } else{ target.storage.chixin=1; target.addTempSkill('chixin3','phaseUseEnd'); } } }, chixin1:{ enable:['chooseToRespond','chooseToUse'], filterCard:{suit:'diamond'}, position:'he', viewAs:{name:'sha'}, prompt:'将一张♦牌当杀使用或打出', check:function(card){return 5-ai.get.value(card)}, ai:{ respondSha:true, } }, chixin2:{ enable:['chooseToRespond'], filterCard:{suit:'diamond'}, viewAs:{name:'shan'}, position:'he', prompt:'将一张♦牌当闪打出', check:function(card){return 5-ai.get.value(card)}, ai:{ respondShan:true, effect:{ target:function(card,player,target,current){ if(get.tag(card,'respondShan')&¤t<0) return 0.8 } }, } }, chixin3:{ mod:{ targetEnabled:function(card,player,target){ if(card.name!='sha') return; if(player==_status.currentPhase&&player.get('s').contains('chixin')){ var num=game.checkMod(card,player,1,'cardUsable',player.get('s'))-20; for(var i=0;i1; } } } }, suiren:{ trigger:{player:'phaseBegin'}, skillAnimation:true, check:function(event,player){ return player.hp==1||(player.hp==2&&player.num('h')<=1); }, filter:function(event,player){ return !player.storage.suiren; }, intro:{ content:'limited', }, mark:true, direct:true, unique:true, content:function(){ "step 0" var check=(player.hp==1||(player.hp==2&&player.num('h')<=1)); player.chooseTarget('是否发动【随仁】?').set('ai',function(target){ if(!_status.event.check) return 0; return ai.get.attitude(_status.event.player,target); }).set('check',check); "step 1" if(result.bool){ player.storage.suiren=true; player.unmarkSkill('suiren'); player.logSkill('suiren',result.targets); player.removeSkill('yicong'); player.gainMaxHp(); player.recover(); result.targets[0].draw(3); } } }, kuangfu:{ trigger:{source:'damageEnd'}, direct:true, audio:2, filter:function(event){ return event.card&&event.card.name=='sha'&&event.player.num('e'); }, content:function(){ "step 0" var neg=ai.get.attitude(player,trigger.player)<=0; player.choosePlayerCard('e',trigger.player).set('ai',function(button){ if(_status.event.neg){ return ai.get.buttonValue(button); } return 0; }).set('neg',neg); "step 1" if(result.bool){ player.logSkill('kuangfu'); trigger.player.$give(result.links,player); game.delay(2); player.equip(result.links[0]); } } }, }, translate:{ chenlin:'陈琳', yuanshu:'袁术', re_yuanshu:'新袁术', gongsunzan:'公孙瓒', sp_diaochan:'sp貂蝉', yangxiu:'杨修', sp_zhaoyun:'sp赵云', jsp_zhaoyun:'界sp赵云', caohong:'曹洪', liuxie:'刘协', xiahouba:'夏侯霸', zhugejin:'诸葛谨', zhugeke:'诸葛恪', guanyinping:'关银屏', ganfuren:'甘夫人', sunhao:'孙皓', chengyu:'程昱', simalang:'司马朗', zhangliang:'张梁', tianfeng:'田丰', sp_pangtong:'sp庞统', sp_jiaxu:'sp贾诩', maliang:'马良', sp_caoren:'sp曹仁', yuejin:'乐进', mifuren:'糜夫人', sp_dongzhuo:'sp董卓', chendong:'陈武董袭', jiangfei:'蒋琬费祎', jiangqing:'蒋钦', hetaihou:'何太后', dingfeng:'丁奉', zhangxingcai:'张星彩', caoang:'曹昂', kongrong:'孔融', fuwan:'伏完', sp_pangde:'sp庞德', sp_sunshangxiang:'孙尚香', zhugedan:'诸葛诞', sp_machao:'sp马超', sp_jiangwei:'sp姜维', zhangbao:'张宝', yangxiou:'杨修', shixie:'士燮', mayunlu:'马云騄', zhanglu:'张鲁', wutugu:'兀突骨', mateng:'马腾', sp_caiwenji:'sp蔡文姬', zhugeguo:'诸葛果', liuzan:'留赞', lingcao:'凌操', sunru:'孙茹', lingju:'灵雎', lifeng:'李丰', jsp_guanyu:'sp关羽', zhuling:'朱灵', sunluyu:'孙鲁育', hanba:'旱魃', panfeng:'潘凤', zumao:'祖茂', daxiaoqiao:'大小乔', sp_daqiao:'sp大乔', sp_ganning:'sp甘宁', sp_zhangfei:'sp张飞', sp_xiahoudun:'sp夏侯惇', cuiyan:'崔琰', wenpin:'文聘', jsp_huangyueying:'sp黄月英', sp_lvmeng:'sp吕蒙', wangji:'王基', guansuo:'关索', tadun:'蹋顿', yanbaihu:'严白虎', wanglang:'王朗', weidi:'伪帝', weidi_info:'锁定技,你视为拥有当前主公的主公技', juesi:'决死', juesi_info:'出牌阶段,你可以弃置一张杀并选择你攻击范围内的一名有牌的其他角色,该角色弃置一张牌,然后若弃置的牌不是杀且你的体力值不大于该角色,你视为对其使用决斗', zhenlue:'缜略', zhenlue_info:'锁定技,你使用的非延时类锦囊牌不能被无懈可击响应;你不能成为其他角色的延时类锦囊的目标', jianshu:'间书', jianshu_info:'限定技,出牌阶段,你可以将一张黑色手牌交给一名其他角色,并选择一名攻击范围内含有其的另一名其他角色,然后令这两名角色拼点,赢的角色弃置两张牌,没赢的角色失去一点体力', yongdi:'拥嫡', yongdi_info:'限定技,当你受到伤害后,你可令一名其他男性角色增加一点体力上限,然后若该角色的武将牌上有主公技且其不为主公,其获得此主公技', gushe:'鼓舌', gushe_bg:'舌', gushe_info:'出牌阶段限一次,你可以用一张手牌与至多三名角色同时拼点,然后依次结算拼点结果,若你赢,对方选择一项:1.弃置一张牌;2.令你摸一张牌。若你没赢,你获得一个“饶舌”标记(你有7个饶舌标记时,你死亡)', jici:'激词', jici_info:'当你发动“鼓舌”拼点的牌亮出后,若点数小于X,你可令点数+X;若点数等于X,你可令你本回合发动“鼓舌”的次数上限+1(X为你“饶舌”标记的数量)', shefu:'设伏', shefu_info:'结束阶段开始时,你可以将一张手牌移出游戏,称为"伏兵"。然后为"伏兵"记录一个基本牌或锦囊牌名称(须与其他"伏兵"记录的名称均不同)。你的回合外,当有其他角色使用与你记录的"伏兵"牌名相同的牌时,你可以令此牌无效,然后将该"伏兵"置入弃牌堆', benyu:'贲育', benyu2:'贲育', benyu_info:'每当你受到伤害后,若你的手牌数不大于伤害来源手牌数,你可以将手牌摸至与伤害来源手牌数相同(最多摸至5张);否则你可以弃置大于伤害来源手牌数的手牌,然后对其造成1点伤害', zhidao:'雉盗', zhidao_info:'锁定技,当你于你的回合内第一次对区域里有牌的其他角色造成伤害后,你获得其手牌、装备区和判定区里的各一张牌,然后直到回合结束,其他角色不能被选择为你使用牌的目标', jili:'寄篱', jili_info:'锁定技,当一名其他角色成为红色基本牌或红色非延时类锦囊牌的目标时,若其与你的距离为1且你既不是此牌的使用者也不是目标,你也成为此牌的目标', luanzhan:'乱战', luanzhan_info:'你使用【杀】或黑色非延时类锦囊牌可以额外选择X名角色为目标;当你使用【杀】或黑色非延时类锦囊牌指定目标后,若此牌的目标角色数小于X,则X减至0。(X为你于本局游戏内造成过伤害的次数)', zhengnan:'征南', zhengnan_info:'当其他角色死亡后,你可以摸三张牌。若如此做,你获得下列技能中的任意一个:“武圣”、 “当先”和“制蛮”', xiefang:'撷芳', xiefang_info:'锁定技,你计算与其他角色的距离-X(X为女性角色数)', qizhi:'奇制', qizhi_info:'当你于回合内使用基本牌或锦囊牌指定目标后,你可以弃置不是此牌目标的一名角色的一张牌。若如此做,其摸一张牌', jinqu:'进趋', jinqu_info:'结束阶段开始时,你可以摸两张牌,若如此做,你将手牌弃置至X张(X为你于此回合发动过“奇制”的次数)', tanhu:'探虎', tanhu2:'探虎', tanhu3:'探虎', tanhu_info:'出牌阶段限一次,你可以与一名其他角色拼点。若你赢,你获得以下技能直到回合结束:你与该角色的距离为1,你对该角色使用非延时类锦囊时可以摸一张牌', mouduan:'谋断', mouduan_info:'通常状态下,你拥有标记“武”并拥有技能“激昂”和“谦逊”。当你的手牌数为2张或以下时,你须将你的标记翻面为“文”,将该两项技能转化为“英姿”和“克己”。任一角色的回合开始前,你可弃一张牌将标记翻回', jiqiao:'机巧', jiqiao_info:'出牌阶段开始时,你可以弃置任意张装备牌,然后亮出牌堆顶三倍数量的牌,你获得其中的锦囊牌,将其余的牌置入弃牌堆', linglong:'玲珑', linglong_info:'锁定技,若你的装备区没有防具牌,视为你装备着【八卦阵】;若你的装备区没有坐骑牌,你的手牌上限+1;若你的装备区没有宝物牌,你使用锦囊牌无距离限制', fenyong:'愤勇', fenyong2:'愤勇', fenyong2_bg:'勇', fenyong_info:'每当你受到一次伤害后,你可以获得一枚愤勇标记;当你有愤勇标记时,防止你受到的所有伤害', xuehen:'雪恨', xuehen_info:'每个角色的回合结束阶段开始时,若你有愤勇标记,你须弃置之,然后选择一项:1.弃置当前回合角色X张牌(X为你已损失的体力值);2.视为对一名任意角色使用一张【杀】', zhenwei:'镇卫', zhenwei2:'镇卫', zhenwei_info:'当一名其他角色成为【杀】或黑色锦囊牌的目标时(使用者不是你),若该角色的体力值小于你且此牌的目标角色数为1,你可以弃置一张牌。若如此做,你选择一项:1、摸一张牌,然后将此【杀】或黑色锦囊牌转移给你;2、令此【杀】或黑色锦囊牌无效,然后将此【杀】或黑色锦囊牌置于使用者的武将牌旁,若如此做,当前回合结束后,使用者获得使用者武将牌旁的这些牌', jie:'嫉恶', jie_info:'锁定技,你使用的红色【杀】造成的伤害+1', dahe:'大喝', dahe2:'大喝', dahe2_bg:'喝', dahe_info:'出牌阶段,你可以与一名其他角色拼点。若你赢,该角色的非红心【闪】无效直到回合结束,你可将该角色拼点的牌交给场上一名体力不多于你的角色。若你没赢,你须展示手牌并选择一张弃置。每阶段限一次', yinling:'银铃', yinling_bg:'锦', yinling_info:'出牌阶段,你可以弃置一张黑色牌并指定一名其他角色。若如此做,你获得其一张牌并置于你的武将牌上,称为“锦”(数量最多为四)', junwei:'军威', junwei2:'军威', junwei_info:'回合结束阶段开始时,你可以将三张“锦”置入弃牌堆。若如此做,你须指定一名角色并令其选择一项:1.亮出一张【闪】,然后由你交给任意一名角色。2.该角色失去1点体力,然后由你选择将其装备区的一张牌移出游戏。在该角色的回合结束后,将以此法移出游戏的装备牌移回原处', yanxiao:'言笑', yanxiao2:'言笑', yanxiao_info:'出牌阶段,你可以将一张♦牌置于一名角色的武将牌上,武将牌上有“言笑”牌的角色下个判定阶段开始时,获得言笑牌及其判定区里的所有牌', anxian:'安娴', anxian_info:'每当你使用【杀】对目标角色造成伤害时,你可以防止此次伤害,令其弃置一张手牌,然后你摸一张牌;当你成为【杀】的目标时,你可以弃置一张手牌使之无效,然后该【杀】的使用者摸一张牌', xingwu:'星舞', xingwu_info:'弃牌阶段开始时,你可以将一张与你本回合使用的牌颜色均不同的手牌置于武将牌上:若你有至少三张“星舞牌”,你将之置入弃牌堆并选择一名男性角色,该角色受到2点伤害并弃置其装备区的所有牌', luoyan:'落雁', luoyan_info:'锁定技。若你的武将牌上有“星舞牌”,你拥有“天香”和“流离”', yinbing:'引兵', yinbing_info:'结束阶段开始时,你可以将至少一张非基本牌置于武将牌上。每当你受到【杀】或【决斗】的伤害后,你将一张“引兵牌”置入弃牌堆。', juedi:'绝地', juedi_info:'准备阶段开始时,若你有“引兵牌”,你可以选择一项:1.将这些牌置入弃牌堆并摸等量的牌;2.令一名体力值不大于你的其他角色回复1点体力并获得这些牌', kuangfu:'狂斧', kuangfu_info:'每当你使用杀造成伤害,可以将对方的一张装备牌移到你的装备区', xintan:'心惔', xintan_info:'出牌阶段限一次,你可以将两张“焚”置入弃牌堆并选择一名角色,该角色失去一点体', fentian:'焚天', fentian_info:'锁定技,结束阶段开始时,若你的手牌数少于体力值,你须选择一名攻击范围内的角色,将其一张牌置于你的武将牌上,称为“焚”。锁定技,你的攻击范围+X(X为“焚”的数量)', zhiri:'炙日', zhiri_info:'觉醒技,准备阶段开始时,若“焚”数不小于3,你减1点体力上限,然后获得技能“心惔”(出牌阶段限一次,你可以将两张“焚”置入弃牌堆并选择一名角色,该角色失去一点体力)', meibu:'魅步', meibu_info:'一名其他角色的出牌阶段开始时,若你不在其攻击范围内,你可以令该角色的锦囊牌均视为【杀】,直到该角色以此法使用了一张【杀】或回合结束。若如此做,则直到回合结束,视为你在其攻击范围内', mumu:'穆穆', mumu_info:'出牌阶段限一次,你可以弃置一张【杀】或黑色锦囊牌,然后选择一项:弃置场上一张武器牌,然后摸一张牌;或将场上的一张防具牌移动到你的装备区里(可替换原防具)', zhanyi:'战意', zhanyi_info:'出牌阶段限一次,你可以弃置一张牌并失去1点体力,然后根据你弃置的牌获得以下效果直到回合结束:基本牌,你可以将一张基本牌当任意一张基本牌使用或打出;锦囊牌,摸两张牌且你使用的牌无距离限制;装备牌,你使用【杀】指定目标角色后,其弃置两张牌', nuzhan:'怒斩', nuzhan2:'怒斩', nuzhan_info:'锁定技,你每当你使用由一张锦囊牌转化而来的【杀】时,你可以额外使用一张杀;锁定技,你使用的由一张装备牌转化而来的【杀】的伤害值基数+1', danji:'单骑', danji_info:'觉醒技,准备阶段开始时,若你的手牌数大于你的体力值,你减1点体力上限,然后获得“马术”和“怒斩”', tunchu:'屯储', tunchu_info:'摸牌阶段摸牌时,你可以额外摸两张牌,若如此做,将一张手牌置于你的武将上,称为“粮”,只要你的武将牌上有“粮”,你便不能使用【杀】和【决斗】', shuliang:'输粮', shuliang_info:'每当一名角色的结束阶段开始时,若其没有手牌,你可以将一张“粮”置入弃牌堆,然后该角色摸两张牌', jieyuan:'竭缘', jieyuan_more:'竭缘', jieyuan_less:'竭缘', jieyuan_info:'当你对一名其他角色造成伤害时,若其体力值大于或等于你的体力值,你可弃置一张黑色手牌令此伤害+1;当你受到一名其他角色造成的伤害时,若其体力值大于或等于你的体力值,你可弃置一张红色手牌令此伤害-1。', fenxin:'焚心', fenxin_info:'限定技,当你杀死一名非主公角色时,在其翻开身份牌之前,你可以与该角色交换身份牌。(你的身份为主公时不能发动此技能)', shixin:'释衅', shixin_info:'锁定技,当你受到火属性伤害时,你防止此伤害', qingyi:'轻逸', qingyi1:'轻逸', qingyi2:'轻逸', qingyi_info:'你可以跳过摸牌阶段,或跳过出牌阶段并弃置一张装备牌,若如此则视为对任意一名使用一张【杀】', dujin:'独进', dujin_info:'摸牌阶段,你可以额外摸X+1张牌(X为你装备区里牌数的一半且向下取整)', yuhua:'羽化', yuhua_info:'锁定技,弃牌阶段内,你的非基本牌不计入手牌数,且你不能弃置你的非基本牌', qirang:'祈禳', qirang_info:'当有装备牌进入你的装备区时,你可以获得牌堆中的一张锦囊牌', biluan:'避乱', biluan_info:'摸牌阶段开始时,若有其他角色与你距离不大于1,则你可以放弃摸牌。若如此做,其他角色与你距离+X(X为势力数)', lixia:'礼下', lixia_info:'锁定技,其他角色结束阶段开始时,若你不在其攻击范围内,你摸一张牌或令其摸一张牌。若如此做,其他角色与你的距离-1', yishe:'义舍', yishe_bg:'米', yishe_info:'结束阶段开始时,若你的武将牌上没有牌,你可以摸两张牌。若如此做,你将两张牌置于武将牌上,称为“米”;当“米”移至其他区域后,若你的武将牌上没有“米”,你回复1点体力', bushi:'布施', midao:'米道', bushi_info:'当你受到1点伤害后,或其他角色受到你造成的1点伤害后,受到伤害的角色可以获得一张“米”', midao_info:'当一张判定牌生效前,你可以打出一张“米”代替之', fengpo:'凤魄', fengpo_info:'当你于出牌阶段内使用第一张【杀】或【决斗】指定目标后,若目标角色数为1,你可以选择一项:1.摸X张牌;2.此牌造成的伤害+X(X为其手牌中方牌的数量)', chenqing:'陈情', chenqing_info:'每轮限一次,当一名角色处于濒死状态时,你可以令另一名其他角色摸四张牌,然后弃置四张牌。若其以此法弃置的四张牌花色各不相同,则视为该角色对濒死的角色使用一张【桃】', mozhi:'默识', mozhi_info:'结束阶段开始时,你可以将一张手牌当你本回合出牌阶段使用的第一张基本或非延时类锦囊牌使用。然后,你可以将一张手牌当你本回合出牌阶段使用的第二张基本或非延时类锦囊牌使用', ranshang:'燃殇', ranshang2:'燃殇', ranshang_info:'锁定技,当你受到1点火焰伤害后,你获得1枚“燃”标记;结束阶段开始时,你失去X点体力(X为“燃”标记的数量)', hanyong:'悍勇', hanyong_info:'当你使用【南蛮入侵】或【万箭齐发】时,若你的体力值小于游戏轮数,你可以令此牌造成的伤害+1', yicong:'义从', yongsi:'庸肆', yongsi1:'庸肆', yongsi2:'庸肆', bifa:'笔伐', bifa2:'笔伐', songci:'颂词', baobian:'豹变', lihun:'离魂', chongzhen:'冲阵', chongzhen1:'冲阵', chongzhen2:'冲阵', yuanhu:'援护', tianming:'天命', mizhao:'密诏', duwu:'黩武', mingzhe:'明哲', huanshi:'缓释', hongyuan:'弘援', aocai:'傲才', aocai2:'傲才', aocai2_backup:'傲才', aocai3:'傲才', huxiao:'虎啸', xueji:'血祭', wuji:'武继', shushen:'淑慎', shenzhi:'神智', xiongyi:'雄异', junbing:'郡兵', junbing2:'郡兵', quji:'去疾', sijian:'死谏', suishi:'随势', suishi2:'随势', xiaoguo:'骁果', duanxie:'断绁', fenming:'奋命', guixiu:'闺秀', cunsi:'存嗣', yongjue:'勇决', hengzheng:'横征', shengxi:'生息', shoucheng:'守成', shangyi:'尚义', zhendu:'鸩毒', qiluan:'戚乱', qiluan2:'戚乱', qiluan3:'戚乱', shenxian:'甚贤', qiangwu:'枪舞', moukui:'谋溃', moukui2:'谋溃', lirang:'礼让', mingshi:'名士', liangzhu:'良助', kaikang:'慷忾', wangzun:'妄尊', tongji:'同疾', kuiwei:'溃围', kuiwei2:'溃围', yanzheng:'严整', zhoufu:'咒缚', zhoufu2:'咒缚', zhoufu3:'咒缚', yingbin:'影兵', fenxun:'奋迅', spmengjin:'猛进', xiemu:'协穆', naman:'纳蛮', zuixiang:'醉乡', manjuan:'漫卷', taichen:'抬榇', jilei:'鸡肋', jilei2:'鸡肋', fulu:'符箓', fuji:'助祭', fenyin:'奋音', yawang:'雅望', xunzhi:'殉志', xunzhi_info:'准备阶段开始时,若你的上家和下家与你的体力值均不相等,你可以失去1点体力。若如此做,你的手牌上限+2', yawang_info:'锁定技,摸牌阶段开始时,你放弃摸牌,改为摸x张牌,然后你于出牌阶段内至多使用x张牌(x为与你体力值相等的角色数)', fenyin_info:'你的回合内,当你使用牌时,若此牌与你于此回合内使用的上一张牌颜色不同,则你可以摸一张牌,每回合最多发动3次', fuji_info:'当一名角色造成雷电伤害时,你可以令其进行一次判定,若结果为黑色,此伤害+1;若结果为红色,该角色获得此牌。', fulu_info:'你可以将【杀】当雷【杀】使用。', jilei_info:'每当你受到一次伤害,可以令伤害来源不能使用或打出其手牌直到回合结束', danlao:'啖酪', danlao_info:'当你成为一张指定了多个目标的锦囊牌的目标时,你可以取消之,并摸一张牌。', gongao:'功獒', zhuiji:'追击', chouhai:'仇海', chouhai_info:'锁定技,当你每次受到伤害时,若你没有手牌,此伤害+1。', guiming:'归命', guiming_info:'主公技,其他吴势力角色于你的回合内视为已受伤的角色。', chixin:'赤心', chixin1:'赤心', chixin2:'赤心', chixin_info:'你可以将♦牌当【杀】或【闪】使用或打出。出牌阶段,你对你攻击范围内的每名角色均可使用一张【杀】。', suiren:'随仁', suiren_info:'限定技,准备阶段开始时,你可以失去技能“义从”,然后加1点体力上限并回复1点体力,再令一名角色摸三张牌。', canshi:'残蚀', canshi2:'残蚀', canshi_info:'摸牌阶段开始时,你可以放弃摸牌,改为摸x张牌(x为已受伤的角色数),若如此做,当你与此回合内使用基本牌或锦囊牌时,你弃置一张牌。', zhuiji_info:'锁定技,你与体力值低于你的角色距离为1。', kunfen:'困奋', kunfen_info:'锁定技,回合结束阶段开始时,你失去1点体力,然后摸两张牌', fengliang:'逢亮', fengliang_info:'觉醒技,当你进入濒死状态时,你减1点体力上限并将体力值回复至2点,然后获得技能挑衅,将困奋改为非锁定技', cihuai:'刺槐', cihuai_info:'出牌阶段开始时,若你手牌中没有杀,你可以展示你的手牌,视为对一名角色使用一张杀', gongao_info:'锁定技,每当一名角色死亡后,你增加一点体力上限,回复一点体力。', juyi:'举义', juyi_info:'觉醒技,准备阶段开始时,若你已受伤且体力上限大于存活角色数,你须将手牌摸至体力上限,然后获得技能“崩坏”和“威重”。', weizhong:'威重', weizhong_info:'锁定技,每当你的体力上限增加或减少时,你摸一张牌。', taichen_info:'出牌阶段限一次,你可以自减一点体力,视为对一名角色使用一张杀(不计入回合内出杀限制)', manjuan_info:'其他角色的卡牌因弃置而进入弃牌堆后,你可以弃置一张花色与之不同的牌,然后获得之', zuixiang_info:'限定技,回合开始阶段开始时,你可以展示牌库顶的3张牌并置于你的武将牌上,你不可使用或打出与该些牌同类的牌,所有同类牌对你无效。之后每个你的回合开始阶段,你须重复展示一次,直至该些牌中任意两张点数相同时,将你武将牌上的全部牌置于你的手上。', naman_info:'你可以获得其他角色打出的杀', xiemu_info:'每当你成为其他角色的黑色牌的目标,可以弃置一张杀并摸两张牌', spmengjin_info:'每当你使用一张杀,可以弃置目标一张牌', fenxun_info:'每当你使用杀且仅指定了一个目标,你可以弃置一张牌并额外指定一个无视距离的目标', yingbin_info:'受到“咒缚”技能影响的角色进行判定时,你可以摸两张牌。', zhoufu_info:'出牌阶段限一次,你可以指定一名其他角色并将一张手牌移出游戏(将此牌置于该角色的武将牌旁)。若如此做,该角色进行判定时,改为将此牌作为判定牌。该角色的回合结束时,若此牌仍在该角色旁,你将此牌收入手牌。', yanzheng_info:'若你的手牌数大于你的体力值,你可以将你装备区内的牌当【无懈可击】使用', kuiwei_info:'回合结束阶段开始时,你可以摸2+X张牌,然后将你的武将牌翻面。在你的下个摸牌阶段开始时,你须弃置X张牌。(X等于当时场上装备区内的武器牌的数量)', tongji_info:'锁定技。若你的手牌数大于你的体力值,则只要你在任一其他角色的攻击范围内,该角色使用【杀】时便不能指定你以外的角色为目标', wangzun_info:'其他角色的回合开始时,你可以摸一张牌,然后令该角色此回合的手牌上限-1;直到你的回合开始,你不能再次发动此技', kaikang_info:'每当你距离1以内的角色成为杀的目标后,你可以摸一张牌。若如此做,你交给其一张牌并展示之,若该牌为装备牌,该角色可以使用此牌。', liangzhu_info:'其他角色在其回合内回复体力时,你可以与其各摸一张牌 ', mingshi_info:'当你即将受到伤害时,若伤害来源的体力值大于你,你可以弃置一张黑色手牌令伤害-1 ', lirang_info:'你可以将你弃置的卡牌交给一名其他角色 ', moukui_info:'当你使用【杀】指定一名角色为目标后,你可以选择一项:摸一张牌,或弃置其一张牌。若如此做,此【杀】被【闪】抵消时,该角色弃置你的一张牌。 ', qiangwu_info:'出牌阶段,你可以进行一次判定。若如此做,则直到回合结束,你使用点数小于判定牌的 【杀】时不受距离限制,且你使用点数大于判定牌的【杀】时不计入出牌阶段的使用次数。', shenxian_info:'每名角色的回合限一次,你的回合外,每当有其他角色因弃置而失去牌时,若其中有基本牌,你可以摸一张牌。', qiluan_info:'每当你杀死一名角色后,可以在回合结束时摸三张牌。', zhendu_info:'其他角色的出牌阶段开始时,你可以弃置一张手牌,视为该角色使用一张【酒】,然后你对其造成一点伤害。', shangyi_info:'出牌阶段限一次,你可以观看一名其他角色的手牌,然后弃置其中的一张黑色牌', shoucheng_info:'每当一名其他角色在其回合外失去最后的手牌时,你可令该角色摸一张牌。', shengxi_info:'若你于出牌阶段未造成伤害,你可在弃牌阶段开始时摸两张牌。', hengzheng_info:'摸牌阶段开始时,若你的体力值为1或你没有手牌,你可以放弃摸牌,获得每名其他角色区域里的一张牌。', cunsi_info:'限定技,出牌阶段,你可以将所有手牌交给一名男性角色,令该角色获得技能【勇决】,然后翻面并失去技能【闺秀】', guixiu_info:'每当你成为杀的目标,若你的手牌数小于体力值,可以摸一张牌', fenming_info:'结束阶段开始时,若你处于连环状态,你可以弃置处于连环状态的每名角色的一张牌。', duanxie_info:'出牌阶段限一次,你可以令一名其他角色横置武将牌,若如此做,你横置武将牌。', xiaoguo_info:'其他角色的结束阶段开始时,你可以弃置一张基本牌,令该角色选择一项:1.弃置一张装备牌并令你摸一张牌;2.受到你对其造成的1点伤害。', sijian_info:'当你失去最后的手牌时,你可以弃置一名其他角色的一张牌。', suishi_info:'每当其他角色进入濒死状态时,伤害来源可以令你摸一张牌;每当其他角色死亡时,伤害来源可以令你失去1点体力', quji_info:'出牌阶段限一次,你可以弃置X张牌(X为你已损失的体力值),然后令至多X名已受伤的角色各回复1点体力。若你以此法弃置的牌中有黑色牌,你失去一点体力。', junbing_info:'一名角色的结束阶段开始时,若其手牌数少于或者等于1,该角色可以摸一张牌。若如此做,该角色须将所有手牌交给你,然后你交给其等量的牌。', xiongyi_info:'限定技,出牌阶段,你可以与你势力相同的所有角色各摸3张牌(非国战模式改为任选至多3名角色);若你指定的角色数不超过2,你回复1点体力', shenzhi_info:'回合开始阶段开始时,你可以弃置所有手牌,若你以此法弃置的牌的张数不小于X,你回复1点体力(X为你当前的体力值)。', shushen_info:'当你回复1点体力时,你可以令一名其他角色回复1点体力或摸两张牌', wuji_info:'觉醒技,回合结束阶段开始时,若你于此回合内已造成3点或更多伤害,你加1点体力上限,回复1点体力,然后失去技能“虎啸”。', xueji_info:'出牌阶段,你可弃置一张红色牌并选择你攻击范围内的至多X名其他角色,对这些角色各造成1点伤害(X为你已损失的体力值),然后这些角色各摸一张牌。每阶段限一次。', huxiao_info:'锁定技,你于出牌阶段内每使用一张【杀】被【闪】抵消,你于此阶段内可以额外使用一张【杀】。', aocai_info:'当你于回合外需要使用或打出一张基本牌时,你可以观看牌堆顶的两张牌。若你观看的牌中有此牌,你可以使用打出之。', hongyuan_info:'摸牌阶段摸牌时,你可以少摸一张牌,然后指定至多两名其他角色各摸一张牌。', huanshi_info:'一名角色的判定牌生效前,你可令其观看你的手牌。若如此做,该角色选择你的一张牌,令你打出此牌代替之。', mingzhe_info:'你的回合外,每当你因使用、打出或弃置而失去一张红色牌时,你可以摸一张牌。', duwu_info:'出牌阶段,你可以弃置X张牌对你攻击范围内的一名其他角色造成1点伤害(X为该角色的体力值)。若你以此法令该角色进入濒死状态,则濒死状态结算后你失去1点体力,且本回合不能再发动黩武。', tianming_info:'当你成为【杀】的目标时,你可以弃置两张牌(不足则全弃,无牌则不弃),然后摸两张牌;若此时全场体力值最多的角色仅有一名(且不是你),该角色也可以如此做。', mizhao_info:'出牌阶段,你可以将所有手牌(至少一张)交给一名其他角色。若如此做,你令该角色与你指定的另一名有手牌的角色拼点。视为拼点赢的角色对没赢的角色使用一张【杀】。每阶段限一次。', yuanhu_info:'回合结束阶段开始时,你可以将一张装备牌置于一名角色的装备区里,然后根据此装备牌的种类执行以下效果。武器牌:弃置距离该角色1以内的一名角色区域中的一张牌;防具牌:该角色摸一张牌;坐骑牌:该角色回复1点体力。', lihun_info:'出牌阶段,你可以弃置一张牌并将你的武将牌翻面,若如此做,你指定一名男性角色,获得其所有手牌。出牌阶段结束时,你需为该角色每一点体力分配给其一张牌。每回合限一次。', chongzhen_info:'每当你发动“龙胆”使用或打出一张手牌时,你可以立即获得对方的一张手牌。', bifa_info:'回合结束阶段开始时,你可以将一张手牌移出游戏并指定一名其他角色。该角色的回合开始时,其观看你移出游戏的牌并选择一项:交给你一张与此牌同类型的手牌并获得此牌;或将此牌置入弃牌堆,然后失去1点体力。', songci_info:'出牌阶段,你可以选择一项:令一名手牌数小于其体力值的角色摸两张牌;或令一名手牌数大于其体力值的角色弃置两张牌。此技能对每名角色只能使用一次。', yongsi_info:'锁定技,摸牌阶段,你额外摸X张牌,X为场上现存势力数。弃牌阶段,你至少须弃置等同于场上现存势力数的牌(不足则全弃)。', yicong_info:'锁定技,只要你的体力值大于2点,你计算与其他角色的距离时,始终-1;只要你的体力值为2点或更低,其他角色计算与你的距离时,始终+1。', baobian_info:'锁定技,若你的体力值为3或更少,你视为拥有技能“挑衅”;若你的体力值为2或更少;你视为拥有技能“咆哮”;若你的体力值为1,你视为拥有技能“神速”。', }, }