From 2a7941812af62a4fbd942e9cc399a19d06bab0ac Mon Sep 17 00:00:00 2001 From: 157 <144450955+PZ157@users.noreply.github.com> Date: Thu, 26 Oct 2023 20:28:44 +0800 Subject: [PATCH] =?UTF-8?q?=E5=BE=AE=E8=B0=83=E7=8C=9C=E6=9D=80=E7=8C=9C?= =?UTF-8?q?=E9=97=AA=E5=87=BD=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 增加形参ignore,ignore牌/牌组不参与此次猜测; 默认选择的牌(ui.selected.cards)不纳入猜测区域 --- game/game.js | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/game/game.js b/game/game.js index a44bc4503..e74f377ba 100644 --- a/game/game.js +++ b/game/game.js @@ -28273,13 +28273,16 @@ if(this.hasSkillTag('respondShan',true,null,true)) return true; return this.hasUsableCard('shan'); } - mayHaveSha(viewer,type){ + mayHaveSha(viewer,type,ignore){ if((this.hp>2||!this.isZhu&&this.hp>1)&&this.hasSkillTag('respondSha',true,type,true)) return true; if(get.itemtype(viewer)!=='player') viewer=_status.event.player; - let cards; + let cards,selected=get.copy(ui.selected.cards); + if(get.itemtype(ignore)==='cards') selected.addArray(ignore); + else if(get.itemtype(ignore)==='card') selected.add(ignore); if(this===viewer||get.itemtype(viewer)==='player'&&viewer.hasSkillTag('viewHandcard',null,this,true)) cards=this.getCards('h'); else cards=this.getShownCards(); if(cards.some(card=>{ + if(selected.includes(card)) return false; let name=get.name(card,this); if(name=='sha'||name=='hufu'||name=='yuchanqian'){ if(type==='use') return lib.filter.cardEnabled(card,this); @@ -28288,17 +28291,20 @@ } return false; })) return true; - let hs=this.getCards('hs').removeArray(cards).length; + let hs=this.getCards('hs').filter(i=>!cards.includes(i)&&!selected.includes(i)).length; if(hs===0) return false; return Math.pow(hs+(this.isPhaseUsing()?6:4),2)>100*_status.event.getRand('mayHaveSha'); } - mayHaveShan(viewer,type){ + mayHaveShan(viewer,type,ignore){ if((this.hp>2||!this.isZhu&&this.hp>1)&&this.hasSkillTag('respondShan',true,type,true)) return true; if(get.itemtype(viewer)!=='player') viewer=_status.event.player; - let cards; + let cards,selected=get.copy(ui.selected.cards); + if(get.itemtype(ignore)==='cards') selected.addArray(ignore); + else if(get.itemtype(ignore)==='card') selected.add(ignore); if(this===viewer||get.itemtype(viewer)==='player'&&viewer.hasSkillTag('viewHandcard',null,this,true)) cards=this.getCards('h'); else cards=this.getShownCards(); if(cards.some(card=>{ + if(selected.includes(card)) return false; let name=get.name(card,this); if(name==='shan'||name==='hufu'){ if(type==='use') return lib.filter.cardEnabled(card,this); @@ -28307,7 +28313,7 @@ } return false; })) return true; - let hs=this.getCards('hs').removeArray(cards).length; + let hs=this.getCards('hs').filter(i=>!cards.includes(i)&&!selected.includes(i)).length; if(hs===0) return false; return Math.pow(hs+(this.isPhaseUsing()?3:5),2)>100*_status.event.getRand('mayHaveShan'); }