From 11c0cff434cf812b4a80bbaa49fff4a5d6dad649 Mon Sep 17 00:00:00 2001 From: copcap Date: Mon, 25 Sep 2023 10:29:57 +0800 Subject: [PATCH] =?UTF-8?q?=E9=83=A8=E5=88=86=E6=AD=A6=E5=B0=86bug?= =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E3=80=81=E7=BB=93=E7=AE=97=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- character/huicui.js | 3 +- character/mobile.js | 10 +++- character/offline.js | 2 +- character/sb.js | 1 + character/sp.js | 131 ++++++++++++++++++++++-------------------- character/sp2.js | 2 +- character/xianding.js | 2 +- 7 files changed, 83 insertions(+), 68 deletions(-) diff --git a/character/huicui.js b/character/huicui.js index af9274759..d14ce70f8 100644 --- a/character/huicui.js +++ b/character/huicui.js @@ -991,9 +991,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){ order:9.5, result:{ target:function(player,target){ - if(get.attitude(player,target)>0) return 1; var num=target.countCards('h'); if(num<=1) return -num; + if(get.attitude(player,target)>0) return 1; return -1/(num/2+1); } } @@ -1317,6 +1317,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ 'step 0' var targets=game.filterPlayer(current=>target.inRange(current)&¤t!=player).sortBySeat(player); event.targets=targets; + if(!targets.length) event.finish(); 'step 1' var current=targets.shift(); if(current.countCards('he')) current.chooseToDiscard('驰应:请弃置一张牌','he',true); diff --git a/character/mobile.js b/character/mobile.js index 0228ca5ea..01bdc2bec 100644 --- a/character/mobile.js +++ b/character/mobile.js @@ -3241,7 +3241,13 @@ game.import('character',function(lib,game,ui,get,ai,_status){ var list=game.filterPlayer(current=>current!=player).map(current=>{ var _hp=current.hp,_maxhp=current.maxHp; current.hp=10; current.maxHp=10; - var eff=get.damageEffect(current,player,current)+10; + var att=-get.sgnAttitude(player,current); + var val=get.damageEffect(current,player,current)*att; + current.getSkills(null,false,false).forEach(skill=>{ + var info=get.info(skill); + if(info&&info.ai&&(info.ai.maixie||info.ai.maixie_hp||info.ai.maixie_defend)) val=Math[val>0?'max':'min'](val>0?0.1:-0.1,val+2*att); + }); + var eff=100/val+15; current.hp=_hp; current.maxHp=_maxhp; return [current,eff]; }).sort((a,b)=>b[1]-a[1])[0]; @@ -3253,7 +3259,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }).map(current=>{ var _hp=targetx.hp,_maxhp=targetx.maxHp; targetx.hp=10; targetx.maxHp=10; - var eff=get.damageEffect(targetx,current,player); + var eff=-get.damageEffect(targetx,current,current); targetx.hp=_hp; targetx.maxHp=_maxhp; return [current,eff]; }).sort((a,b)=>b[1]-a[1])[0][0]==target?10:1); diff --git a/character/offline.js b/character/offline.js index 8d0d40730..08ea8402a 100644 --- a/character/offline.js +++ b/character/offline.js @@ -6526,7 +6526,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ psliaozou_info:'出牌阶段,你可以展示所有手牌,若其中没有与“杂音”牌花色相同的牌,你摸一张牌。', ps1062_zhouyu:'☆周瑜', psoldshiyin:'识音', - psoldshiyin_info:'当你于回合内获得牌时,你可以展示之,然后根据你展示的牌包含的花色数令你本回合使用的下一张牌获得对应效果:不小于1,不能被响应;不小于2,造成的伤害+1;不小于3,使用时摸一张牌。', + psoldshiyin_info:'当你于回合内得到牌后,你可以展示之,然后根据你展示的牌包含的花色数令你本回合使用的下一张牌获得对应效果:不小于1,不能被响应;不小于2,造成的伤害+1;不小于3,使用时摸一张牌。', ps_caozhi:'☆曹植', psliushang:'流殇', psliushang_info:'锁定技。①摸牌阶段,你改为摸X+1张牌,然后依次将一张手牌置于所有其他角色的武将牌上,称为“流殇”牌(X为场上角色数且至少为3)。②其他角色的准备阶段,其选择一项:1.获得其“流殇”牌,且当其于本回合对你造成伤害时,防止此伤害;2.将其“流殇”牌置入弃牌堆。', diff --git a/character/sb.js b/character/sb.js index df8f6cad5..4e550dd67 100644 --- a/character/sb.js +++ b/character/sb.js @@ -3390,6 +3390,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ var val=get.value(ui.selected.cards,target); if(val<0) return val+get.effect(target,{name:'losehp'},player,target); if(val>5||get.value(ui.selected.cards,player)>5) return target.isTurnedOver()?5:0; + if(target.isTurnedOver()) return 1; return get.effect(target,{name:'losehp'},player,target); }, }, diff --git a/character/sp.js b/character/sp.js index 907cb236f..a0a500e4d 100755 --- a/character/sp.js +++ b/character/sp.js @@ -2513,7 +2513,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ targets.addArray(evt.targets); } }); - return targets.length==3; + return targets.length==3&&targets.includes(player); }, content:function(){ 'step 0' @@ -13880,67 +13880,74 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, weijing:{ audio:2, - group:['weijing_sha','weijing_shan'], + enable:'chooseToUse', + filter:function(event,player){ + if(event.type=='wuxie'||player.hasSkill('weijing_used')) return false; + for(var name of ['sha','shan']){ + if(event.filterCard({name:name,isCard:true},player,event)) return true; + } + return false; + }, + chooseButton:{ + dialog:function(event,player){ + var vcards=[]; + for(var name of ['sha','shan']){ + var card={name:name,isCard:true}; + if(event.filterCard(card,player,event)) vcards.push(['基本','',name]); + } + var dialog=ui.create.dialog('卫境',[vcards,'vcard'],'hidden'); + dialog.direct=true; + return dialog; + }, + backup:function(links,player){ + return { + filterCard:()=>false, + selectCard:-1, + viewAs:{ + name:links[0][2], + isCard:true, + }, + popname:true, + precontent:function(){ + player.logSkill('weijing'); + player.addTempSkill('weijing_used','roundStart'); + }, + } + }, + prompt:function(links,player){ + return '卫境:视为使用一张【'+get.translation(links[0][2])+'】'; + } + }, + ai:{ + order:function(item,player){ + var player=_status.event.player; + var event=_status.event; + if(event.filterCard({name:'sha'},player,event)){ + if(!player.hasShan()&&!game.hasPlayer(function(current){ + return player.canUse('sha',current)&¤t.hp==1&&get.effect(current,{name:'sha'},player,player)>0; + })){ + return 0; + } + return 2.95; + } + else{ + var player=_status.event.player; + if(player.hasSkill('qingzhong_give')) return 2.95; + return 3.15; + } + }, + respondSha:true, + respondShan:true, + skillTagFilter:function(player,tag,arg){ + if(player.hasSkill('weijing_used')) return false; + if(arg!='use') return false; + }, + result:{ + player:1 + } + }, subSkill:{ - sha:{ - audio:'weijing', - enable:'chooseToUse', - viewAs:{name:'sha',isCard:true}, - filterCard:function(){return false}, - viewAsFilter:function(player){ - if(player.hasSkill('weijing_disable')) return false; - }, - selectCard:-1, - mark:false, - precontent:function(){ - player.addTempSkill('weijing_disable','roundStart'); - }, - prompt:'视为使用一张杀', - ai:{ - order:function(){ - var player=_status.event.player; - if(!player.hasShan()&&!game.hasPlayer(function(current){ - return player.canUse('sha',current)&¤t.hp==1&&get.effect(current,{name:'sha'},player,player)>0; - })){ - return 0; - } - return 2.95; - }, - skillTagFilter:function(player,tag,arg){ - if(player.hasSkill('weijing_disable')) return false; - if(arg!='use') return false; - }, - respondSha:true, - } - }, - shan:{ - audio:'weijing', - enable:'chooseToUse', - viewAs:{name:'shan',isCard:true}, - mark:false, - filterCard:function(){return false}, - viewAsFilter:function(player){ - if(player.hasSkill('weijing_disable')) return false; - return true; - }, - onuse:function(event,player){ - player.addTempSkill('weijing_disable','roundStart'); - }, - selectCard:-1, - prompt:'视为使用一张闪', - ai:{ - order:function(){ - var player=_status.event.player; - if(player.hasSkill('qingzhong_give')) return 2.95; - return 3.15; - }, - skillTagFilter:function(player){ - if(player.hasSkill('weijing_disable')) return false; - }, - respondShan:true, - } - }, - disable:{ + used:{ mark:true, intro:{ content:'本轮已发动' @@ -25417,7 +25424,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ olguangao:'犷骜', olguangao_info:'当你/其他角色使用【杀】时,你/该角色可以额外指定一个目标/你为目标(有距离限制)。然后若你的手牌数为偶数,你摸一张牌并令此牌对任意目标无效(可不选)。', olhuiqi:'彗企', - olhuiqi_info:'觉醒技。一名角色回合结束后,若仅有三名角色于此回合成为过牌的目标,你获得〖偕举〗并获得一个额外的回合。', + olhuiqi_info:'觉醒技。一名角色回合结束后,若你与其他两名角色于此回合成为过牌的目标,你获得〖偕举〗并获得一个额外的回合。', olxieju:'偕举', olxieju_info:'出牌阶段限一次。你可以令任意名本回合成为过牌的目标的角色依次视为使用一张【杀】。', ol_zhouqun:'周群', diff --git a/character/sp2.js b/character/sp2.js index 7ea467c33..246b0ea10 100644 --- a/character/sp2.js +++ b/character/sp2.js @@ -10338,7 +10338,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ liangjue_info:'锁定技,当有黑色牌进入或者离开你的判定区或装备区后,若你的体力值大于1,你失去1点体力,然后摸两张牌。', tangji:'唐姬', jielie:'抗歌', - jielie_info:'你的第一个回合开始时,选择一名其他角色,该角色每次于其回合外获得牌后,你摸等量的牌(每回合至多摸三张);其进入濒死状态时,你可令其回复体力至1点(每轮限一次)。该角色死亡时,你弃置所有牌并失去1点体力。', + jielie_info:'你的第一个回合开始时,选择一名其他角色,该角色每次于其回合外得到牌后,你摸等量的牌(每回合至多摸三张);其进入濒死状态时,你可令其回复体力至1点(每轮限一次)。该角色死亡时,你弃置所有牌并失去1点体力。', kangge:'节烈', kangge_info:'当你受到除自己和“抗歌”角色以外的角色造成的伤害时,你可以防止此伤害并选择一种花色,然后你失去X点体力,令“抗歌”角色从弃牌堆中随机获得X张此花色的牌(X为伤害值)。', re_dongcheng:'董承', diff --git a/character/xianding.js b/character/xianding.js index 856e79e0a..6badb67a4 100644 --- a/character/xianding.js +++ b/character/xianding.js @@ -11945,7 +11945,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ dcfengyan:'讽言', dcfengyan_info:'出牌阶段每项各限一次。你可以:⒈令一名体力值不大于你的其他角色交给你一张手牌。⒉视为对一名手牌数不大于你的角色使用一张【杀】(无距离和次数限制)。', dcfudao:'抚悼', - dcfudao_info:'游戏开始时,你选择一名其他角色,称为“继子”角色。当你或“继子”每回合首次使用牌指定对方为目标后,你与其各摸两张牌。当有角色杀死你或“继子”后,该角色称为“决裂”角色。当你或“继子”对“决裂”造成伤害后,此伤害+1。当你成为“决裂”角色使用牌的目标后,其本回合内不能再使用牌。', + dcfudao_info:'游戏开始时,你选择一名其他角色,称为“继子”角色。当你或“继子”每回合首次使用牌指定对方为目标后,你与其各摸两张牌。当有角色杀死你或“继子”后,该角色称为“决裂”角色。当你或“继子”对“决裂”造成伤害时,此伤害+1。当你成为“决裂”角色使用牌的目标后,其本回合内不能再使用牌。', luyi:'卢弈', dcyaoyi:'邀弈', dcyaoyi_info:'锁定技。①游戏开始时,你令所有存活且未拥有转换技的角色获得〖手谈〗。②你发动〖手谈〗时无需弃置牌,且无次数限制。③所有拥有转换技的角色不能使用牌指定其他拥有转换技且双方所有转换技状态均相同的角色为目标。',