From 55aefd9c3f1a88c07edad92f813f7e8dd0c3e39a Mon Sep 17 00:00:00 2001 From: copcap Date: Fri, 1 Dec 2023 06:41:08 +0800 Subject: [PATCH] =?UTF-8?q?=E8=B0=83=E6=95=B4=E9=83=A8=E5=88=86=E6=8A=80?= =?UTF-8?q?=E8=83=BD=E7=BB=93=E6=9E=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- character/old.js | 19 +++++++++---------- character/xianding.js | 11 +++++++++++ game/game.js | 30 ++++++++++++++++++++++-------- 3 files changed, 42 insertions(+), 18 deletions(-) diff --git a/character/old.js b/character/old.js index 0e86e2529..4d2eb8b0f 100755 --- a/character/old.js +++ b/character/old.js @@ -411,12 +411,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){ audio:'jiefan', enable:'chooseToUse', filter:function(event,player){ - return event.type=='dying'&&_status.currentPhase&&_status.currentPhase.isIn()&&!event.oldjiefan; + return event.type=='dying'&&_status.currentPhase&&_status.currentPhase.isIn(); }, direct:true, content:function(){ - 'step 0' - if(_status.connectMode) game.broadcastAll(function(){_status.noclearcountdown=true}); player.chooseToUse(function(card,player,event){ if(get.name(card)!='sha') return false; return lib.filter.filterCard.apply(this,arguments); @@ -425,13 +423,14 @@ game.import('character',function(lib,game,ui,get,ai,_status){ return lib.filter.filterTarget.apply(this,arguments); }).set('logSkill','oldjiefan').set('oncard',function(){ _status.event.player.addTempSkill('oldjiefan_recover'); + }).set('custom',{ + add:{}, + replace:{ + window:()=>{ + ui.click.cancel(); + } + }, }); - 'step 1' - if(!result.bool){ - var evt=event.getParent(2); - evt.oldjiefan=true; - evt.goto(0); - } }, ai:{ save:true, @@ -440,7 +439,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, subSkill:{ recover:{ - audio:'jiefan', + // audio:'jiefan', trigger:{source:'damageBegin2'}, filter:function(event,player){ return event.getParent(4).name=='oldjiefan'; diff --git a/character/xianding.js b/character/xianding.js index 5405eaa07..9315779c1 100644 --- a/character/xianding.js +++ b/character/xianding.js @@ -116,6 +116,14 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, content:function*(event,map){ const player=map.player; + event.pushHandler('onNextMoveCard',(event,option)=>{ + if(_status.connectMode&&event.step==1&&event._result.bool&&option.state=='end'){ + game.broadcastAll(()=>{ + delete _status.noclearcountdown; + game.stopCountChoose(); + }); + } + }); let result=yield player.moveCard(false,`###琼英###移动场上的一张牌,然后弃置一张与此牌花色相同的手牌(若没有则展示手牌)。`).set('logSkill','dcqiongying').set('custom',{ add:{}, replace:{ @@ -151,6 +159,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){ audio:2, trigger:{player:'phaseJieshuBegin'}, direct:true, + filter:function(event,player){ + return game.hasPlayer(current=>current.countCards('e')); + }, content:function*(event,map){ const player=map.player; let result=yield player.chooseTarget(get.prompt('dcnuanhui'),'选择一名装备区有牌的角色,该角色可以依次使用X张基本牌(X为其装备区牌数)。',(card,player,target)=>{ diff --git a/game/game.js b/game/game.js index 51e0bd9e4..d4379e608 100644 --- a/game/game.js +++ b/game/game.js @@ -15714,7 +15714,7 @@ new Promise(resolve=>{ info.onChooseToUse(event); } } - _status.noclearcountdown=true; + if(_status.noclearcountdown!=='direct') _status.noclearcountdown=true; if(event.type=='phase'){ if(event.isMine()){ event.endButton=ui.create.control('结束回合','stayleft',function(){ @@ -15951,8 +15951,16 @@ new Promise(resolve=>{ else if(event._sendskill){ event.result._sendskill=event._sendskill; } + debugger + if((!event.result||!event.result.bool||event.result._noHidingTimer)&&(event.result.skill||event.logSkill)){ + var info=get.info(event.result.skill||event.logSkill); + if(info.direct&&!info.clearTime){ + _status.noclearcountdown='direct'; + } + } if(event.dialog&&typeof event.dialog=='object') event.dialog.close(); if(!_status.noclearcountdown){ + debugger game.stopCountChoose(); } "step 5" @@ -15974,7 +15982,7 @@ new Promise(resolve=>{ info.onChooseToRespond(event); } } - _status.noclearcountdown=true; + if(_status.noclearcountdown!=='direct') _status.noclearcountdown=true; if(!_status.connectMode&&lib.config.skip_shan&&event.autochoose&&event.autochoose()){ event.result={bool:false}; } @@ -16133,7 +16141,7 @@ new Promise(resolve=>{ } if(event.result.skill){ if(info.direct&&!info.clearTime){ - _status.noclearcountdown=true; + _status.noclearcountdown='direct'; } } if(event.logSkill){ @@ -25261,9 +25269,9 @@ new Promise(resolve=>{ if(info.onuse){ info.onuse(result,this); } - if(info.direct&&!info.clearTime){ - _status.noclearcountdown=true; - } + // if(info.direct&&!info.clearTime){ + // _status.noclearcountdown=true; + // } } if(event.logSkill){ if(typeof event.logSkill=='string'){ @@ -26661,7 +26669,7 @@ new Promise(resolve=>{ } player._hide_all_timer=true; } - else if(!_status.event._global_waiting){ + else if(!_status.event._global_waiting&&_status.noclearcountdown!=='direct'){ player.showTimer(time); } lib.node.torespondtimeout[this.playerid]=setTimeout(function(){ @@ -26678,7 +26686,7 @@ new Promise(resolve=>{ game.players[i].hideTimer(); } } - else if(!_status.event._global_waiting){ + else if(!get.event('_global_waiting')&&(_status.noclearcountdown!=='direct'||get.event('name')=='chooseToUse'&&result&&result.bool)&&!(result&&result._noHidingTimer)){ this.hideTimer(); } clearTimeout(lib.node.torespondtimeout[this.playerid]); @@ -26961,6 +26969,7 @@ new Promise(resolve=>{ } } showTimer(time){ + debugger if(!time&&lib.configOL){ time=parseInt(lib.configOL.choose_timeout)*1000; } @@ -37572,6 +37581,7 @@ new Promise(resolve=>{ } }, stopCountChoose:function(){ + debugger if(_status.countDown){ clearInterval(_status.countDown); delete _status.countDown; @@ -57188,6 +57198,10 @@ new Promise(resolve=>{ const skill=gameEvent.skill; if(skill){ result.skill=skill; + const info=get.info(skill); + if(info&&info.direct&&!info.clearTime){ + result._noHidingTimer=true; + } const skillInformation=get.info(gameEvent.skill),viewAs=skillInformation.viewAs; if(typeof viewAs=='function'){ const viewedAs=viewAs(result.cards,gameEvent.player);