From 01f08eb546753a55eeedad92224f1b9f9b1cec23 Mon Sep 17 00:00:00 2001 From: 157 <144450955+PZ157@users.noreply.github.com> Date: Thu, 26 Oct 2023 20:13:21 +0800 Subject: [PATCH] =?UTF-8?q?=E8=B0=83=E6=95=B4=E3=80=90=E9=85=92=E3=80=91ai?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- card/extra.js | 85 +++++++++++++++++++++++---------------------------- 1 file changed, 39 insertions(+), 46 deletions(-) diff --git a/card/extra.js b/card/extra.js index d1dddc559..6b397064f 100644 --- a/card/extra.js +++ b/card/extra.js @@ -99,69 +99,62 @@ game.import('card',function(lib,game,ui,get,ai,_status){ }, ai:{ basic:{ - useful:function(card,i){ + useful:(card,i)=>{ if(_status.event.player.hp>1){ - if(i==0) return 4; + if(i===0) return 4; return 1; } - if(i==0) return 7.3; + if(i===0) return 7.3; return 3; }, - value:function(card,player,i){ + value:(card,player,i)=>{ if(player.hp>1){ - if(i==0) return 5; + if(i===0) return 5; return 1; } - if(i==0) return 7.3; + if(i===0) return 7.3; return 3; - }, + } }, - order:function(){ - return get.order({name:'sha'})+0.2; + order:()=>{ + if(_status.event.dying) return 9; + let sha=get.order(new lib.elementVCard({name:'sha'})); + if(sha>0) return sha+0.2; + return 0; }, result:{ - target:function(player,target){ + target:(player,target)=>{ if(target&&target.isDying()) return 2; - if(target&&!target.isPhaseUsing()) return 0; - if(lib.config.mode=='stone'&&!player.isMin()){ - if(player.getActCount()+1>=player.actcount) return 0; - } - var shas=player.getCards('h','sha'); - if(shas.length>1&&(player.getCardUsable('sha')>1||player.countCards('h','zhuge'))){ - return 0; - } - shas.sort(function(a,b){ - return get.order(b)-get.order(a); - }) - var card; - if(shas.length){ - for(var i=0;i0); - })){ + if(!target || target._jiu_temp || !target.isPhaseUsing()) return 0; + if(!target.getCardUsable('sha') || lib.config.mode==='stone'&&!player.isMin()&&player.getActCount()+1>=player.actcount) return 0; + let shas = player.getCards('hs',card=>get.name(card)==='sha'&&!ui.selected.cards.includes(card)), card; + if(!shas.length || !target.hasSha() || shas.length>1&&(target.getCardUsable('sha')>1 || target.countCards('hs','zhuge'))) return 0; + target._jiu_temp = true; + shas.sort((a,b)=>get.order(b)-get.order(a)); + for(let i=0; i{ + return get.attitude(target,current)<0&&target.canUse(shas[i],current,null,true)&&!current.hasSkillTag('filterDamage',null,{ + player:target, + card:shas[i], + jiu:true + })&&get.effect(current,shas[i],target)>0; + }); + if(!tars.length) continue; + tars.sort((a,b)=>{ + return get.effect(b,shas[i],target)-get.effect(a,shas[i],target); + }); + if(!tars[0].mayHaveShan(player,'use') || target.hasSkillTag('directHit_ai',true,{ + target:tars[0], + card:shas[i] + },true) || target.needsToDiscard()>Math.max(0,3-target.hp)){ + delete target._jiu_temp; return 1; } } + delete target._jiu_temp; return 0; - }, + } }, tag:{ save:1,