From fe49afeee6d146f7d503130fc04d180436986616 Mon Sep 17 00:00:00 2001 From: copcap Date: Wed, 7 Feb 2024 01:02:26 +0800 Subject: [PATCH] =?UTF-8?q?=E5=88=98=E7=90=86=E5=BE=AE=E8=B0=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- character/huicui.js | 53 +++++++++++++++++++++++++-------------------- 1 file changed, 30 insertions(+), 23 deletions(-) diff --git a/character/huicui.js b/character/huicui.js index 2a0d86b01..ace0bb41f 100644 --- a/character/huicui.js +++ b/character/huicui.js @@ -127,32 +127,32 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, async content(event,trigger,player){ await player.showHandcards(get.translation(player)+'发动了【抚黎】'); + const getNum=(type)=>{ + let num=['basic','trick','equip'].indexOf(type); + if(num===-1) num=3; + return num; + }; const types=player.getDiscardableCards(player,'h').filter(card=>{ return !player.getStorage('dcfuli').includes(get.type2(card)); }).reduce((list,card)=>list.add(get.type2(card)),[]).sort((a,b)=>{ - const getNum=(type)=>{ - let num=['basic','trick','equip'].indexOf(type); - if(num==-1) num=3; - return num; - }; return getNum(a)-getNum(b); }); if(types.length){ const {result:{control}}=await player.chooseControl(types).set('ai',()=>{ const player=get.event('player'),types=get.event('controls').slice(); - return types.sort((a,b)=>{ - const getNum=(type)=>{ - const cards=player.getDiscardableCards(player,'h').filter(card=>get.type2(card)==type); - const countCards=(target,player,cards)=>{ - return target.countCards('h')-(target==player?cards.length:0); - }; - const max=game.findPlayer(target=>{ - return !game.hasPlayer(target2=>{ - return countCards(target2,player,cards)>countCards(target,player,cards); - }); - }).countCards('h'); - return Math.min(max,cards.reduce((sum,card)=>sum+get.cardNameLength(card),0))/cards.length; + const getNum=(type)=>{ + const cards=player.getDiscardableCards(player,'h').filter(card=>get.type2(card)==type); + const countCards=(target,player,cards)=>{ + return target.countCards('h')-(target==player?cards.length:0); }; + const max=game.findPlayer(target=>{ + return !game.hasPlayer(target2=>{ + return countCards(target2,player,cards)>countCards(target,player,cards); + }); + }).countCards('h'); + return Math.min(max,cards.reduce((sum,card)=>sum+get.cardNameLength(card),0))/cards.length; + }; + return types.sort((a,b)=>{ return getNum(b)-getNum(a); })[0]; }).set('prompt','弃置一种类别的所有手牌,然后摸这些牌的名字字数之和的牌'); @@ -177,7 +177,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ player.line(target); target.addSkill('dcfuli_range'); target.addMark('dcfuli_range',1,false); - player.when('phaseBegin').then(()=>{ + player.when(['phaseBegin','dieBegin']).then(()=>{ target.removeMark('dcfuli_range',1,false); if(!target.hasMark('dcfuli_range')) target.removeSkill('dcfuli_range'); }).vars({target:target}); @@ -226,12 +226,19 @@ game.import('character',function(lib,game,ui,get,ai,_status){ forced:true, async content(event,trigger,player){ const list=lib.inpile.filter(name=>{ - if(name=='shandian') return false; + if(get.type(name)==='delay') return false; const card=new lib.element.VCard({name:name}); return get.tag(card,'damage')&&player.hasUseTarget(card); }); if(list.length){ - const {result:{bool,links}}=await player.chooseButton(['###德化###
视为使用一张仍可以使用的伤害类卡牌
',[list,'vcard']],true).set('ai',button=>get.event('player').getUseValue({name:button.link[2]},null,true)); + const {result:{bool,links}}=await player.chooseButton(['###德化###
视为使用一张仍可以使用的伤害类卡牌
',[list,'vcard']],true).set('ai',button=>{ + const name=button.link[2],player=get.player(); + let value=player.getUseValue({name,isCard:true},null,true); + if(player.countCards('h',card=>get.name(card)===name&&player.hasUseTarget(card))) value/=3; + if(name==='sha') value/=2; + if(player.getStorage('dcdehua').includes('sha')) value=Math.max(0.1,value); + return value; + }); if(bool){ const name=links[0][2],card=new lib.element.VCard({name:name}); await player.chooseUseTarget(card,true); @@ -239,7 +246,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ } } if(!lib.inpile.some(name=>{ - if(name=='shandian') return false; + if(get.type(name)==='delay') return false; const card=new lib.element.VCard({name:name}); return get.tag(card,'damage')&&!player.getStorage('dcdehua').includes(name); })) player.removeSkillLog('dcdehua'); @@ -12105,9 +12112,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){ dcshoucheng_info:'一名角色于其回合外失去最后的手牌后,你可令其摸两张牌。', dc_liuli:'刘理', dcfuli:'抚黎', - dcfuli_info:'出牌阶段,你可以展示手牌并弃置一种类别的所有手牌(每种类别每回合限一次),然后摸X张牌(X为这些卡牌的牌名字数和且X至多为场上手牌数最多的角色的手牌数)。若你因此弃置了伤害类卡牌,则你可以选择一名角色,令其攻击范围-1直到你的下个回合开始。', + dcfuli_info:'出牌阶段,你可以展示手牌并弃置一种类别的所有手牌(每种类别每回合限一次),然后摸X张牌(X为这些牌的牌名字数和且X至多为场上手牌数最多的角色的手牌数)。若你因此弃置了伤害类卡牌,则你可以选择一名角色,令其攻击范围-1直到你的下个回合开始。', dcdehua:'德化', - dcdehua_info:'锁定技,一轮游戏开始时,若你有可以使用的伤害类牌牌名,你选择其中一个牌名并视为使用之,然后你不能从手牌中使用此牌名的牌,然后若你已选择过所有的伤害类牌牌名,你失去〖德化〗。', + dcdehua_info:'锁定技。①一轮游戏开始时,若有你可以使用的非延时类伤害类牌的牌名,你选择其中一个并视为使用之,然后你不能从手牌中使用此牌名的牌,然后若你已选择过所有的伤害类牌牌名,你失去〖德化〗。②你的手牌上限+Y(Y为你〖德化①〗选择过的牌名数)。', sp_baigei:'无双上将', sp_caizijiaren:'才子佳人',