diff --git a/character/extra.js b/character/extra.js index 7352440b5..e1b1490ea 100755 --- a/character/extra.js +++ b/character/extra.js @@ -1992,6 +1992,30 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, }, }, + ai:{ + notemp:true, + maixie_defend:true, + effect:{ + target:(card,player,target)=>{ + if(!get.tag(card,'damage')||!target.hasFriend()) return; + let die=[],extra=[null,0],temp; + game.filterPlayer(i=>{ + if(!i.hasMark('twwuhun')) return false; + temp=get.attitude(target,i); + if(temp<0) die.push(i); + else{ + temp=Math.sqrt(att)*i.countMark('twwuhun'); + if(!extra[0]||temp1&&(!die.length||get.attitude(player,target)<=0)) die.add(player); + if(die.length) return [1,0,1,die.reduce((num,i)=>{ + return num-=2*get.sgnAttitude(player,i); + },0)]; + } + } + } }, shouli:{ audio:2, @@ -3214,7 +3238,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ ai:{ effect:{ target:function(card,player,target){ - if(card&&card.name=='qizhengxiangsheng') return 'zerotarget'; + if(card&&card.name=='qizhengxiangsheng') return 'zeroplayertarget'; }, } }, @@ -3293,18 +3317,42 @@ game.import('character',function(lib,game,ui,get,ai,_status){ if(!map[id]) map[id]={}; map[id].qizheng_name=result.control; map[id].qizheng_aibuff=get.attitude(player,target)>0; - }, + } }, }, }, lingce:{ audio:2, + init:(player)=>{ + game.addGlobalSkill('lingce_global'); + }, trigger:{global:'useCard'}, forced:true, filter:function(event,player){ return (event.card.name=='qizhengxiangsheng'||get.zhinangs().contains(event.card.name)||player.getStorage('dinghan').contains(event.card.name))&&event.card.isCard&&event.cards.length==1; }, - content:function(){player.draw()}, + content:function(){ + player.draw(); + }, + subSkill:{ + global:{ + ai:{ + effect:{ + player:(card,player,target)=>{ + let num=0,nohave=true; + game.countPlayer(i=>{ + if(i.hasSkill('lingce')){ + nohave=false; + if(i.isIn()&&lib.skill.lingce.filter({card:card},i)) num+=get.sgnAttitude(player,i); + } + },true); + if(nohave) game.removeGlobalSkill('lingce_global'); + else return [1,0.8*num]; + } + } + } + } + } }, dinghan:{ audio:2, @@ -4710,8 +4758,26 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, group:'new_wuhun_die', ai:{ - threaten:0.01, notemp:true, + effect:{ + target:(card,player,target)=>{ + if(!get.tag(card,'damage')||!target.hasFriend()) return; + if(player.hasSkillTag('jueqing',null,target)) return 1.7; + let die=[null,1],temp; + game.filterPlayer(i=>{ + temp=i.countMark('new_wuhun'); + if(i===player&&target.hp+target.hujia>1) temp++; + if(temp>=die[1]){ + if(!die[0]) die=[i,temp]; + else{ + let att=get.attitude(player,i); + if(att=2&&player.countCards('h')<=player.hp+1; + var fang=player.countMark('olfangquan2')==0&&player.hp>=2&&player.countCards('h')<=player.hp+2; player.chooseBool(get.prompt2('olfangquan')).set('ai',function(){ if(!_status.event.fang) return false; return game.hasPlayer(function(target){ @@ -14298,7 +14298,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ direct:true, content:function(){ "step 0" - var fang=player.countMark('fangquan2')==0&&player.hp>=2&&player.countCards('h')<=player.hp+1; + var fang=player.countMark('fangquan2')==0&&player.hp>=2&&player.countCards('h')<=player.maxHp+1; player.chooseBool(get.prompt2('refangquan')).set('ai',function(){ if(!_status.event.fang) return false; return game.hasPlayer(function(target){ diff --git a/character/shenhua.js b/character/shenhua.js index 013010448..4b3c9295f 100755 --- a/character/shenhua.js +++ b/character/shenhua.js @@ -3439,11 +3439,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){ "step 2" if(result.bool){ player.chooseTarget(true,'请选择进行额外回合的目标角色',lib.filter.notMe).ai=function(target){ - if(target.hasJudge('lebu')) return -1; - if(get.attitude(player,target)>4){ - return get.threaten(target)/Math.sqrt(target.hp+1)/Math.sqrt(target.countCards('h')+1); - } - return -1; + if(target.hasJudge('lebu')||get.attitude(player,target)<=0) return -1; + if(target.isTurnedOver()) return 0.18; + return get.threaten(target)/Math.sqrt(target.hp+1)/Math.sqrt(target.countCards('h')+1); }; } else event.finish(); @@ -4154,7 +4152,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){ effect:{ target:function(card,player,target,current){ if(!target.hasFriend()) return; - if(target.hp<=1&&get.tag(card,'damage')) return [1,0,0,-2]; + if(target.hp<=1&&get.tag(card,'damage')){ + if(player.hasSkillTag('jueqing',false,target)) return 3; + return [1,0,0,-3*get.threaten(player)]; + } } } } diff --git a/character/sp2.js b/character/sp2.js index 8407714b7..586c6f156 100644 --- a/character/sp2.js +++ b/character/sp2.js @@ -8238,8 +8238,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){ player.chooseTarget(get.prompt2('yechou'),function(card,player,target){ return player!=target&&target.getDamagedHp()>1 }).set('forceDie',true).set('ai',function(target){ - var num=get.attitude(_status.event.player,target); - return -num; + let att=get.attitude(_status.event.player,target); + if(att>0) return 0; + att=Math.sqrt(0.01-att); + return att*(get.distance(_status.currentPhase,target,'absolute')||game.players.length); }); "step 1" if(result.bool){