From ab59697cacb26a5e3f1fc6d75812f7a7e70c06c8 Mon Sep 17 00:00:00 2001 From: mengxinzxz <2223529500@qq.com> Date: Sat, 18 Nov 2023 14:01:57 +0800 Subject: [PATCH] =?UTF-8?q?=E7=A5=9E=E5=8D=8E=E4=BD=97=E3=80=81=E6=89=8B?= =?UTF-8?q?=E6=9D=80=E5=90=91=E6=9C=97=E3=80=81=E8=B0=8B=E8=AF=B8=E8=91=9B?= =?UTF-8?q?=E4=BA=AE=EF=BC=88unseen=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- character/extra.js | 225 +++++++++++++++++++++++++++++++++++++++ character/huicui.js | 1 + character/mobile.js | 81 +++++++++++++- character/sb.js | 250 ++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 556 insertions(+), 1 deletion(-) diff --git a/character/extra.js b/character/extra.js index 5eea43665..e9b6cc44c 100755 --- a/character/extra.js +++ b/character/extra.js @@ -17,11 +17,13 @@ game.import('character',function(lib,game,ui,get,ai,_status){ extra_ol:['ol_zhangliao','shen_caopi','shen_zhenji','shen_sunquan'], extra_mobilezhi:['shen_guojia','shen_xunyu'], extra_mobilexin:['shen_taishici','shen_sunce'], + extra_mobileren:['shen_huatuo'], extra_tw:['tw_shen_guanyu','tw_shen_lvmeng'], extra_offline:['shen_diaochan','boss_zhaoyun','shen_dianwei','le_shen_jiaxu'], }, }, character:{ + shen_huatuo:['male','shen',3,['wuling','youyi'],['qun','unseen']], le_shen_jiaxu:['male','shen',4,['jxlianpo','jxzhaoluan'],['qun']], shen_dianwei:['male','shen',4,['juanjia','qiexie','cuijue'],['wei']], shen_dengai:['male','shen',4,['dctuoyu','dcxianjin','dcqijing'],['wei']], @@ -88,6 +90,215 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, }, skill:{ + //神华佗 + wuling:{ + audio:2, + enable:'phaseUse', + filter:function(event,player){ + return game.hasPlayer(target=>lib.skill.wuling.filterTarget(null,player,target)); + }, + filterTarget:function(card,player,target){ + return !target.hasSkill('wuling_wuqinxi'); + }, + usable:1, + content:function(){ + 'step 0' + target.addSkill('wuling_wuqinxi'); + player.chooseControl(lib.skill.wuling.wuqinxi).set('prompt','五灵:请选择'+get.translation(target)+'的初始五禽戏效果').set('ai',()=>['鹿','熊'].randomGet()).set('choiceList',lib.skill.wuling.wuqinxiMap); + 'step 1' + player.popup(result.control); + target.storage.wuling_wuqinxi=result.control; + lib.skill.wuling.updateMark(target); + }, + wuqinxi:['虎','鹿','熊','猿','鹤'], + wuqinxiMap:[ + '虎:使用仅指定唯一目标的牌对目标角色造成的伤害+1', + '鹿:回复1点体力并弃置判定区的所有牌;不能成为延时锦囊牌的目标', + '熊:受到伤害时,此伤害-1', + '猿:出牌阶段开始时,摸两张牌', + '鹤:出牌阶段开始时,选择一名角色,随机获得其装备区里的一张牌', + ], + updateMark:function(player){ + var wuqinxi=player.storage.wuling_wuqinxi; + game.log(player,'获得了','#g【'+wuqinxi+'】','标记'); + player.markSkill('wuling_wuqinxi'); + game.broadcastAll(function(player,wuqinxi){ + if(player.marks.wuling_wuqinxi) player.marks.wuling_wuqinxi.firstChild.innerHTML=wuqinxi; + },player,wuqinxi); + if(wuqinxi=='鹿'){ + player.logSkill('wuling_wuqinxi'); + player.recover(); + player.discard(player.getCards('j')); + } + }, + ai:{ + order:7, + result:{target:1}, + }, + derivation:'wuling_wuqinxi', + subSkill:{ + wuqinxi:{ + nopop:true, + charlotte:true, + intro:{ + content:function(storage){ + var str='
  • 当前效果:'+storage; + var list=lib.skill.wuling.wuqinxiMap; + var list1=list.map(str2=>str2.slice(0,1)); + var list2=list.map(str2=>str2.slice(2)); + str+='
  • '; + str+=list2[list1.indexOf(storage)]; + return str; + }, + }, + mod:{ + targetEnabled:function(card,player,target){ + if(get.type(card)=='delay'&&target.storage.wuling_wuqinxi&&target.storage.wuling_wuqinxi=='鹿') return false; + }, + }, + trigger:{ + source:'damageBegin1', + player:['phaseBegin','damageBegin2','phaseUseBegin'], + }, + filter:function(event,player,name){ + var wuqinxi=player.storage.wuling_wuqinxi; + if(!wuqinxi) return false; + if(event.name=='phase') return true; + switch(name){ + case 'damageBegin1': + if(wuqinxi!='虎') return false; + return event.card&&event.targets&&event.targets.length==1&&event.targets.includes(event.player); + break; + case 'damageBegin2': + return wuqinxi=='熊'; + break; + default: + if(wuqinxi=='鹤') return true; + if(wuqinxi!='猿') return false; + return game.hasPlayer(target=>target.countGainableCards(player,'e')); + break; + } + }, + forced:true, + content:function(){ + 'step 0' + var wuqinxi=player.storage.wuling_wuqinxi; + if(trigger.name=='phase'){ + var num=lib.skill.wuling.wuqinxi.indexOf(wuqinxi)+1; + if(num>=lib.skill.wuling.wuqinxi.length) num-=lib.skill.wuling.wuqinxi.length; + player.storage.wuling_wuqinxi=lib.skill.wuling.wuqinxi[num]; + lib.skill.wuling.updateMark(player); + event.finish(); + } + else{ + var name=event.triggername; + switch(name){ + case 'damageBegin1': + player.line(trigger.player); + trigger.num++; + event.finish(); + break; + case 'damageBegin2': + trigger.num--; + event.finish(); + break; + default: + if(wuqinxi=='鹤'){ + player.draw(2); + event.finish(); + } + else{ + player.chooseTarget('五禽戏:获得一名角色装备区里的一张装备牌',function(card,player,target){ + return target.countGainableCards(player,'e'); + }).set('ai',function(target){ + var player=_status.event.player; + var att=get.attitude(player,target),eff=0; + target.getCards('e',function(card){ + var val=get.value(card,target); + eff=Math.max(eff,-val*att); + }); + return eff; + }); + } + } + } + 'step 1' + if(result.bool){ + var target=result.targets[0]; + player.line(target,'green'); + var cards=target.getGainableCards(player,'e'); + player.gain(cards.randomGets(1),target,'give'); + } + }, + ai:{ + effect:{ + target:function(card,player,target){ + var wuqinxi=target.storage.wuling_wuqinxi; + if(!wuqinxi&&wuqinxi!='熊') return; + if(player.hasSkillTag('jueqing',false,target)) return; + var num=get.tag(card,'damage'); + if(num){ + if(num>1) return 0.5; + return 0; + } + } + } + }, + }, + }, + }, + youyi:{ + init:function(player){ + player.storage.renku=true; + }, + audio:2, + enable:'phaseUse', + filter:function(event,player){ + return _status.renku.length; + }, + prompt:'将仁区所有牌置入弃牌堆,令所有角色各回复1点体力', + content:function(){ + 'step 0' + var cards=_status.renku.slice(); + game.cardsDiscard(cards); + _status.renku.removeArray(cards); + player.$throw(cards,1000); + game.updateRenku(); + game.log(cards,'被置入了弃牌堆'); + 'step 1' + var targets=game.filterPlayer(); + player.line(targets); + targets.forEach(target=>target.recover()); + }, + ai:{ + order:function(item,player){ + return get.order({name:'taoyuan'},player); + }, + result:{ + player:function(player){ + return Math.max(0,game.filterPlayer().reduce((num,target)=>num+get.recoverEffect(target,player,player),0)); + }, + }, + }, + group:'youyi_put', + subSkill:{ + put:{ + audio:'youyi', + trigger:{player:'phaseDiscardEnd'}, + filter:function(event,player){ + return lib.skill.twlijian.getCards(event).length; + }, + prompt2:function(event,player){ + return '将'+get.translation(lib.skill.twlijian.getCards(event))+'置入仁区'; + }, + content:function(){ + var cards=lib.skill.twlijian.getCards(trigger); + game.log(player,'将',cards,'置于了仁库'); + game.cardsGotoSpecial(cards,'toRenku'); + }, + }, + }, + }, //神贾诩 jxlianpo:{ audio:2, @@ -7589,6 +7800,19 @@ game.import('character',function(lib,game,ui,get,ai,_status){ jxlianpo_info:'锁定技。①若场上最大阵营为:反贼,其他角色的手牌上限-1,所有角色使用【杀】的次数上限和攻击范围+1;主忠,其他角色不能对其以外的角色使用【桃】。其他角色死亡后,若有多个最大阵营,来源摸两张牌并回复1点体力。②一轮游戏开始时,你展示一张未加入游戏或已死亡角色的身份牌,本轮视为该身份对应阵营的角色数+1。', jxzhaoluan:'兆乱', jxzhaoluan_info:'限定技。一名角色死亡前,若其此次进入过濒死状态,你可以取消之,令其加3点体力上限并失去所有非锁定技,回复体力至3点,摸四张牌。然后你获得如下效果:出牌阶段,你可以令一名成为过你〖兆乱〗目标的角色减1点体力上限,然后对一名此阶段未以此法选择过的角色造成1点伤害。', + shen_huatuo:'神华佗', + shen_huatuo_prefix:'神', + wuling:'五灵', + wuling_info:'出牌阶段限一次,你可以令一名没有“五禽戏”的角色获得“五禽戏”,然后你为其指定一个“五禽戏”的初始效果。', + wuling_wuqinxi:'五禽戏', + wuling_wuqinxi_info:'
  • “五禽戏”分为“虎、鹿、熊、猿、鹤”五个不同的效果,有“五禽戏”的角色的准备阶段,将自己“五禽戏”的效果更换为“五禽戏”顺序的下一种效果'+ + '
  • 虎:你使用仅指定唯一目标的牌对目标角色造成的伤害+1'+ + '
  • 鹿:获得或更换至此效果时,回复1点体力并弃置判定区的所有牌;你不能成为延时锦囊牌的目标'+ + '
  • 熊:当你受到伤害时,此伤害-1'+ + '
  • 猿:出牌阶段开始时,你摸两张牌'+ + '
  • 鹤:出牌阶段开始时,你选择一名角色,随机获得其装备区里的一张牌', + youyi:'游医', + youyi_info:'①弃牌阶段结束时,你可以将所有于此阶段进入弃牌堆的牌置入仁区。②出牌阶段限一次,你可以将仁区的所有牌置入弃牌堆,然后令所有角色各回复1点体力。', extra_feng:'神话再临·风', extra_huo:'神话再临·火', @@ -7600,6 +7824,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ extra_ol:'神话再临OL', extra_mobilezhi:'始计篇·智', extra_mobilexin:'始计篇·信', + extra_mobileren:'始计篇·仁', extra_offline:'神话再临·线下', extra_decade:'神·武', extra_tw:'海外服神将', diff --git a/character/huicui.js b/character/huicui.js index 421130b6a..dedad38fa 100644 --- a/character/huicui.js +++ b/character/huicui.js @@ -10640,6 +10640,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ mamidi:['mamidi','xin_mamidi'], mengyou:['mengyou','ns_mengyou'], zhangchu:['zhangchu','jsrg_zhangchu'], + xianglang:['xianglang','re_xianglang'], }, translate:{ re_panfeng:'潘凤', diff --git a/character/mobile.js b/character/mobile.js index 1d4ef75f0..4bdf019d0 100644 --- a/character/mobile.js +++ b/character/mobile.js @@ -6,7 +6,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ connect:true, characterSort:{ mobile:{ - mobile_default:['yanxiang','xin_wuban','laimin','baoxin','jiangji','liwei','xin_guozhao',"miheng","taoqian","lingcao","sunru","lifeng","zhuling","liuye","zhaotongzhaoguang","majun","simazhao","wangyuanji","pangdegong","shenpei","hujinding","zhangyì","jiakui","yangbiao","chendeng","dongcheng","yangyi","dengzhi","zhengxuan","sp_sufei","furong","dingyuan","simashi","yanghuiyu","hucheer","gongsunkang","nanhualaoxian","zhouqun","qiaozhou","fuqian","simafu","mayuanyi","yanpu","sunhanhua","sp_maojie","peixiu","sp_jianggan","ruanhui","xin_mamidi","sp_caosong","yangfu","wangjun","sp_pengyang","qianzhao",'shichangshi'], + mobile_default:['re_xianglang','yanxiang','xin_wuban','laimin','baoxin','jiangji','liwei','xin_guozhao',"miheng","taoqian","lingcao","sunru","lifeng","zhuling","liuye","zhaotongzhaoguang","majun","simazhao","wangyuanji","pangdegong","shenpei","hujinding","zhangyì","jiakui","yangbiao","chendeng","dongcheng","yangyi","dengzhi","zhengxuan","sp_sufei","furong","dingyuan","simashi","yanghuiyu","hucheer","gongsunkang","nanhualaoxian","zhouqun","qiaozhou","fuqian","simafu","mayuanyi","yanpu","sunhanhua","sp_maojie","peixiu","sp_jianggan","ruanhui","xin_mamidi","sp_caosong","yangfu","wangjun","sp_pengyang","qianzhao",'shichangshi'], mobile_yijiang:["yj_zhanghe","yj_zhangliao","yj_xuhuang","yj_ganning",'yj_huangzhong','yj_weiyan','yj_zhoubuyi'], mobile_standard:["xin_xiahoudun","xin_zhangfei"], mobile_shenhua_feng:['re_xiaoqiao',"xin_zhoutai"], @@ -26,6 +26,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, }, character:{ + re_xianglang:['male','shu',3,['naxue','yijie'],[]], yanxiang:['male','qun',3,['kujian','twruilian'],['character:tw_yanxiang','die_audio:tw_yanxiang']], mb_sunluyu:['female','wu',3,['mbmeibu','mbmumu']], xin_wuban:['male','shu',4,['xinjintao'],['clan:陈留吴氏','character:wuban']], @@ -388,6 +389,78 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, }, skill:{ + //向朗 + naxue:{ + audio:2, + trigger:{player:'phaseUseBefore'}, + check:function(event,player){ + var cards=player.getCards('h',card=>player.hasValueTarget(card)); + if(!cards.length) return true; + if(!(player.hp>=2&&player.countCards('h')<=player.hp+1)) return false; + return game.hasPlayer(function(target){ + if(target.hasJudge('lebu')||target==player) return false; + if(get.attitude(player,target)>4){ + return (get.threaten(target)/Math.sqrt(target.hp+1)/Math.sqrt(target.countCards('h')+1)>0); + } + return false; + }); + }, + content:function*(event,map){ + var player=map.player; + map.trigger.cancel(); + var num=player.countDiscardableCards(player,'he'); + if(num){ + var result=yield player.chooseToDiscard('纳学:弃置任意张牌并摸等量的牌',[1,num],true).set('ai',lib.skill.zhiheng.check); + if(result.bool) player.draw(result.cards.length); + } + if(player.countCards('he')){ + var result2=yield player.chooseCardTarget({ + prompt:'纳学:将至多两张牌交给一名其他角色', + selectCard:[1,2], + filterCard:true, + filterTarget:lib.filter.notMe, + forced:true, + position:'he', + ai1:function(card){ + if(card.name=='du') return 10; + else if(ui.selected.cards.length&&ui.selected.cards[0].name=='du') return 0; + var player=_status.event.player; + if(ui.selected.cards.length>4||!game.hasPlayer(function(current){ + return get.attitude(player,current)>0&&!current.hasSkillTag('nogain'); + })) return 0; + return 1/Math.max(0.1,get.value(card)); + }, + ai2:function(target){ + var player=_status.event.player,att=get.attitude(player,target); + if(ui.selected.cards[0].name=='du') return -att; + if(target.hasSkillTag('nogain')) att/=6; + return att; + }, + }); + if(result2.bool) player.give(result2.cards,result2.targets[0]); + } + }, + }, + yijie:{ + audio:2, + trigger:{player:'die'}, + filter:function(event,player){ + return game.hasPlayer(target=>target!=player); + }, + forced:true, + forceDie:true, + content:function(){ + var targets=game.filterPlayer(target=>target!=player); + var sum=targets.reduce((num,target)=>num+=target.hp,0); + sum=Math.max(1,Math.floor(sum/targets.length)); + targets.forEach(target=>{ + if(target.hp!=sum){ + game.log(target,'将体力从',target.hp,'改为',sum); + target.changeHp(sum-target.hp)._triggered=null; + } + }); + }, + }, //阎象 kujian:{ audio:'twkujian', @@ -15667,6 +15740,12 @@ game.import('character',function(lib,game,ui,get,ai,_status){ yanxiang:'阎象', kujian:'苦谏', kujian_info:'出牌阶段限一次,你可以将至多两张手牌称为“谏”并交给一名其他角色,然后你获得以下效果:当其他角色使用或打出牌后,若其中有“谏”,你与其各摸两张牌;当其他角色不因使用或打出而失去牌后,若其中有“谏”,你与其各弃置一张牌。', + re_xianglang:'手杀向朗', + re_xianglang_prefix:'手杀', + naxue:'纳学', + naxue_info:'你可以跳过出牌阶段。若如此做,你弃置任意张牌并摸等量的牌,然后交给一名其他角色至多两张牌。', + yijie:'遗诫', + yijie_info:'锁定技,当你死亡时,所有其他角色将体力调整为X(X为所有其他角色的体力值之和除以所有其他角色数,向下取整,且X至少为1)。', mobile_standard:'手杀异构·标准包', mobile_shenhua_feng:'手杀异构·其疾如风', diff --git a/character/sb.js b/character/sb.js index 77718cebe..86c2c02e4 100644 --- a/character/sb.js +++ b/character/sb.js @@ -5,6 +5,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ name:'sb', connect:true, character:{ + sb_zhugeliang:['male','shu',3,['sbhuoji','sbkanpo'],['unseen']], sb_zhanghe:['male','wei',4,['sbqiaobian']], sb_yujin:['male','wei',4,['sbxiayuan','sbjieyue']], sb_huaxiong:['male','qun','3/4/1',['new_reyaowu','sbyangwei']], @@ -51,6 +52,245 @@ game.import('character',function(lib,game,ui,get,ai,_status){ } }, skill:{ + //诸葛亮 + sbhuoji:{ + audio:3, + derivation:['sbguanxing','sbkongcheng'], + group:['sbhuoji_effect','sbhuoji_achieve','sbhuoji_fail'], + subSkill:{ + effect:{ + audio:'sbhuoji1', + enable:'phaseUse', + filterTarget:lib.filter.notMe, + prompt:'选择一名其他角色,对其与其势力相同的所有其他角色各造成1点火属性伤害', + usable:1, + content:function(){ + var targets=game.filterPlayer(current=>{ + if(current==player) return false; + return current.group==target.group; + }); + player.line(targets); + targets.forEach(i=>i.damage(1,'fire')); + }, + ai:{ + order:7, + result:{ + target:function(player,target){ + var att=get.attitude(player,target); + return get.sgn(att)*game.filterPlayer(current=>{ + if(current==player) return false; + return current.group==target.group; + }).reduce((num,current)=>num+get.damageEffect(current,player,player,'fire'),0); + }, + }, + }, + }, + achieve:{ + audio:'sbhuoji2', + trigger:{player:'phaseZhunbeiBegin'}, + filter:function(event,player){ + return player.getAllHistory('sourceDamage',evt=>evt.hasNature('fire')).reduce((num,evt)=>num+evt.num,0)>=game.players.length+game.dead.length; + }, + forced:true, + locked:false, + skillAnimation:true, + animationColor:'fire', + content:function(){ + player.awakenSkill('sbhuoji'); + game.log(player,'成功完成使命'); + player.removeSkill(['sbhuoji','sbkanpo']); + player.addSkill(['sbguanxing','sbkongcheng']); + }, + }, + fail:{ + audio:'sbhuoji3', + trigger:{player:'dying'}, + forced:true, + locked:false, + content:function(){ + player.awakenSkill('sbhuoji'); + game.log(player,'使命失败'); + }, + }, + }, + }, + sbhuoji1:{audio:true}, + sbhuoji2:{audio:true}, + sbhuoji3:{audio:true}, + sbkanpo:{ + audio:2, + trigger:{global:'roundStart'}, + forced:true, + locked:false, + content:function*(event,map){ + var player=map.player; + var storage=player.getStorage('sbkanpo').slice(); + if(storage.length){ + player.unmarkAuto('sbkanpo',storage); + } + var result=yield player.chooseButton(['看破:是否记录三张不同的牌名',[lib.inpile.map(name=>[get.translation(get.type(name)),'',name]),'vcard']],3).set('ai',function(button){ + switch(button.link[2]){ + case 'wuxie':return 5+Math.random(); + case 'sha':return 5+Math.random(); + case 'tao':return 4+Math.random(); + case 'lebu':return 3+Math.random(); + case 'shan':return 4.5+Math.random(); + case 'wuzhong':return 4+Math.random(); + case 'shunshou':return 3+Math.random(); + case 'nanman':return 2+Math.random(); + case 'wanjian':return 2+Math.random(); + default:return Math.random(); + } + }).set('filterButton',button=>{ + return !_status.event.names.includes(button.link[2]); + }).set('names',storage); + if(result.bool){ + var names=result.links.map(link=>link[2]); + player.markAuto('sbkanpo',names); + game.log(player,'记录了','#y'+get.translation(names)); + } + }, + intro:{content:'已记录$'}, + group:'sbkanpo_kanpo', + subSkill:{ + kanpo:{ + audio:'sbkanpo', + trigger:{global:'useCard'}, + filter:function(event,player){ + return event.player!=player&&player.getStorage('sbkanpo').includes(event.card.name); + }, + prompt:function(event,player){ + return '移除'+get.translation(event.card.name)+',令'+get.translation(event.card)+'失效'; + }, + check:function(event,player){ + var effect=0; + if(event.card.name=='wuxie'||event.card.name=='shan'){ + if(get.attitude(player,event.player)<-1) effect=-1; + } + else if(event.targets&&event.targets.length){ + for(var i=0;icard.hasGaintag('sbguanxing'))); + }, + forced:true, + locked:false, + content:function(){ + 'step 0' + if(trigger.name=='phaseJieshu'){ + event.goto(1); + return; + } + var cards=player.getCards('s',card=>card.hasGaintag('sbguanxing')); + if(cards.length) player.loseToDiscardpile(cards); + var bool=player.getAllHistory('useSkill',evt=>evt.skill=='sbguanxing').length>1; + var num=Math.min(7,bool?cards.length+1:7); + var cards2=get.cards(num+1); + player.$gain2(cards2,false); + game.log(player,'将',cards2,'置于了武将牌上'); + player.loseToSpecial(cards2,'sbguanxing').visible=true; + 'step 1' + var cards=player.getCards('s',card=>card.hasGaintag('sbguanxing')); + if(cards.length){ + player.chooseToMove().set('list',[ + ['“星”',cards], + ['牌堆顶'], + ]).set('prompt','观星:点击将牌移动到牌堆顶').set('processAI',function(list){ + var cards=list[0][1].slice(),player=_status.event.player; + var name=_status.event.getTrigger().name; + var target=(name=='phaseBegin'?player:target); + var top=[],att=get.sgn(get.attitude(player,target)); + if(att!=0&&(target!=player||!player.hasWuxie())){ + for(var i=0;ijudge(b)-judge(a)); + if(judge(cards[0])>0) top.unshift(cards.shift()); + else break; + } + } + return [cards,top]; + }).set('filterOk',function(moved){ + return moved[1].length; + }); + } + else event._result={bool:false}; + 'step 2' + if(result.bool){ + var cards=result.moved[1]; + player.$throw(cards,1000); + for(var i=cards.length-1;i>=0;i--){ + player.lose([cards[i]],ui.cardPile,'insert'); + } + } + else if(trigger.name=='phaseBegin') player.addTempSkill('sbguanxing_on'); + }, + subSkill:{on:{charlotte:true}}, + marktext:'星', + intro:{ + mark:function(dialog,storage,player){ + var cards=player.getCards('s',card=>card.hasGaintag('sbguanxing')); + if(!cards||!cards.length) return; + dialog.addAuto(cards); + }, + markcount:function(storage,player){ + return player.countCards('s',card=>card.hasGaintag('sbguanxing')); + }, + onunmark:function(storage,player){ + var cards=player.getCards('s',card=>card.hasGaintag('sbguanxing')); + if(cards.length) player.loseToDiscardpile(cards); + }, + }, + mod:{ + aiOrder:function(player,card,num){ + var cards=player.getCards('s',card=>card.hasGaintag('sbguanxing')); + if(get.itemtype(card)=='card'&&card.hasGaintag('sbguanxing')) return num+(cards.length>1?0.5:-0.0001); + }, + }, + }, + sbkongcheng:{ + audio:2, + trigger:{player:'damageBegin2'}, + filter:function(event,player){ + return player.hasSkill('sbguanxing'); + }, + forced:true, + content:function(){ + 'step 0' + var num=player.countCards('s',card=>card.hasGaintag('sbguanxing')); + event.num=num; + if(!num){ + trigger.num++; + event.finish(); + } + else player.judge(); + 'step 1' + if(result.number<=num) trigger.num--; + }, + }, //卢植 sbzhenliang:{ mark:true, @@ -5100,6 +5340,16 @@ game.import('character',function(lib,game,ui,get,ai,_status){ sb_xiaoqiao_prefix:'谋', sbtianxiang:'天香', sbtianxiang_info:'①出牌阶段限三次,你可以交给一名没有“天香”标记的其他角色一张红色牌,然后令其获得此牌花色的“天香”标记。②当你受到伤害时,你可以移去一名角色的“天香”标记,若此“天香”标记为:红桃,你防止此伤害,其受到伤害来源对其造成的1点伤害(若没有伤害来源则改为无来源伤害);方片,其交给你两张牌。③准备阶段,你移去场上所有的“天香”标记,然后摸等量的牌。', + sb_zhugeliang:'谋诸葛亮', + sb_zhugeliang_prefix:'谋', + sbhuoji:'火计', + sbhuoji_info:'使命技。①使命:出牌阶段限一次,你可以选择一名其他角色,对其和所有势力与其势力相同的其他角色造成1点火属性伤害。②成功:准备阶段,若你本局游戏已造成的火属性伤害大于等于游戏人数,则你失去〖火计〗和〖看破〗,获得〖观星〗和〖空城〗。③失败:使命成功前进入濒死状态。', + sbkanpo:'看破', + sbkanpo_info:'①一轮开始时,你清除“看破”记录的牌名,然后你可以记录三个非此次移去的牌名的牌名。②一名其他角色使用你“看破”记录的牌名的牌时,你可以从“看破”中移去此牌名,令此牌无效。', + sbguanxing:'观星', + sbguanxing_info:'①准备阶段,你将武将牌上所有“星”置入弃牌堆,将牌堆顶的X张牌称为“星”置于你的武将牌上(X为你此次移去的“星”数+1且至多为7,若本次为第一次发动〖观星〗则X为7),然后你可以将任意张“星”置于牌堆顶,若你未将任意“星”置于牌堆顶,你可以于结束阶段将任意张“星”置于牌堆顶。②你可以如手牌般使用或打出“星”。', + sbkongcheng:'空城', + sbkongcheng_info:'锁定技,当你受到伤害时,若你拥有技能〖观星〗,则:若你有“星”,你进行一次判定,若判定结果点数小于等于你的“星”,则此伤害-1;没有“星”,此伤害+1。', sb_zhi:'谋攻篇·知', sb_shi:'谋攻篇·识',