diff --git a/card/guozhan.js b/card/guozhan.js
index 3171ef9e7..c8cfe63ec 100644
--- a/card/guozhan.js
+++ b/card/guozhan.js
@@ -43,51 +43,58 @@ game.import('card',function(lib,game,ui,get,ai,_status){
fullskin:true,
type:'trick',
enable:true,
- filterTarget:function(card,player,target){
+ filterTarget(card,player,target){
return target!=player&&!target.isMinHp();
},
- content:function(){
- 'step 0'
- event.list=game.filterPlayer(function(current){
+ async content(event,trigger,player){
+ const target=event.target;
+ if(!target.isIn()) return;
+ const str=get.translation(target);
+ const card=new lib.element.VCard({name:'sha'});
+ const targets=game.filterPlayer(current=>{
return current!=target;
}).sortBySeat();
- 'step 1'
- if(!target.isIn()){
- event.finish();
- return;
+ for(const current of targets){
+ if(!target.isIn()) return;
+ if(!current||!current.isIn()||current.hasSkill('diaohulishan')) continue;
+ let choiceList=[
+ '弃置一张牌,视为对'+str+'使用一张【杀】',
+ '弃置'+str+'一张牌',
+ ],choices=['出杀','弃牌','cancel2'];
+ if(current.identity=='wei'){
+ choiceList[0]=choiceList[0].slice(6);
+ choiceList[1]='获得'+choiceList[1].slice(2);
+ choices[1]='得牌';
+ }
+ if(!current.canUse(card,target,false)||(current.identity!='wei'&&!current.countDiscardableCards(current,'he'))){
+ choiceList[0]=''+choiceList[0]+'';
+ choices.remove('出杀');
+ }
+ if(!target.countCards('he')){
+ choiceList[1]=''+choiceList[1]+'';
+ choices.remove(current.identity=='wei'?'得牌':'弃牌');
+ }
+ if(choices.length>1){
+ const {result:{control}}=await current.chooseControl(choices)
+ .set('prompt','号令天下:请选择其中一项').set('target',target)
+ .set('ai',()=>{
+ const player=get.event('player'),target=get.event('target'),choices=get.event('controls');
+ const guohe=new lib.element.VCard({name:'guohe_copy2'}),shunshou=new lib.element.VCard({name:'shunshou_copy2'}),sha=new lib.element.VCard({name:'sha'});
+ const num=Math.max(0,choices.includes('弃牌')?get.effect(target,guohe,player):0,choices.includes('得牌')?get.effect(target,shunshou,player):0);
+ if(choices.includes('出杀')&&get.effect(player,guohe,player)+get.effect(target,sha,player)>num) return '出杀';
+ if(choices.includes('得牌')&&num>0) return '得牌';
+ if(choices.includes('弃牌')&&num>0) return '弃牌';
+ return 'cancel2';
+ });
+ if(control!='cancel2'){
+ if(control=='出杀'){
+ if(current.identity!='wei') await current.chooseToDiscard('he',true);
+ await current.useCard(card,target,false);
+ }
+ else await current[current.identity=='wei'?'gainPlayerCard':'discardPlayerCard'](target,true,'he').set('boolline',true);
+ }
+ }
}
- var current=event.list.shift();
- if(!current||!current.isIn()||current.hasSkill('diaohulishan')){
- if(event.list.length) event.redo();
- else event.finish();
- return;
- }
- event.current=current;
- if(current.identity!='wei'){
- current.chooseToDiscard('he','弃置一张牌,并视为对'+get.translation(target)+'使用一张【杀】,或点击「取消」弃置其一张牌').set('ai',function(card){
- if(!_status.event.goon) return 0;
- return 5-get.value(card);
- }).set('goon',(get.effect(target,{name:'guohe'},current)