From e0c9c137c3dc6cc819471c6f60f53152e461d996 Mon Sep 17 00:00:00 2001 From: mengxinzxz <139629761+mengxinzxz@users.noreply.github.com> Date: Wed, 30 Aug 2023 01:13:51 +0800 Subject: [PATCH] =?UTF-8?q?=E6=89=8B=E6=9D=80=E9=83=AD=E7=85=A7=EF=BC=8C?= =?UTF-8?q?=E6=89=8B=E6=9D=80=E5=BC=A0=E5=B6=B7=EF=BC=8C=E6=89=8B=E6=9D=80?= =?UTF-8?q?=E5=AD=99=E4=BA=AE+=E6=89=8B=E6=9D=80=E5=BC=82=E6=9E=84?= =?UTF-8?q?=E7=A5=9E=E8=AF=9D=E5=8C=85=E5=88=86=E8=A7=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 添加手杀测试服武将手杀郭照,手杀张嶷(unseen) 添加手杀异构武将手杀孙亮 手杀异构神话包分解为风火林山阴雷六个小包 --- character/mobile.js | 402 +++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 394 insertions(+), 8 deletions(-) diff --git a/character/mobile.js b/character/mobile.js index e0f607029..0f7829248 100644 --- a/character/mobile.js +++ b/character/mobile.js @@ -6,22 +6,29 @@ game.import('character',function(lib,game,ui,get,ai,_status){ connect:true, characterSort:{ mobile:{ - mobile_default:["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","old_wanglang",'shichangshi'], + mobile_default:['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","old_wanglang",'shichangshi'], mobile_yijiang:["yj_zhanghe","yj_zhangliao","yj_xuhuang","yj_ganning",'yj_huangzhong','yj_weiyan'], - mobile_sunben:["re_sunben"], mobile_standard:["xin_xiahoudun","xin_zhangfei"], - mobile_shenhua:["re_pangtong","re_guanqiujian","xin_yuanshao","re_liushan","re_dongzhuo","re_sp_zhugeliang","re_sunjian","re_dengai","re_jiangwei","re_zhurong","re_caiwenji","re_xunyu","re_dianwei","xin_zhoutai","re_yanwen",'re_zhangzhang','re_xiaoqiao'], + mobile_shenhua_feng:['re_xiaoqiao',"xin_zhoutai"], + mobile_shenhua_huo:["re_pangtong","re_sp_zhugeliang","re_xunyu","re_dianwei","re_yanwen","xin_yuanshao"], + mobile_shenhua_lin:["re_dongzhuo","re_sunjian","re_zhurong"], + mobile_shenhua_shan:["re_liushan","re_dengai","re_jiangwei","re_caiwenji",'re_zhangzhang',"re_sunben"], + mobile_shenhua_yin:['xin_sunliang'], + mobile_shenhua_lei:["re_guanqiujian"], mobile_yijiang1:["re_xusheng","re_lingtong","ol_yujin","re_wuguotai","re_gaoshun",'re_caozhi'], mobile_yijiang2:["xin_liaohua","xin_caozhang","re_liubiao","re_handang","xin_chengpu","xin_gongsunzan","re_zhonghui","re_bulianshi"], mobile_yijiang3:["re_liru","xin_jianyong","xin_zhuran","xin_guohuai","xin_panzhangmazhong","xin_fuhuanghou","re_yufan"], mobile_yijiang4:["xin_zhoucang","xin_caifuren","xin_guyong","xin_sunluban","xin_caozhen","xin_jushou","xin_wuyi","xin_zhuhuan","re_chenqun"], - mobile_yijiang5:['xin_sunxiu','xin_quancong','xin_zhuzhi','xin_caoxiu'], + mobile_yijiang5:['xin_zhangyi','xin_sunxiu','xin_quancong','xin_zhuzhi','xin_caoxiu'], mobile_yijiang67:["re_jikang"], mobile_changshi:['scs_zhangrang','scs_zhaozhong','scs_sunzhang','scs_bilan','scs_xiayun','scs_hankui','scs_lisong','scs_duangui','scs_guosheng','scs_gaowang'], mobile_sp:["old_yuanshu","re_wangyun","re_baosanniang","re_weiwenzhugezhi","re_zhanggong","re_xugong","re_heqi","liuzan","xin_hansui"], }, }, character:{ + xin_guozhao:['female','wei',3,['yichong','wufei'],['unseen']], + xin_zhangyi:['male','shu',4,['xinwurong','shizhi'],['unseen']], + xin_sunliang:['male','wu',3,['xinzhizheng','xinkuizhu','xinlijun'],['zhu']], re_xiaoqiao:['female','wu',3,['retianxiang','xinhongyan']], shichangshi:['male','qun',1,['mbdanggu','mbmowang']], re_zhangzhang:['male','wu',3,['rezhijian','guzheng']], @@ -387,6 +394,368 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, }, skill:{ + //郭照 + yichong:{ + init:function(player){ + if(!lib.skill['yichong_'+player.playerid]){ + lib.skill['yichong_'+player.playerid]={ + init:function(player){ + player.storage['yichong_'+player.playerid]=0; + }, + onremove:true, + mark:true, + marktext:'雀', + intro:{ + content:function(storage){ + return '已被掠夺'+(storage||0)+'张牌'; + }, + }, + }; + lib.translate['yichong_'+player.playerid]='易宠'; + lib.translate['yichong_'+player.playerid+'_bg']='雀'; + } + }, + audio:2, + trigger:{player:'phaseZhunbeiBegin'}, + direct:true, + content:function(){ + 'step 0' + player.chooseTarget(get.prompt('meihun'),'选择一名其他角色并选择一个花色,获得其此花色的所有牌并令其获得“雀”标记',lib.filter.notMe).set('ai',function(target){ + var player=_status.event.player; + var att=get.attitude(player,target); + if(att>0) return 0; + var getNum=function(player){ + var list=[]; + for(var i of lib.suit) list.push((player.countCards('he',{suit:i})+3)); + return list.sort((a,b)=>b-a)[0]; + }; + return getNum(target)+target.countCards('h')/10; + }); + 'step 1' + if(result.bool){ + var target=result.targets[0]; + player.logSkill('yichong',target); + event.target=target; + player.chooseControl(lib.suit.slice(0).reverse()).set('prompt','请声明一个花色').set('ai',function(){ + var target=_status.event.target,cards=target.getCards('he'); + var suits=lib.suit.slice(0); + suits.sort(function(a,b){ + var num=function(suit){ + return cards.filter(function(card){ + return get.suit(card)==suit; + }).length; + }; + return num(b)-num(a); + }); + return suits[0]; + }).set('target',target); + } + else event.finish(); + 'step 2' + var suit=result.control; + player.chat(get.translation(suit+2)); + game.log(player,'选择了','#y'+get.translation(suit+2)); + player.storage.yichong=suit; + player.markSkill('yichong'); + game.broadcastAll(function(player,suit){ + if(player.marks.yichong) player.marks.yichong.firstChild.innerHTML=get.translation(suit); + },player,suit) + if(target.countCards('he',{suit:suit})) player.gain(target.getCards('he',{suit:suit}),target,'giveAuto'); + game.countPlayer(function(current){ + current.removeSkill('yichong_'+player.playerid); + if(current==target) target.addSkill('yichong_'+player.playerid); + }); + }, + onremove:true, + intro:{content:'拥有“雀”标记的角色获得$牌后,你获得之'}, + group:'yichong_gain', + subSkill:{ + gain:{ + audio:'yichong', + trigger:{global:['gainAfter','loseAsyncAfter']}, + filter:function(event,player){ + if(!player.storage.yichong) return false; + return game.hasPlayer(function(current){ + if(!event.getg(current).length||!current.hasSkill('yichong_'+player.playerid)) return false; + if(current.countMark('yichong_'+player.playerid)>=5) return false; + return event.getg(current).some(card=>get.suit(card,current)==player.storage.yichong&&lib.filter.canBeGained(card,current,player)); + }); + }, + forced:true, + content:function(){ + 'step 0' + var target=game.findPlayer(function(current){ + if(!trigger.getg(current).length||!current.hasSkill('yichong_'+player.playerid)) return false; + if(current.countMark('yichong_'+player.playerid)>=5) return false; + return trigger.getg(current).some(card=>get.suit(card,current)==player.storage.yichong&&lib.filter.canBeGained(card,current,player)); + }); + event.target=target; + var cards=trigger.getg(target).filter(card=>get.suit(card,target)==player.storage.yichong&&lib.filter.canBeGained(card,target,player)); + if(cards.length<=5-target.countMark('yichong_'+player.playerid)) event._result={bool:true,links:cards}; + else{ + var num=(5-target.countMark('yichong_'+player.playerid)); + player.chooseButton(['易宠:获得其中的'+get.cnNumber(num)+'张牌',cards],num,true).set('ai',function(button){ + return get.value(button.link); + }); + } + 'step 1' + if(result.bool){ + player.gain(result.links,target,'give'); + target.addMark('yichong_'+player.playerid,result.links.length,false); + } + }, + }, + }, + }, + wufei:{ + audio:2, + trigger:{player:['useCardToPlayered','damageEnd']}, + filter:function(event,player){ + var target=game.findPlayer(current=>current.hasSkill('yichong_'+player.playerid)); + if(!target) return false; + if(event.name=='damage') return target.hp>Math.max(1,player.hp); + return event.isFirstTarget&&(event.card.name=='sha'||(get.type(event.card)=='trick'&&get.tag(event.card,'damage'))); + }, + direct:true, + content:function(){ + 'step 0' + var target=game.findPlayer(current=>current.hasSkill('yichong_'+player.playerid)); + event.target=target; + if(trigger.name=='damage'){ + player.chooseBool(get.prompt('wufei',target),'对'+get.translation(target)+'造成1点伤害').set('choice',get.damageEffect(target,player,player)>0); + } + else{ + player.logSkill('wufei',target); + player.addTempSkill('wufei_effect'); + player.markAuto('wufei_effect',[trigger.card]); + game.log(target,'成为了',trigger.card,'的伤害来源'); + event.finish(); + } + 'step 1' + if(result.bool){ + player.logSkill('wufei',target); + target.damage(); + } + }, + subSkill:{ + effect:{ + charlotte:true, + trigger:{source:'damageBefore'}, + filter:function(event,player){ + if(!event.card) return false; + return player.getStorage('wufei_effect').contains(event.card); + }, + forced:true, + popup:false, + firstDo:true, + content:function(){ + var target=game.findPlayer(current=>current.hasSkill('yichong_'+player.playerid)); + if(!target) delete trigger.source; + else trigger.source=target; + }, + }, + }, + }, + //张嶷 + xinwurong:{ + audio:2, + enable:'phaseUse', + usable:1, + filterTarget:lib.filter.notMe, + content:function(){ + 'step 0' + player.chooseToDuiben(target).set('title','谋弈').set('namelist',[ + '反抗','归顺','镇压','安抚' + ]).set('ai',button=>1+Math.random()); + 'step 1' + if(result.bool){ + if(result.player=='db_def1'){ + target.damage(); + player.draw(); + event.finish(); + } + else{ + var cards=target.getCards('he'); + if(cards.length<2){ + target.skip('phaseDraw'); + target.addTempSkill('xinwurong_skip',{player:'phaseDrawSkipped'}); + event.finish(); + } + else if(cards.length==2) event._result={bool:true,cards:cards}; + else target.chooseCard('怃戎:交给'+get.translation(player)+'两张牌',2,true,'he'); + } + } + else{ + if(result.player=='db_def1'){ + player.gainPlayerCard(target,'he',true); + event.goto(3); + } + else{ + player.damage(); + player.draw(); + event.finish(); + } + } + 'step 2' + if(result.bool) player.gain(result.cards,target,'giveAuto'); + event.finish(); + 'step 3' + var cards=player.getCards('he'); + if(!cards.length) event.finish(); + else if(cards.length<=2) event._result={bool:true,cards:cards}; + else player.chooseCard('怃戎:交给'+get.translation(target)+'两张牌',2,true,'he'); + 'step 4' + if(result.bool) target.gain(result.cards,player,'giveAuto'); + }, + ai:{ + order:7, + result:{ + player:1, + target:-1, + }, + }, + subSkill:{ + skip:{ + charlotte:true, + mark:true, + intro:{content:'跳过下个摸牌阶段'}, + }, + }, + }, + //孙亮 + xinkuizhu:{ + audio:'nzry_kuizhu', + trigger:{player:'phaseDiscardAfter'}, + filter:function(event,player){ + return player.getHistory('lose',function(evt){ + return evt.type=='discard'&&evt.getParent('phaseDiscard')==event; + }).length; + }, + direct:true, + content:function(){ + 'step 0' + var cards=[]; + player.getHistory('lose',function(evt){ + if(evt.type=='discard'&&evt.getParent('phaseDiscard')==trigger) cards.addArray(evt.cards2); + }); + event.num=cards.length; + event.str1='令至多'+event.num+'名角色摸一张牌'; + event.str2='对任意名体力值之和为'+event.num+'的角色造成1点伤害'; + player.chooseControl('cancel2').set('ai',function(){ + if(game.countPlayer(function(current){return get.attitude(player,current)<0&¤t.hp==event.num})>0&&event.num<=3) return 1; + return 0; + }).set('choiceList',[event.str1,event.str2]).set('prompt','是否发动【溃诛】?'); + 'step 1' + if(result.control=='cancel2') event.finish(); + event.control=[event.str1,event.str2][result.index]; + 'step 2' + var str='请选择〖溃诛〗的目标'; + if(event.bool==false) str='
所选目标体力之和不足'+event.num+',请重选'; + if(event.control==event.str2){ + player.chooseTarget(str,function(card,player,target){ + var targets=ui.selected.targets; + var num=0; + for(var i=0;i=2) player.loseHp(); + } + } + } + }, + }, + xinzhizheng:{ + audio:'nzry_zhizheng', + mod:{ + playerEnabled:function(card,player,target){ + var info=get.info(card); + if(target!=player&&(!info||!info.singleCard||!ui.selected.targets.length)&&player.isPhaseUsing()&&!target.inRange(player)) return false; + }, + }, + trigger:{player:'phaseUseEnd'}, + filter:function(event,player){ + return player.getHistory('useCard',function(evt){ + return evt.getParent('phaseUse')==event; + }).length0); + 'step 1' + if(result.bool){ + player.logSkill('xinlijun',trigger.player); + player.gain(trigger.cards.filterInD(),'gain2'); + player.chooseBool().set('prompt','是否令'+get.translation(trigger.player)+'摸一张牌?').set('choice',get.attitude(player,trigger.player)>0); + } + else event.finish(); + 'step 2' + if(result.bool) trigger.player.draw(); + }, + }, //十常侍 mbdanggu:{ audio:2, @@ -13374,8 +13743,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){ //伊吹 风子 qiaosi_c6:' ', //仲村 由理 - mobile_sunben:'那个男人', - //孙笨 yangbiao:'手杀杨彪', zhaohan:'昭汉', @@ -13820,10 +14187,29 @@ game.import('character',function(lib,game,ui,get,ai,_status){ scsmiaoyu:'妙语', scsmiaoyu_info:'你可以将至多两张相同花色的牌按照以下规则使用或打出:♦牌当作火【杀】,♥牌当作【桃】,♣牌当作【闪】,♠牌当作【无懈可击】。若你以此法使用了两张红色牌,则此牌回复值或伤害值+1。若你以此法使用了两张黑色牌,则你弃置当前回合角色一张牌。', re_xiaoqiao:'手杀小乔', - + xin_sunliang:'手杀孙亮', + xinkuizhu:'溃诛', + xinkuizhu_info:'弃牌阶段结束后,你可以选择一项:1.令至多X名角色各摸一张牌。2.对任意名体力值之和为X的角色造成1点伤害,若你以此法选择的角色数不小于2,你失去1点体力。(X为你此阶段弃置的牌数)', + xinzhizheng:'掣政', + xinzhizheng_info:'锁定技,你的出牌阶段内,攻击范围内不包含你的其他角色不能成为你使用牌的目标。出牌阶段结束时,若你本阶段内使用的牌数小于这些角色的数量,则你弃置其中一名角色的一张牌。', + xinlijun:'立军', + xinlijun_info:'主公技,其他吴势力角色于其回合内使用【杀】结算完毕后,其可以将此【杀】对应的实体牌交给你,然后你可以令其摸一张牌。', + xin_zhangyi:'手杀张嶷', + xinwurong:'怃戎', + xinwurong_info:'出牌阶段限一次,你可以与一名其他角色进行谋弈:
  • 若你选择“镇压”且其选择“反抗”,你对其造成1点伤害,然后你摸一张牌。
  • 若你选择“安抚”且其选择“归顺”,其须交给你两张牌(若其手牌数不足两张,则改为令其跳过其下个摸牌阶段)。
  • 若你选择“镇压”且其选择“归顺”,你获得其一张牌,然后你交给其两张牌。
  • 若你选择“安抚”且其选择“反抗”,你受到1点伤害,然后你摸一张牌。', + xin_guozhao:'手杀郭照', + yichong:'易宠', + yichong_info:'①准备阶段,你可以选择一名其他角色并选择一个花色,然后你获得其所有此花色的牌,移除场上的所有“雀”标记并令其获得“雀”标记。②拥有“雀”标记的角色获得你最后一次发动〖易宠①〗选择的花色的牌后,你获得这些牌,你至多通过每个“雀”获得五张牌。', + wufei:'诬诽', + wufei_info:'若场上有拥有“雀”的角色A,则:①当你使用【杀】或伤害类锦囊牌指定第一个目标后,你令A成为此牌伤害来源。②当你受到伤害后,若A的体力值大于1且A的体力值大于你,则你可以对A造成1点伤害。', mobile_standard:'手杀异构·标准包', - mobile_shenhua:'手杀异构·神话再临', + mobile_shenhua_feng:'手杀异构·其疾如风', + mobile_shenhua_huo:'手杀异构·侵掠如火', + mobile_shenhua_lin:'手杀异构·其徐如林', + mobile_shenhua_shan:'手杀异构·不动如山', + mobile_shenhua_yin:'手杀异构·难知如阴', + mobile_shenhua_lei:'手杀异构·动如雷霆', mobile_yijiang1:'手杀异构·将1', mobile_yijiang2:'手杀异构·将2', mobile_yijiang3:'手杀异构·将3',