From 7c02c72a8d3e4595235f963fab24d85f53bdd804 Mon Sep 17 00:00:00 2001 From: mengxinzxz <2223529500@qq.com> Date: Mon, 8 Apr 2024 13:33:11 +0800 Subject: [PATCH] bugfix MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit OL陆凯分包调整; OL谋姜维【燃己】计算阶段数bugfix; 国战王基,国战群杜预bugfix; --- character/onlyOL.js | 16 +++++++---- character/sp.js | 4 +-- mode/guozhan.js | 68 +++++++++++++++++++++++++++++++++++---------- 3 files changed, 67 insertions(+), 21 deletions(-) diff --git a/character/onlyOL.js b/character/onlyOL.js index d19a3af1a..f5f2e18d4 100644 --- a/character/onlyOL.js +++ b/character/onlyOL.js @@ -1093,7 +1093,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ trigger:{player:'phaseJieshuBegin'}, prompt2:function(event,player){ var str='获得技能'; - var num=lib.skill.olsbranji.getNum(event,player); + var num=lib.skill.olsbranji.getNum(player); if(num>=player.getHp()) str+='【困奋】'; if(num==player.getHp()) str+='和'; if(num<=player.getHp()) str+='【诈降】'; @@ -1109,7 +1109,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ return str; }, check:function(event,player){ - var num=lib.skill.olsbranji.getNum(event,player); + var num=lib.skill.olsbranji.getNum(player); if(num==player.getHp()) return true; return player.getHandcardLimit()-player.countCards('h')>=3||player.getDamagedHp()>=2; }, @@ -1120,7 +1120,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ var player=map.player; var trigger=map.trigger; player.awakenSkill('olsbranji'); - var num=lib.skill.olsbranji.getNum(trigger,player); + var num=lib.skill.olsbranji.getNum(player); const skills = []; if(num>=player.getHp()){ skills.push('kunfen'); @@ -1159,8 +1159,14 @@ game.import('character',function(lib,game,ui,get,ai,_status){ getList:function(event){ return event.getParent().phaseList.map(list=>list.split('|')[0]); }, - getNum:function(event,player){ - return lib.skill.olsbranji.getList(event).slice(0,event.getParent().num).filter(name=>player.getHistory('useCard',evt=>evt.getParent(name).name==name).length).length; + getNum:function(player){ + return player.getHistory('useCard',evt=>{ + return lib.phaseName.some(name=>{ + return evt.getParent(name).name==name; + }); + }).reduce((list,evt)=>{ + return list.add(evt.getParent(lib.phaseName.find(name=>evt.getParent(name).name==name))); + },[]).length; }, subSkill:{ norecover:{ diff --git a/character/sp.js b/character/sp.js index acfcf080f..7f7b7568c 100755 --- a/character/sp.js +++ b/character/sp.js @@ -6,7 +6,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ characterSort:{ sp:{ sp_tianji:["sunhao","liuxie","caoang","hetaihou","sunluyu",'ol_wangrong',"zuofen","ol_bianfuren","qinghegongzhu","tengfanglan","ruiji",'caoxiancaohua'], - sp_sibi:["yangxiu",'guotu',"chenlin","chengyu","shixie","fuwan","wangyun","zhugejin","simalang","maliang","buzhi","dongyun","kanze","sunqian","xizhicai","sunshao",'duxi',"jianggan",'ol_dengzhi','ol_yangyi','ol_dongzhao','ol_chendeng','jin_yanghu','wangyan','xiahouxuan','quhuang','zhanghua','wangguan','sunhong','caoxi','tianchou'], + sp_sibi:['ol_lukai',"yangxiu",'guotu',"chenlin","chengyu","shixie","fuwan","wangyun","zhugejin","simalang","maliang","buzhi","dongyun","kanze","sunqian","xizhicai","sunshao",'duxi',"jianggan",'ol_dengzhi','ol_yangyi','ol_dongzhao','ol_chendeng','jin_yanghu','wangyan','xiahouxuan','quhuang','zhanghua','wangguan','sunhong','caoxi','tianchou'], sp_tianzhu:['liyi','zhangyan','niujin','hejin','hansui',"wutugu","yanbaihu","shamoke","zhugedan",'huangzu','gaogan',"tadun","fanjiangzhangda","ahuinan","dongtuna",'ol_wenqin'], sp_nvshi:['ol_dingshangwan',"lingju","guanyinping","zhangxingcai","mayunlu","dongbai","zhaoxiang",'ol_zhangchangpu',"daxiaoqiao","jin_guohuai",'ol_hujinding'], sp_shaowei:["simahui","zhangbao","zhanglu","zhugeguo","xujing","zhangling",'huangchengyan','zhangzhi','lushi'], @@ -18,7 +18,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ sp_zhongdan:["cuiyan","huangfusong"], sp_guozhan2:["sp_dongzhuo","liqueguosi","zhangren"], sp_others:["hanba","caiyang"], - sp_waitforsort:['ol_luyusheng','ol_pengyang','ol_tw_zhangji','ol_liwan','ol_liuyan','caoyu','liupan','ol_lukai','ol_liupi'], + sp_waitforsort:['ol_luyusheng','ol_pengyang','ol_tw_zhangji','ol_liwan','ol_liuyan','caoyu','liupan','ol_liupi'], }, }, characterFilter:{ diff --git a/mode/guozhan.js b/mode/guozhan.js index b96c965a7..86e4f304c 100644 --- a/mode/guozhan.js +++ b/mode/guozhan.js @@ -2117,20 +2117,24 @@ game.import('mode',function(lib,game,ui,get,ai,_status){ return lib.filter.cardDiscardable(card,player)&&!player.getStorage('fakezhufu_effect').includes(get.suit(card)); }, position:'he', + /* check(card){ const player=get.event('player'); if(player.hasUseTarget(card,true,true)) return 0; return 5+3*Math.random()-get.value(card); }, + */ async content(event,trigger,player){ const suit=get.suit(event.cards[0],player); player.addTempSkill('fakezhufu_effect','phaseUseAfter'); player.markAuto('fakezhufu_effect',[[suit,false]]); }, + /* ai:{ order:7, result:{player:1}, }, + */ subSkill:{ effect:{ charlotte:true, @@ -2143,7 +2147,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){ let str=''; str+='
  • 已弃置过的花色:'; str+=suits; - if(used.length){ + if(usedSuits.length){ str+='
  • 已触发过的花色:'; str+=usedSuits; } @@ -2156,22 +2160,57 @@ game.import('mode',function(lib,game,ui,get,ai,_status){ return player.getStorage('fakezhufu_effect').some(list=>!list[1]); }, forced:true, - content(){ - const list=player.getStorage('fakezhufu_effect').filter(list=>!list[1]); - for(const i of list){ - player.storage.fakezhufu_effect[player.getStorage('fakezhufu_effect').indexOf(i)][1]=true; + firstDo:true, + async content(event,trigger,player){ + const list=player.getStorage('fakezhufu_effect').filter(i=>!i[1]); + const forced=(function(trigger,player){ + if(trigger.forceYingbian||player.hasSkillTag('forceYingbian')) return true; + const list=(trigger.temporaryYingbian||[]); + return list.includes('force')||get.cardtag(trigger.card,'yingbian_force'); + }(trigger,player)); + if(forced){ + player.popup('yingbian_force_tag',lib.yingbian.condition.color.get('force')); + game.log(player,'触发了','#g【注傅】','为',trigger.card,'添加的应变条件'); + } + const hasYingBian=(trigger.temporaryYingbian||[]),map=get.info('fakezhufu').YingBianMap; + for(const j of list){ + player.storage.fakezhufu_effect[player.getStorage('fakezhufu_effect').indexOf(j)][1]=true; + const tag=map[j[0]][0],eff=map[j[0]][1]; + if(get.cardtag(trigger.card,`yingbian_${tag}`)) continue; + if(j[0]=='heart'){ + if(!forced&&!hasYingBian.includes('add')){ + const {result}=await lib.yingbian.condition.complex.get('zhuzhan')(trigger); + if(result.bool){ + game.log(player,'触发了','#g【注傅】','为',trigger.card,'添加的应变条件(','#g'+get.translation(j[0]),')'); + trigger.yingbian_addTarget=true; + player.addTempSkill('yingbian_changeTarget'); + } + } + else{ + if(!forced){ + game.log(player,'触发了','#g【注傅】','为',trigger.card,'添加的应变条件(','#g'+get.translation(j[0]),')'); + } + trigger.yingbian_addTarget=true; + player.addTempSkill('yingbian_changeTarget'); + } + } + else{ + const goon=(hasYingBian.includes(eff)||lib.yingbian.condition.simple.get(tag)(trigger)); + if(!forced&&goon){ + player.popup('yingbian_force_tag',lib.yingbian.condition.color.get(eff)); + game.log(player,'触发了','#g【注傅】','为',trigger.card,'添加的应变条件(','#g'+get.translation(j[0]),')'); + } + if(forced||goon) await game.yingbianEffect(trigger,lib.yingbian.effect.get(eff)); + } } - if(!Array.isArray(trigger.temporaryYingbian)) trigger.temporaryYingbian=[]; - trigger.forceYingbian=true - trigger.temporaryYingbian.addArray(list.map(i=>get.info('fakezhufu').YingBianMap[i[0]])); }, }, }, YingBianMap:{ - 'heart':'yingbian_zhuzhan', - 'diamond':'yingbian_fujia', - 'spade':'yingbian_canqu', - 'club':'yingbian_kongchao', + 'heart':['zhuzhan','add'], + 'diamond':['fujia','hit'], + 'spade':['canqu','draw'], + 'club':['kongchao','damage'], }, }, fakeguishu:{ @@ -2349,7 +2388,8 @@ game.import('mode',function(lib,game,ui,get,ai,_status){ async content(event,trigger,player){ const target=event.targets[0]; const {result:{bool,cards}}=await player.discardPlayerCard(target,'he',true); - if(get.yingbianConditions(trigger.card).length&&bool){ + if(bool){ + await target.draw(); if(cards.some(i=>get.suit(i,target)==get.suit(trigger.card))){ trigger.forceYingbian=true; } @@ -18485,7 +18525,7 @@ return event.junling=='junling5'?1:0;}); fakedujin:'独进', fakedujin_info:'①摸牌阶段,你可以额外摸X张牌(X为你装备区的牌数的一半,向上取整)。②当你首次明置此武将牌时,若你为你们势力第一个明置武将牌的角色,则你获得1个“先驱”标记。', fakezhufu:'注傅', - fakezhufu_info:'出牌阶段,你可以弃置一张本阶段未以此法弃置过的花色的牌,然后根据此牌的花色为你使用的下一张牌添加对应的应变效果(无视条件触发):红桃——助战;方片——富甲;黑桃——残躯;草花——空巢。', + fakezhufu_info:'出牌阶段,你可以弃置一张本阶段未以此法弃置过的花色的牌,然后根据此牌的花色为你使用的下一张牌添加对应的应变效果:红桃,助战、目标+1;方片,富甲、不可被响应;黑桃,残躯、摸一张牌;草花,空巢、伤害+1。', fakeguishu:'鬼术', fakeguishu_info:'出牌阶段限一次,你可以将一张黑桃手牌当作【知己知彼】或【远交近攻】使用。若你本局游戏内已经发动过了〖鬼术〗,则你必须选择与上次不同的选项。', fakeyuanyu:'远域',