From 0aa848735ed253091d8d765148354b2a8663f4f4 Mon Sep 17 00:00:00 2001 From: copcap Date: Sun, 25 Feb 2024 02:05:11 +0800 Subject: [PATCH] =?UTF-8?q?=E8=92=8B=E6=B5=8E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- character/huicui.js | 190 ++++++++++++++++++++++++++++++++++++++++++++ character/mobile.js | 3 +- character/tw.js | 2 +- 3 files changed, 193 insertions(+), 2 deletions(-) diff --git a/character/huicui.js b/character/huicui.js index 310351f27..ba9162756 100644 --- a/character/huicui.js +++ b/character/huicui.js @@ -4,6 +4,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ name:'huicui', connect:true, character:{ + dc_jiangji:['male','wei',3,['dcshiju','dcyingshi']], gongsunxiu:['male','qun',4,['dcgangu','dckuizhen']], dc_liuli:['male','shu',3,['dcfuli','dcdehua']], yue_daqiao:['female','wu',3,['dcqiqin','dczixi']], @@ -115,10 +116,181 @@ game.import('character',function(lib,game,ui,get,ai,_status){ sp_raoting:['dc_huanghao','dc_sunziliufang','dc_sunchen','dc_jiachong'], sp_yijun:['gongsundu','mengyou','dc_sp_menghuo','gongsunxiu'], sp_zhengyin:['yue_caiwenji','yue_zhoufei','yue_caiyong','yue_xiaoqiao','yue_daqiao'], + sp_zhonghu:['dc_jiangji'], } }, /** @type { importCharacterConfig['skill'] } */ skill:{ + //蒋济 + dcshiju:{ + audio:2, + global:'dcshiju_global', + subSkill:{ + global:{ + audio:'dcshiju', + enable:'phaseUse', + usable:1, + filter(event,player){ + return game.hasPlayer(current=>{ + if(current==player||!current.hasSkill('dcshiju')) return false; + return player.countCards('he'); + }); + }, + filterTarget(card,player,target){ + return target!=player&&target.hasSkill('dcshiju'); + }, + selectTarget(){ + const num=game.countPlayer(current=>{ + return current.hasSkill('dcshiju'); + }); + return num>1?1:-1; + }, + filterCard:true, + position:'he', + check(card){ + const player=get.player(); + if(get.type(card)==='equip'){ + if(player.countCards('he',{subtype:get.subtype(card)})>1){ + return 11-get.equipValue(card); + } + return 6-get.value(card); + } + return 4-get.value(card); + }, + prompt(){ + const list=game.filterPlayer(current=>{ + return current.hasSkill('dcshiju'); + }); + return `将一张牌交给${get.translation(list)}${list.length>1?'中的一人':''},若此牌为装备牌,其可以使用之,且你本回合的攻击范围+X(X为其装备区的牌数)。若其以此法替换了装备,你与其各摸两张牌。`; + }, + discard:false, + lose:false, + prepare(cards,player,targets){ + player.$give(cards,targets[0],false); + }, + async content(event,trigger,player){ + const card=event.cards[0],target=event.target; + await player.give(card,target); + if(!target.getCards('h').includes(card)||get.type(card)!=='equip') return; + const bool=await target.chooseUseTarget(card).forResultBool(); + if(!bool) return; + const count=target.countCards('e'); + if(count>0){ + player.addTempSkill('dcshiju_range'); + player.addMark('dcshiju_range',count); + if(target.hasHistory('lose',evt=>{ + return evt.getParent().name==='equip'&&evt.getParent(4)===event&&evt.es&&evt.es.length>0; + })){ + for(const current of [player,target]) await current.draw(2); + } + } + }, + ai:{ + order:10, + result:{ + target(player,target){ + const card=ui.selected.cards[0]; + if(card&&get.type(card)!=='equip') return get.value(card,target)/5; + return 0; + }, + }, + }, + }, + range:{ + charlotte:true, + onremove:true, + mod:{ + attackRange:function(player,num){ + return num+player.countMark('dcshiju_range'); + }, + }, + intro:{content:'本回合攻击范围+#'}, + }, + }, + }, + dcyingshi:{ + audio:2, + trigger:{player:'useCardToPlayered'}, + filter(event,player){ + if(!event.isFirstTarget) return false; + if(get.type(event.card)!=='trick') return false; + const evt=event.getParent(); + const evts=game.getGlobalHistory('useCard',null,evt).slice().remove(evt); + return event.targets.some(target=>{ + return evts.some(evt=>evt.targets.includes(target)); + }); + }, + costContent(event,player){ + const evt=event.getParent(); + const evts=game.getGlobalHistory('useCard',null,evt).slice().remove(evt); + const targets=event.targets.filter(target=>{ + return evts.some(evt=>evt.targets.includes(target)); + }); + return player.chooseTarget() + .set('filterTarget',(card,player,target)=>{ + return get.event('targets').includes(target); + }) + .set('targets',targets) + .set('toFriends',(()=>{ + if(player.hasSkill('dcyingshi_choice1')||player.countCards('e')<2) return true; + if(!player.hasSkill('dcyingshi_choice1')&&get.tag(event.card,'norepeat')) return true; + if(targets.some(current=>{ + return get.effect(current,event.card,event.player,player)>0; + })) return true; + return false; + })()) + .set('ai',target=>{ + const player=get.player(),count=player.countCards('e'),att=get.attitude(player,target); + if(att>0&&get.event('toFriends')){ + if(target.countCards('he',card=>get.value(card)<5)!player.hasSkill(`dcyingshi_choice${i}`))){ + const count=player.countCards('e'); + if(count>0){ + bool=await target.chooseToDiscard(`${get.translation(player)}对你发动了【应时】`,`是否弃置${get.cnNumber(count)}张牌,令${get.translation(trigger.card)}对你无效?或点击“取消”,令此牌对你额外结算一次。`,count).set('ai',card=>{ + if(get.event('goon')) return 5.5-get.value(card); + return 0; + }).set('goon',!get.tag(trigger.card,'norepeat')&&get.effect(target,trigger.card,trigger.player,target)<-5).forResultBool(); + } + else bool=false; + } + else bool=player.hasSkill('dcyingshi_choice1'); + if(bool){ + trigger.excluded.add(target); + } + else{ + player.when({global:'useCardAfter'}) + .filter(evt=>evt===trigger.getParent()) + .vars({ + targetx:target, + cardx:{ + name:trigger.card.name, + nature:trigger.card.nature, + isCard:true, + storage:{dcyingshi:true}, + }, + }) + .then(()=>{ + const next=player.useCard(get.copy(cardx),targetx,false); + if(trigger.addedTarget) next.addedTarget=trigger.addedTarget; + if(trigger.addedTargets&&trigger.addedTargets.length) next.addedTargets=trigger.addedTargets.slice(0); + }); + } + player.addTempSkill(`dcyingshi_choice${bool+1}`); + }, + subSkill:{ + choice1:{charlotte:true}, + choice2:{charlotte:true}, + }, + }, //公孙修 dcgangu:{ audio:2, @@ -165,6 +337,18 @@ game.import('character',function(lib,game,ui,get,ai,_status){ await target.loseHp(); } }, + ai:{ + result:{ + target(player,target){ + const [juedouEff,loseEff]=[ + get.effect(player,{name:'juedou'},target,player), + get.effect(target,{name:'losehp'},target,player) + ]; + if(juedouEff>0) return loseEff*get.attitude(player,target)/10; + return 0; + }, + } + }, subSkill:{ effect:{ trigger:{player:'useCard1'}, @@ -12195,6 +12379,11 @@ game.import('character',function(lib,game,ui,get,ai,_status){ dcgangu_info:'锁定技。每回合限一次。当其他角色失去体力后,你摸两张牌,然后失去1点体力。', dckuizhen:'溃阵', dckuizhen_info:'出牌阶段限一次。你可以令一名手牌数或体力值大于你的角色视为对你使用一张【决斗】。若你:受到渠道为此牌的伤害,你观看其手牌并获得其中所有的【杀】(你使用以此法得到的牌无任何次数限制);未受到渠道为此牌的伤害,其失去1点体力。', + dc_jiangji:'蒋济', + dcshiju:'势举', + dcshiju_info:'其他角色的出牌阶段限一次。其可以交给你一张牌,若此牌为装备牌,你可以使用之,然后其本回合攻击范围+X(X为你装备区里的牌数)。若你以此法替换了装备,你与其各摸两张牌。', + dcyingshi:'应时', + dcyingshi_info:'每回合每项各限一次。当你使用普通锦囊牌指定第一个目标后,若有目标不为本回合第一次成为牌的目标,则你可以令其选择一项:⒈令你于此牌结算结束后视为对其使用一张与此牌牌名相同的牌;⒉弃置X张牌,此牌对其无效(X为你装备区里的牌数)。', sp_baigei:'无双上将', sp_caizijiaren:'才子佳人', @@ -12209,6 +12398,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ sp_raoting:'绕庭之鸦', sp_yijun:'异军突起', sp_zhengyin:'正音雅乐', + sp_zhonghu:'冢虎狼顾', }, }; }); diff --git a/character/mobile.js b/character/mobile.js index d9dee83bb..652b866dc 100644 --- a/character/mobile.js +++ b/character/mobile.js @@ -16472,7 +16472,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){ mutao_info:'出牌阶段限一次。你可以选择一名角色,令其将手牌中所有的【杀】置于武将牌上,然后将这些牌依次随机交给其下家开始的每一名角色。然后其对最后一名以此法获得【杀】的角色A造成X点伤害(X为A手牌中【杀】的数量且至多为2)。', yimou:'毅谋', yimou_info:'当一名角色受到伤害后,若其存活且你至其的距离不大于1,你可以选择一项:1.令其从牌堆中获得一张【杀】;2.令其将一张手牌交给另一名角色,然后摸一张牌。', - jiangji:'蒋济', + jiangji:'手杀蒋济', + jiangji_prefix:'手杀', jilun:'机论', jilun_info:'①当你受到伤害后,若你拥有技能〖急筹〗,则你可以一项:1.摸两张牌。2.获得1枚“机论”标记。②一名角色的结束阶段,若你拥有“机论”,则重复选择执行以下项直到你没有“机论”标记:1.失去1枚“机论”标记,视为使用一张〖急筹①〗记录过且未被〖机论②〗记录过的普通锦囊牌并记录此牌牌名。2.失去所有“机论”标记。', liwei:'李遗', diff --git a/character/tw.js b/character/tw.js index 9b2018ad3..fd0adc832 100644 --- a/character/tw.js +++ b/character/tw.js @@ -15338,7 +15338,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ tw_caocao:['tw_caocao','jsrg_caocao','yj_caocao'], mateng:['tw_mateng','mateng'], xiahouen:['tw_xiahouen','jsrg_xiahouen'], - jiangji:['tw_jiangji','jiangji'], + jiangji:['dc_jiangji','tw_jiangji','jiangji'], baoxin:['tw_baoxin','baoxin'], yanxiang:['yanxiang','tw_yanxiang'], liwei:['liwei','tw_liwei'],