From 7a0d602a684d0ca992dd659508197cbf5f522708 Mon Sep 17 00:00:00 2001 From: copcap Date: Wed, 13 Sep 2023 17:18:29 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B1=9F=E5=B1=B1=E5=A6=82=E6=95=85=C2=B7?= =?UTF-8?q?=E8=B5=B7=E5=8C=85=E8=B0=83=E6=95=B4=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- character/jsrg.js | 107 ++++++++++++++++++++++++---------------------- 1 file changed, 57 insertions(+), 50 deletions(-) diff --git a/character/jsrg.js b/character/jsrg.js index 45e5307c5..e3f27b1b3 100644 --- a/character/jsrg.js +++ b/character/jsrg.js @@ -2358,15 +2358,34 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, jsrgjuelie:{ audio:2, - trigger:{source:'damageBegin1'}, + trigger:{player:'useCardToPlayered'}, filter:function(event,player){ - return event.card&&event.card.name=='sha'&&event.getParent().type=='card'&&(player.isMinHandcard()||player.isMinHp()); + return player.countCards('he')&&event.card.name=='sha'; }, - forced:true, - locked:false, - group:'jsrgjuelie_discard', + direct:true, content:function(){ - trigger.num++; + 'step 0' + player.chooseToDiscard(get.prompt('jsrgjuelie',trigger.target),'当你使用【杀】指定一名角色为目标后,你可以弃置任意张牌,然后弃置其等量的牌',[1,Infinity],'he').set('ai',card=>{ + if(ui.selected.cards.length>=_status.event.max) return 0; + if(_status.event.goon) return 4.5-get.value(card); + return 0; + }).set('max',trigger.target.countDiscardableCards(player,'he')).set('goon',get.attitude(player,trigger.target)<0).set('logSkill',['jsrgjuelie_discard',trigger.target]); + 'step 1' + if(result.bool){ + var num=result.cards.length; + if(trigger.target.countDiscardableCards(player,'he')) player.discardPlayerCard('平讨:弃置'+get.translation(trigger.target)+get.cnNumber(num)+'张牌',num,'he',trigger.target,true); + } + else event.finish(); + 'step 2' + if(player.isMinHandcard()||player.isMinHp()){ + var id=trigger.target.playerid; + var map=trigger.getParent().customArgs; + if(!map[id]) map[id]={}; + if(typeof map[id].extraDamage!='number'){ + map[id].extraDamage=0; + } + map[id].extraDamage++; + } }, shaRelated:true, ai:{ @@ -2380,29 +2399,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }); }, }, - subSkill:{ - discard:{ - audio:'jsrgjuelie', - trigger:{player:'useCardToPlayered'}, - filter:function(event,player){ - return player.countCards('he')&&event.card.name=='sha'; - }, - direct:true, - content:function(){ - 'step 0' - player.chooseToDiscard(get.prompt('jsrgjuelie',trigger.target),'当你使用【杀】指定一名角色为目标后,你可以弃置任意张牌,然后弃置其等量的牌',[1,Infinity],'he').set('ai',card=>{ - if(ui.selected.cards.length>=_status.event.max) return 0; - if(_status.event.goon) return 4.5-get.value(card); - return 0; - }).set('max',trigger.target.countDiscardableCards(player,'he')).set('goon',get.attitude(player,trigger.target)<0).set('logSkill',['jsrgjuelie_discard',trigger.target]); - 'step 1' - if(result.bool){ - var num=result.cards.length; - if(trigger.target.countDiscardableCards(player,'he')) player.discardPlayerCard('平讨:弃置'+get.translation(trigger.target)+get.cnNumber(num)+'张牌',num,'he',trigger.target,true); - } - } - } - } }, //皇甫嵩 jsrgguanhuo:{ @@ -3039,7 +3035,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ audio:'zhaohan', trigger:{player:'phaseZhunbeiBegin'}, forced:true, - locked:false, + //locked:false, filter:function(event,player){ if(game.shuffleNumber==0) return player.isDamaged(); return true; @@ -3291,7 +3287,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ target.addTempSkill('jsrgfendi_blocker'); player.addTempSkill('jsrgfendi_gain'); if(!trigger.card.storage) trigger.card.storage={}; - trigger.card.storage.jsrgfendi=true; + trigger.card.storage.jsrgfendi=cards.slice(); player.storage.jsrgfendi_gain=target; } else player.storage.counttrigger.jsrgfendi--; @@ -3335,16 +3331,24 @@ game.import('character',function(lib,game,ui,get,ai,_status){ direct:true, onremove:true, filter:function(event,player){ + if(!event.card||!event.card.storage) return false; + var cards=event.card.storage.jsrgfendi; var target=player.storage.jsrgfendi_gain; - return event.card&&event.card.storage&&event.card.storage.jsrgfendi&&target&&target.isIn()&&target.hasCard(card=>{ - return card.hasGaintag('jsrgfendi_tag'); - },'h'); + if(!cards||!target||!target.isIn()) return false; + var cardsx=target.getCards('h'); + cardsx.addArray(Array.from(ui.discardPile)); + return cards.some(i=>cardsx.contains(i)); + //target.hasCard(card=>{ + // return card.hasGaintag('jsrgfendi_tag'); + //},'h'); }, content:function(){ - player.logSkill('jsrgfendi_gain',player.storage.jsrgfendi_gain); - player.gain(player.storage.jsrgfendi_gain.getCards('h',card=>{ - return card.hasGaintag('jsrgfendi_tag'); - }),'give'); + var target=player.storage.jsrgfendi_gain; + player.logSkill('jsrgfendi_gain',target); + var cardsx=target.getCards('h'); + cardsx.addArray(Array.from(ui.discardPile)); + var cards=trigger.card.storage.jsrgfendi.filter(i=>cardsx.contains(i)); + player.gain(cards,'give'); } } } @@ -3735,7 +3739,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }); if(!targets.length) event.finish(); else if(targets.length<=num) event._result={bool:true,targets:targets}; - else player.chooseTarget('令'+get.cnNumber(num)+'名角色获得“猎”标记',true,num,(card,player,target)=>{ + else player.chooseTarget('令'+(num>1?'至多':'')+get.cnNumber(num)+'名角色获得“猎”标记',true,[1,num],(card,player,target)=>{ return !target.hasMark('jsrgzhenglve_mark'); }).set('ai',target=>{ var att=get.attitude(_status.event.player,target); @@ -3852,12 +3856,15 @@ game.import('character',function(lib,game,ui,get,ai,_status){ jsrgshoushu:{ audio:2, forced:true, - trigger:{global:'roundStart'}, + trigger:{ + player:'enterGame', + global:'phaseBefore', + }, filter:function(event,player){ - return !game.hasPlayer(function(current){ - return current.countCards('hejsx','taipingyaoshu'); - })&&!Array.from(ui.cardPile.childNodes).concat(Array.from(ui.discardPile.childNodes)) - .concat(Array.from(ui.ordering.childNodes)).map(i=>i.name).contains('taipingyaoshu'); + if(game.hasPlayer(function(current){ + return current.countCards('hej','taipingyaoshu'); + })) return false; + return event.name!='phase'||game.phaseNumber==0; }, direct:true, group:'jsrgshoushu_destroy', @@ -4109,7 +4116,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ jsrgpingtao:'平讨', jsrgpingtao_info:'出牌阶段限一次。你可以令一名其他角色选择一项:1.交给你一张牌,然后你于此回合使用【杀】的次数上限+1;2.令你视为对其使用一张【杀】。', jsrgjuelie:'绝烈', - jsrgjuelie_info:'①当你造成渠道为【杀】的伤害时,若你的手牌数或体力值最小,此伤害+1。②当你使用【杀】指定一名角色为目标后,你可以弃置任意张牌,然后弃置其等量的牌。', + jsrgjuelie_info:'当你使用【杀】指定一名角色为目标后,你可以弃置任意张牌并弃置其等量的牌,然后若你的手牌数或体力值最小,此【杀】对其的伤害基数+1。', jsrg_huangfusong:'起皇甫嵩', jsrg_huangfusong_ab:'皇甫嵩', jsrgguanhuo:'观火', @@ -4137,7 +4144,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ jsrg_yangbiao:'起杨彪', jsrg_yangbiao_ab:'杨彪', jsrgzhaohan:'昭汉', - jsrgzhaohan_info:'准备阶段,若本局游戏:未洗过牌,你回复1点体力;洗过牌,你失去1点体力。', + jsrgzhaohan_info:'锁定技。准备阶段,若本局游戏:未洗过牌,你回复1点体力;洗过牌,你失去1点体力。', jsrgrangjie:'让节', jsrgrangjie_info:'当你受到1点伤害后,你可以移动场上的一张牌,然后你可以于弃牌堆中选择获得一张本回合进入弃牌堆且与此牌花色相同的牌。', jsrgyizheng:'义争', @@ -4152,7 +4159,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ jsrg_zhujun_ab:'朱儁', jsrgfendi:'分敌', jsrgfendi_tag:'分敌', - jsrgfendi_info:'每回合限一次。当你使用【杀】指定唯一目标后,你可以展示其任意张手牌,令其不能使用或打出对应实体牌不全为这些牌的牌直到此【杀】结算结束。然后当此【杀】对其造成伤害后,你获得这些牌。', + jsrgfendi_info:'每回合限一次。当你使用【杀】指定唯一目标后,你可以展示其任意张手牌,令其不能使用或打出对应实体牌不全为这些牌的牌直到此【杀】结算结束。然后当此【杀】对其造成伤害后,你于其手牌区或弃牌堆获得这些牌。', jsrgjuxiang:'拒降', jsrgjuxiang_info:'当你不于摸牌阶段得到牌后,你可以弃置之,令当前回合角色于此回合额定的出牌阶段内使用【杀】的次数上限+X(X为你以此法弃置的牌的花色数)。', jsrg_liubei:'起刘备', @@ -4170,13 +4177,13 @@ game.import('character',function(lib,game,ui,get,ai,_status){ jsrg_liuyan:'起刘焉', jsrg_liuyan_ab:'刘焉', jsrgtushe:'图射', - jsrgtushe_info:'当你使用非装备牌指定目标后,你可以展示所有手牌。若你没有基本牌,你可以摸X张牌(X为此牌指定的目标数)。', + jsrgtushe_info:'当你使用非装备牌指定目标后,你可以展示所有手牌(无牌则不展示)。若你没有基本牌,你可以摸X张牌(X为此牌指定的目标数)。', jsrgtongjue:'通绝', jsrgtongjue_info:'主公技。出牌阶段限一次。你可以将任意张牌交给等量名其他群势力角色。然后你不能使用牌指定这些角色为目标直到回合结束。', jsrg_caocao:'起曹操', jsrg_caocao_ab:'曹操', jsrgzhenglve:'政略', - jsrgzhenglve_info:'①主公的回合结束时,你可以摸一张牌,然后令一名没有“猎”标记的角色获得“猎”(若主公本回合没有造成过伤害,则改为两名)。②你对有“猎”的角色使用牌无距离和次数限制。③每回合限一次。当你对有“猎”的角色造成伤害后,你可以摸一张牌并获得造成此伤害的牌。', + jsrgzhenglve_info:'①主公的回合结束时,你可以摸一张牌,然后令一名没有“猎”标记的角色获得“猎”(若主公本回合没有造成过伤害,则改为至多两名)。②你对有“猎”的角色使用牌无距离和次数限制。③每回合限一次。当你对有“猎”的角色造成伤害后,你可以摸一张牌并获得造成此伤害的牌。', jsrghuilie:'会猎', jsrghuilie_info:'觉醒技。准备阶段,若有“猎”的角色数大于2,你减1点体力上限,然后获得〖平戎〗和〖飞影〗。', jsrgpingrong:'平戎', @@ -4184,7 +4191,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ jsrg_nanhualaoxian:'起南华老仙', jsrg_nanhualaoxian_ab:'南华老仙', jsrgshoushu:'授术', - jsrgshoushu_info:'锁定技。①每轮开始时,若游戏内没有【太平要术】,你可以从游戏外将【太平要术】置于一名角色的装备区内。②当【太平要术】离开一名角色的装备区后,你令此牌销毁。', + jsrgshoushu_info:'锁定技。①游戏开始时,若场上没有【太平要术】,你可以从游戏外将【太平要术】置于一名角色的装备区内。②当【太平要术】离开一名角色的装备区后,你令此牌销毁。', jsrgxundao:'寻道', jsrgxundao_info:'当你的判定牌生效前,你可以令至多两名角色依次弃置一张牌,然后你选择一张以此法弃置且位于弃牌堆中的牌代替此判定牌。', jsrglinghua:'灵化',