From 9c060d92f29048ec343da47580774ee9522efe21 Mon Sep 17 00:00:00 2001 From: copcap Date: Tue, 25 Jul 2023 01:32:15 +0800 Subject: [PATCH] =?UTF-8?q?=E8=94=A1=E7=91=81=E5=BC=A0=E5=85=81=E3=80=81?= =?UTF-8?q?=E6=9D=A8=E5=A9=89=E3=80=81=E8=91=A3=E8=B4=B5=E4=BA=BA=E3=80=81?= =?UTF-8?q?=E9=A9=AC=E6=97=A5=E7=A3=BE=E5=8A=A0=E5=BC=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- character/sp2.js | 126 ++++++++++++++++++++++++++++++++++++++++------- 1 file changed, 109 insertions(+), 17 deletions(-) diff --git a/character/sp2.js b/character/sp2.js index 80be36808..049309c60 100644 --- a/character/sp2.js +++ b/character/sp2.js @@ -7445,6 +7445,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ filter:function(event,player){ return player.getStorage('dclianzhi').contains(event.player); }, + direct:true, content:function(){ 'step 0' var num=Math.max(1,player.countMark('dclingfang')); @@ -7454,6 +7455,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ 'step 1' if(result.bool){ var target=result.targets[0]; + player.logSkill('dclianzhi_reproach',target); player.addSkillLog('dcshouze'); target.addSkillLog('dcshouze'); target.addMark('dclingfang',Math.max(1,player.countMark('dclingfang'))); @@ -7465,10 +7467,12 @@ game.import('character',function(lib,game,ui,get,ai,_status){ dclingfang:{ audio:2, trigger:{ + player:'phaseZhunbeiBegin', global:'useCardAfter', }, forced:true, filter:function(event,player){ + if(event.name!='useCard') return true; if(get.color(event.card)!='black') return false; if(event.player==player) return !event.targets||!event.targets.contains(player); return event.targets&&event.targets.contains(player); @@ -7495,6 +7499,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, hiddenCard:function(player,name){ var list=player.getStorage('dcfengying'); + if(player.getStorage('dcfengying_used').contains(name)) return false; return list.contains(name)&&player.hasCard((card)=>(get.number(card)<=player.countMark('dclingfang')),'hs'); }, chooseButton:{ @@ -7507,7 +7512,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){ return ui.create.dialog('风影',[list,'vcard']); }, filter:function(button,player){ - return _status.event.getParent().filterCard({name:button.link[2],storage:{dcfengying:true}},player,_status.event.getParent()); + var card={name:button.link[2],storage:{dcfengying:true}}; + if(player.getStorage('dcfengying_used').contains(card.name)) return false; + return _status.event.getParent().filterCard(card,player,_status.event.getParent()); }, check:function(button){ var player=_status.event.player; @@ -7536,6 +7543,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ precontent:function(){ player.logSkill('dcfengying'); player.addTempSkill('dcfengying_used'); + player.markAuto('dcfengying_used',[event.result.card.name]); event.getParent().addCount=false; delete event.result.skill; } @@ -7584,7 +7592,13 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }); } }, - used:{charlotte:true} + used:{ + charlotte:true, + onremove:true, + intro:{ + content:'已使用过$', + }, + }, } }, dcshouze:{ @@ -13966,14 +13980,14 @@ game.import('character',function(lib,game,ui,get,ai,_status){ forced:true, content:function(){ var delta=player.countCards('h')-player.hp; - if(delta>0) player.chooseToDiscard('h',3,true); + if(delta>0) player.chooseToDiscard('h',4,true); else if(delta==0){ player.chooseToDiscard('h',true); player.recover(); } else{ player.damage('fire','nosource'); - player.draw(4); + player.draw(5); } }, ai:{halfneg:true}, @@ -16117,7 +16131,13 @@ game.import('character',function(lib,game,ui,get,ai,_status){ return event.target!=player&&(event.card.name=='sha'||get.type(event.card,false)=='trick')&&event.target.countCards('he')>0; }, content:function(){ + 'step 0' trigger.target.chooseToDiscard('he',true); + 'step 1' + if(result.bool&&result.cards.length&&get.color(result.cards[0],trigger.target)==get.color(trigger.card)){ + game.log(trigger.target,'不能响应',trigger.card); + trigger.directHit.push(trigger.target); + } }, }, }, @@ -16136,6 +16156,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, content:function(){ player.gainMaxHp(); + player.recover(); }, }, //冯妤 @@ -20747,17 +20768,67 @@ game.import('character',function(lib,game,ui,get,ai,_status){ //杨婉 youyan:{ audio:2, + // trigger:{ + // player:'loseAfter', + // global:'loseAsyncAfter', + // }, trigger:{ - player:'loseAfter', - global:'loseAsyncAfter', + player:['loseAfter','equipAfter'], + global:['loseAsyncAfter','cardsDiscardAfter'], }, //usable:1, + prompt2:function(event,player){ + var cards2=[]; + if(event.name=='cardsDiscard'){ + var evtx=event.getParent(); + if(evtx.name!='orderingDiscard') return false; + var evtx2=(evtx.relatedEvent||evtx.getParent()); + if(evtx2.name=='useCard'||evtx2.name=='respond') return false; + player.getHistory('lose',evtx3=>{ + var evtx4=evtx3.relatedEvent||evtx3.getParent(); + if(evtx2!=evtx4) return false; + if(!evtx3.cards2||!evtx3.cards2.length) return false; + cards2.addArray(evtx3.cards2.filterInD('d')); + }); + } + else if(event.name=='loseAsync'){ + player.hasHistory('lose',evt=>{ + if(evt.getParent()!=event||evt.position!=ui.discardPile) return false; + cards2.addArray(evt.cards2.filterInD('d')); + }); + } + else{ + cards2.addArray(event.getd(player).filterInD('d')); + } + return '获得与'+get.translation(cards2)+'花色'+(cards2.length>1?'各':'')+'不相同的牌各一张'; + }, filter:function(event,player){ - if(event.type!='discard'||event.getlx===false||player!=_status.currentPhase) return false; - var evt=event.getl(player); - if(!evt||!evt.cards2||!evt.cards2.length) return false; + if(player!=_status.currentPhase) return false; + var cards2=[]; + if(event.name=='cardsDiscard'){ + var evtx=event.getParent(); + if(evtx.name!='orderingDiscard') return false; + var evtx2=(evtx.relatedEvent||evtx.getParent()); + if(evtx2.name=='useCard'||evtx2.name=='respond') return false; + player.getHistory('lose',evtx3=>{ + var evtx4=evtx3.relatedEvent||evtx3.getParent(); + if(evtx2!=evtx4) return false; + if(!evtx3.cards2||!evtx3.cards2.length) return false; + cards2.addArray(evtx3.cards2.filterInD('d')); + }); + } + else if(event.name=='loseAsync'){ + player.hasHistory('lose',evt=>{ + if(evt.getParent()!=event||evt.position!=ui.discardPile) return false; + cards2.addArray(evt.cards2.filterInD('d')); + }); + } + else{ + cards2.addArray(event.getd(player).filterInD('d')); + } + if(!cards2.length) return false; var list=[]; - for(var i of evt.cards2){ + for(var i of cards2){ list.add(get.suit(i,player)); if(list.length>=lib.suit.length) return false; } @@ -20775,7 +20846,28 @@ game.import('character',function(lib,game,ui,get,ai,_status){ if(evt) evt.youyaned=true; } var list=[],cards=[]; - var cards2=trigger.getl(player).cards2; + var cards2=[]; + if(trigger.name=='cardsDiscard'){ + var evtx=trigger.getParent(); + if(evtx.name!='orderingDiscard') return false; + var evtx2=(evtx.relatedEvent||evtx.getParent()); + if(evtx2.name=='useCard'||evtx2.name=='respond') return false; + player.getHistory('lose',evtx3=>{ + var evtx4=evtx3.relatedEvent||evtx3.getParent(); + if(evtx2!=evtx4) return false; + if(!evtx3.cards2||!evtx3.cards2.length) return false; + cards2.addArray(evtx3.cards2.filterInD('d')); + }); + } + else if(trigger.name=='loseAsync'){ + player.hasHistory('lose',evt=>{ + if(evt.getParent()!=trigger||evt.position!=ui.discardPile) return false; + cards2.addArray(evt.cards2.filterInD('d')); + }); + } + else{ + cards2.addArray(trigger.getd(player).filterInD('d')); + } for(var i of cards2){ list.add(get.suit(i,player)); } @@ -30046,7 +30138,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ kangge_info:'当你受到除自己和“抗歌”角色以外的角色造成的伤害时,你可以防止此伤害并选择一种花色,然后你失去X点体力,令“抗歌”角色从弃牌堆中随机获得X张此花色的牌(X为伤害值)。', yangwan:'杨婉', youyan:'诱言', - youyan_info:'出牌阶段/弃牌阶段各限一次,当你的牌因弃置进入弃牌堆后,你可以从牌堆中获得本次弃牌中没有的花色的牌各一张。', + youyan_info:'出牌阶段/弃牌阶段各限一次。当有牌进入弃牌堆后,若其中有你不因使用或打出而失去的牌,你可以从牌堆中获得你本次失去的牌中没有的花色的牌各一张。', zhuihuan:'追还', zhuihuan2:'追还', zhuihuan2_new:'追还', @@ -30277,9 +30369,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){ baoshu_info:'①准备阶段,你可选择Y名角色,这些角色重置武将牌并获得(X-Y+1)个“梳”(X为你的体力上限,Y∈[1, X])。②一名角色的摸牌阶段开始时,若其有“梳”,则其本阶段的额定摸牌数+Z且移去Z个“梳”(Z为其“梳”的数量)。', mamidi:'马日磾', bingjie:'秉节', - bingjie_info:'出牌阶段开始时,你可减1点体力上限,然后当你于本阶段内使用【杀】或普通锦囊牌指定其他角色为目标后,其弃置一张牌。', + bingjie_info:'出牌阶段开始时,你可减1点体力上限,然后当你于本阶段内使用【杀】或普通锦囊牌指定其他角色为目标后,其弃置一张牌。若其弃置的牌与你使用的牌颜色相同,其无法响应此牌。', zhengding:'正订', - zhengding_info:'锁定技。当你于回合外使用或打出牌响应其他角色使用的牌时,若这两张牌颜色相同,则你加1点体力上限。', + zhengding_info:'锁定技。当你于回合外使用或打出牌响应其他角色使用的牌时,若这两张牌颜色相同,则你加1点体力上限并回复1点体力。', licaiwei:'李采薇', yijiao:'异教', yijiao_info:'出牌阶段限一次,你可以选择一名没有“异”标记的其他角色并声明一个整数X(X∈[1,4]),该角色获得10X个“异”标记。有“异”标记的角色的结束阶段,其移去“异”标记,且若其本回合使用牌的点数之和:1.小于“异”标记数,其随机弃置至多三张手牌;2.等于“异”标记数,你摸两张牌且该角色本回合结束后进行一个额外的回合;3.大于“异”标记数,你摸三张牌。', @@ -30353,7 +30445,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ lianzhou:'连舟', lianzhou_info:'锁定技。准备阶段,你横置你的武将牌。然后你可横置任意名体力值等于你的角色。', jinglan:'惊澜', - jinglan_info:'锁定技。当你造成伤害后,若你的手牌数:大于体力值,你弃置三张手牌;等于体力值,你弃置一张手牌并回复1点体力;小于体力值,你受到1点无来源火焰伤害并摸四张牌。', + jinglan_info:'锁定技。当你造成伤害后,若你的手牌数:大于体力值,你弃置四张手牌;等于体力值,你弃置一张手牌并回复1点体力;小于体力值,你受到1点无来源火焰伤害并摸五张牌。', dc_huangzu:'黄祖', dcjinggong:'精弓', dcjinggong_info:'你可以将一张装备牌当做无距离限制的【杀】使用。当你声明使用此【杀】后,你将此杀的伤害值基数改为X(X为你至此【杀】第一个目标角色的距离且至多为5)。', @@ -30609,9 +30701,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){ dclianzhi:'连枝', dclianzhi_info:'①游戏开始时,你选择一名其他角色(仅你可见)。②每回合限一次。当你进入濒死状态时,若〖连枝①〗角色存活,你回复1点体力并与其各摸一张牌。③当〖连枝①〗角色死亡后,你可以与一名其他角色各获得〖受责〗,且其获得与你拥有的等量枚“绞”标记(至少获得1枚)。', dclingfang:'凌芳', - dclingfang_info:'锁定技。当其他角色使用黑色牌结算结束后,若你是此牌的目标,或你使用黑色牌结算结束后,若你不是此牌目标,你获得1枚“绞”。', + dclingfang_info:'锁定技。准备阶段,或当其他角色使用黑色牌结算结束后,若你是此牌的目标,或你使用黑色牌结算结束后,若你不是此牌目标,你获得1枚“绞”。', dcfengying:'风影', - dcfengying_info:'①一名角色的回合开始时,你记录弃牌堆中所有黑色基本牌或黑色普通锦囊牌的牌名。②每回合限一次。你可以将一张点数不大于“绞”数的手牌当做任意一张〖风影①〗记录中的牌使用。', + dcfengying_info:'①一名角色的回合开始时,你记录弃牌堆中所有黑色基本牌或黑色普通锦囊牌的牌名。②每回合每种牌名各限一次。你可以将一张点数不大于“绞”数的手牌当做任意一张〖风影①〗记录中的牌使用。', dcshouze:'受责', dcshouze_info:'锁定技。结束阶段,若你有“绞”,你弃1枚“绞”,随机获得弃牌堆中的一张黑色牌,失去1点体力。', sunlang:'孙狼',