From 4e1c2c44190aa805a0e3eb7a302a36b0f3bee8e6 Mon Sep 17 00:00:00 2001 From: copcap Date: Mon, 4 Dec 2023 18:19:54 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E6=9C=8D=E6=94=B9=E5=B0=86=E8=B0=83?= =?UTF-8?q?=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- character/huicui.js | 42 ++++++++++++++++--------- character/xianding.js | 71 +++++++++++++++++++++---------------------- 2 files changed, 62 insertions(+), 51 deletions(-) diff --git a/character/huicui.js b/character/huicui.js index 8395ae735..68eff99f8 100644 --- a/character/huicui.js +++ b/character/huicui.js @@ -950,7 +950,14 @@ game.import('character',function(lib,game,ui,get,ai,_status){ trigger:{player:['gainAfter','loseAsyncAfter']}, forced:true, filter:(event,player)=>{ - if(player==_status.currentPhase) return false; + // if(player==_status.currentPhase) return false; + if(event.getParent('phaseDraw',true)) return false; + const evt=player.getHistory('gain')[0]; + if(!evt) return false; + if(event.name=='gain'){ + if(evt!=event||event.getlx===false) return false; + } + else if(evt.getParent()!=event) return false; const hs=player.getCards('h'); if(!hs.length) return false; const cards=event.getg(player); @@ -998,17 +1005,17 @@ game.import('character',function(lib,game,ui,get,ai,_status){ player.give(cards,target,true); event.color=get.color(cards[0],player); 'step 1' + if(target.isIn()){ + var num=Math.min(Math.abs(target.getHp()-player.getHp()),5); + if(num>0) player.draw(num); + } + 'step 2' if(event.color=='red'){ if(target.getHp()<=player.getHp()&&target.isDamaged()) target.recover(); } else if(event.color=='black'){ if(target.getHp()>=player.getHp()) target.loseHp() } - 'step 2' - if(target.isIn()){ - var num=Math.min(Math.abs(target.getHp()-player.getHp()),5); - if(num>0) player.draw(num); - } }, ai:{ combo:'dclingkong', @@ -1944,17 +1951,24 @@ game.import('character',function(lib,game,ui,get,ai,_status){ target.draw(2); 'step 1' var marked=target.hasMark('dcjizhong'); + var cards=target.getCards('h'); if(marked){ - if(target.countCards('h')) target.chooseToDiscard('集众:弃置三张手牌',3,true); - event.finish(); + if(cards.length<=3) event._result={bool:true,cards:cards}; + else target.chooseCard(`集众:交给${get.translation(player)}三张手牌`,3,true); } else{ - target.chooseToDiscard('集众:弃置三张手牌,或点击“取消”获得“信众”标记',3); + target.chooseCard(`集众:交给${get.translation(player)}三张手牌,或点击“取消”获得“信众”标记`,3).set('ai',card=>{ + if(get.event('goon')) return 20-get.value(card); + return 1-get.value(card); + }).set('goon',get.attitude(target,player)>0); } 'step 2' if(!result.bool){ target.addMark('dcjizhong',1); } + else{ + target.give(result.cards,player); + } }, marktext:'信', intro:{ @@ -2035,8 +2049,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, forced:true, content:function(){ - player.loseHp(); player.draw(2); + player.loseHp(); } }, //董绾 @@ -11291,11 +11305,11 @@ game.import('character',function(lib,game,ui,get,ai,_status){ dcmoyu_info:'出牌阶段每名角色限一次。你可以获得一名其他角色区域里的一张牌,然后其可以对你使用一张无距离限制的【杀】,且此【杀】伤害基数为X(X为你于本回合发动此技能的次数)。若此【杀】对你造成了伤害,你令此技能于本回合失效。', zhangchu:'张楚', dcjizhong:'集众', - dcjizhong_info:'出牌阶段限一次。你可以令一名其他角色摸两张牌,然后其选择一项:1.若其没有“信众”标记,其获得“信众”标记;2.弃置三张手牌。', + dcjizhong_info:'出牌阶段限一次。你可以令一名其他角色摸两张牌,然后其选择一项:1.若其没有“信众”标记,其获得“信众”标记;2.交给你三张手牌。', dcrihui:'日彗', dcrihui_info:'每回合限一次。当你使用普通锦囊牌或黑色基本牌结算结束后,若此牌的目标数为1且目标不为你,且其:没有“信众”,则所有有“信众”的角色依次视为对其使用一张与此牌牌名和属性相同的牌;有“信众”,则你可以获得其区域里的一张牌。', dcguangshi:'光噬', - dcguangshi_info:'锁定技。准备阶段,若所有其他角色均有“信众”,你失去1点体力并摸两张牌。', + dcguangshi_info:'锁定技。准备阶段,若所有其他角色均有“信众”,你摸两张牌并失去1点体力。', dongwan:'董绾', dcshengdu:'生妒', dcshengdu_info:'回合开始时,你可以选择一名其他角色。当其于其的下个摸牌阶段得到牌后,你摸等量的牌。', @@ -11344,9 +11358,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){ yue_zhoufei_prefix:'乐', dclingkong:'灵箜', dclingkong_tag:'箜篌', - dclingkong_info:'锁定技。①游戏开始时,你将所有手牌标记为“箜篌”。②你的“箜篌”牌不计入手牌上限。③当你于回合外获得牌后,系统随机将其中的一张牌标记为“箜篌”。', + dclingkong_info:'锁定技。①游戏开始时,你将所有手牌标记为“箜篌”。②你的“箜篌”牌不计入手牌上限。③当你于一回合内首次于摸牌阶段外得到牌后,系统随机将其中的一张牌标记为“箜篌”。', dcxianshu:'贤淑', - dcxianshu_info:'出牌阶段,你可以将一张“箜篌”正面向上交给一名其他角色。若此牌为红色,且该角色的体力值不大于你,则其回复1点体力;若此牌为黑色,且该角色的体力值不小于你,则其失去1点体力。此技能结算完成后,你摸X张牌(X为你与其的体力值之差且至多为5)。', + dcxianshu_info:'出牌阶段,你可以将一张“箜篌”正面向上交给一名其他角色,然后你摸X张牌(X为你与其的体力值之差且至多为5)。若此牌为红色,且该角色的体力值不大于你,则其回复1点体力;若此牌为黑色,且该角色的体力值不小于你,则其失去1点体力。', dc_zhangmancheng:'张曼成', dclvecheng:'掠城', dclvecheng_info:'出牌阶段限一次。你可以选择一名其他角色,你于本回合对其使用当前手牌中的【杀】无任何次数限制。然后回合结束时,其展示所有手牌,若其中有【杀】,其可以选择对你依次使用其中所有的【杀】。', diff --git a/character/xianding.js b/character/xianding.js index 8334d7239..284da0d6f 100644 --- a/character/xianding.js +++ b/character/xianding.js @@ -4197,7 +4197,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ 'step 1' var check=0; if(player.hasHistory('gain',evt=>{ - return evt.getParent(2)==event&&evt.cards.length>=2; + return evt.getParent(2)==event&&evt.cards.length>=3; })) check|=1; if(game.getGlobalHistory('changeHp',evt=>{ return evt.getParent().name=='recover'&&evt.getParent(2)==event; @@ -4223,7 +4223,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, content:function(){ if((player.storage.dcxinyou_effect&1)>0) player.loseHp(); - if((player.storage.dcxinyou_effect&2)>0) player.chooseToDiscard('心幽:弃置两张牌',2,true,'he'); + if((player.storage.dcxinyou_effect&2)>0) player.chooseToDiscard('心幽:请弃置一张牌',1,true,'he'); } } } @@ -4547,43 +4547,40 @@ game.import('character',function(lib,game,ui,get,ai,_status){ direct:true, content:function(){ 'step 0' - if(lib.skill.dcjinjie.hasPhase(player)){ - player.chooseBool(get.prompt('dcjinjie',trigger.player),'令其摸一张牌').set('ai',()=>{ - return get.attitude(_status.event.player,_status.event.getTrigger().player)>0; - }); - } - else{ - var num=0; - var history=player.actionHistory; - for(var i=history.length-1;i>=0;i--){ - for(var evt of history[i].useSkill){ - if(evt.skill=='dcjinjie') num++; - } - if(history[i].isRound) break; - } - if(num==0){ - player.chooseBool(get.prompt('dcjinjie',trigger.player),'令其回复1点体力').set('ai',()=>{ - var player=_status.event.player; - return get.effect(_status.event.getTrigger().player,{name:'tao'},player,player)>0; - }); - } - else{ - player.chooseToDiscard(get.prompt('dcjinjie',trigger.player),'弃置'+get.cnNumber(num)+'张牌,令其回复1点体力','he',num).set('ai',card=>{ - if(_status.event.eff>0) return get.value({name:'tao'})-get.value(card); - return 0; - }).set('eff',get.effect(trigger.player,{name:'tao'},player,player)).set('logSkill',['dcjinjie',trigger.player]); - } - event.goto(2); - } + player.chooseBool(get.prompt('dcjinjie',trigger.player),'令其摸一张牌').set('ai',()=>{ + return get.attitude(_status.event.player,_status.event.getTrigger().player)>0; + }); 'step 1' if(result.bool){ player.logSkill('dcjinjie',trigger.player); trigger.player.draw(); } - event.finish(); + else event.finish(); + if(lib.skill.dcjinjie.hasPhase(player)) event.finish(); 'step 2' + var num=0; + var history=player.actionHistory; + for(var i=history.length-1;i>=0;i--){ + for(var evt of history[i].useSkill){ + if(evt.skill=='dcjinjie') num++; + } + if(history[i].isRound) break; + } + if(num==0){ + player.chooseBool(get.prompt('dcjinjie',trigger.player),'令其回复1点体力').set('ai',()=>{ + var player=_status.event.player; + return get.effect(_status.event.getTrigger().player,{name:'tao'},player,player)>0; + }); + } + else{ + player.chooseToDiscard(get.prompt('dcjinjie',trigger.player),'弃置'+get.cnNumber(num)+'张牌,令其回复1点体力','he',num).set('ai',card=>{ + if(_status.event.eff>0) return get.value({name:'tao'})-get.value(card); + return 0; + }).set('eff',get.effect(trigger.player,{name:'tao'},player,player)); + } + 'step 3' if(result.bool){ - if(!result.cards||!result.cards.length) player.logSkill('dcjinjie',trigger.player); + player.line(trigger.player,'green'); trigger.player.recover(); } }, @@ -4593,12 +4590,12 @@ game.import('character',function(lib,game,ui,get,ai,_status){ trigger:{player:'phaseZhunbeiBegin'}, direct:true, filter:function(event,player){ - return game.hasPlayer(current=>current.isHealthy()&&player.canUse('sha',current,false)); + return game.hasPlayer(current=>(current.getHp()>player.getHp()||current.countCards('h')>player.countCards('h'))&&player.canUse('sha',current,false)); }, content:function(){ 'step 0' - player.chooseTarget(get.prompt('dcjue'),'视为对一名未受伤的角色使用一张【杀】',(card,player,target)=>{ - return player.canUse('sha',target,false)&&target.isHealthy(); + player.chooseTarget(get.prompt('dcjue'),'视为对一名体力值或手牌数大于你的角色使用一张【杀】',(card,player,target)=>{ + return player.canUse('sha',target,false)&&(target.getHp()>player.getHp()||target.countCards('h')>player.countCards('h')); }).set('ai',target=>{ return get.effect(target,{name:'sha'},_status.event.player); }); @@ -13155,7 +13152,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ dczhaohan:'昭汉', dczhaohan_info:'摸牌阶段,你可以多摸两张牌,然后你于得到牌后选择一项:1.将两张手牌交给一名没有手牌的角色;2.弃置两张手牌。', dcjinjie:'尽节', - dcjinjie_info:'当一名角色进入濒死状态时,若你本轮:进行过回合,你可以令其摸一张牌;未进行过回合,你可以弃置X张手牌令其回复1点体力(X为本轮你发动过〖尽节〗的次数)。', + dcjinjie_info:'当一名角色进入濒死状态时,可以令其摸一张牌。然后若你本轮未进行过回合,你可以弃置X张手牌令其回复1点体力(X为本轮你发动过〖尽节〗的次数)。', dcjue:'举讹', dcjue_info:'准备阶段,你可以视为对一名未受伤的角色使用一张【杀】。', dc_tengfanglan:'滕芳兰', @@ -13167,7 +13164,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ dcyuandi:'元嫡', dcyuandi_info:'当其他角色于其出牌阶段使用第一张牌时,若此牌仅指定其为目标,你可以选择一项:1.弃置其一张手牌;2.你与其各摸一张牌。', dcxinyou:'心幽', - dcxinyou_info:'出牌阶段限一次。你可以将体力回复至上限并将手牌补至体力上限。若你以此法:获得了至少两张牌,你于结束阶段失去1点体力;回复了体力,你于结束阶段弃置两张牌。', + dcxinyou_info:'出牌阶段限一次。你可以将体力回复至上限并将手牌补至体力上限。若你以此法:获得了至少三张牌,你于结束阶段失去1点体力;回复了体力,你于结束阶段弃置一张牌。', zerong:'笮融', dccansi:'残肆', dccansi_info:'锁定技。准备阶段,你回复1点体力,然后选择一名其他角色,其回复1点体力,你视为对其依次使用以下能使用的牌:【杀】(无距离限制)、【决斗】、【火攻】。当其以此法受到1点伤害后,你摸两张牌。',