'use strict'; game.import('character',function(lib,game,ui,get,ai,_status){ return { name:'gwent', character:{ gw_huoge:['male','qun',3,['yinzhang']], gw_aisinie:['female','wu',3,['huihun']], gw_enxier:['male','wei',4,['gwbaquan']], gw_kaerweite:['male','shu',4,['gwjiquan']], gw_falanxisika:['female','wu',3,['shewu']], gw_haluo:['male','qun',4,['nuhou']], gw_airuiting:['male','wei',4,['kuanglie']], gw_laduoweide:['male','wei',4,['gwxiaoshou']], gw_dagong:['male','qun',4,['tianbian']], // gw_bulanwang:['male','qun',4,['bolang']], // gw_kuite:['male','qun',3,[]], // gw_fuertaisite:['male','qun',3,[]], // gw_hengsaite:['male','wei',4,['jinsheng']], gw_fulisi:['male','qun',3,['lanquan']], gw_gaier:['male','shu',3,['hunmo']], gw_jieluote:['male','qun',6,['fayin']], gw_yenaifa:['female','qun',3,['xuezhou']], gw_telisi:['female','wei',3,['huandie']], gw_xili:['female','wu',3,['fengjian']], gw_luoqi:['male','wei',4,['gwzhanjiang']], gw_yioufeisi:['male','wu',4,['gwchuanxin']], gw_aigeleisi:['female','wu',3,['gwshenyu']], gw_aokeweisite:['male','qun',4,['yunhuo']], // gw_kaxier:['male','wu',4,[]], gw_luobo:['male','qun',3,['junchi']], gw_mieren:['male','shu',3,['lingji']], gw_sanhanya:['male','shu',3,['gwjinyan']], gw_shanhu:['female','qun',3,['shuijian']], // gw_zhangyujushou:['male','wu',4,[]], gw_zhuoertan:['male','wu',3,['hupeng']], }, characterIntro:{ gw_huoge:'那个老年痴呆?不知道他是活着还是已经被制成标本了!', gw_aisinie:'树精皇后有着熔银做成的眼睛,冰冷铸钢的心脏。', gw_gaier:'画作应该要传达情绪,而不是字句。', gw_enxier:'我可没什么耐心,最好小心点,否则脑袋不保', gw_yenaifa:'魔法是艺术、混沌与科学的结合。因为魔法的确是一门技艺也是一种诅咒。', gw_telisi:'我可以照顾我自己,相信我。', gw_jieluote:'如果要付出这种代价才能拯救世界,那最好还是让世界消逝吧。', gw_xili:'我想去哪,就去哪。', gw_luoqi:'是个爱国者…还是个货真价实的王八蛋。', gw_yioufeisi:'国王还是乞丐,两者有何区别,人类少一个算一个', }, skill:{ lingji:{ enable:'phaseUse', usable:1, content:function(){ 'step 0' player.draw(2); 'step 1' player.chooseToDiscard('he',2,true).ai=function(card){ var val=get.value(card); if(ui.selected.cards.length){ if(get.suit(card)==get.suit(ui.selected.cards[0])) val++; if(get.number(card)==get.number(ui.selected.cards[0])) val+=3; } return val; } 'step 2' if(result.cards.length==2){ var list=[]; if(get.suit(result.cards[0])==get.suit(result.cards[1])){ var list1=get.typeCard('spell_bronze'); if(list1.length){ list.push(game.createCard(list1.randomGet())); } } if(get.number(result.cards[0])==get.number(result.cards[1])){ var list2=get.typeCard('spell_silver'); if(list2.length){ list.push(game.createCard(list2.randomGet())); } } if(list.length){ player.gain(list,'gain2'); } } }, ai:{ order:8, result:{ player:1 } } }, gwjinyan:{ trigger:{player:['damageBegin','loseHpBegin']}, forced:true, priority:-55, mark:true, filter:function(event,player){ if(game.roundNumber%3==0) return false; return player.hp-event.num=3&&!player.needsToDiscard()) return 1; if(player.hp==2&&player.hasShan()&&player.countCards('h')<=1) return 1; return 0; }).set('choiceList',[ '回复一点体力','从弃牌堆中获得一张非金法术' ]); } } else{ event.finish(); } 'step 2' if(!event.directbool&&result.index==0){ event.target.recover(); event.finish(); } 'step 3' var list=event.list; if(list.length){ event.target.chooseCardButton('选择一张法术牌',list,true).ai=function(button){ return get.value(button.link); }; } else{ event.finish(); } 'step 4' if(result.bool){ event.target.gain(result.links,'gain2','log'); } }, ai:{ threaten:2, expose:0.2 } }, junchi:{ trigger:{global:'shaAfter'}, direct:true, filter:function(event,player){ return event.player!=player&&event.target!=player&&event.target.isIn()&&player.hasCard(function(card){ return player.canUse(card,event.target,false)&&!get.info(card).multitarget; }); }, content:function(){ var next=player.chooseToUse(get.prompt('junchi'),trigger.target,-1).set('targetRequired',true); next.prompt2='对'+get.translation(trigger.target)+'使用一张牌,并摸一张牌'; next.filterCard=function(card){ return player.canUse(card,trigger.target,false)&&!get.info(card).multitarget; }; next.oncard=function(){ player.draw(); }; next.logSkill='junchi'; }, subSkill:{ gold:{ trigger:{global:'useCardAfter'}, frequent:true, filter:function(event,player){ return event.player!=player&get.subtype(event.card)=='spell_gold'; }, content:function(){ player.insertPhase(); } } }, group:'junchi_gold' }, junchi_old:{ trigger:{global:'shaAfter'}, forced:true, popup:false, filter:function(event,player){ return event.player!=player&&event.target!=player&&event.player.isIn()&&event.player.countCards('he'); }, content:function(){ 'step 0' var att=get.attitude(trigger.player,player); trigger.player.chooseCard('he','是否交给'+get.translation(player)+'一张牌?').ai=function(card){ if(att>1){ if(trigger.target.isIn()){ return 9-get.value(card); } return 4-get.value(card); } return 0; } 'step 1' if(result.bool){ player.logSkill('junchi'); player.gain(result.cards,trigger.player); if(get.position(result.cards[0])=='h'){ trigger.player.$giveAuto(result.cards,player); } else{ trigger.player.$give(result.cards,player); } trigger.player.addExpose(0.2); trigger.player.line(player,'green'); } else{ event.finish(); } 'step 2' if(trigger.target.isIn()){ var next=player.chooseToUse('是否对'+get.translation(trigger.target)+'使用一张牌?',trigger.target,-1).set('targetRequired',true); next.filterCard=function(card){ return player.canUse(card,trigger.target,false)&&!get.info(card).multitarget; }; next.oncard=function(){ player.recover(); trigger.player.draw(); } } } }, hupeng:{ enable:'phaseUse', usable:1, filter:function(event,player){ return player.countCards('he')>0; }, filterCard:true, check:function(card){ return 7-get.value(card); }, filterTarget:true, content:function(){ 'step 0' var att=get.attitude(player,target); player.chooseVCardButton('选择令'+get.translation(target)+'获得的牌',['gw_dudayuanshuai1','gw_dudayuanshuai2'],true).ai=function(button){ if(att>0){ return button.link[2]=='gw_dudayuanshuai1'?1:-1; } else{ return button.link[2]=='gw_dudayuanshuai2'?1:-1; } } 'step 1' if(result.bool){ target.gain(game.createCard(result.links[0][2]),'gain2'); } }, ai:{ threaten:1.5, order:6, result:{ target:function(player,target){ var nh=target.countCards('h'); if(get.attitude(player,target)>0){ if(!nh) return 3; if(!target.needsToDiscard(1)){ if(nh==1) return 2.5; return 2; } if(!target.needsToDiscard()) return 1; return 0.1; } else{ if(!nh) return -0.05; if(target.hp==1) return -1; if(target.hp==2) return -2.5; if(target.hp==3) return -2; return -0.5; } } } }, global:['hupeng2','hupeng3','hupeng4'] }, hupeng2:{ mod:{ cardDiscardable:function(card,player){ if(card.name=='gw_dudayuanshuai2') return false; }, cardEnabled:function(card,player){ if(card.name=='gw_dudayuanshuai2') return false; }, cardUsable:function(card,player){ if(card.name=='gw_dudayuanshuai2') return false; }, cardRespondable:function(card,player){ if(card.name=='gw_dudayuanshuai2') return false; }, cardSavable:function(card,player){ if(card.name=='gw_dudayuanshuai2') return false; }, }, ai:{ effect:{ target:function(card,player,target){ if(target.countCards('h','gw_dudayuanshuai1')&&get.attitude(player,target)<0){ return 0.4; } } } } }, hupeng3:{ trigger:{player:'phaseEnd'}, silent:true, filter:function(event,player){ return player.countCards('h','gw_dudayuanshuai2'); }, content:function(){ var hs=player.getCards('h'); var hs2=player.getCards('h','gw_dudayuanshuai2'); hs.remove(hs2); if(hs.length){ hs2.addArray(hs.randomGets(hs2.length)); } player.discard(hs2); } }, hupeng4:{ trigger:{target:'useCardToBefore'}, forced:true, popup:false, filter:function(event,player){ if(event.player==player) return false; var num=player.countCards('h','gw_dudayuanshuai1'); return num>0; }, content:function(){ 'step 0' player.chooseToUse({name:'gw_dudayuanshuai1'},'是否对'+get.translation(trigger.card)+'使用【杜达元帅】?').set('ai1',function(card){ return _status.event.bool; }).set('bool',-get.effect(player,trigger.card,trigger.player,player)); trigger.gw_dudayuanshuai1=true; 'step 1' delete trigger.gw_dudayuanshuai1; } }, hunmo:{ enable:'phaseUse', filter:function(event,player){ return game.hasPlayer(function(current){ return lib.skill.hunmo.filterTarget(null,player,current); }); }, filterTarget:function(card,player,target){ if(target==player) return false; if(target.hasSkill('hunmo2')) return false; if(target.countCards('h')==2) return false; return true; }, content:function(){ var nh=target.countCards('h'); if(nh<2){ target.draw(); } else if(nh>2){ target.chooseToDiscard('h',true); } target.addTempSkill('hunmo2'); if(player.countCards('h')<=player.hp){ player.draw(); } }, ai:{ order:function(){ var player=_status.event.player; if(player.countCards('h')<=player.hp) return 11; return (_status.event.getRand()<0.5)?3.5:1; }, threaten:1.2, result:{ target:function(player,target){ var nh=target.countCards('h'); if(nh<2) return 1; if(nh>2){ if(target.hasSkillTag('noh')) return 0; if(target.hasSkillTag('nodiscard')) return 0; return -1; } return 0; } } } }, hunmo2:{}, shuijian:{ trigger:{player:'phaseBegin'}, direct:true, filter:function(event,player){ return player.countCards('h')>0; }, content:function(){ 'step 0' var targets=player.getEnemies(); var num=0; for(var i=0;i=3) return 10-get.value(card); if(num>=2) return 9-get.value(card); if(num>=1) return 7-get.value(card); return 0; }).logSkill='shuijian'; 'step 1' if(result.bool){ for(var i=0;i0){ num1++; } else if(att<0){ num2++; } }); choice=(num1>num2)?'选项一':'选项二'; } player.chooseControl('选项一','选项二','cancel2',function(){ return choice; }).set('prompt',get.prompt('tianbian')).set('choiceList',['随机使用一张对全场有正面效果的牌','随机使用一张对全场有负面效果的牌']); 'step 1' if(result.control!='cancel2'){ player.logSkill('tianbian'); var list=[]; for(var i in lib.card){ if(lib.inpile.contains(i)&& lib.card[i].selectTarget==-1&& lib.card[i].type!='equip'&& lib.card[i].ai&&lib.card[i].ai.tag&& lib.card[i].ai.tag.multitarget){ if(lib.card[i].ai.tag.multineg){ if(result.control=='选项二'){ list.push(i); } } else{ if(result.control=='选项一'){ list.push(i); } } } } var name=null; while(list.length){ name=list.randomRemove(); if(game.hasPlayer(function(current){ return player.canUse(name,current) })){ break; } else{ name=null; } } if(name){ var targets=game.filterPlayer(function(current){ return player.canUse(name,current); }); targets.sortBySeat(); player.useCard({name:name},targets); } } } }, gwxiaoshou:{ enable:'phaseUse', usable:2, filterTarget:function(card,player,target){ return target.isMaxHp(); }, check:function(card){return 7-get.value(card);}, position:'he', filterCard:true, content:function(){ target.damage(); }, ai:{ result:{ target:function(player,target){ return get.damageEffect(target,player); }, }, order:7 } }, kuanglie:{ trigger:{player:'useCardToBegin'}, filter:function(event,player){ return event.target&&event.target!=player&&event.target.countCards('he')&&get.color(event.card)=='black'; }, init:function(player){ player.storage.kuanglie=0; }, forced:true, content:function(){ trigger.target.randomDiscard(); player.storage.kuanglie++; if(player.storage.kuanglie%2==0){ player.draw(); } } }, kuanglie2:{}, gwjiquan:{ enable:'phaseUse', usable:1, filterTarget:function(card,player,target){ return target!=player&&target.countCards('he'); }, selectTarget:[1,Infinity], content:function(){ 'step 0' player.gainPlayerCard(target,'he',true); 'step 1' target.useCard({name:'sha'},player); }, ai:{ threaten:1.4, order:7, result:{ target:function(player,target){ if(player.getEquip('tengjia')||player.getEquip('bagua')) return -1; if(get.effect(player,{name:'sha'},target,player)>=0) return -1; if(!player.hasShan()){ if(ui.selected.targets.length) return 0; if(player.hp>=4) return -1; if(player.hp>=3&&target.hp==1) return -1; return 0; } var num=player.countCards('h','shan'); if(num<1){ num=1; } if(ui.selected.targets.length>=num){ return 0; } return -1; } } } }, nuhou:{ enable:'phaseUse', usable:1, position:'he', filterCard:true, check:function(card){ return 7-get.value(card) }, content:function(){ 'step 0' var list=player.getEnemies(); list.sortBySeat(); event.list=list; 'step 1' if(event.list.length){ var current=event.list.shift(); var he=current.getCards('he'); player.line(current,'green'); if(he.length){ current.discard(he.randomGet()); current.addExpose(0.2); } event.redo(); } }, ai:{ order:8.5, result:{ player:1 }, }, }, shewu:{ enable:'phaseUse', usable:1, position:'he', filterCard:true, selectCard:[1,3], check:function(card){ if(!ui.selected.cards.length){ return 8-get.value(card) } var player=_status.event.player; if(player.isDamaged()){ var hs=player.getCards('h'); var num=0; for(var i=0;i=3){ return 6-get.value(card); } } return 0; }, content:function(){ player.draw(3); if(cards.length>=2){ player.addTempSkill('shewu_dist'); } if(cards.length==3){ player.recover(); } }, ai:{ order:4, result:{ player:1 }, threaten:1.6 }, subSkill:{ dist:{ mod:{ targetInRange:function(){ return true; } } } } }, gwzhanjiang:{ trigger:{global:'phaseBegin'}, direct:true, filter:function(event,player){ return !player.hasSkill('gwzhanjiang2')&&event.player!=player; }, content:function(){ 'step 0' var bool=(get.effect(trigger.player,{name:'sha'},player,player)>0&& Math.abs(get.attitude(player,trigger.player))>1&& game.hasPlayer(function(current){ return get.attitude(current,player)>0&¤t.hasSha(); })); var next=player.chooseToDiscard(get.prompt('gwzhanjiang',trigger.player),'he'); next.ai=function(card){ if(bool) return 7-get.value(card); return 0; }; next.logSkill=['gwzhanjiang',trigger.player]; 'step 1' if(result.bool){ player.addTempSkill('gwzhanjiang2',{player:'phaseBegin'}); event.targets=game.filterPlayer(function(current){ return current!=trigger.player; }); event.targets.sortBySeat(trigger.player); event.num=0; } else{ event.finish(); } 'step 2' if(event.targets.length){ event.current=event.targets.shift(); if(event.current.hasSha()){ event.current.chooseToUse({name:'sha'},'是否对'+get.translation(trigger.player)+'使用一张杀?',trigger.player,-1).oncard=function(card,player){ player.draw(); }; } else{ event.redo(); } } else{ event.finish(); } 'step 3' if(result.bool){ event.num++; if(event.num>=2){ return; } } event.goto(2); }, ai:{ expose:0.2, threaten:1.4 }, }, gwzhanjiang2:{}, gwzhanjiang3:{ trigger:{player:'useCard'}, filter:function(event){ return event.card.name=='sha'&&event.getParent(2).name=='gwzhanjiang'; }, forced:true, popup:false, content:function(){ player.draw(); } }, gwchuanxin_old:{ trigger:{player:'shaAfter'}, filter:function(event,player){ if(player.storage.gwchuanxin&&player.storage.gwchuanxin.length>=4) return false; return event.target.isAlive(); }, check:function(event,player){ return get.effect(event.target,{name:'sha'},player,player)>0 }, logTarget:'target', logLine:false, content:function(){ 'step 0' event.card=get.cards()[0]; player.showCards(event.card,get.translation(player)+'对'+get.translation(trigger.player)+'发动了【穿心】'); 'step 1' if(player.storage.gwchuanxin&&!player.storage.gwchuanxin.contains(get.suit(event.card))){ player.useCard({name:'sha'},[event.card],trigger.target,false); } }, group:['gwchuanxin_count1','gwchuanxin_count2'], subSkill:{ count1:{ trigger:{global:'phaseBegin'}, silent:true, content:function(){ player.storage.gwchuanxin=[]; } }, count2:{ trigger:{player:'useCard'}, silent:true, // filter:function(event){ // return event.card&&event.card.name=='sha'; // }, content:function(){ for(var i=0;i0 }, logTarget:'target', // logLine:false, content:function(){ 'step 0' var cards=get.cards(); player.showCards(cards,get.translation(player)+'发动了【穿心】'); event.bool=(get.color(cards[0])=='black'); 'step 1' if(event.bool){ player.useCard({name:'sha'},trigger.target,false).animate=false; } }, mod:{ attackFrom:function(from,to,distance){ return distance-from.hp; } } }, fengjian:{ trigger:{player:'useCard'}, direct:true, filter:function(event,player){ var type=get.type(event.card,'trick'); return type=='trick'&&game.hasPlayer(function(current){ return player.canUse('sha',current,false)&&!event.targets.contains(current); }); }, content:function(){ "step 0" player.chooseTarget(get.prompt('fengjian'),function(card,player,target){ return player.canUse('sha',target,false)&&!trigger.targets.contains(target); }).ai=function(target){ return get.effect(target,{name:'sha',nature:'thunder'},player,player); } "step 1" if(result.bool){ player.logSkill('fengjian'); if(!event.isMine()){ game.delay(); } player.useCard({name:'sha',nature:'thunder'},result.targets,false); player.addTempSkill('qianxing',{player:'phaseBegin'}); } }, ai:{ expose:0.2, threaten:1.5, noautowuxie:true, }, // group:'fengjian_hide', // subSkill:{ // hide:{ // trigger:{source:'damageEnd'}, // forced:true, // popup:false, // filter:function(event,player){ // return event.getParent(3).name=='fengjian'; // }, // content:function(){ // player.addTempSkill('qianxing',{player:'phaseBegin'}); // } // } // } }, huandie:{ trigger:{player:'phaseBegin'}, direct:true, content:function(){ 'step 0' player.chooseTarget(get.prompt('huandie'),[0,game.countPlayer()],function(card,player,target){ return target!=player; }).ai=function(target){ return get.attitude(player,target); } 'step 1' if(result.bool){ result.targets.sortBySeat(); result.targets.unshift(player); player.logSkill('huandie',result.targets); game.asyncDrawAuto(result.targets,function(current){ return current==player?1:2; }); player.addTempSkill('huandie_discard'); } }, ai:{ threaten:1.5 }, subSkill:{ discard:{ trigger:{player:'phaseEnd'}, forced:true, filter:function(event,player){ return game.hasPlayer(function(current){ return current.countCards('h')>current.hp; }); }, logTarget:function(){ return game.filterPlayer(function(current){ return current.countCards('h')>current.hp; }).sortBySeat(); }, content:function(){ 'step 0' var list=game.filterPlayer(function(current){ return current.countCards('h')>current.hp; }).sortBySeat(); event.list=list; 'step 1' if(event.list.length){ event.list.shift().chooseToDiscard('h',true,2); event.redo(); } } } } }, xuezhou:{ trigger:{player:'phaseBegin'}, direct:true, unique:true, forceunique:true, intro:{ content:function(storage,player){ var name=get.translation(player); if(storage==1){ return '每当一名角色('+name+'除外)受到一次伤害,该角色失去一点体力,'+name+'回复一点体力'; } else if(storage==2){ return '每当一名角色('+name+'除外)造成一次伤害,该角色失去一点体力,'+name+'(若不是受伤害角色)回复一点体力'; } else{ return '未发动'; } } }, content:function(){ 'step 0' var next=player.chooseControl('选项一','选项二','cancel2',function(){ if(Math.random()<0.65) return 0; return 1; }); next.prompt=get.prompt('xuezhou'); next.choiceList=[ '每当一名其他角色受到一次伤害,该角色失去一点体力,你回复一点体力', '每当一名其他角色造成一次伤害,该角色失去一点体力,你(若不是受伤害角色)回复一点体力' ]; 'step 1' if(result.control=='cancel2'){ player.unmarkSkill('xuezhou'); delete _status.xuezhou; } else{ player.logSkill('xuezhou'); player.storage.xuezhou=result.index+1; player.syncStorage('xuezhou'); player.markSkill('xuezhou'); _status.xuezhou=player; } }, ai:{ threaten:2.5 }, global:'xuezhou_hp' }, xuezhou_hp:{ trigger:{source:'damageEnd',player:'damageEnd'}, filter:function(event,player){ if(!_status.xuezhou) return false; if(player==_status.xuezhou) return false; if(!player.isIn()||!_status.xuezhou.isIn()) return false; switch(_status.xuezhou.storage.xuezhou){ case 1:return player==event.player; case 2:return player==event.source; default:return false; } }, silent:true, content:function(){ 'step 0' game.delayx(); 'step 1' _status.xuezhou.logSkill('xuezhou',player); player.loseHp(); if(_status.xuezhou!=trigger.player){ _status.xuezhou.recover(); } } }, fayin:{ trigger:{player:'shaBegin'}, direct:true, filter:function(event,player){ return player.countCards('he')>0; }, content:function(){ 'step 0' var target=trigger.target; var bool=get.attitude(player,target)<0; var next=player.chooseToDiscard('he',get.prompt('fayin',target)); next.ai=function(card){ if(bool) return 7-get.value(card); return 0; }; next.logSkill=['fayin',target]; 'step 1' if(result.bool){ var target=trigger.target; var num=5; if(target.isMad()){ num=4; } switch(Math.floor(Math.random()*num)){ case 0:target.randomDiscard(2);break; case 1:target.damage('fire');break; case 2:player.changeHujia();break; case 3:target.turnOver();target.draw();break; case 4:target.goMad({player:'phaseBegin'});break; } } } }, gwbaquan:{ enable:'phaseUse', usable:1, filterTarget:function(card,player,target){ return target!=player&&target.countCards('h')>0; }, content:function(){ 'step 0' var hs=target.getCards('h'); player.gain(hs,target); target.$giveAuto(hs,player); event.hs=hs; 'step 1' var damage=(target.hp>=player.hp&&get.damageEffect(target,player,player)>0); var hs=event.hs; if(damage&&target.hp>1){ for(var i=0;i=8){ damage=false;break; } } } player.chooseCard(hs.length,true,'选择还给'+get.translation(target)+'的牌').ai=function(card){ if(damage){ return hs.contains(card)?1:0; } else{ return -get.value(card,player,'raw'); } } if(!event.isMine()) game.delay(); 'step 2' target.gain(result.cards,player); player.$giveAuto(result.cards,target); event.hs2=result.cards; if(player.hp>target.hp){ event.finish(); } 'step 3' for(var i=0;i0){ target.draw(dh,false); target.$draw(dh); game.delay(0.5); } else if(dh<0){ target.chooseToDiscard(-dh,true); if(player!=target) player.useCard({name:'sha'},target,false); } }, ai:{ order:11, result:{ target:function(player,target){ var dh=Math.min(3,player.hp)-target.countCards('h'); if(dh<0){ dh+=get.sgn(get.effect(target,{name:'sha'},player,target)); } return dh; } } } }, hunmo_old2:{ trigger:{player:['phaseBegin','phaseEnd']}, direct:true, content:function(){ 'step 0' player.chooseTarget(get.prompt('hunmo'),[1,game.countPlayer()],function(card,player,target){ return target.countCards('h')!=Math.min(3,target.hp); }).ai=function(target){ return get.attitude(player,target)*(Math.min(3,target.hp)-target.countCards('h')); } 'step 1' if(result.bool){ player.logSkill('hunmo',result.targets); event.targets=result.targets.slice(0); event.targets.sortBySeat(); } else{ event.finish(); } 'step 2' if(event.targets.length){ var target=event.targets.shift(); var dh=Math.min(3,target.hp)-target.countCards('h'); if(dh>0){ target.draw(dh,false); target.$draw(dh); } else if(dh<0){ target.chooseToDiscard(-dh,true).delay=false; } game.delay(0.5); event.redo(); } } }, huihun:{ trigger:{player:'phaseEnd'}, filter:function(event,player){ if(!player.storage.huihun) return false; for(var i=0;i=2) break; } } player.gain(list,'gain2','log'); }, ai:{ threaten:1.8, }, group:['huihun_count','huihun_count2'], subSkill:{ count:{ trigger:{player:'useCard'}, silent:true, filter:function(event,player){ return _status.currentPhase==player; }, content:function(){ if(!player.storage.huihun){ player.storage.huihun=[]; } for(var i=0;i