diff --git a/audio/die/caohua.mp3 b/audio/die/caohua.mp3 new file mode 100644 index 000000000..0f2361948 Binary files /dev/null and b/audio/die/caohua.mp3 differ diff --git a/audio/die/db_wenyang.mp3 b/audio/die/db_wenyang.mp3 index 74a194676..d5bad0a2c 100644 Binary files a/audio/die/db_wenyang.mp3 and b/audio/die/db_wenyang.mp3 differ diff --git a/audio/die/dc_liuyu.mp3 b/audio/die/dc_liuyu.mp3 new file mode 100644 index 000000000..a7639af58 Binary files /dev/null and b/audio/die/dc_liuyu.mp3 differ diff --git a/audio/die/ol_xunyu.mp3 b/audio/die/ol_xunyu.mp3 new file mode 100644 index 000000000..5c03dac7e Binary files /dev/null and b/audio/die/ol_xunyu.mp3 differ diff --git a/audio/die/qinyilu.mp3 b/audio/die/qinyilu.mp3 new file mode 100644 index 000000000..eb636cb3c Binary files /dev/null and b/audio/die/qinyilu.mp3 differ diff --git a/audio/die/re_liuchen.mp3 b/audio/die/re_liuchen.mp3 new file mode 100644 index 000000000..9be3699ee Binary files /dev/null and b/audio/die/re_liuchen.mp3 differ diff --git a/audio/die/ruanhui.mp3 b/audio/die/ruanhui.mp3 new file mode 100644 index 000000000..19804174e Binary files /dev/null and b/audio/die/ruanhui.mp3 differ diff --git a/audio/die/xin_mamidi.mp3 b/audio/die/xin_mamidi.mp3 new file mode 100644 index 000000000..691acc9fe Binary files /dev/null and b/audio/die/xin_mamidi.mp3 differ diff --git a/audio/die/xin_quancong.mp3 b/audio/die/xin_quancong.mp3 index 02f6949c8..c1d588a44 100644 Binary files a/audio/die/xin_quancong.mp3 and b/audio/die/xin_quancong.mp3 differ diff --git a/audio/die/zhangxuan.mp3 b/audio/die/zhangxuan.mp3 new file mode 100644 index 000000000..3b9e11b0f Binary files /dev/null and b/audio/die/zhangxuan.mp3 differ diff --git a/audio/skill/buxu1.mp3 b/audio/skill/buxu1.mp3 new file mode 100644 index 000000000..f10f801b1 Binary files /dev/null and b/audio/skill/buxu1.mp3 differ diff --git a/audio/skill/buxu2.mp3 b/audio/skill/buxu2.mp3 new file mode 100644 index 000000000..f2dd6ff3c Binary files /dev/null and b/audio/skill/buxu2.mp3 differ diff --git a/audio/skill/caiyi1.mp3 b/audio/skill/caiyi1.mp3 new file mode 100644 index 000000000..7bf223793 Binary files /dev/null and b/audio/skill/caiyi1.mp3 differ diff --git a/audio/skill/caiyi2.mp3 b/audio/skill/caiyi2.mp3 new file mode 100644 index 000000000..7e4d7b69f Binary files /dev/null and b/audio/skill/caiyi2.mp3 differ diff --git a/audio/skill/chengye1.mp3 b/audio/skill/chengye1.mp3 new file mode 100644 index 000000000..24925d151 Binary files /dev/null and b/audio/skill/chengye1.mp3 differ diff --git a/audio/skill/chengye2.mp3 b/audio/skill/chengye2.mp3 new file mode 100644 index 000000000..30d4a38ea Binary files /dev/null and b/audio/skill/chengye2.mp3 differ diff --git a/audio/skill/chuaili1.mp3 b/audio/skill/chuaili1.mp3 new file mode 100644 index 000000000..91a66478a Binary files /dev/null and b/audio/skill/chuaili1.mp3 differ diff --git a/audio/skill/chuaili2.mp3 b/audio/skill/chuaili2.mp3 new file mode 100644 index 000000000..c35df8a56 Binary files /dev/null and b/audio/skill/chuaili2.mp3 differ diff --git a/audio/skill/dbchongjian1.mp3 b/audio/skill/dbchongjian1.mp3 index 4a4659866..1e4701da8 100644 Binary files a/audio/skill/dbchongjian1.mp3 and b/audio/skill/dbchongjian1.mp3 differ diff --git a/audio/skill/dbchongjian2.mp3 b/audio/skill/dbchongjian2.mp3 index 880501b9c..306809ee1 100644 Binary files a/audio/skill/dbchongjian2.mp3 and b/audio/skill/dbchongjian2.mp3 differ diff --git a/audio/skill/dbchoujue1.mp3 b/audio/skill/dbchoujue1.mp3 index 9c3dc3c3a..113c05a3a 100644 Binary files a/audio/skill/dbchoujue1.mp3 and b/audio/skill/dbchoujue1.mp3 differ diff --git a/audio/skill/dbchoujue2.mp3 b/audio/skill/dbchoujue2.mp3 index fd6845b6c..35dbb6ffc 100644 Binary files a/audio/skill/dbchoujue2.mp3 and b/audio/skill/dbchoujue2.mp3 differ diff --git a/audio/skill/dbquedi1.mp3 b/audio/skill/dbquedi1.mp3 index 4339b08e2..6ae860151 100644 Binary files a/audio/skill/dbquedi1.mp3 and b/audio/skill/dbquedi1.mp3 differ diff --git a/audio/skill/dbquedi2.mp3 b/audio/skill/dbquedi2.mp3 index cb4a92edc..f5e4824cf 100644 Binary files a/audio/skill/dbquedi2.mp3 and b/audio/skill/dbquedi2.mp3 differ diff --git a/audio/skill/dbzhuifeng1.mp3 b/audio/skill/dbzhuifeng1.mp3 index 218695f13..c3ba20f2a 100644 Binary files a/audio/skill/dbzhuifeng1.mp3 and b/audio/skill/dbzhuifeng1.mp3 differ diff --git a/audio/skill/dbzhuifeng2.mp3 b/audio/skill/dbzhuifeng2.mp3 index d87174dc2..f5eaccb57 100644 Binary files a/audio/skill/dbzhuifeng2.mp3 and b/audio/skill/dbzhuifeng2.mp3 differ diff --git a/audio/skill/dcpijing1.mp3 b/audio/skill/dcpijing1.mp3 new file mode 100644 index 000000000..19432bea1 Binary files /dev/null and b/audio/skill/dcpijing1.mp3 differ diff --git a/audio/skill/dcpijing2.mp3 b/audio/skill/dcpijing2.mp3 new file mode 100644 index 000000000..a728f071e Binary files /dev/null and b/audio/skill/dcpijing2.mp3 differ diff --git a/audio/skill/dcsuifu1.mp3 b/audio/skill/dcsuifu1.mp3 new file mode 100644 index 000000000..651a2dcc2 Binary files /dev/null and b/audio/skill/dcsuifu1.mp3 differ diff --git a/audio/skill/dcsuifu2.mp3 b/audio/skill/dcsuifu2.mp3 new file mode 100644 index 000000000..2bdf57181 Binary files /dev/null and b/audio/skill/dcsuifu2.mp3 differ diff --git a/audio/skill/dczimu1.mp3 b/audio/skill/dczimu1.mp3 new file mode 100644 index 000000000..e6602c190 Binary files /dev/null and b/audio/skill/dczimu1.mp3 differ diff --git a/audio/skill/guili1.mp3 b/audio/skill/guili1.mp3 new file mode 100644 index 000000000..566018daf Binary files /dev/null and b/audio/skill/guili1.mp3 differ diff --git a/audio/skill/guili2.mp3 b/audio/skill/guili2.mp3 new file mode 100644 index 000000000..a575d4546 Binary files /dev/null and b/audio/skill/guili2.mp3 differ diff --git a/audio/skill/jingzhong1.mp3 b/audio/skill/jingzhong1.mp3 new file mode 100644 index 000000000..e082e73b1 Binary files /dev/null and b/audio/skill/jingzhong1.mp3 differ diff --git a/audio/skill/jingzhong2.mp3 b/audio/skill/jingzhong2.mp3 new file mode 100644 index 000000000..d49ec05ce Binary files /dev/null and b/audio/skill/jingzhong2.mp3 differ diff --git a/audio/skill/mingcha1.mp3 b/audio/skill/mingcha1.mp3 new file mode 100644 index 000000000..f75e24bf8 Binary files /dev/null and b/audio/skill/mingcha1.mp3 differ diff --git a/audio/skill/mingcha2.mp3 b/audio/skill/mingcha2.mp3 new file mode 100644 index 000000000..061489569 Binary files /dev/null and b/audio/skill/mingcha2.mp3 differ diff --git a/audio/skill/oljieming1.mp3 b/audio/skill/oljieming1.mp3 new file mode 100644 index 000000000..5ec33092a Binary files /dev/null and b/audio/skill/oljieming1.mp3 differ diff --git a/audio/skill/oljieming2.mp3 b/audio/skill/oljieming2.mp3 new file mode 100644 index 000000000..c56331b86 Binary files /dev/null and b/audio/skill/oljieming2.mp3 differ diff --git a/audio/skill/piaoping1.mp3 b/audio/skill/piaoping1.mp3 new file mode 100644 index 000000000..8a1bafc4e Binary files /dev/null and b/audio/skill/piaoping1.mp3 differ diff --git a/audio/skill/piaoping2.mp3 b/audio/skill/piaoping2.mp3 new file mode 100644 index 000000000..0332890b8 Binary files /dev/null and b/audio/skill/piaoping2.mp3 differ diff --git a/audio/skill/quhu_ol_xunyu1.mp3 b/audio/skill/quhu_ol_xunyu1.mp3 new file mode 100644 index 000000000..368a7905c Binary files /dev/null and b/audio/skill/quhu_ol_xunyu1.mp3 differ diff --git a/audio/skill/quhu_ol_xunyu2.mp3 b/audio/skill/quhu_ol_xunyu2.mp3 new file mode 100644 index 000000000..3bbe7f442 Binary files /dev/null and b/audio/skill/quhu_ol_xunyu2.mp3 differ diff --git a/audio/skill/reqinwang1.mp3 b/audio/skill/reqinwang1.mp3 new file mode 100644 index 000000000..0ce647b06 Binary files /dev/null and b/audio/skill/reqinwang1.mp3 differ diff --git a/audio/skill/reqinwang2.mp3 b/audio/skill/reqinwang2.mp3 new file mode 100644 index 000000000..397bf1887 Binary files /dev/null and b/audio/skill/reqinwang2.mp3 differ diff --git a/audio/skill/rezhanjue1.mp3 b/audio/skill/rezhanjue1.mp3 new file mode 100644 index 000000000..95763fae7 Binary files /dev/null and b/audio/skill/rezhanjue1.mp3 differ diff --git a/audio/skill/rezhanjue2.mp3 b/audio/skill/rezhanjue2.mp3 new file mode 100644 index 000000000..49c5dae6d Binary files /dev/null and b/audio/skill/rezhanjue2.mp3 differ diff --git a/audio/skill/sbyaoming1.mp3 b/audio/skill/sbyaoming1.mp3 new file mode 100644 index 000000000..ee166239f Binary files /dev/null and b/audio/skill/sbyaoming1.mp3 differ diff --git a/audio/skill/sbyaoming2.mp3 b/audio/skill/sbyaoming2.mp3 new file mode 100644 index 000000000..0ff0bf42e Binary files /dev/null and b/audio/skill/sbyaoming2.mp3 differ diff --git a/audio/skill/shezang1.mp3 b/audio/skill/shezang1.mp3 new file mode 100644 index 000000000..5aed1d7d5 Binary files /dev/null and b/audio/skill/shezang1.mp3 differ diff --git a/audio/skill/shezang2.mp3 b/audio/skill/shezang2.mp3 new file mode 100644 index 000000000..551c8ae3b Binary files /dev/null and b/audio/skill/shezang2.mp3 differ diff --git a/audio/skill/shizhan1.mp3 b/audio/skill/shizhan1.mp3 new file mode 100644 index 000000000..2c4138551 Binary files /dev/null and b/audio/skill/shizhan1.mp3 differ diff --git a/audio/skill/shizhan2.mp3 b/audio/skill/shizhan2.mp3 new file mode 100644 index 000000000..808f16e93 Binary files /dev/null and b/audio/skill/shizhan2.mp3 differ diff --git a/audio/skill/tongli1.mp3 b/audio/skill/tongli1.mp3 new file mode 100644 index 000000000..b631b77aa Binary files /dev/null and b/audio/skill/tongli1.mp3 differ diff --git a/audio/skill/tongli2.mp3 b/audio/skill/tongli2.mp3 new file mode 100644 index 000000000..0a0ab0d1b Binary files /dev/null and b/audio/skill/tongli2.mp3 differ diff --git a/audio/skill/tuoxian.mp3 b/audio/skill/tuoxian.mp3 new file mode 100644 index 000000000..c8f2c64eb Binary files /dev/null and b/audio/skill/tuoxian.mp3 differ diff --git a/audio/skill/tuoxian2.mp3 b/audio/skill/tuoxian2.mp3 new file mode 100644 index 000000000..206c09e49 Binary files /dev/null and b/audio/skill/tuoxian2.mp3 differ diff --git a/card/guozhan.js b/card/guozhan.js index d01dffdc0..727c2dbbf 100644 --- a/card/guozhan.js +++ b/card/guozhan.js @@ -640,7 +640,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){ targets.push(player); if(target.identity!='ye'){ game.filterPlayer(function(current){ - return target!=current&&target.identity==current.identity&&!current.hasSkill('diaohulishan'); + return target!=current&&target.isFriendOf(current)&&!current.hasSkill('diaohulishan'); },targets); } } @@ -1072,7 +1072,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){ equipValue:function(card,player){ if(player.identity=='unknown'||player.identity=='ye') return 2.5; return 2+game.countPlayer(function(current){ - return current.identity==player.identity; + return current.isFriendOf(player); })/2; }, basic:{ @@ -1747,11 +1747,9 @@ game.import('card',function(lib,game,ui,get,ai,_status){ g_wuliu_skill:{ equipSkill:true, mod:{ - attackFrom:function(from,to,distance){ - return distance-game.countPlayer(function(current){ - if(current==from) return false; - if(current.identity=='unknown'||current.identity=='ye') return false; - if(current.identity!=from.identity) return false; + attackRange:function(player,distance){ + return distance+game.countPlayer(function(current){ + if(current==player||!current.isFriendOf(player)) return false; if(current.hasSkill('wuliu_skill')) return true; }); } diff --git a/card/standard.js b/card/standard.js index 9f908a497..92c19408a 100644 --- a/card/standard.js +++ b/card/standard.js @@ -717,11 +717,11 @@ game.import('card',function(lib,game,ui,get,ai,_status){ } "step 1" if(result&&result.control=='顺时针'){ - var evt=event.getParent(); + var evt=event.getParent(),sorter=(_status.currentPhase||player); evt.fixedSeat=true; - evt.targets.sortBySeat(); + evt.targets.sortBySeat(sorter); evt.targets.reverse(); - if(evt.targets[evt.targets.length-1]==player){ + if(evt.targets[evt.targets.length-1]==sorter){ evt.targets.unshift(evt.targets.pop()); } } @@ -863,14 +863,15 @@ game.import('card',function(lib,game,ui,get,ai,_status){ }, result:{ target:function(player,target){ + var sorter=(_status.currentPhase||player); if(get.is.versus()){ - if(target==player) return 1.5; + if(target==sorter) return 1.5; return 1; } if(player.hasUnknown(2)){ return 0; } - return (1-get.distance(player,target,'absolute')/game.countPlayer())*get.attitude(player,target)>0?0.5:0.7; + return (1-get.distance(sorter,target,'absolute')/game.countPlayer())*get.attitude(player,target)>0?0.5:0.7; } }, tag:{ diff --git a/character/diy.js b/character/diy.js index ab3f796f2..d5127df31 100755 --- a/character/diy.js +++ b/character/diy.js @@ -7,7 +7,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ character:{ noname:["female","key",3,["noname_zhuyuan","noname_duocai"]], sp_key_yuri:['female','qun',4,['mubing','ziqu','diaoling']], - key_lucia:['female','key','1/2',['lucia_duqu','lucia_zhenren']], + key_lucia:['female','key','2/3',['lucia_duqu','lucia_zhenren']], key_kyousuke:['male','key',4,['nk_shekong','key_huanjie']], key_yuri:['female','key',3,['yuri_xingdong','key_huanjie','yuri_wangxi'],['zhu']], key_haruko:['female','key',4,['haruko_haofang','haruko_zhuishi']], @@ -97,6 +97,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ ns_yanghu:['male','jin',3,['nsbizhao','nsqingde','nsyidi'],['hiddenSkill']], ns_zanghong:['male','qun',4,['nsshimeng']], ns_ruanji:['male','wei',3,['nsshizui','nsxiaoye']], + ns_limi:['male','jin',3,['nstuilun']], ns_zhangwei:['female','shu',3,['nsqiyue','nsxuezhu']], diy_wenyang:['male','wei','4/6',['lvli','choujue']], @@ -198,7 +199,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ "ns_huangchengyan","ns_sunchensunjun","ns_yuanxi","ns_caoshuang"], diy_yijiang2:["key_yuuki","key_tenzen","key_kyouko","key_kotarou","key_kyou", "ns_chentai","ns_huangwudie","ns_sunyi","ns_zhangning","ns_yanghu"], - diy_yijiang3:['ns_ruanji','ns_zanghong'], + diy_yijiang3:['ns_ruanji','ns_zanghong','ns_limi'], diy_tieba:["ns_zuoci","ns_lvzhi","ns_wangyun","ns_nanhua","ns_nanhua_left","ns_nanhua_right","ns_huamulan","ns_huangzu","ns_jinke","ns_yanliang","ns_wenchou","ns_caocao","ns_caocaosp","ns_zhugeliang","ns_wangyue","ns_yuji","ns_xinxianying","ns_guanlu","ns_simazhao","ns_sunjian","ns_duangui","ns_zhangbao","ns_masu","ns_zhangxiu","ns_lvmeng","ns_shenpei","ns_yujisp","ns_yangyi","ns_liuzhang","ns_xinnanhua","ns_luyusheng"], diy_fakenews:["diy_wenyang","ns_zhangwei","ns_caimao","ns_chengpu"], diy_xushi:["diy_feishi","diy_hanlong","diy_liufu","diy_liuyan","diy_liuzan","diy_tianyu","diy_xizhenxihong","diy_yangyi","diy_zaozhirenjun"], @@ -312,6 +313,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ ns_yanghu:'#ginCenv', ns_ruanji:'#g伯约的崛起', ns_zanghong:'#g阿七', + ns_limi:'#g-心若困兽-', ns_luyusheng:'#g猫咪大院 - 魚と水', ns_caimao:'#gP尔号玩家◆', @@ -519,6 +521,108 @@ game.import('character',function(lib,game,ui,get,ai,_status){ key_lucia:['key_shizuru'], }, skill:{ + //李密 + nstuilun:{ + trigger:{player:'phaseJieshuBegin'}, + filter:function(event,player){ + return player.hp>1&&player.countCards('h')>1&&player.hasCard(function(card){ + return lib.filter.cardDiscardable(card,player,'nstuilun'); + },'h'); + }, + prompt2:'失去任意点体力(至多失去至1点)并弃置任意张手牌(至多弃置至一张)。', + check:function(event,player){ + if(game.hasPlayer(function(current){ + return current!=player&¤t.hp>=player.hp; + })) return true; + return false; + }, + content:function(){ + 'step 0' + if(player.hp==2) event._result={index:0}; + else{ + var list=[]; + for(var i=1;i1&&player.hasCard(function(card){ + return lib.filter.cardDiscardable(card,player,'nstuilun'); + },'h')){ + player.chooseToDiscard('h',true,[1,player.countCards('h')-1]); + } + else game.delayx(); + 'step 3' + player.addTempSkill('nstuilun_effect',{player:'phaseBegin'}); + }, + subSkill:{ + effect:{ + charlotte:true, + trigger:{global:'phaseBegin'}, + forced:true, + popup:false, + filter:function(event,player){ + return player.hp0&&player.countCards('h')=get.effect(target,{name:'losehp'},player,player)) return 0; + return 1; + }); + } + else event.goto(3); + 'step 2' + if(result.index==0) target.recover(); + else target.loseHp(); + 'step 3' + if(trigger.player.countCards('h')>player.countCards('h')){ + var str=get.cnNumber(player.hp); + player.chooseTarget('退论:是否令一名角色摸一张牌或弃置一张牌?').set('ai',function(target){ + var player=_status.event.player; + var att=get.attitude(player,target); + if(att>0||target.countCards('he')==0) return get.effect(target,{name:'wuzhong'},player,player)/2; + return get.effect(target,{name:'guohe_copy2'},target,player); + }); + } + else event.finish(); + 'step 4' + if(result.bool){ + var target=result.targets[0]; + event.target=target; + player.logSkill('nstuilun_effect',target); + if(!target.countCards('he')) event._result={index:1}; + else player.chooseControl('摸一张牌','弃置一张牌').set('prompt','令'+get.translation(target)+'…').set('ai',function(player){ + var evt=_status.event; + return get.attitude(evt.player,evt.getParent().target)>0?0:1; + }); + } + else event.finish(); + 'step 5' + if(result.index==0) target.draw(); + else target.chooseToDiscard('he',true); + }, + }, + }, + }, //阮籍 nsshizui:{ trigger:{target:'useCardToTargeted'}, @@ -9034,11 +9138,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, }, lucia_duqu:{ - mod:{ - cardSavable:function(card,player,target){ - if(player==target&&card.name=='du'&&!player.hasSkill('lucia_duqu_terra')) return true; - }, - }, trigger:{ player:['damage','loseHpBefore','useCardBefore'], source:'damage', @@ -9049,9 +9148,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){ if(onrewrite=='loseHpBefore'){ return event.type=='du'; } - if(onrewrite=='useCardBefore'){ - return event.card.name=='du'&&event.getParent().type=='dying'; - } return event.source!=undefined&&event.source!=event.player; }, content:function(){ @@ -9060,30 +9156,18 @@ game.import('character',function(lib,game,ui,get,ai,_status){ trigger.cancel(); player.recover(trigger.num); } - else if(onrewrite=='useCardBefore'){ - player.addTempSkill('lucia_duqu_terra'); - } else{ var another=trigger[trigger.source==player?'player':'source']; player.line(another,{color:[220, 90, 139]}); - var card=game.createCard2('du'); - player.$gain2(card); - player.gain(card); another.gain(game.createCard2('du'),'gain2'); } }, ai:{ usedu:true, - save:true, - skillTagFilter:function(player,tag,target){ - if(tag=='usedu') return player.isDamaged(); - return player==target&&player.hasUsableCard('du')&&!player.hasSkill('lucia_duqu_terra'); - }, }, - subSkill:{terra:{sub:true}} }, lucia_zhenren:{ - trigger:{global:'phaseEnd'}, + trigger:{global:'phaseJieshuBegin'}, forced:true, charlotte:true, filter:function(event,player){ @@ -15611,7 +15695,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ key_erika:'苍井えりか', key_satomi:'藏里见', lucia_duqu:'毒躯', - lucia_duqu_info:'锁定技,①当你对其他角色造成伤害或受到其他角色的伤害时,你和对方各获得一张花色点数随机的【毒】。
②当你因【毒】失去体力时,你改为回复等量的体力。
③当你处于濒死状态时,你可以使用一张【毒】(每回合限一次)。', + lucia_duqu_info:'锁定技,①当你对其他角色造成伤害或受到其他角色的伤害时,你令对方获得一张花色点数随机的【毒】。
②当你因【毒】失去体力时,你改为回复等量的体力。', lucia_zhenren:'振刃', lucia_zhenren_info:'锁定技,每个结束阶段,若你的装备区内有牌,则你弃置之。然后,你依次弃置场上的X张牌。(X为你以此法弃置的牌数)', nk_shekong:'设控', @@ -16364,7 +16448,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){ nsshizui:'酾醉', nsshizui_info:'每回合限一次。当你成为基本牌或普通锦囊牌的目标后,你可以弃置一张牌,然后视为使用一张【酒】。若你弃置的牌与其使用的牌花色相同,则此牌对你无效;若你弃置的牌为♣,则你获得其使用的牌。', nsxiaoye:'啸野', - nsxiaoye_info:'一名角色的结束阶段开始时,若你于当前回合內使用过【酒】,则你可以视为使用一张其于本回合内使用过的【杀】或普通锦囊牌。', + nsxiaoye_info:'一名角色的结束阶段开始时,若你于当前回合内使用过【酒】,则你可以视为使用一张其于本回合内使用过的【杀】或普通锦囊牌。', + ns_limi:'李密', + nstuilun:'退论', + nstuilun_info:'结束阶段,你可以失去任意点体力(至多失去至1点)并弃置任意张手牌(至多弃置至一张)。若如此做,你获得如下效果直到你下回合开始:其他角色的回合开始时,若你的体力值小于该角色,则你可以令一名角色回复或失去1点体力;若你的手牌数小于该角色,则你可以令一名角色摸一张牌或弃置一张牌。', junk_zhangrang:'四花张让', junktaoluan:'滔乱', diff --git a/character/extra.js b/character/extra.js index 0bab9cd54..ff4a70d1f 100755 --- a/character/extra.js +++ b/character/extra.js @@ -1866,7 +1866,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ if(target.isMaxHandcard()) player.loseMaxHp(); }, ai:{ - order:1, + order:1.2, result:{ player:1, }, @@ -1954,28 +1954,11 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, zuoxing:{ audio:2, - trigger:{player:'phaseZhunbeiBegin'}, - filter:function(event,player){ - var target=player.storage.zuoxing; - return target&&target.isAlive()&&target.maxHp>1; - }, - logTarget:function(event,player){ - return player.storage.zuoxing; - }, - check:function(event,player){ - var target=player.storage.zuoxing; - if(get.attitude(player,target)<=0) return true; - return target.maxHp>3&&!player.hasJudge('lebu'); - }, - content:function(){ - player.storage.zuoxing.loseMaxHp(); - player.addTempSkill('zuoxing2'); - }, - }, - zuoxing2:{ enable:'phaseUse', usable:1, filter:function(event,player){ + var target=player.storage.zuoxing; + if(!target||!target.isAlive()||target.maxHp<2) return false; for(var i of lib.inpile){ if(get.type(i)=='trick'&&event.filterCard({name:i,isCard:true},player,event)) return true; } @@ -2003,6 +1986,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){ popname:true, precontent:function(){ player.logSkill('zuoxing'); + var target=player.storage.zuoxing; + target.loseMaxHp(); //delete event.result.skill; }, } @@ -2017,6 +2002,11 @@ game.import('character',function(lib,game,ui,get,ai,_status){ audio:'sghuishi', inherit:'sghuishi', filterTarget:true, + prompt:function(){ + var player=_status.event.player; + if(player.maxHp>=game.players.length) return '选择一名角色。若其拥有未发动过的觉醒技,则你解除其中一个觉醒技的发动限制;否则其摸四张牌。然后你减2点体力上限。'; + return '令一名角色摸四张牌,然后你减2点体力上限。'; + }, content:function(){ 'step 0' player.awakenSkill('resghuishi'); @@ -2620,7 +2610,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ } else player.line(target,'green'); //targets.push(target); - if(!target.countCards('h')) event._result={index:1}; + if(target.countCards('h')==0) event._result={index:0}; else player.chooseControl('摸一张牌','弃置一张手牌').set('prompt','选择一项令'+get.translation(target)+'执行…').set('goon',get.attitude(player,target)>0?0:1).set('ai',()=>_status.event.goon); //else player.discardPlayerCard(target,'h','弃置'+get.translation(target)+'一张手牌,或点【取消】令其摸一张牌。'); } @@ -6000,7 +5990,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ stianyi_info:'觉醒技,准备阶段,若场上的所有存活角色均于本局游戏内受到过伤害,则你加2点体力上限并回复1点体力,然后令一名角色获得技能〖佐幸〗。', zuoxing:'佐幸', zuoxing2:'佐幸', - zuoxing_info:'准备阶段,若令你获得〖佐幸〗的角色存活且体力上限大于1,则你可以令其减1点体力上限,然后你获得如下效果:出牌阶段限一次,你可以获得一张普通锦囊牌。', + zuoxing_info:'出牌阶段限一次,若令你获得〖佐幸〗的角色存活且体力上限大于1,则你可以令其减1点体力上限,并视为一张普通锦囊牌。', sghuishi:'辉逝', sghuishi_info:'限定技,出牌阶段,你可以选择一名其他角色:若其有未发动过的觉醒技,则你令其发动这些觉醒技时无视原有条件;否则其摸四张牌。然后你减2点体力上限。', shen_taishici:'神太史慈', diff --git a/character/mobile.js b/character/mobile.js index 85514eebf..8f1c70bc5 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:["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"], + 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"], mobile_yijiang:["yj_zhanghe","yj_zhangliao","yj_xuhuang","yj_ganning",'yj_huangzhong'], mobile_shijizhi:["sp_wangcan","sp_chenzhen","sp_sunshao","sp_xunchen","luotong","sp_duyu","sp_bianfuren","feiyi"], mobile_shijixin:['wujing','sp_mifuren','sp_xinpi','wangling','wangfuzhaolei','zhouchu','sp_kongrong','sp_yanghu'], @@ -15,17 +15,21 @@ game.import('character',function(lib,game,ui,get,ai,_status){ mobile_shijiyan:['sp_cuiyan','sp_zhangchangpu','sp_jiangwan','sp_jiangqing','sp_lvfan','sp_huangfusong','sp_zhujun','liuba'], 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"], + 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"], mobile_yijiang1:["re_xusheng","re_lingtong","ol_yujin","re_wuguotai","re_gaoshun"], mobile_yijiang2:["xin_liaohua","xin_caozhang","re_liubiao","re_handang","xin_chengpu","xin_gongsunzan","re_zhonghui","re_bulianshi"], mobile_yijiang3:["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"], - mobile_yijiang5:['xin_sunxiu',], + mobile_yijiang5:['xin_sunxiu','xin_quancong'], mobile_yijiang67:["re_jikang"], mobile_sp:["old_yuanshu","re_wangyun","re_baosanniang","re_weiwenzhugezhi","re_zhanggong","re_xugong","re_heqi","liuzan","xin_hansui"], }, }, character:{ + xin_mamidi:['male','qun',3,['chengye','buxu']], + ruanhui:['female','wei',3,['mingcha','jingzhong']], + xin_quancong:['male','wu',4,['sbyaoming']], + re_xunyu:["male","wei",3,["quhu","rejieming"]], xin_jushou:['male','qun',3,['xinjianying','shibei']], liuba:['male','shu',3,['duanbi','tongduo']], re_bulianshi:['female','wu',3,['reanxu','zhuiyi']], @@ -168,6 +172,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ re_sunben:['male','wu',4,['jiang','rehunzi','zhiba'],['zhu']], }, characterIntro:{ + ruanhui:'阮氏女,是指三国时期曹魏名士许允之妻阮氏,陈留尉氏人。阮氏女是中国古代四大丑女之一,貌丑而见识非凡。她出身士族之家,是卫尉阮共(字伯彦)之女、阮侃(字德如)之妹。嫁与许允后生有二子:许奇,官至司隶校尉;许猛,官至幽州刺史。', peixiu:'裴秀(224年-271年4月3日),字季彦。河东郡闻喜县(今山西省闻喜县)人。[1]魏晋时期名臣、地图学家,东汉尚书令裴茂之孙、曹魏光禄大夫裴潜之子。出身河东裴氏,少年时便颇有名气,后被大将军曹爽辟为掾属,袭爵清阳亭侯,又迁黄门侍郎。高平陵之变后,因是曹爽的故吏而被罢免。此后历任廷尉正、安东将军及卫将军司马,参与谋划军国之政,参与平定诸葛诞叛乱。因功转任尚书,进封鲁阳乡侯。魏元帝继位后,进爵鲁阳县侯,任尚书仆射。咸熙元年(264年),受命负责修改官制,又提议恢复五等爵制。五等制恢复后,获封济川侯。他建议立司马炎为世子,司马炎继位晋王后,拜裴秀为尚书令、右光禄大夫。西晋建立后,加左光禄大夫,封钜鹿郡公。泰始三年(267年),升任司空。泰始七年(271年),裴秀因服食寒食散后饮冷酒而逝世,年四十八,谥号“元”。有文集三卷。裴秀作《禹贡地域图》,开创了中国古代地图绘制学。李约瑟称他为“中国科学制图学之父”,与古希腊著名地图学家托勒密齐名,是世界古代地图学史上东西辉映的两颗灿烂明星。为纪念这位中国地图科学创始人而设立的“裴秀奖”,每两年评选一次,是中国地图学界最高奖项。由于他的贡献突出,联合国天文组织将月球正面的一个环形山命名为“裴秀环形山”,', liucheng:'游卡桌游的原创人物。设定为黄忠的妻子。', jiangwan:'蒋琬(?-246年),字公琰。零陵郡湘乡县人。三国时期蜀汉政治家,与诸葛亮、董允、费祎合称“蜀汉四相”。蒋琬最初随刘备入蜀,为广都县长。因其不理政事,惹怒刘备,在诸葛亮的劝说下才免于一死。后重获启用,受到诸葛亮的悉心培养,累官丞相长史兼抚军将军。建兴十二年(234年),诸葛亮去世,蒋琬继其执政,拜尚书令,又加行都护、假节,领益州刺史,再迁大将军,录尚书事,封安阳亭侯。延熙元年(238年),受命开府,加大司马,总揽蜀汉军政。曾制定由水路进攻曹魏的计划,但未被采纳。延熙九年(246年),蒋琬病逝,谥号为恭。', @@ -617,6 +622,465 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, }, skill:{ + //马日磾 + chengye:{ + audio:2, + liujing_filter:[ + function(card){ + return get.type(card,false)=='trick'&&get.tag(card,'damage',null,false)>0; + }, + (card)=>get.type(card,false)=='basic', + (card)=>get.name(card,false)=='wuxie', + (card)=>get.name(card,false)=='wuzhong', + (card)=>get.name(card,false)=='lebu', + (card)=>get.type(card,false)=='equip', + ], + getLiujing:function(player,index){ + var filter=lib.skill.chengye.liujing_filter[index],expansion=player.getExpansions('chengye'); + for(var i of expansion){ + if(filter(i)) return i; + } + return false; + }, + trigger:{global:['useCardAfter','loseAfter','cardsDiscardAfter']}, + forced:true, + filter:function(event,player){ + if(player==event.player) return false; + if(event.name=='useCard'){ + if(!event.card.isCard) return false; + var cards=event.cards.filterInD(); + if(!cards.length) return false; + } + else if(event.name=='lose'){ + if(event.position!=ui.discardPile) return false; + var cards=event.cards2.filter(function(card){ + if(get.position(card,true)!='d') return false; + var type=get.type(card,false); + return type=='delay'||type=='equip'; + }); + if(!cards.length) return false; + } + else{ + var evtx=event.getParent(); + if(evtx.name!='orderingDiscard') return false; + var evt2=(evtx.relatedEvent||evtx.getParent()); + if(evt2.name!='phaseJudge'||evt2.player==player) return; + var cards=event.cards.filter(function(card){ + if(get.position(card,true)!='d') return false; + var type=get.type(card,false); + return type=='delay'; + }); + if(!cards.length) return false; + } + for(var i=0;i<6;i++){ + if(lib.skill.chengye.getLiujing(player,i)) continue; + for(var j of cards){ + if(lib.skill.chengye.liujing_filter[i](j)) return true; + } + } + return false; + }, + content:function(){ + var cards,cards2=[]; + if(trigger.name=='useCard'){ + cards=trigger.cards.filterInD(); + } + else if(trigger.name=='lose'){ + cards=trigger.cards2.filter(function(card){ + if(get.position(card,true)!='d') return false; + var type=get.type(card,false); + return type=='delay'||type=='equip'; + }); + } + else{ + cards=trigger.cards.filter(function(card){ + if(get.position(card,true)!='d') return false; + var type=get.type(card,false); + return type=='delay'; + }); + } + for(var i=0;i<6;i++){ + if(lib.skill.chengye.getLiujing(player,i)) continue; + for(var j of cards){ + if(lib.skill.chengye.liujing_filter[i](j)){ + cards.remove(j); + cards2.push(j); + break; + } + } + if(!cards.length) break; + } + player.addToExpansion(cards2,'gain2').gaintag.add('chengye'); + }, + onremove:function(player,skill){ + var cards=player.getExpansions(skill); + if(cards.length) player.loseToDiscardpile(cards); + }, + marktext:'六', + intro:{ + name:'六经', + markcount:'expansion', + content:'expansion', + mark:function(dialog,storage,player){ + var list=['《诗经》','《尚书》','《仪礼》','《易经》','《乐经》','《春秋》']; + var desc=['伤害类锦囊牌','基本牌','无懈可击','无中生有','乐不思蜀','装备牌']; + for(var i=0;i<6;i++){ + dialog.addText(list[i]); + var card=lib.skill.chengye.getLiujing(player,i); + if(!card) dialog.addText('(缺少 '+desc[i]+')'); + else dialog.addSmall([card]); + } + }, + }, + group:'chengye_gain', + subSkill:{ + gain:{ + trigger:{player:'phaseUseBegin'}, + forced:true, + filter:function(event,player){ + return player.getExpansions('chengye').length>=6; + }, + content:function(){ + player.gain(player.getExpansions('chengye'),'gain2'); + }, + }, + }, + }, + buxu:{ + audio:2, + enable:'phaseUse', + filter:function(event,player){ + var num=(player.getStat('skill').buxu||0)+1; + return player.countCards('he')>=num&&player.getExpansions('chengye').length<6; + }, + chooseButton:{ + chooseControl:function(event,player){ + var list=['诗经','尚书','仪礼','易经','乐经','春秋']; + var choices=[]; + for(var i=0;i<6;i++){ + if(!lib.skill.chengye.getLiujing(player,i)) choices.push(list[i]); + } + choices.push('cancel2'); + return choices; + }, + check:function(event,player){ + var list=[4,3,5,0,2,1]; + for(var i of list){ + if(!lib.skill.chengye.getLiujing(player,i)){ + return ['诗经','尚书','仪礼','易经','乐经','春秋'][i]; + } + } + return 'cancel2'; + }, + dialog:function(event,player){ + var num=(player.getStat('skill').buxu||0)+1; + return ui.create.dialog('###补叙###弃置'+get.cnNumber(num)+'张牌并补充一张“六经”'); + }, + prompt:function(links,player){ + var num=(player.getStat('skill').buxu||0)+1; + return '弃置'+get.cnNumber(num)+'张牌并补充一张《'+links.control+'》'; + }, + backup:function(links,player){ + return { + index:['诗经','尚书','仪礼','易经','乐经','春秋'].indexOf(links.control), + filterCard:true, + position:'he', + selectCard:(player.getStat('skill').buxu||0)+1, + ai1:function(card){ + var player=_status.event.player; + if(player.needsToDiscard()>ui.selected.cards.length) return 10/Math.max(0.1,get.value(card)); + return 5-(player.getStat('skill').buxu||0)-get.value(card); + }, + ai2:()=>1, + content:function(){ + var filter=lib.skill.chengye.liujing_filter[lib.skill.buxu_backup.index]; + var card=get.cardPile(filter); + if(card) player.addToExpansion(card,'gain2').gaintag.add('chengye'); + }, + ai:{result:{player:1}}, + } + }, + }, + ai:{ + combo:'chengye', + order:0.2, + result:{player:1}, + }, + }, + //阮慧 + mingcha:{ + audio:2, + trigger:{player:'phaseDrawBegin1'}, + forced:true, + locked:false, + filter:(event)=>!event.numFixed, + content:function(){ + 'step 0' + var cards=get.cards(2),cards2=cards.slice(0); + event.cards=cards.filter(function(i){ + return get.number(i)<7; + }); + while(cards2.length>0){ + var card=cards2.pop(); + card.fix(); + ui.cardPile.insertBefore(card,ui.cardPile.firstChild); + } + game.updateRoundNumber(); + player.showCards(cards,get.translation(player)+'发动了【明察】'); + if(!event.cards.length) event.finish(); + 'step 1' + player.chooseBool('是否放弃摸牌并获得'+get.translation(cards)).set('goon',trigger.num-cards.length<=1); + 'step 2' + if(result.bool){ + trigger.changeToZero(); + player.gain(cards,'gain2'); + } + else event.finish(); + 'step 3' + player.chooseTarget('是否随机获得其他角色的一张牌?',function(card,player,target){ + return target!=player&&target.countCards('he')>0; + }).set('ai',function(target){ + return 3-get.attitude(player,target); + }); + 'step 4' + if(result.bool){ + var target=result.targets[0],cards=target.getGainableCards(player,'he'); + player.line(target,'green'); + if(cards.length) player.gain(cards.randomGet(),target,'giveAuto'); + } + }, + }, + jingzhong:{ + audio:2, + trigger:{player:'phaseDiscardAfter'}, + filter:function(event,player){ + var num=0; + player.getHistory('lose',function(evt){ + if(evt.type=='discard'&&evt.getParent('phaseDiscard')==event){ + for(var i of evt.cards2){ + if(get.color(i,player)=='black') num++; + } + } + }); + return num>1; + }, + direct:true, + content:function(){ + 'step 0' + player.chooseTarget(get.prompt('jingzhong'),'获得一名其他角色下回合出牌阶段内使用的牌',lib.filter.notMe).set('ai',function(target){ + return Math.sqrt(target.countCards('h'))*get.threaten(target); + }); + 'step 1' + if(result.bool){ + var target=result.targets[0]; + player.logSkill('jingzhong',target); + player.addSkill('jingzhong_effect'); + player.markAuto('jingzhong_effect',[target]); + game.delayx(); + } + }, + subSkill:{ + effect:{ + trigger:{global:'useCardAfter'}, + forced:true, + charlotte:true, + filter:function(event,player){ + if(!player.getStorage('jingzhong_effect').contains(event.player)||!event.cards.filterInD().length) return false; + var evt=event.getParent('phaseUse'); + if(!evt||evt.player!=event.player) return false; + return player.getHistory('useSkill',function(evtx){ + return evtx.skill=='jingzhong_effect'&&evtx.event.getParent('phaseUse')==evt; + }).length<3; + }, + logTarget:'player', + content:function(){ + player.gain(trigger.cards.filterInD(),'gain2'); + }, + mark:true, + intro:{content:'已指定$为目标'}, + group:'jingzhong_remove', + }, + remove:{ + trigger:{global:'phaseAfter'}, + forced:true, + charlotte:true, + popup:false, + firstDo:true, + filter:function(event,player){ + return player.getStorage('jingzhong_effect').contains(event.player); + }, + content:function(){ + var storage=player.getStorage('jingzhong_effect'); + storage.remove(trigger.player); + if(!storage.length) player.removeSkill('jingzhong_effect'); + }, + }, + }, + }, + //全琮 + sbyaoming:{ + audio:2, + enable:'phaseUse', + filter:function(event,player){ + return player.countMark('sbyaoming')>0; + }, + filterTarget:true, + prompt:function(){ + var num=_status.event.player.storage.sbyaoming_status; + var list=['弃置一名手牌数不小于你的角色的一张牌',';或令一名手牌数不大于你的角色摸一张牌'] + if(typeof num=='number') list[num]+='(上次选择)'; + return list[0]+list[1]; + }, + content:function(){ + 'step 0' + player.removeMark('sbyaoming',1); + var num=target.countCards('h'),num2=player.countCards('h'); + if(num==num2&&target.countCards('he')>0){ + var str=get.translation(target),choiceList=[ + '弃置'+str+'的一张牌', + '令'+str+'摸一张牌', + ]; + if(typeof player.storage.sbyaoming_status=='number') choiceList[player.storage.sbyaoming_status]+='(上次选择)'; + player.chooseControl().set('choiceList',choiceList); + } + else event._result={index:num>num2?0:1}; + 'step 1' + if(result.index==0){ + player.discardPlayerCard(target,true,'he'); + } + else target.draw(); + if(typeof player.storage.sbyaoming_status=='number'&&result.index!=player.storage.sbyaoming_status){ + player.addMark('sbyaoming',1); + delete player.storage.sbyaoming_status; + } + else{ + player.storage.sbyaoming_status=result.index; + } + }, + ai:{ + order:6, + result:{ + player:function(player,target){ + var att=get.attitude(player,target),eff=[0,0]; + var hs=player.countCards('h'),ht=target.countCards('h'); + if(hs>=ht){ + eff[0]=get.effect(target,{name:'wuzhong'},player,player)/2; + if(player.storage.sbyaoming_status==0) eff[0]*=1.2; + } + if(hs<=ht){ + eff[1]=get.effect(target,{name:'guohe_copy2'},player,player); + if(player.storage.sbyaoming_status==1) eff[1]*=1.2; + } + return Math.max.apply(Math,eff); + }, + }, + }, + group:['sbyaoming_damage','sbyaoming_init'], + marktext:'名', + intro:{ + name2:'名', + content:'mark', + }, + subSkill:{ + damage:{ + trigger:{player:'damageEnd'}, + direct:true, + content:function(){ + 'step 0' + var num=Math.min(trigger.num,4-player.countMark('sbyaoming_damage')); + if(num>0){ + player.logSkill('sbyaoming_damage'); + player.addMark('sbyaoming',num); + game.delayx(); + } + 'step 1' + player.chooseTarget(get.prompt('sbyaoming'),lib.skill.sbyaoming.prompt()).set('ai',function(target){ + var player=_status.event.player; + return get.effect(target,'sbyaoming',player,player) + }); + 'step 2' + if(result.bool){ + player.useSkill('sbyaoming',result.targets); + } + }, + }, + init:{ + trigger:{ + global:'phaseBefore', + player:'enterGame', + }, + forced:true, + locked:false, + filter:function(event,player){ + return (event.name!='phase'||game.phaseNumber==0); + }, + content:function(){ + player.addMark('sbyaoming',2); + }, + }, + }, + }, + //手杀荀彧 + rejieming:{ + audio:2, + trigger:{ + player:"damageEnd", + }, + direct:true, + content:function (){ + "step 0" + event.count=trigger.num; + "step 1" + player.chooseTarget(get.prompt('rejieming'),'令一名角色摸两张牌。然后若其手牌数少于体力上限,你摸一张牌').set('ai',function(target){ + var att=get.attitude(_status.event.player,target); + if(att>2){ + if((target.maxHp-target.countCards('h'))>2) return 2*att; + return att; + } + return att/3; + }); + "step 2" + if(result.bool){ + event.current=result.targets[0]; + player.logSkill('rejieming',event.current); + player.line(event.current,'thunder'); + event.current.draw(2); + event.count--; + } + else event.finish(); + "step 3" + if(event.current.countCards('h')0) event.goto(1); + }, + ai:{ + maixie:true, + "maixie_hp":true, + effect:{ + target:function (card,player,target,current){ + if(get.tag(card,'damage')&&target.hp>1){ + if(player.hasSkillTag('jueqing',false,target)) return [1,-2]; + var max=0; + var players=game.filterPlayer(); + for(var i=0;i0){ + max=Math.max(Math.min(5,players[i].hp)-players[i].countCards('h'),max); + } + } + switch(max){ + case 0:return 2; + case 1:return 1.5; + case 2:return [1,2]; + default:return [0,max]; + } + } + if((card.name=='tao'||card.name=='caoyao')&& + target.hp>1&&target.countCards('h')<=target.hp) return [0,0]; + }, + }, + }, + }, //沮授 xinjianying:{ audio:'jianying', @@ -5599,7 +6063,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ forced:true, popup:false, filter:function(event,player){ - return event._gonghuan_player&&player.hp==event._gonghuan_player.hp; + return event._gonghuan_player; }, content:function(){ player.removeMark('luanchou',player.countMark('luanchou')); @@ -13271,6 +13735,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ return 1; }, discard:false, + lose:false, delay:false, content:function(){ 'step 0' @@ -16485,7 +16950,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ luanchou:'鸾俦', luanchou_info:'出牌阶段限一次,你可令两名角色获得“姻”标记并清除原有标记。拥有“姻”标记的角色视为拥有技能〖共患〗。', gonghuan:'共患', - gonghuan_info:'锁定技。每回合限一次,一名其他角色受到伤害时,若其拥有“姻”标记且其体力值小于你,则你将伤害转移给自己。此伤害结算结束后,若你与其体力值相等,则你与其移去“姻”标记。', + gonghuan_info:'锁定技。每回合限一次,一名其他角色受到伤害时,若其拥有“姻”标记且其体力值小于你,则你将伤害转移给自己。此伤害结算结束后,你与其移去“姻”标记。', sp_yanghu:'手杀羊祜', mingfa:'明伐', mingfa_info:'①结束阶段,你可展示一张牌并记录为“明伐”。②出牌阶段开始时,若“明伐”牌在你的手牌区或装备区,则你可以使用“明伐”牌与一名其他角色拼点。若你赢:你获得对方一张牌并从牌堆中获得一张点数等于“明伐”牌牌面点数-1的牌。若你没赢:你本回合不能使用牌指定其他角色为目标。③你的拼点牌亮出后,你令此牌的点数+2。', @@ -16725,6 +17190,24 @@ game.import('character',function(lib,game,ui,get,ai,_status){ xin_jushou:'手杀沮授', xinjianying:'渐营', xinjianying_info:'锁定技。①当你于出牌阶段内使用与此阶段你使用的上一张牌点数或花色相同的牌时,你可以摸一张牌。②出牌阶段限一次,你可以将一张牌当做任意基本牌使用(不计入次数限制)。若你于此阶段内使用的上一张牌有花色,则此牌的花色视为上一张牌的花色。', + re_xunyu:"手杀荀彧", + rejieming:"节命", + rejieming_info:"当你受到1点伤害后,你可以令一名角色摸两张牌。然后若其手牌数小于体力上限,则你摸一张牌。", + xin_quancong:'手杀全琮', + sbyaoming:'邀名', + sbyaoming_info:'①游戏开始时,你获得2枚“名”。②当你受到1点伤害后,若你的“名”少于4枚,则你获得一枚“名”。③出牌阶段或当你受到伤害后,你可以移除一枚“名”并选择一项:⒈弃置一名手牌数不小于你的角色的一张牌。⒉令一名手牌数不大于你的角色摸一张牌。若你上次发动〖邀名③〗时未获得过“名”且你选择的选项和上次不同,则你获得一枚“名”。', + ruanhui:'阮慧', + mingcha:'明察', + mingcha_info:'摸牌阶段开始时,你亮出牌堆顶的两张牌。若这两张牌中有点数小于7的牌,则你可以放弃摸牌并获得这些牌,然后你可以获得一名其他角色的随机一张牌。', + jingzhong:'敬重', + jingzhong_info:'弃牌阶段结束时,若你于本阶段内弃置过至少两张黑色牌,则你可以选择一名其他角色并获得如下效果直到其回合结束:每阶段限三次,其于出牌阶段内使用的牌结算结束后,你获得此牌对应的实体牌。', + xin_mamidi:'手杀马日磾', + chengye:'承业', + chengye_info:'锁定技。①其他角色使用的非转化牌结算结束后,或其他角色的装备牌和延时锦囊牌进入弃牌堆后,或有延时锦囊牌因其他角色执行判定阶段的流程而进入弃牌堆后,若你的“六经”有空缺的位置可以置入此牌,则你将此牌置于你武将牌上,填补“六经”的对应位置。②出牌阶段开始时,若你的“六经”没有空缺的位置,则你获得所有“六经”。', + chengye_append:'
  • 《诗经》:伤害类锦囊牌
  • 《尚书》:基本牌
  • 《仪礼》:无懈可击
  • 《易经》:无中生有
  • 《乐经》:乐不思蜀
  • 《春秋》:装备牌', + buxu:'补叙', + buxu_backup:'补叙', + buxu_info:'出牌阶段,若你的“六经”中有空缺的位置,则你可以弃置X+1张牌并选择一种空缺的“六经”。系统从牌堆或弃牌堆中检索一张对应的牌,然后你将此牌置于你武将牌上,填补“六经”的对应位置。', mobile_standard:'手杀异构·标准包', mobile_shenhua:'手杀异构·神话再临', diff --git a/character/rank.js b/character/rank.js index 5ccd85088..845b3be39 100644 --- a/character/rank.js +++ b/character/rank.js @@ -270,6 +270,7 @@ window.noname_character_rank={ 'caomao', 'guanning', 'ol_puyuan', + 'ns_limi', 'key_misuzu', 'key_sunohara', 'key_umi', @@ -518,6 +519,8 @@ window.noname_character_rank={ 'ruiji', 're_liuchen', 'dc_gongsunzan', + 'ol_xunyu', + 'zhangxuan', ], bp:[ 'chess_diaochan', @@ -791,6 +794,7 @@ window.noname_character_rank={ 'sb_huangzhong', 'dc_yanghu', 'dc_gongsunzan', + 'caohua', ], b:[ 'diy_feishi', @@ -1024,6 +1028,8 @@ window.noname_character_rank={ 'shen_sunquan', 're_jushou', 'dc_huangzu', + 'dc_liuyu', + 'qinyilu', ], bm:[ 'diy_xizhenxihong', @@ -1184,6 +1190,9 @@ window.noname_character_rank={ 'tw_wujing', 'dc_zhuling', 'tw_puyangxing', + 'ruanhui', + 'xin_mamidi', + 'xin_quancong', ], c:[ 'xiahoudun', @@ -1573,6 +1582,9 @@ window.noname_character_rank={ 'laiyinger', 'ns_ruanji', 'ns_zanghong', + 'caohua', + 'ns_limi', + 'ol_xunyu', 'key_kano', 'key_haruko', 'key_akiko', @@ -1977,6 +1989,8 @@ window.noname_character_rank={ 'dc_yanghu', 're_duji', 're_liuchen', + 'dc_liuyu', + 'qinyilu', ], junk:[ 'sunshao', diff --git a/character/refresh.js b/character/refresh.js index df714c842..b6fdc8f21 100755 --- a/character/refresh.js +++ b/character/refresh.js @@ -6,7 +6,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ refresh:{ refresh_standard:["re_caocao","re_simayi","re_guojia","re_zhangliao","re_xuzhu","re_xiahoudun","re_zhangfei","re_zhaoyun","re_guanyu","re_machao","re_zhouyu","re_lvmeng","re_ganning","re_luxun","re_daqiao","re_huanggai","re_lvbu","re_huatuo","re_liubei","re_diaochan","re_huangyueying","re_sunquan","re_sunshangxiang","re_zhenji","re_zhugeliang","re_huaxiong",'re_gongsunzan'], refresh_feng:['caoren','ol_xiahouyuan','re_huangzhong','ol_weiyan','ol_xiaoqiao','zhoutai','re_zhangjiao','xin_yuji'], - refresh_huo:["ol_sp_zhugeliang","re_xunyu","re_dianwei","re_yanwen","ol_pangtong","ol_yuanshao","ol_pangde","re_taishici"], + refresh_huo:["ol_sp_zhugeliang","ol_xunyu","re_dianwei","re_yanwen","ol_pangtong","ol_yuanshao","ol_pangde","re_taishici"], refresh_lin:['re_menghuo','ol_sunjian','re_caopi','ol_xuhuang','ol_dongzhuo','ol_zhurong','re_jiaxu','ol_lusu'], refresh_shan:['ol_jiangwei','ol_caiwenji','ol_liushan','re_zhangzhang','re_zuoci','re_sunce','ol_dengai','re_zhanghe'], refresh_yijiang1:['xin_wuguotai','xin_gaoshun','re_caozhi','yujin_yujin','re_masu','xin_xusheng','re_fazheng','xin_lingtong','re_zhangchunhua','dc_xushu'], @@ -20,6 +20,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, connect:true, character:{ + ol_xunyu:['male','wei',3,['quhu','oljieming']], re_liuchen:['male','shu',4,['rezhanjue','reqinwang'],['zhu']], dc_gongsunzan:['male','qun',4,['reyicong','dcqiaomeng']], re_duji:['male','wei',3,['reandong','reyingshi']], @@ -101,7 +102,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ re_sunshangxiang:['female','wu',3,['xiaoji','rejieyin']], re_zhenji:['female','wei',3,['reluoshen','reqingguo']], re_zhugeliang:['male','shu',3,['reguanxing','kongcheng']], - re_huaxiong:["male","qun",6,["reyaowu"]], + re_huaxiong:["male","qun",6,["reyaowu","shizhan"]], re_zhangjiao:['male','qun',3,['xinleiji','xinguidao','xinhuangtian'],['zhu']], xin_yuji:['male','qun',3,['reguhuo']], @@ -116,7 +117,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){ ol_pangde:['male','qun',4,['mashu','rejianchu']], ol_xuhuang:['male','wei',4,['olduanliang','oljiezi']], ol_sp_zhugeliang:["male","shu",3,["bazhen","rehuoji","rekanpo","cangzhuo"],[]], - re_xunyu:["male","wei",3,["quhu","rejieming"],[]], re_dianwei:["male","wei",4,["reqiangxi"],[]], re_yanwen:["male","qun",4,["reshuangxiong"],[]], ol_yuanshao:['male','qun',4,['olluanji','olxueyi'],['zhu']], @@ -147,6 +147,103 @@ game.import('character',function(lib,game,ui,get,ai,_status){ re_xushu:['zhaoyun','sp_zhugeliang'], }, skill:{ + //界荀彧 + oljieming:{ + audio:2, + trigger:{player:['damageEnd','dieAfter']}, + direct:true, + forceDie:true, + filter:function(event,player){ + if(event.name=='die') return true; + return player.isAlive(); + }, + content:function(){ + 'step 0' + event.count=trigger.num||1; + 'step 1' + event.count--; + player.chooseTarget(get.prompt2('oljieming'),function(card,player,target){ + return target.maxHp>0; + }).set('ai',function(target){ + var att=get.attitude(_status.event.player,target); + var draw=Math.min(5,target.maxHp)-target.countCards('h'); + if(draw>=0){ + if(target.hasSkillTag('nogain')) att/=6; + if(att>2){ + return Math.sqrt(draw+1)*att; + } + return att/3; + } + if(draw<-1){ + if(target.hasSkillTag('nogain')) att*=6; + if(att<-2){ + return -Math.sqrt(1-draw)*att; + } + } + return 0; + }); + 'step 2' + if(result.bool){ + var target=result.targets[0]; + event.target=target; + player.logSkill('oljieming',target); + target.draw(Math.min(5,target.maxHp)); + } + else event.finish(); + 'step 3' + var num=target.countCards('h')-Math.min(5,target.maxHp); + if(num>0) target.chooseToDiscard('h',true,num); + 'step 4' + if(event.count>0&&player.isAlive()) event.goto(1); + }, + ai:{ + expose:0.2, + maixie:true, + maixie_hp:true, + effect:{ + target:function(card,player,target,current){ + if(get.tag(card,'damage')&&target.hp>1){ + if(player.hasSkillTag('jueqing',false,target)) return [1,-2]; + var max=0; + var players=game.filterPlayer(); + for(var i=0;i0){ + max=Math.max(Math.min(5,players[i].hp)-players[i].countCards('h'),max); + } + } + switch(max){ + case 0:return 2; + case 1:return 1.5; + case 2:return [1,2]; + default:return [0,max]; + } + } + if((card.name=='tao'||card.name=='caoyao')&& + target.hp>1&&target.countCards('h')<=target.hp) return [0,0]; + } + }, + } + }, + //OL华雄 + shizhan:{ + audio:2, + enable:'phaseUse', + usable:2, + filterTarget:function(card,player,target){ + return target!=player&&target.canUse('juedou',player); + }, + content:function(){ + target.useCard({name:'juedou',isCard:true},player,'noai'); + }, + ai:{ + order:2, + result:{ + player:function(player,target){ + return get.effect(player,{name:'juedou',isCard:true},target,player); + }, + }, + }, + }, //刘谌 rezhanjue:{ audio:2,enable:'phaseUse', @@ -3869,7 +3966,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ position:'he', filterCard:true, filter:function(event,player){ - return player.countCards('h')>0; + return player.countCards('he')>0; }, check:function(card){ var base=0,player=_status.event.player,suit=get.suit(card,player),added=false,added2=false,added3; @@ -5736,12 +5833,12 @@ game.import('character',function(lib,game,ui,get,ai,_status){ usable:1, position:'he', filter:function(event,player){ - return player.countCards('he',function(card){ - return lib.skill.regongji.filterCard(card,player); - })>0; + return player.hasCard(function(card){ + return lib.skill.regongji.filterCard(card); + },'eh'); }, filterCard:function(card,player){ - return get.type(card,player)!='basic'; + return get.type(card)!='basic'; }, filterTarget:function(card,player,target){ return target!=player&&target.countDiscardableCards(player,'he')>0; @@ -8475,66 +8572,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){ prompt:"将一张黑色牌当无懈可击使用", check:function (card){return 8-get.value(card)}, }, - rejieming:{ - audio:2, - trigger:{ - player:"damageEnd", - }, - direct:true, - content:function (){ - "step 0" - event.count=trigger.num; - "step 1" - player.chooseTarget(get.prompt('rejieming'),'令一名角色摸两张牌。然后若其手牌数少于体力上限,你摸一张牌').set('ai',function(target){ - var att=get.attitude(_status.event.player,target); - if(att>2){ - if((target.maxHp-target.countCards('h'))>2) return 2*att; - return att; - } - return att/3; - }); - "step 2" - if(result.bool){ - event.current=result.targets[0]; - player.logSkill('rejieming',event.current); - player.line(event.current,'thunder'); - event.current.draw(2); - event.count--; - } - else event.finish(); - "step 3" - if(event.current.countCards('h')0) event.goto(1); - }, - ai:{ - maixie:true, - "maixie_hp":true, - effect:{ - target:function (card,player,target,current){ - if(get.tag(card,'damage')&&target.hp>1){ - if(player.hasSkillTag('jueqing',false,target)) return [1,-2]; - var max=0; - var players=game.filterPlayer(); - for(var i=0;i0){ - max=Math.max(Math.min(5,players[i].hp)-players[i].countCards('h'),max); - } - } - switch(max){ - case 0:return 2; - case 1:return 1.5; - case 2:return [1,2]; - default:return [0,max]; - } - } - if((card.name=='tao'||card.name=='caoyao')&& - target.hp>1&&target.countCards('h')<=target.hp) return [0,0]; - }, - }, - }, - }, reshuangxiong:{ trigger:{ player:"phaseDrawBegin1", @@ -11840,7 +11877,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){ re_huaxiong:"界华雄", "ol_sp_zhugeliang":"界卧龙", - "re_xunyu":"界荀彧", "re_dianwei":"界典韦", "re_yanwen":"界颜良文丑", xin_yuanshao:"手杀袁绍", @@ -11883,8 +11919,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){ "rehuoji_info":"出牌阶段,你可一张红色牌当作【火攻】使用。", rekanpo:"看破", "rekanpo_info":"你可以将一张黑色牌当作【无懈可击】使用。", - rejieming:"节命", - "rejieming_info":"当你受到1点伤害后,你可以令一名角色摸两张牌。然后若其手牌数小于体力上限,则你摸一张牌。", reshuangxiong:"双雄", "reshuangxiong_info":"摸牌阶段,你可以放弃摸牌。若如此做,你展示牌堆顶的两张牌并选择获得其中的一张。然后,你本回合内可以将与此牌颜色不同的一张手牌当做【决斗】使用。当你受到【决斗】造成的伤害时,你可以获得对方于此决斗中打出的所有【杀】", "reshuangxiong2":"双雄", @@ -12395,6 +12429,11 @@ game.import('character',function(lib,game,ui,get,ai,_status){ rezhanjue_info:'出牌阶段,若你本阶段内因〖战绝〗获得过的牌数小于3,则你可以将所有不具有“勤王”标记的手牌当做【决斗】使用。此【决斗】使用结算结束后,你摸一张牌。然后所有因此【决斗】受到过伤害的角色也各摸一张牌。', reqinwang:'勤王', reqinwang_info:'主公技。出牌阶段限一次,你可以令所有其他蜀势力角色依次选择是否交给你一张【杀】,然后你可以令选择是的角色摸一张牌。', + shizhan:'势斩', + shizhan_info:'出牌阶段限两次,你可以选择一名其他角色。该角色视为对你使用一张【决斗】。', + ol_xunyu:'界荀彧', + oljieming:'节命', + oljieming_info:'当你受到1点伤害后或死亡后,你可令一名角色摸X张牌。然后若其手牌数大于X,则其将手牌弃置至X张(X为其体力上限且至多为5)。', refresh_standard:'界限突破·标', refresh_feng:'界限突破·风', diff --git a/character/sb.js b/character/sb.js index efcf22afb..ca417a7dc 100644 --- a/character/sb.js +++ b/character/sb.js @@ -175,6 +175,14 @@ game.import('character',function(lib,game,ui,get,ai,_status){ target.addTempSkill('sbliegong_block'); if(!target.storage.sbliegong_block) target.storage.sbliegong_block=[]; target.storage.sbliegong_block.push([evt.card,storage]); + lib.skill.sbliegong.updateBlocker(target); + }, + updateBlocker:function(player){ + var list=[],storage=player.storage.sbliegong_block; + if(storage&&storage.length){ + for(var i of storage) list.addArray(i[1]); + } + player.storage.sbliegong_blocker=list; }, ai:{ threaten:3.5, @@ -212,15 +220,13 @@ game.import('character',function(lib,game,ui,get,ai,_status){ block:{ mod:{ cardEnabled:function(card,player){ - if(!player.storage.sbliegong_block) return; + if(!player.storage.sbliegong_blocker) return; var suit=get.suit(card); if(suit=='none') return; var evt=_status.event; if(evt.name!='chooseToUse') evt=evt.getParent('chooseToUse'); if(!evt||!evt.respondTo||evt.respondTo[1].name!='sha') return; - for(var i of player.storage.sbliegong_block){ - if(i[1].contains(suit)) return false; - } + if(player.storage.sbliegong_blocker.contains(suit)) return false; }, }, trigger:{ @@ -231,7 +237,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){ forced:true, firstDo:true, charlotte:true, - onremove:true, + onremove:function(player){ + delete player.storage.sbliegong_block; + delete player.storage.sbliegong_blocker; + }, filter:function(event,player){ if(!event.card||!player.storage.sbliegong_block) return false; for(var i of player.storage.sbliegong_block){ @@ -247,6 +256,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ } } if(!storage.length) player.removeSkill('sbliegong_block'); + else lib.skill.sbliegong.updateBlocker(target); }, }, count:{ @@ -457,7 +467,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){ if(!card||card.name!='sha') return false; var evtx=evt.getParent('useCard'); return evtx.card==card&&evtx.getParent()==event; - })) player.recover(); + })){ + target.draw(); + player.recover(); + } }, }, }, @@ -466,7 +479,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ spmingxuan:'瞑昡', spmingxuan_info:'锁定技。出牌阶段开始时,你须选择至多X张花色各不相同的手牌(X为未选择过选项一的角色),将这些牌随机交给这些角色中的等量角色。然后这些角色依次选择一项:⒈对你使用一张【杀】。⒉交给你一张牌,然后你摸一张牌。', spxianchou:'陷仇', - spxianchou_info:'当你受到有来源的伤害后,你可选择一名不为伤害来源的其他角色。该角色可以弃置一张牌,然后视为对伤害来源使用一张【杀】(无距离限制)。若其因此【杀】造成了伤害,则你回复1点体力。', + spxianchou_info:'当你受到有来源的伤害后,你可选择一名不为伤害来源的其他角色。该角色可以弃置一张牌,然后视为对伤害来源使用一张【杀】(无距离限制)。若其因此【杀】造成了伤害,则其摸一张牌,你回复1点体力。', liucheng:'刘赪', splveying:'掠影', splveying_info:'锁定技。①每回合限两次,当你使用【杀】指定目标后,你获得一个“椎”。②当你使用的【杀】结算结束后,若你的“椎”数大于1,则你弃置两个“椎”,然后弃置所有目标角色的各一张手牌。', diff --git a/character/shenhua.js b/character/shenhua.js index 05344f181..f040edd04 100755 --- a/character/shenhua.js +++ b/character/shenhua.js @@ -4887,7 +4887,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ event.current.animate('target'); event.current.chooseToUse('乱武:使用一张杀或失去一点体力',function(card){ if(get.name(card)!='sha') return false; - return lib.filter.filterCard.apply(this,arguments) + return lib.filter.cardEnabled.apply(this,arguments) },function(card,player,target){ if(player==target) return false; var dist=get.distance(player,target); @@ -4898,10 +4898,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){ return false; } } - return lib.filter.filterTarget.apply(this,arguments) + return lib.filter.filterTarget.apply(this,arguments); }).set('ai2',function(){ return get.effect_use.apply(this,arguments)+0.01; - }); + }).set('addCount',false); "step 2" if(result.bool==false) event.current.loseHp(); event.current=event.current.next; @@ -5256,13 +5256,13 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, quhu:{ audio:2, - audioname:['re_xunyu'], + audioname:['re_xunyu','ol_xunyu'], enable:'phaseUse', usable:1, filter:function(event,player){ if(player.countCards('h')==0) return false; return game.hasPlayer(function(current){ - return current.hp>player.hp&¤t.countCards('h'); + return current.hp>player.hp&&player.canCompare(current); }); }, filterTarget:function(card,player,target){ @@ -7279,7 +7279,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ yuji:['xin_yuji','re_yuji','yuji'], zhangjiao:['re_zhangjiao','sp_zhangjiao','zhangjiao'], dianwei:['dianwei','re_dianwei'], - xunyu:['re_xunyu','xunyu'], + xunyu:['ol_xunyu','re_xunyu','xunyu'], sp_zhugeliang:['ol_sp_zhugeliang','re_sp_zhugeliang','sp_zhugeliang'], pangtong:['ol_pangtong','re_pangtong','pangtong'], re_jsp_pangtong:['re_jsp_pangtong','sp_pangtong'], diff --git a/character/sp.js b/character/sp.js index 3d0bebf31..b3ada993e 100755 --- a/character/sp.js +++ b/character/sp.js @@ -1708,36 +1708,40 @@ game.import('character',function(lib,game,ui,get,ai,_status){ trigger:{player:['phaseZhunbeiBegin','damageEnd']}, direct:true, filter:function(event,player){ - var storage1=player.getStorage('luochong_round'),storage2=player.getStorage('luochong'); + var storage1=player.storage.luochong_round,storage2=player.getStorage('luochong'); + if(!storage1) storage1=[[],[]]; for(var i=0;i<4;i++){ - if(!storage1.contains(i)&&!storage2.contains(i)&&(i!=2||game.hasPlayer(function(current){ - return current!=player&¤t.hasCard(function(card){ - return lib.filter.canBeDiscarded(card,player,current); - },'he') - }))) return true; + if(!storage1[0].contains(i)&&!storage2.contains(i)&&game.hasPlayer(function(current){ + return !storage1[1].contains(current)&&lib.skill.luochong.filterx[i](current); + })) return true; } return false; }, + filterx:[ + (target)=>target.isDamaged(), + ()=>true, + (target)=>target.countCards('he')>0, + ()=>true, + ], onremove:true, content:function(){ 'step 0' var list=[]; var choiceList=[ '令一名角色回复1点体力。', - '令一名其他角色失去1点体力。', - '弃置一名其他角色的至多两张牌。', + '令一名角色失去1点体力。', + '令一名角色弃置两张牌。', '令一名角色摸两张牌。', ]; - var storage1=player.getStorage('luochong_round'),storage2=player.getStorage('luochong'); + var storage1=player.storage.luochong_round,storage2=player.getStorage('luochong'); + if(!storage1) storage1=[[],[]]; for(var i=0;i<4;i++){ if(storage2.contains(i)){ choiceList[i]=(''+choiceList[i]+''); } - else if(storage1.contains(i)||(i==2&&!game.hasPlayer(function(current){ - return current!=player&¤t.hasCard(function(card){ - return lib.filter.canBeDiscarded(card,player,current); - },'he') - }))){ + else if(storage1[0].contains(i)||!game.hasPlayer(function(current){ + return !storage1[1].contains(current)&&lib.skill.luochong.filterx[i](current); + })){ choiceList[i]=(''+choiceList[i]+''); } else list.push('选项'+get.cnNumber(i+1,true)) @@ -1746,6 +1750,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ player.chooseControl(list).set('prompt',get.prompt('luochong')).set('choiceList',choiceList).set('ai',function(){ var player=_status.event.player; var list=_status.event.controls.slice(0); + var listx=(player.storage.luochong_round||[[],[]])[1]; var gett=function(choice){ if(choice=='cancel2') return 0.1; var max=0,func={ @@ -1763,7 +1768,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){ max=Math.max(max,get.effect(target,{name:'wuzhong'},player,player)); }, }[choice]; - game.countPlayer(func); + game.countPlayer(function(current){ + if(!listx.contains(current)) func(current); + }); return max; }; return list.sort(function(a,b){ @@ -1774,30 +1781,32 @@ game.import('character',function(lib,game,ui,get,ai,_status){ if(result.control!='cancel2'){ var index=['选项一','选项二','选项三','选项四'].indexOf(result.control); event.index=index; + var listx=(player.storage.luochong_round||[[],[]])[1]; var list=[ ['选择一名角色,令其回复1点体力',function(target){ var player=_status.event.player; return get.recoverEffect(target,player,player); }], - ['选择一名其他角色,令其失去1点体力',function(target){ + ['选择一名角色,令其失去1点体力',function(target){ return get.effect(target,{name:'losehp'},player,player); - },lib.filter.notMe], - ['选择一名其他角色,弃置其至多两张牌',function(target){ + }], + ['选择一名角色,令其弃置两张牌',function(target){ var player=_status.event.player; return get.effect(target,{name:'guohe_copy2'},player,player)*Math.sqrt(Math.min(2,target.countCards('he'))); - },function(card,player,target){ - return target!=player&&target.hasCard(function(card){ - return lib.filter.canBeDiscarded(card,player,target); - },'he'); }], ['选择一名角色,令其摸两张牌',function(target){ var player=_status.event.player; return get.effect(target,{name:'wuzhong'},player,player); }] ][index]; - var next=player.chooseTarget(list[0],true); + var targets=game.filterPlayer(function(current){ + return !listx.contains(current)&&lib.skill.luochong.filterx[event.index](current); + }) + var next=player.chooseTarget(list[0],true,function(card,player,target){ + return _status.event.targets.contains(target); + }); + next.set('targets',targets); next.set('ai',list[1]); - if(list.length>2) next.set('filterTarget',list[2]); } else event.finish(); 'step 2' @@ -1806,7 +1815,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){ player.logSkill('luochong',target); if(player!=target) player.addExpose(0.2); player.addTempSkill('luochong_round','roundStart'); - player.markAuto('luochong_round',[event.index]); + if(!player.storage.luochong_round) player.storage.luochong_round=[[],[]]; + player.storage.luochong_round[0].push(event.index); + player.storage.luochong_round[1].push(target); switch(event.index){ case 0: target.recover(); @@ -1815,7 +1826,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ target.loseHp(); break; case 2: - player.discardPlayerCard(target,true,'he',[1,2]); + target.chooseToDiscard(true,'he',2); break; case 3: target.draw(2); @@ -1839,14 +1850,13 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, content:function(){ 'step 0' - var num=1-player.hp; - if(num>0) player.recover(num); - 'step 1' + //var num=1-player.hp; + //if(num>0) player.recover(num); var list=[]; var choiceList=[ '令一名角色回复1点体力。', - '令一名其他角色失去1点体力。', - '弃置一名其他角色的至多两张牌。', + '令一名角色失去1点体力。', + '令一名角色弃置两张牌。', '令一名角色摸两张牌。', ]; var storage2=player.getStorage('luochong'); @@ -1864,14 +1874,14 @@ game.import('character',function(lib,game,ui,get,ai,_status){ } return 0; }); - 'step 2' + 'step 1' var index=['选项一','选项二','选项三','选项四'].indexOf(result.control); player.markAuto('luochong',[index]); game.log(player,'移去了','#g【落宠】','的','#y'+[ - '令一名角色回复1点体力。', - '令一名其他角色失去1点体力。', - '弃置一名其他角色的至多两张牌。', - '令一名角色摸两张牌。', + '令一名角色回复1点体力', + '令一名角色失去1点体力', + '令一名角色弃置两张牌', + '令一名角色摸两张牌', ][index],'的选项'); }, }, @@ -14380,7 +14390,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ audio:2, trigger:{global:'phaseUseBegin'}, filter:function(event,player){ - return /*(get.mode()!='guozhan'||event.player!=player)&&*/event.player.isAlive()&&player.countCards('h')>0; + return /*(get.mode()!='guozhan'||event.player!=player)&&*/event.player.isAlive()&&player.countCards('h')>0&&event.player.hasUseTarget({name:'jiu'},null,true); }, direct:true, preHidden:true, @@ -17551,11 +17561,11 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, luochong:function(player){ var storage=player.getStorage('luochong'); - var str='准备阶段开始时/当你受到伤害后,你可选择本轮内未选择过的一项:' + var str='准备阶段开始时/当你受到伤害后,你可选择本轮内未选择过的一项(每名角色每轮限选一次):' var choiceList=[ '⒈令一名角色回复1点体力。', - '⒉令一名其他角色失去1点体力。', - '⒊弃置一名其他角色的至多两张牌。', + '⒉令一名角色失去1点体力。', + '⒊令一名角色弃置两张牌。', '⒋令一名角色摸两张牌。' ]; for(var i=0;i<4;i++){ @@ -18224,9 +18234,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){ fanxiang_info:'觉醒技,准备阶段开始时,若场上有已受伤且你发动过〖良助〗的选项二的角色,则你加1点体力上限并回复1点体力,失去技能〖良助〗并获得技能〖枭姬〗', xunzhi_info:'准备阶段开始时,若你的上家和下家与你的体力值均不相等,你可以失去1点体力。若如此做,你本局内手牌上限+2。', yawang_info:'锁定技,摸牌阶段开始时,你改为摸X张牌,然后你于本回合的出牌阶段内至多使用X张牌(X为与你体力值相等的角色数)', - jilei_info:'当你受到有来源的伤害后,你可以声明一种牌的类别。若如此做,你令伤害来源不能使用、打出或弃置此类别的手牌,直到其下个回合开始。', + jilei_info:'当你受到有来源的伤害后,你可以声明一种牌的类别。若如此做,你令伤害来源不能使用、打出或弃置此类别的手牌直到其下个回合开始。', danlao:'啖酪', - danlao_info:'当你成为一张指定了多个目标的【杀】或普通锦囊牌的目标时,你可以摸一张牌,令此牌对你无效。', + danlao_info:'当你成为【杀】或普通锦囊牌的目标后,若此牌的目标数大于1,则你可以摸一张牌,令此牌对你无效。', gongao:'功獒', zhuiji:'追击', chouhai:'仇海', @@ -18525,9 +18535,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){ sppanqin_info:'出牌阶段或弃牌阶段结束时,你可将你于本阶段内弃置且位于弃牌堆的所有牌当做【南蛮入侵】使用。然后若此牌对应的实体牌数不大于此牌的目标数,则你执行并移除〖蛮王〗中的最后一个选项。', tengfanglan:'滕芳兰', luochong:'落宠', - luochong_info:'准备阶段开始时/当你受到伤害后,你可选择本轮内未选择过的一项:⒈令一名角色回复1点体力。⒉令一名其他角色失去1点体力。⒊弃置一名其他角色的至多两张牌。⒋令一名角色摸两张牌。', + luochong_info:'准备阶段开始时/当你受到伤害后,你可选择本轮内未选择过的一项(每名角色每轮限选一次):⒈令一名角色回复1点体力。⒉令一名角色失去1点体力。⒊令一名角色弃置两张牌。⒋令一名角色摸两张牌。', aichen:'哀尘', - aichen_info:'锁定技。当你进入濒死状态时,若〖落宠〗中的剩余选项数大于1,则你将体力回复至1点,然后选择移去〖落宠〗中的一个选项。', + aichen_info:'锁定技。当你进入濒死状态时,若〖落宠〗中的剩余选项数大于1,则你选择移去〖落宠〗中的一个选项。', weizi:'卫兹', yuanzi:'援资', yuanzi_info:'每轮限一次。其他角色的准备阶段开始时,你可将所有手牌交给该角色。若如此做,当该角色于本回合内造成伤害后,若其手牌数不小于你,则你摸两张牌。', diff --git a/character/sp2.js b/character/sp2.js index dee2f030d..9f06d62bb 100644 --- a/character/sp2.js +++ b/character/sp2.js @@ -4,6 +4,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){ name:'sp2', connect:true, character:{ + caohua:['female','wei',3,['caiyi','guili']], + dc_liuyu:['male','qun',3,['dcsuifu','dcpijing']], + qinyilu:['male','qun',3,['piaoping','tuoxian','chuaili']], + zhangxuan:['female','wu',4,['tongli','shezang']], dc_yanghu:['male','wei',3,['dcdeshao','dcmingfa']], dc_huangzu:['male','qun',4,['dcjinggong','dcxiaojuan']], caimaozhangyun:['male','wei',4,['lianzhou','jinglan']], @@ -138,25 +142,598 @@ game.import('character',function(lib,game,ui,get,ai,_status){ sp_longzhou:["xf_tangzi","xf_huangquan","xf_sufei","sp_liuqi"], sp_zizouqi:["mangyachang","xugong","zhangchangpu"], sp_sbfm:["lisu","xinpi","zhangwen"], - sp_shengun:["puyuan","guanlu","gexuan","xushao"], sp_guandu:["sp_zhanghe","xunchen","sp_shenpei","gaolan","lvkuanglvxiang","chunyuqiong","sp_xuyou","xinping","hanmeng"], - sp_qihuan:['liubian','zhaozhong','re_hejin'], - sp_binglin:['re_niujin',"sp_mifangfushiren",'wufan'], + sp_qihuan:['zhaozhong','re_hejin'], + sp_binglin:['re_niujin',"sp_mifangfushiren",'licaiwei'], + sp_danqi:['dufuren','qinyilu'], sp_fenghuo:['re_nanhualaoxian','tongyuan','zhangning','re_pangdegong'], sp_baigei:['re_panfeng','xingdaorong','caoxing','re_chunyuqiong','xiahoujie'], - sp_caizijiaren:['re_dongbai','re_sunluyu','heyan','zhaoyan','wangtao','wangyue'], - sp_zhilan:['liuyong','wanniangongzhu','zhanghu','lvlingqi'], - sp_guixin:['re_kanze','re_chendeng'], - sp_zongheng:['huaxin','luyusheng','re_xunchen','re_miheng','fengxi','re_dengzhi'], - sp_huangjin:['liuhong','zhujun','re_hansui'], + sp_caizijiaren:['re_dongbai','re_sunluyu','heyan','zhaoyan','wangtao','wangyue','zhangxuan','tengyin','zhangyao'], + sp_zhilan:['liuyong','wanniangongzhu','zhanghu','lvlingqi','tenggongzhu','dc_gaolan'], + sp_guixin:['re_kanze','re_chendeng','caimaozhangyun'], + sp_zongheng:['huaxin','luyusheng','re_xunchen','re_miheng','fengxi','re_dengzhi','dc_yanghu'], + sp_huangjin:['liuhong','zhujun','re_hansui',"xushao"], sp_fadong:['ol_dingyuan','wangrong','re_quyi','hanfu'], sp_xuzhou:['re_taoqian','caosong','zhangmiao','qiuliju'], sp_zhongyuan:['re_hucheer','re_zoushi','caoanmin','re_dongcheng'], - sp_xiaohu:['haomeng','yanfuren'], - sp_decade:['wulan','leitong','huaman','wangshuang','wenyang','re_liuzan','caobuxing','re_maliang','xin_baosanniang','re_xinxianying','dongxie','guozhao','fanyufeng','ruanyu','re_dongzhao','yangwan','re_panshu','dufuren','zhouyi','caojinyu','re_sunyi','re_zhangbao','re_fengfangnv','mamidi','dc_jiben','licaiwei','dc_luotong','dc_zhuling','tengyin','dc_gaolan','guanning','caomao','laiyinger','dc_huangchengyan','tenggongzhu','yanrou','caimaozhangyun','zhangyao','dc_huangzu'], + sp_xiaohu:['haomeng','yanfuren','yanrou','dc_zhuling'], + sp2_huben:['wangshuang','wenyang','re_liuzan','dc_huangzu','wulan','leitong'], + sp2_shengun:["puyuan","guanlu","gexuan",'wufan','re_zhangbao'], + sp2_huangjia:['caomao','liubian','dc_liuyu'], + sp2_zhangtai:['guozhao','fanyufeng','ruanyu','yangwan','re_panshu'], + sp2_jinse:['caojinyu','re_sunyi','re_fengfangnv','caohua','laiyinger'], + sp_decade:['huaman','caobuxing','re_maliang','xin_baosanniang','re_xinxianying','dongxie','re_dongzhao','zhouyi','mamidi','dc_jiben','dc_luotong','guanning','dc_huangchengyan'], } }, skill:{ + //蓝曹华 + caiyi:{ + audio:2, + zhuanhuanji:true, + trigger:{player:'phaseJieshuBegin'}, + direct:true, + onremove:function(player){ + delete player.storage.caiyi; + delete player.storage.caiyi_info; + }, + filter:function(event,player){ + if(player.storage.caiyi_info){ + if(player.storage.caiyi_info[player.storage.caiyi?1:0].length>=4) return false; + } + return true; + }, + choices:[[ + '回复X点体力', + '摸X张牌', + '复原武将牌', + '随机执行一个已经移除过的选项', + ],[ + '受到X点伤害', + '弃置X张牌', + '翻面并横置', + '随机执行一个已经移除过的选项', + ]], + filterx:[[ + (player)=>player.isDamaged(), + ()=>true, + (player)=>player.isTurnedOver()||player.isLinked(), + ()=>true, + ],[ + ()=>true, + (player)=>player.hasCard(function(card){ + return lib.filter.cardDiscardable(card,player,'caiyi'); + },'he'), + (player)=>!player.isTurnedOver()||!player.isLinked(), + ()=>true, + ]], + content:function(){ + 'step 0' + if(!player.storage.caiyi_info) player.storage.caiyi_info=[[],[]]; + var index=player.storage.caiyi?1:0; + event.index=index; + var list=player.storage.caiyi_info[index],choices=lib.skill.caiyi.choices[index],numbers=['⒈',';⒉',';⒊',';⒋']; + event.num=4-list.length; + var str='令一名角色选择执行其中一项:'; + for(var i=0;i<4;i++){ + if(list.contains(i)) continue; + if(i==3&&!list.length) continue; + str+=numbers.shift(); + str+=choices[i]; + } + str+='。'; + str=str.replace(/X/g,get.cnNumber(event.num)); + player.chooseTarget(get.prompt('caiyi')+'(当前状态:'+(index?'阳':'阴')+')',str).set('ai',function(target){ + var player=_status.event.player; + return (player.storage.caiyi?-1:1)*get.attitude(player,target); + }); + 'step 1' + if(result.bool){ + var target=result.targets[0]; + event.target=target; + player.logSkill('caiyi',target); + player.changeZhuanhuanji('caiyi'); + event.goto(event.index==1?5:2); + } + else event.finish(); + 'step 2' + var list=[],str=get.cnNumber(num); + var choiceList=[ + '回复'+str+'点体力。', + '摸'+str+'张牌。', + '将武将牌翻至正面且重置。', + '随机执行一个已经被移除的选项。', + ]; + var storage=player.storage.caiyi_info[event.index]; + for(var i=0;i<4;i++){ + if(storage.contains(i)){ + choiceList[i]=(''+choiceList[i]+''); + } + else if(!lib.skill.caiyi.filterx[event.index][i](target)||(i==3&&!storage.length)){ + choiceList[i]=(''+choiceList[i]+''); + } + else list.push('选项'+get.cnNumber(i+1,true)) + } + if(!list.length){ + event.finish(); + return; + } + target.chooseControl(list).set('choiceList',choiceList).set('ai',function(){ + var evt=_status.event,player=evt.player; + var list=evt.controls.slice(0); + var gett=function(choice){ + if(choice=='cancel2') return 0.1; + var max=0,func={ + 选项一:function(current){ + max=get.recoverEffect(current,player,player)*Math.min(evt.getParent().num,player.getDamagedHp()); + }, + 选项二:function(target){ + max=get.effect(target,{name:'wuzhong'},player,player)/2*evt.getParent().num; + }, + 选项三:function(target){ + if(player.isTurnedOver()) max+=25; + if(player.isLinked()) max+=get.effect(player,{name:'tiesuo'},player,player); + }, + 选项四:function(target){ + max=3; + }, + }[choice]; + func(player); + return max; + }; + return list.sort(function(a,b){ + return gett(b)-gett(a); + })[0]; + }); + 'step 3' + var index2=['选项一','选项二','选项三','选项四'].indexOf(result.control); + player.storage.caiyi_info[event.index].push(index2); + if(index2==3){ + var list=player.storage.caiyi_info[event.index].filter(function(i){ + return i!=3&&lib.skill.caiyi.filterx[event.index][i](target); + }); + if(!list.length){ + event.finish(); + return; + } + index2=list.randomGet(); + } + switch(index2){ + case 0: + target.recover(num); + break; + case 1: + target.draw(num); + break; + case 2: + !target.isTurnedOver()||target.turnOver(); + break; + } + if(index2!=2) event.finish(); + 'step 4' + !target.isLinked()||target.link(); + event.finish(); + 'step 5' + var list=[],str=get.cnNumber(num); + var choiceList=[ + '受到'+str+'点伤害。', + '弃置'+str+'张牌。', + '将武将牌翻至背面并横置。', + '随机执行一个已经被移除的选项。', + ]; + var storage=player.storage.caiyi_info[event.index]; + for(var i=0;i<4;i++){ + if(storage.contains(i)){ + choiceList[i]=(''+choiceList[i]+''); + } + else if(!lib.skill.caiyi.filterx[event.index][i](target)||(i==3&&!storage.length)){ + choiceList[i]=(''+choiceList[i]+''); + } + else list.push('选项'+get.cnNumber(i+1,true)) + } + if(!list.length){ + event.finish(); + return; + } + target.chooseControl(list).set('choiceList',choiceList).set('ai',function(){ + var evt=_status.event,player=evt.player; + var list=evt.controls.slice(0); + var gett=function(choice){ + if(choice=='cancel2') return 0.1; + var max=0,func={ + 选项一:function(current){ + max=get.effect(current,{name:'damage'},player,player)*evt.getParent().num; + }, + 选项二:function(target){ + max=get.effect(target,{name:'guohe_copy2'},player,player)*Math.min(player.countCards('he'),evt.getParent().num); + }, + 选项三:function(target){ + if(!player.isTurnedOver()) max-=5; + if(!player.isLinked()) max+=get.effect(player,{name:'tiesuo'},player,player); + }, + 选项四:function(target){ + max=-3; + }, + }[choice]; + func(player); + return max; + }; + return list.sort(function(a,b){ + return gett(b)-gett(a); + })[0]; + }); + 'step 6' + var index2=['选项一','选项二','选项三','选项四'].indexOf(result.control); + player.storage.caiyi_info[event.index].push(index2); + if(index2==3){ + var list=player.storage.caiyi_info[event.index].filter(function(i){ + return i!=3&&lib.skill.caiyi.filterx[event.index][i](target); + }); + if(!list.length){ + event.finish(); + return; + } + index2=list.randomGet(); + } + switch(index2){ + case 0: + target.damage(num); + break; + case 1: + target.chooseToDiscard(num,true,'he'); + break; + case 2: + target.isTurnedOver()||target.turnOver(); + break; + } + if(index2!=2) event.finish(); + 'step 7' + target.isLinked()||target.link(); + event.finish(); + }, + mark:true, + marktext:'☯', + intro:{ + content:function(storage){ + if(storage) return '转换技。结束阶段,你可令一名角色选择并执行一项,然后移除此选项:⒈受到X点伤害。⒉弃置X张牌。⒊翻面并横置。⒋随机执行一个已经移除过的阳选项。(X为该阴阳态剩余选项的数量)。'; + return '转换技。结束阶段,你可令一名角色选择并执行一项,然后移除此选项:⒈回复X点体力。⒉摸X张牌,⒊复原武将牌。⒋随机执行一个已经移除过的阴选项。⒋随机执行一个已经移除过的阳选项。(X为该阴阳态剩余选项的数量)。'; + }, + }, + }, + guili:{ + audio:2, + trigger:{player:'phaseBegin'}, + forced:true, + locked:false, + filter:function(event,player){ + return player.phaseNumber==1&&game.hasPlayer((current)=>current!=player); + }, + content:function(){ + 'step 0' + player.chooseTarget(lib.filter.notMe,true,'请选择【归离】的目标',lib.translate.guili_info).set('ai',function(target){ + return -get.threaten(target); + }); + 'step 1' + if(result.bool){ + var target=result.targets[0]; + player.line(target,'green'); + game.log(player,'选择了',target); + player.storage.guili_insert=target; + player.addSkill('guili_insert'); + game.delayx(); + } + }, + onremove:true, + subSkill:{ + insert:{ + trigger:{global:'phaseAfter'}, + forced:true, + charlotte:true, + logTarget:'player', + filter:function(event,player){ + if(event.player!=player.storage.guili_insert) return false; + if(event.player.getHistory('sourceDamage').length>0) return false; + var history=event.player.actionHistory; + if(history[history.length-1].isRound) return true; + for(var i=history.length-2;i>=0;i--){ + if(history[i].isMe) return false; + if(history[i].isRound) return true; + } + return false; + }, + content:function(){ + player.insertPhase(); + }, + }, + }, + }, + //刘虞 + dcsuifu:{ + audio:2, + trigger:{global:'phaseJieshuBegin'}, + filter:function(event,player){ + if(player==event.player||!event.player.countCards('h')) return false; + var num=0; + game.countPlayer(function(current){ + if(current==player||current.getSeatNum()==1){ + current.getHistory('damage',function(evt){ + num+=evt.num; + }); + } + }); + return num>=2; + }, + logTarget:'player', + check:function(event,player){ + return get.attitude(player,event.player)<=0; + }, + content:function(){ + 'step 0' + var target=trigger.player,cards=target.getCards('h'); + target.lose(cards,ui.cardPile,'insert'); + target.$throw(cards.length); + game.updateRoundNumber(); + game.log(player,'将',target,'的',get.cnNumber(cards.length),'张手牌置于牌堆顶'); + 'step 1' + game.delayx(); + player.chooseUseTarget({name:'wugu',isCard:true},true); + }, + }, + dcpijing:{ + audio:2, + trigger:{player:'phaseJieshuBegin'}, + direct:true, + content:function(){ + 'step 0' + player.chooseTarget([1,game.countPlayer()],get.prompt('dcpijing'),'令任意名角色获得技能〖自牧〗').set('ai',function(target){ + return get.attitude(_status.event.player,target); + }); + 'step 1' + if(result.bool){ + var targets=result.targets; + targets.add(player); + targets.sortBySeat(); + player.logSkill('dcpijing',targets); + game.countPlayer(function(current){ + if(!targets.contains(current)) current.removeSkill('dczimu'); + else current.addSkill('dczimu'); + }); + game.delayx(); + } + }, + derivation:'dczimu', + }, + dczimu:{ + audio:2, + trigger:{player:'damageEnd'}, + forced:true, + mark:true, + logTarget:function(event,player){ + return game.filterPlayer(function(current){ + return current!=player&¤t.hasSkill('dczimu',null,null,false); + }).sortBySeat(); + }, + content:function(){ + 'step 0' + var list=game.filterPlayer(function(current){ + return current!=player&¤t.hasSkill('dczimu',null,null,false); + }); + if(list.length>0){ + if(list.length==1) list[0].draw(); + else{ + game.asyncDraw(list); + event.delay=true; + } + } + 'step 1' + player.removeSkill('dczimu'); + if(event.delay) game.delayx(); + }, + marktext:'牧', + intro:{content:'锁定技。当你受到伤害后,你令所有拥有〖自牧〗的其他角色各摸一张牌,然后你失去〖自牧〗。'}, + }, + //秦宜禄 + piaoping:{ + audio:2, + trigger:{player:'useCard'}, + forced:true, + zhuanhuanji:true, + filter:function(event,player){ + return !player.hasSkill('piaoping_blocker',null,null,false); + }, + content:function(){ + player.changeZhuanhuanji('piaoping'); + var num=Math.min(player.hp,player.getHistory('useSkill',function(evt){ + return evt.skill=='piaoping'; + }).length); + if(num<=0) return; + if(player.storage.piaoping==true) player.draw(num); + else if(player.hasCard(function(card){ + return lib.filter.cardDiscardable(card,player,'piaoping'); + },'he')){ + game.delayx(); + player.chooseToDiscard(true,'he',num); + } + }, + mark:true, + marktext:'☯', + intro:{ + content:function(storage){ + if(storage) return '转换技,锁定技。当你使用一张牌时,你弃置X张牌。(X为你本阶段内发动过〖漂萍〗的次数且至多等于你的体力值)'; + return '转换技,锁定技。当你使用一张牌时,你摸X张牌。(X为你本阶段内发动过〖漂萍〗的次数且至多等于你的体力值)'; + }, + }, + subSkill:{blocker:{charlotte:true}}, + }, + tuoxian:{ + audio:2, + ai:{combo:'piaoping'}, + trigger:{player:'loseAfter'}, + marktext:'栗', + filter:function(event,player){ + return event.type=='discard'&&event.getParent(3).name=='piaoping'&&player.countMark('tuoxian')>0&&event.cards.filterInD('d').length>0; + }, + direct:true, + content:function(){ + 'step 0' + event.cards=trigger.cards.filterInD('d'); + player.chooseTarget(lib.filter.notMe,get.prompt('tuoxian'),'令一名其他角色获得'+get.translation(event.cards)).set('ai',function(target){ + var player=_status.event.player,att=get.attitude(player,target); + if(att<0) return 0; + if(target.hasSkillTag('nogain')) att/=10; + return att*Math.pow(1+target.countCards('he'),0.25); + }); + 'step 1' + if(result.bool){ + var target=result.targets[0]; + event.target=target; + player.logSkill('tuoxian',target); + player.removeMark('tuoxian',1); + target.gain(cards,'gain2'); + } + else event.finish(); + 'step 2' + target.chooseControl().set('choiceList',[ + '弃置区域内的'+get.cnNumber(cards.length)+'张牌', + '令'+get.translation(player)+'的〖漂萍〗于本回合内失效', + ]).set('ai',function(){ + var player=_status.event.player,target=_status.event.getParent().player; + if(player.hasCard(function(card){ + return get.effect(player,{name:card.viewAs||card.name},player,player)<0; + },'j')||player.hasCard(function(card){ + return get.value(card,player)<=0; + })) return 0; + if(get.attitude(player,target)<=0||!target.isPhaseUsing()) return 1; + if(!target.needsToDiscard()&&!target.hasCard(function(card){ + return !target.hasValueTarget(card,null,true); + },'hs')) return 1; + return 0; + }); + 'step 3' + if(result.index==0){ + if(target.countCards('j')>0) target.discardPlayerCard(target,cards.length,true,'hej'); + else target.chooseToDiscard('he',true,cards.length); + } + else player.addTempSkill('piaoping_blocker'); + }, + intro:{name2:'栗',content:'mark'}, + }, + chuaili:{ + audio:2, + trigger:{target:'useCardToTargeted'}, + forced:true, + filter:function(event,player){ + if(player==event.player||get.color(event.card)!='black') return false; + if(!player.hasSkill('piaoping',null,null,false)) return false; + return player.storage.piaoping==true||!player.hasSkill('chuaili_blocker',null,null,false); + }, + content:function(){ + if(player.storage.piaoping==true){ + player.changeZhuanhuanji('piaoping'); + } + else{ + player.addMark('tuoxian',1); + player.addTempSkill('chuaili_blocker'); + } + game.delayx(); + }, + ai:{combo:'piaoping'}, + subSkill:{blocker:{charlotte:true}}, + }, + //张嫙 + tongli:{ + audio:2, + trigger:{player:'useCardToPlayered'}, + filter:function(event,player){ + if(!event.isFirstTarget||(event.card.storage&&event.card.storage.tongli)) return false; + var type=get.type(event.card); + if(type!='basic'&&type!='trick') return false; + var hs=player.getCards('h'); + if(!hs.length) return false; + var evt=event.getParent('phaseUse'); + if(!evt||evt.player!=player) return false; + var num1=player.getHistory('useCard',function(evtx){ + if(evtx.getParent('phaseUse')!=evt) return false; + return !evtx.card.storage||!evtx.card.storage.tongli; + }).length; + if(hs.length0) event.redo(); + }, + }, + }, + }, + shezang:{ + audio:2, + round:1, + trigger:{global:'dying'}, + frequent:true, + filter:function(event,player){ + return event.player==player||player==_status.currentPhase; + }, + content:function(){ + var cards=[]; + for(var i of lib.suit){ + var card=get.cardPile2(function(card){ + return get.suit(card,false)==i; + }); + if(card) cards.push(card); + } + if(cards.length) player.gain(cards,'gain2'); + }, + }, //羊祜 dcdeshao:{ audio:2, @@ -271,8 +848,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){ var card=player.storage.dcmingfa_info[0]; delete player.storage.dcmingfa_info; event.card=card; - event.count=Math.min(5,target.countCards('h')); - if(event.count<=0) event.goto(2); + event.count=Math.max(1,Math.min(5,target.countCards('h'))); + if(!event.player.isIn()) event.goto(2); 'step 1' event.count--; if(target.isIn()&&lib.filter.targetEnabled2(card,player,target)){ @@ -619,7 +1196,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ event.count--; var suits=lib.suit.slice(0),cards=player.getExpansions('yuanyu'); for(var i of cards) suits.remove(get.suit(i,false)); - var next=target.chooseCard('h',true,'将一张手牌置于'+get.translation(target)+'的武将牌上'); + var next=target.chooseCard('h',true,'将一张手牌置于'+get.translation(player)+'的武将牌上'); next.set('suits',suits); next.set('ai',function(card){ var val=get.value(card),evt=_status.event; @@ -4034,7 +4611,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){ } trigger.player.gain(moved[1],'gain2'); if(moved[2].length) player.gain(moved[2],'gain2'); - game.updateRoundNumber(); } }, mark:true, @@ -5035,8 +5611,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){ if(result.bool){ player.gain(result.links,'gain2'); } - 'step 2' - game.updateRoundNumber(); }, }, nhyanzheng:{ @@ -7753,7 +8327,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ else event.finish(); 'step 2' for(var i of cards){ - if(!(('hejsd').includes(get.position(i,true)))){ + if(!(('hejsdx').includes(get.position(i,true)))){ i.fix(); ui.cardPile.appendChild(i); } @@ -8558,7 +9132,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){ if(card2) cards.push(card2); if(cards.length) player.gain(cards,'gain2'); 'step 1' - game.updateRoundNumber(); player.chooseControl('red','black').set('prompt','偏宠:请选择一种颜色。直至你的下回合开始时,失去该颜色的一张牌后,从牌堆获得另一种颜色的一张牌。').set('ai',function(){ var red=0,black=0; var player=_status.event.player; @@ -8615,9 +9188,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){ else break; } if(cards.length) player.gain(cards,'gain2'); - else event.finish(); - 'step 1' - game.updateRoundNumber(); }, mark:true, intro:{ @@ -8756,7 +9326,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }); if(card) player.chooseUseTarget(card,true).nopopup=true; 'step 2' - game.updateRoundNumber(); event.num++; if(event.num<=5&&target.isAlive()&&player.countCards('e')阳:你弃置X张牌。(X为你本阶段内发动过〖漂萍〗的次数且至多等于你的体力值)'; + return '转换技,锁定技。当你使用一张牌时,阴:你摸X张牌。阳:你弃置X张牌。(X为你本阶段内发动过〖漂萍〗的次数且至多等于你的体力值)'; + }, + chuaili:function(player){ + if(!player.hasSkill('piaoping',null,null,false)) return '锁定技。当你成为其他角色使用黑色牌的目标后,若你的〖漂萍〗:处于阳状态,则你将〖漂萍〗转换至阴状态;处于阴状态,则你获得一枚“栗”,且令〖揣栗〗于本回合内失效。'; + if(player.storage.piaoping) return '锁定技。当你成为其他角色使用黑色牌的目标后,若你的〖漂萍〗:处于阳状态,则你将〖漂萍〗转换至阴状态;处于阴状态,则你获得一枚“栗”,且令〖揣栗〗于本回合内失效。'; + return '锁定技。当你成为其他角色使用黑色牌的目标后,若你的〖漂萍〗:处于阳状态,则你将〖漂萍〗转换至阴状态;处于阴状态,则你获得一枚“栗”,且令〖揣栗〗于本回合内失效。'; + }, + caiyi:function(player){ + var current=player.storage.caiyi,list=player.storage.caiyi_info||[[],[]]; + var str='转换技。结束阶段,你可令一名角色选择并执行一项,然后移除此选项。'; + var list1=['⒈回复X点体力。','⒉摸X张牌。','⒊复原武将牌。','⒋随机执行一个已经移除过的阴选项;'],list2=['⒈受到X点伤害。','⒉弃置X张牌。','⒊翻面并横置。','⒋随机执行一个已经移除过的阳选项。'],str1='阴:',str2='阳:'; + for(var i=0;i<4;i++){ + var clip1=list1[i],clip2=list2[i]; + if(list[0].contains(i)) clip1=(''+clip1+''); + if(list[1].contains(i)) clip2=(''+clip2+''); + str1+=clip1; + str2+=clip2; + } + if(current) str2=(''+str2+''); + else str1=(''+str1+''); + return str+str1+str2+'(X为该阴阳态剩余选项的数量)。'; + }, }, - perfectPair:{ - }, + perfectPair:{}, characterReplace:{ lijue:['lijue','ns_lijue'], fanchou:['fanchou','ns_fanchou'], @@ -15542,6 +16129,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ re_hejin:['re_hejin','tw_hejin'], fengfangnv:['re_fengfangnv','fengfangnv'], luotong:['luotong','dc_luotong'], + mamidi:['mamidi','xin_mamidi'], }, translate:{ lijue:"李傕", @@ -16310,7 +16898,31 @@ game.import('character',function(lib,game,ui,get,ai,_status){ dcdeshao:'德劭', dcdeshao_info:'每回合限两次。当你成为其他角色使用的黑色牌的目标后,你可以摸一张牌,然后若其手牌数不小于你,则你弃置其一张牌。', dcmingfa:'明伐', - dcmingfa_info:'①出牌阶段限一次。当你使用【杀】或普通锦囊牌结算结束后,若你的武将牌上没有“明伐”牌,则你可以将此牌作为“明伐”牌置于武将牌上并选择一名其他角色,记录该角色和此牌的名称。②一名角色的回合结束时,若其是你〖明伐①〗记录的角色,则你视为对其依次使用X张〖明伐①〗记录的牌,然后移去“明伐”牌(X为其手牌数且至多为5)。③一名角色死亡时,若其是你〖明伐①〗记录的角色,则你移去“移去”牌。', + dcmingfa_info:'①出牌阶段限一次。当你使用【杀】或普通锦囊牌结算结束后,若你的武将牌上没有“明伐”牌,则你可以将此牌作为“明伐”牌置于武将牌上并选择一名其他角色,记录该角色和此牌的名称。②一名角色的回合结束时,若其是你〖明伐①〗记录的角色,则你视为对其依次使用X张〖明伐①〗记录的牌,然后移去“明伐”牌(X为其手牌数且至少为1,至多为5)。③一名角色死亡时,若其是你〖明伐①〗记录的角色,则你移去“明伐”牌。', + zhangxuan:'张嫙', + tongli:'同礼', + tongli_info:'当你于出牌阶段不因〖同礼〗而使用基本牌或普通锦囊牌指定第一个目标后,若你手牌中的花色数和你于本阶段内不因〖同礼〗而使用过的牌数相等,则你可以于此牌结算结束后依次视为对此牌的所有目标使用X张名称和属性相同的牌(X为你手牌中的花色数)。', + shezang:'奢葬', + shezang_info:'每轮限一次。当你或你回合内的其他角色进入濒死状态时,你可以从牌堆中获得每种花色的牌各一张。', + qinyilu:'秦宜禄', + piaoping:'漂萍', + piaoping_info:'转换技,锁定技。当你使用一张牌时,阴:你摸X张牌。阳:你弃置X张牌。(X为你本阶段内发动过〖漂萍〗的次数且至多等于你的体力值)', + tuoxian:'托献', + tuoxian_info:'当你因执行〖漂萍〗的效果而弃置牌后,你可以弃置一枚“栗”并令一名其他角色获得这些牌,然后令该角色选择一项:⒈弃置区域内等量的牌。⒉令你的〖漂萍〗失效直到回合结束。', + chuaili:'揣栗', + chuaili_info:'锁定技。当你成为其他角色使用黑色牌的目标后,若你的〖漂萍〗:处于阳状态,则你将〖漂萍〗转换至阴状态;处于阴状态,则你获得一枚“栗”,且令〖揣栗〗于本回合内失效。', + dc_liuyu:'刘虞', + dcsuifu:'绥抚', + dcsuifu_info:'其他角色的结束阶段开始时,若你和一号位本回合内累计受到过的伤害值大于1,则你可以将该角色的所有手牌置于牌堆顶,然后视为使用一张【五谷丰登】。', + dcpijing:'辟境', + dcpijing_info:'结束阶段开始时,你可以选择任意名角色。你令所有未选择的角色失去〖自牧〗,然后你和这些角色获得〖自牧〗。', + dczimu:'自牧', + dczimu_info:'锁定技。当你受到伤害后,你令所有拥有〖自牧〗的其他角色各摸一张牌,然后你失去〖自牧〗。', + caohua:'曹华', + caiyi:'彩翼', + caiyi_info:'转换技。结束阶段,你可令一名角色选择并执行一项,然后移除此选项。阴:⒈回复X点体力。⒉摸X张牌,⒊复原武将牌。⒋随机执行一个已经移除过的阴选项;阳:⒈受到X点伤害。⒉弃置X张牌。⒊翻面并横置。⒋随机执行一个已经移除过的阳选项。(X为该阴阳态剩余选项的数量)。', + guili:'归离', + guili_info:'你的第一个回合开始时,你须选择一名其他角色。该角色每轮的第一个回合结束后,若其本回合内未造成过伤害,则你执行一个额外的回合。', sp_whlw:"文和乱武", sp_zlzy:"逐鹿中原", @@ -16333,6 +16945,12 @@ game.import('character',function(lib,game,ui,get,ai,_status){ sp_zongheng:'荟萃·纵横捭阖', sp_fenghuo:'烽火连天', sp_guixin:'荟萃·天下归心', + sp_danqi:'千里单骑', + sp2_huben:'限定·百战虎贲', + sp2_shengun:'限定·奇人异士', + sp2_huangjia:'限定·皇家贵胄', + sp2_zhangtai:'限定·章台春望', + sp2_jinse:'限定·锦瑟良缘', sp_decade:'其他新服武将', }, }; diff --git a/character/yijiang.js b/character/yijiang.js index c39b585d5..4ec390d31 100755 --- a/character/yijiang.js +++ b/character/yijiang.js @@ -12157,10 +12157,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){ caoxiu:['re_caoxiu','caoxiu','old_caoxiu'], xiahoushi:['re_xiahoushi','xiahoushi'], zhangyi:['re_zhangyi','zhangyi'], - quancong:['re_quancong','quancong','old_quancong'], + quancong:['old_quancong','re_quancong','xin_quancong','quancong'], sunxiu:['re_sunxiu','xin_sunxiu','sunxiu'], zhuzhi:['zhuzhi','old_zhuzhi'], - liuyu:['liuyu','ol_liuyu'], + liuyu:['dc_liuyu','liuyu','ol_liuyu'], zhangrang:['zhangrang','ol_zhangrang','junk_zhangrang'], jikang:['re_jikang','jikang'], xinxianying:['re_xinxianying','xinxianying','ol_xinxianying','sp_xinxianying'], diff --git a/character/yingbian.js b/character/yingbian.js index 6383dfdac..410af041c 100644 --- a/character/yingbian.js +++ b/character/yingbian.js @@ -1439,6 +1439,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, bolan:{ audio:2, + banned:['kotomi_chuanxiang'], initList:function(player){ var list,skills=[]; if(get.mode()=='guozhan'){ @@ -1458,7 +1459,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ for(var j of lib.character[i][3]){ if(j=='bolan') continue; var skill=lib.skill[j]; - if(!skill||skill.zhuSkill||skill.dutySkill) continue; + if(!skill||skill.zhuSkill||skill.dutySkill||lib.skill.bolan.banned.contains(j)) continue; if(skill.init||skill.ai&&(skill.ai.combo||skill.ai.notemp||skill.ai.neg)) continue; var info=lib.translate[j+'_info']; if(info&&info.indexOf('出牌阶段限一次')!=-1) skills.add(j); @@ -1517,6 +1518,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){ 'step 3' game.broadcastAll('closeDialog',event.videoId); trigger.player.addTempSkill(result.control,'phaseUseEnd'); + trigger.player.popup(result.control,'thunder'); + game.log(player,'为',player==trigger.player?'自己':trigger.player,'选择了技能','#g【'+get.translation(result.control)+'】') }, }, yifa:{ diff --git a/game/asset.js b/game/asset.js index 552a58573..757172198 100644 --- a/game/asset.js +++ b/game/asset.js @@ -1,5 +1,5 @@ window.noname_asset_list=[ - 'v1.9.115.1', + 'v1.9.115.2', 'audio/background/aozhan_chaoming.mp3', 'audio/background/aozhan_online.mp3', 'audio/background/aozhan_rewrite.mp3', @@ -176,32 +176,6 @@ window.noname_asset_list=[ 'audio/card/male/yuanjiao.mp3', 'audio/card/male/zhibi.mp3', - 'audio/die/caimaozhangyun.mp3', - 'audio/die/ol_puyuan.mp3', - 'audio/die/wangxiang.mp3', - 'audio/die/wenyang.mp3', - 'audio/die/yanrou.mp3', - 'audio/die/zhangyao.mp3', - 'audio/die/ol_lusu.mp3', - 'audio/die/re_jiaxu.mp3', - 'audio/die/re_jushou.mp3', - 'audio/die/sb_huangzhong.mp3', - 'audio/die/sb_huaxiong.mp3', - 'audio/die/sb_yujin.mp3', - 'audio/die/shen_machao.mp3', - 'audio/die/shen_sunquan.mp3', - 'audio/die/tengfanglan.mp3', - 'audio/die/weizi.mp3', - 'audio/die/dc_gongsunzan.mp3', - 'audio/die/dc_huangzu.mp3', - 'audio/die/dc_yanghu.mp3', - 'audio/die/gz_dc_yanghu.mp3', - 'audio/die/ns_zanghong.mp3', - 'audio/die/re_masu.mp3', - 'audio/die/re_zhangyi.mp3', - 'audio/die/ruiji.mp3', - 'audio/die/yangyi.mp3', - 'audio/die/yj_ganning.mp3', 'audio/die/baosanniang.mp3', 'audio/die/beimihu.mp3', @@ -213,6 +187,7 @@ window.noname_asset_list=[ 'audio/die/buzhi.mp3', 'audio/die/caesar.mp3', 'audio/die/caifuren.mp3', + 'audio/die/caimaozhangyun.mp3', 'audio/die/caiwenji.mp3', 'audio/die/caiyong.mp3', 'audio/die/caizhaoji.mp3', @@ -223,6 +198,7 @@ window.noname_asset_list=[ 'audio/die/caochong.mp3', 'audio/die/caochun.mp3', 'audio/die/caohong.mp3', + 'audio/die/caohua.mp3', 'audio/die/caojie.mp3', 'audio/die/caojinyu.mp3', 'audio/die/caomao.mp3', @@ -256,10 +232,14 @@ window.noname_asset_list=[ 'audio/die/db_wenyang.mp3', 'audio/die/dc_bulianshi.mp3', 'audio/die/dc_gaolan.mp3', + 'audio/die/dc_gongsunzan.mp3', 'audio/die/dc_huangchengyan.mp3', + 'audio/die/dc_huangzu.mp3', 'audio/die/dc_jiben.mp3', + 'audio/die/dc_liuyu.mp3', 'audio/die/dc_luotong.mp3', 'audio/die/dc_xushu.mp3', + 'audio/die/dc_yanghu.mp3', 'audio/die/dc_zhuling.mp3', 'audio/die/dengai.mp3', 'audio/die/dengshizai.mp3', @@ -316,6 +296,7 @@ window.noname_asset_list=[ 'audio/die/guozhao.mp3', 'audio/die/guyong.mp3', 'audio/die/guzhielai.mp3', + 'audio/die/gz_dc_yanghu.mp3', 'audio/die/gz_dengzhi.mp3', 'audio/die/gz_gongsunyuan.mp3', 'audio/die/gz_huangzu.mp3', @@ -472,6 +453,7 @@ window.noname_asset_list=[ 'audio/die/neo_xuchu.mp3', 'audio/die/neo_zhouyu.mp3', 'audio/die/niujin.mp3', + 'audio/die/ns_zanghong.mp3', 'audio/die/ol_caiwenji.mp3', 'audio/die/ol_chendeng.mp3', 'audio/die/ol_dengai.mp3', @@ -483,9 +465,11 @@ window.noname_asset_list=[ 'audio/die/ol_jiangwei.mp3', 'audio/die/ol_lisu.mp3', 'audio/die/ol_liushan.mp3', + 'audio/die/ol_lusu.mp3', 'audio/die/ol_masu.mp3', 'audio/die/ol_pangde.mp3', 'audio/die/ol_pangtong.mp3', + 'audio/die/ol_puyuan.mp3', 'audio/die/ol_sp_zhugeliang.mp3', 'audio/die/ol_sunjian.mp3', 'audio/die/ol_wangrong.mp3', @@ -493,6 +477,7 @@ window.noname_asset_list=[ 'audio/die/ol_xiahouyuan.mp3', 'audio/die/ol_xiaoqiao.mp3', 'audio/die/ol_xuhuang.mp3', + 'audio/die/ol_xunyu.mp3', 'audio/die/ol_yangyi.mp3', 'audio/die/ol_yuanshao.mp3', 'audio/die/ol_yujin.mp3', @@ -516,6 +501,7 @@ window.noname_asset_list=[ 'audio/die/qiaozhou.mp3', 'audio/die/qinghegongzhu.mp3', 'audio/die/qinmi.mp3', + 'audio/die/qinyilu.mp3', 'audio/die/qiuliju.mp3', 'audio/die/quancong.mp3', 'audio/die/quyi.mp3', @@ -563,12 +549,15 @@ window.noname_asset_list=[ 'audio/die/re_hucheer.mp3', 'audio/die/re_jiangwei.mp3', 'audio/die/re_jianyong.mp3', + 'audio/die/re_jiaxu.mp3', 'audio/die/re_jsp_pangtong.mp3', + 'audio/die/re_jushou.mp3', 'audio/die/re_liaohua.mp3', 'audio/die/re_lingtong.mp3', 'audio/die/re_liru.mp3', 'audio/die/re_liubei.mp3', 'audio/die/re_liubiao.mp3', + 'audio/die/re_liuchen.mp3', 'audio/die/re_liushan.mp3', 'audio/die/re_liuzan.mp3', 'audio/die/re_lusu.mp3', @@ -634,7 +623,12 @@ window.noname_asset_list=[ 'audio/die/re_zhugeliang.mp3', 'audio/die/re_zhuran.mp3', 'audio/die/re_zhurong.mp3', + 'audio/die/ruanhui.mp3', 'audio/die/ruanyu.mp3', + 'audio/die/ruiji.mp3', + 'audio/die/sb_huangzhong.mp3', + 'audio/die/sb_huaxiong.mp3', + 'audio/die/sb_yujin.mp3', 'audio/die/shen_caocao.mp3', 'audio/die/shen_caopi.mp3', 'audio/die/shen_diaochan.mp3', @@ -648,8 +642,10 @@ window.noname_asset_list=[ 'audio/die/shen_lvbu1.mp3', 'audio/die/shen_lvbu2.mp3', 'audio/die/shen_lvmeng.mp3', + 'audio/die/shen_machao.mp3', 'audio/die/shen_simayi.mp3', 'audio/die/shen_sunce.mp3', + 'audio/die/shen_sunquan.mp3', 'audio/die/shen_taishici.mp3', 'audio/die/shen_xunyu.mp3', 'audio/die/shen_zhangliao.mp3', @@ -737,6 +733,7 @@ window.noname_asset_list=[ 'audio/die/tangji.mp3', 'audio/die/tangzi.mp3', 'audio/die/taoqian.mp3', + 'audio/die/tengfanglan.mp3', 'audio/die/tenggongzhu.mp3', 'audio/die/tengyin.mp3', 'audio/die/tianfeng.mp3', @@ -761,6 +758,7 @@ window.noname_asset_list=[ 'audio/die/wangrong.mp3', 'audio/die/wangshuang.mp3', 'audio/die/wangtao.mp3', + 'audio/die/wangxiang.mp3', 'audio/die/wangyi.mp3', 'audio/die/wangyuanji.mp3', 'audio/die/wangyue.mp3', @@ -769,7 +767,9 @@ window.noname_asset_list=[ 'audio/die/weiguan.mp3', 'audio/die/weiwenzhugezhi.mp3', 'audio/die/weiyan.mp3', + 'audio/die/weizi.mp3', 'audio/die/wenpin.mp3', + 'audio/die/wenyang.mp3', 'audio/die/wis_huaxiong.mp3', 'audio/die/wis_jiangwan.mp3', 'audio/die/wis_jiangwei.mp3', @@ -814,6 +814,7 @@ window.noname_asset_list=[ 'audio/die/xin_liaohua.mp3', 'audio/die/xin_lingtong.mp3', 'audio/die/xin_liubiao.mp3', + 'audio/die/xin_mamidi.mp3', 'audio/die/xin_panzhangmazhong.mp3', 'audio/die/xin_quancong.mp3', 'audio/die/xin_sunluban.mp3', @@ -856,6 +857,7 @@ window.noname_asset_list=[ 'audio/die/yangzhi.mp3', 'audio/die/yanjun.mp3', 'audio/die/yanpu.mp3', + 'audio/die/yanrou.mp3', 'audio/die/yanwen.mp3', 'audio/die/yitianjian.mp3', 'audio/die/yj_ganning.mp3', @@ -902,6 +904,8 @@ window.noname_asset_list=[ 'audio/die/zhangwen.mp3', 'audio/die/zhangxingcai.mp3', 'audio/die/zhangxiu.mp3', + 'audio/die/zhangxuan.mp3', + 'audio/die/zhangyao.mp3', 'audio/die/zhangyi.mp3', 'audio/die/zhangyì.mp3', 'audio/die/zhangzhang.mp3', @@ -978,115 +982,9 @@ window.noname_asset_list=[ 'audio/effect/tori_no_uta.mp3', 'audio/effect/win.mp3', - 'audio/skill/bingxin1.mp3', - 'audio/skill/bingxin2.mp3', - 'audio/skill/choutao1.mp3', - 'audio/skill/choutao2.mp3', - 'audio/skill/jinglan1.mp3', - 'audio/skill/jinglan2.mp3', - 'audio/skill/lianzhou1.mp3', - 'audio/skill/lianzhou2.mp3', - 'audio/skill/olqisi1.mp3', - 'audio/skill/olqisi2.mp3', - 'audio/skill/olshengong1.mp3', - 'audio/skill/olshengong2.mp3', - 'audio/skill/xiangshu1.mp3', - 'audio/skill/xiangshu2.mp3', - 'audio/skill/xiyan1.mp3', - 'audio/skill/xiyan2.mp3', - 'audio/skill/yongjin_xin_lingtong1.mp3', - 'audio/skill/yongjin_xin_lingtong2.mp3', - 'audio/skill/yuanyu1.mp3', - 'audio/skill/yuanyu2.mp3', + 'audio/skill/aichen1.mp3', 'audio/skill/aichen2.mp3', - 'audio/skill/dcjianying1.mp3', - 'audio/skill/dcjianying2.mp3', - 'audio/skill/dcshibei1.mp3', - 'audio/skill/dcshibei2.mp3', - 'audio/skill/dili_chigang1.mp3', - 'audio/skill/dili_chigang2.mp3', - 'audio/skill/dili_jiaohui1.mp3', - 'audio/skill/dili_jiaohui2.mp3', - 'audio/skill/dili_qionglan1.mp3', - 'audio/skill/dili_qionglan2.mp3', - 'audio/skill/dili_quandao1.mp3', - 'audio/skill/dili_quandao2.mp3', - 'audio/skill/dili_shengzhi1.mp3', - 'audio/skill/dili_shengzhi2.mp3', - 'audio/skill/dili_yuanlv1.mp3', - 'audio/skill/dili_yuanlv2.mp3', - 'audio/skill/dili1.mp3', - 'audio/skill/dili2.mp3', - 'audio/skill/hengwu1.mp3', - 'audio/skill/hengwu2.mp3', - 'audio/skill/huaping.mp3', - 'audio/skill/liejie1.mp3', - 'audio/skill/liejie2.mp3', - 'audio/skill/luochong1.mp3', - 'audio/skill/luochong2.mp3', - 'audio/skill/new_reyaowu_sb_huaxiong1.mp3', - 'audio/skill/new_reyaowu_sb_huaxiong2.mp3', - 'audio/skill/qibaodao2.mp3', - 'audio/skill/rw_bagua_skill.mp3', - 'audio/skill/rw_baiyin_skill.mp3', - 'audio/skill/rw_renwang_skill.mp3', - 'audio/skill/rw_tengjia1.mp3', - 'audio/skill/rw_tengjia2.mp3', - 'audio/skill/rw_zhuge_skill.mp3', - 'audio/skill/sbjieyue1.mp3', - 'audio/skill/sbjieyue2.mp3', - 'audio/skill/sbjieyue3.mp3', - 'audio/skill/sbjieyue4.mp3', - 'audio/skill/sbliegong1.mp3', - 'audio/skill/sbliegong2.mp3', - 'audio/skill/sbxiayuan1.mp3', - 'audio/skill/sbxiayuan2.mp3', - 'audio/skill/sbyangwei1.mp3', - 'audio/skill/sbyangwei2.mp3', - 'audio/skill/shouli1.mp3', - 'audio/skill/shouli2.mp3', - 'audio/skill/yuanzi1.mp3', - 'audio/skill/yuanzi2.mp3', - 'audio/skill/yuheng1.mp3', - 'audio/skill/yuheng2.mp3', - 'audio/skill/dcdeshao1.mp3', - 'audio/skill/dcdeshao2.mp3', - 'audio/skill/dcjinggong1.mp3', - 'audio/skill/dcjinggong2.mp3', - 'audio/skill/dcmingfa1.mp3', - 'audio/skill/dcmingfa2.mp3', - 'audio/skill/dcqiaomeng1.mp3', - 'audio/skill/dcqiaomeng2.mp3', - 'audio/skill/dcxiaojuan1.mp3', - 'audio/skill/dcxiaojuan2.mp3', - 'audio/skill/duoduan1.mp3', - 'audio/skill/duoduan2.mp3', - 'audio/skill/gnjinfan1.mp3', - 'audio/skill/gnjinfan2.mp3', - 'audio/skill/gnsheque1.mp3', - 'audio/skill/gnsheque2.mp3', - 'audio/skill/gongsun1.mp3', - 'audio/skill/gongsun2.mp3', - 'audio/skill/ns_nsshimeng1.mp3', - 'audio/skill/ns_nsshimeng2.mp3', - 'audio/skill/qiaoli1.mp3', - 'audio/skill/qiaoli2.mp3', - 'audio/skill/qingliang1.mp3', - 'audio/skill/qingliang2.mp3', - 'audio/skill/resanyao1.mp3', - 'audio/skill/resanyao2.mp3', - 'audio/skill/rewurong1.mp3', - 'audio/skill/rewurong2.mp3', - 'audio/skill/reyicong_dc_gongsunzan.mp3', - 'audio/skill/reyicong_dc_gongsunzan1.mp3', - 'audio/skill/sanyao1.mp3', - 'audio/skill/sanyao2.mp3', - 'audio/skill/zhiman_re_masu1.mp3', - 'audio/skill/zhiman_re_masu2.mp3', - 'audio/skill/zhiyan_xin_yufan1.mp3', - 'audio/skill/zhiyan_xin_yufan2.mp3', - 'audio/skill/anguo1.mp3', 'audio/skill/anguo2.mp3', 'audio/skill/anjian1.mp3', @@ -1178,6 +1076,8 @@ window.noname_asset_list=[ 'audio/skill/binglun2.mp3', 'audio/skill/bingqing1.mp3', 'audio/skill/bingqing2.mp3', + 'audio/skill/bingxin1.mp3', + 'audio/skill/bingxin2.mp3', 'audio/skill/bingyi_xin_guyong1.mp3', 'audio/skill/bingyi_xin_guyong2.mp3', 'audio/skill/bingyi1.mp3', @@ -1270,6 +1170,8 @@ window.noname_asset_list=[ 'audio/skill/bushi2.mp3', 'audio/skill/busuan1.mp3', 'audio/skill/busuan2.mp3', + 'audio/skill/buxu1.mp3', + 'audio/skill/buxu2.mp3', 'audio/skill/buyi_re_wuguotai1.mp3', 'audio/skill/buyi_re_wuguotai2.mp3', 'audio/skill/buyi1.mp3', @@ -1278,6 +1180,8 @@ window.noname_asset_list=[ 'audio/skill/caishi2.mp3', 'audio/skill/caiwang1.mp3', 'audio/skill/caiwang2.mp3', + 'audio/skill/caiyi1.mp3', + 'audio/skill/caiyi2.mp3', 'audio/skill/caiyuan1.mp3', 'audio/skill/caiyuan2.mp3', 'audio/skill/caizhaoji_hujia.mp3', @@ -1308,6 +1212,8 @@ window.noname_asset_list=[ 'audio/skill/chengwu2.mp3', 'audio/skill/chengxiang1.mp3', 'audio/skill/chengxiang2.mp3', + 'audio/skill/chengye1.mp3', + 'audio/skill/chengye2.mp3', 'audio/skill/chengzhang1.mp3', 'audio/skill/chengzhang2.mp3', 'audio/skill/chengzhao1.mp3', @@ -1342,6 +1248,10 @@ window.noname_asset_list=[ 'audio/skill/chouliang.mp3', 'audio/skill/choulve1.mp3', 'audio/skill/choulve2.mp3', + 'audio/skill/choutao1.mp3', + 'audio/skill/choutao2.mp3', + 'audio/skill/chuaili1.mp3', + 'audio/skill/chuaili2.mp3', 'audio/skill/chuanshu1.mp3', 'audio/skill/chuanshu2.mp3', 'audio/skill/chuanxin1.mp3', @@ -1422,8 +1332,26 @@ window.noname_asset_list=[ 'audio/skill/dbzhuifeng2.mp3', 'audio/skill/dcanxu1.mp3', 'audio/skill/dcanxu2.mp3', + 'audio/skill/dcdeshao1.mp3', + 'audio/skill/dcdeshao2.mp3', + 'audio/skill/dcjianying1.mp3', + 'audio/skill/dcjianying2.mp3', 'audio/skill/dcjiezhen1.mp3', 'audio/skill/dcjiezhen2.mp3', + 'audio/skill/dcjinggong1.mp3', + 'audio/skill/dcjinggong2.mp3', + 'audio/skill/dcmingfa1.mp3', + 'audio/skill/dcmingfa2.mp3', + 'audio/skill/dcpijing1.mp3', + 'audio/skill/dcpijing2.mp3', + 'audio/skill/dcqiaomeng1.mp3', + 'audio/skill/dcqiaomeng2.mp3', + 'audio/skill/dcshibei1.mp3', + 'audio/skill/dcshibei2.mp3', + 'audio/skill/dcsuifu1.mp3', + 'audio/skill/dcsuifu2.mp3', + 'audio/skill/dcxiaojuan1.mp3', + 'audio/skill/dcxiaojuan2.mp3', 'audio/skill/dcyinshi1.mp3', 'audio/skill/dcyinshi2.mp3', 'audio/skill/dczecai1.mp3', @@ -1432,6 +1360,7 @@ window.noname_asset_list=[ 'audio/skill/dczhanyi2.mp3', 'audio/skill/dczhuiyi1.mp3', 'audio/skill/dczhuiyi2.mp3', + 'audio/skill/dczimu1.mp3', 'audio/skill/debao1.mp3', 'audio/skill/debao2.mp3', 'audio/skill/decadejingce1.mp3', @@ -1460,6 +1389,20 @@ window.noname_asset_list=[ 'audio/skill/diaoling2.mp3', 'audio/skill/difa1.mp3', 'audio/skill/difa2.mp3', + 'audio/skill/dili_chigang1.mp3', + 'audio/skill/dili_chigang2.mp3', + 'audio/skill/dili_jiaohui1.mp3', + 'audio/skill/dili_jiaohui2.mp3', + 'audio/skill/dili_qionglan1.mp3', + 'audio/skill/dili_qionglan2.mp3', + 'audio/skill/dili_quandao1.mp3', + 'audio/skill/dili_quandao2.mp3', + 'audio/skill/dili_shengzhi1.mp3', + 'audio/skill/dili_shengzhi2.mp3', + 'audio/skill/dili_yuanlv1.mp3', + 'audio/skill/dili_yuanlv2.mp3', + 'audio/skill/dili1.mp3', + 'audio/skill/dili2.mp3', 'audio/skill/dimeng1.mp3', 'audio/skill/dimeng2.mp3', 'audio/skill/dingfa1.mp3', @@ -1707,6 +1650,8 @@ window.noname_asset_list=[ 'audio/skill/guidao_sp_zhangjiao2.mp3', 'audio/skill/guidao1.mp3', 'audio/skill/guidao2.mp3', + 'audio/skill/guili1.mp3', + 'audio/skill/guili2.mp3', 'audio/skill/guiming1.mp3', 'audio/skill/guiming2.mp3', 'audio/skill/guixin1.mp3', @@ -1832,6 +1777,8 @@ window.noname_asset_list=[ 'audio/skill/heji2.mp3', 'audio/skill/hengjiang1.mp3', 'audio/skill/hengjiang2.mp3', + 'audio/skill/hengwu1.mp3', + 'audio/skill/hengwu2.mp3', 'audio/skill/hengzheng1.mp3', 'audio/skill/hengzheng2.mp3', 'audio/skill/heqia1.mp3', @@ -1875,6 +1822,7 @@ window.noname_asset_list=[ 'audio/skill/huanshi2.mp3', 'audio/skill/huantu1.mp3', 'audio/skill/huantu2.mp3', + 'audio/skill/huaping.mp3', 'audio/skill/huaping1.mp3', 'audio/skill/huaping2.mp3', 'audio/skill/huashen21.mp3', @@ -2042,10 +1990,14 @@ window.noname_asset_list=[ 'audio/skill/jingce2.mp3', 'audio/skill/jinghe1.mp3', 'audio/skill/jinghe2.mp3', + 'audio/skill/jinglan1.mp3', + 'audio/skill/jinglan2.mp3', 'audio/skill/jinglve1.mp3', 'audio/skill/jinglve2.mp3', 'audio/skill/jingong1.mp3', 'audio/skill/jingong2.mp3', + 'audio/skill/jingzhong1.mp3', + 'audio/skill/jingzhong2.mp3', 'audio/skill/jinhui1.mp3', 'audio/skill/jinhui2.mp3', 'audio/skill/jinjian1.mp3', @@ -2224,6 +2176,8 @@ window.noname_asset_list=[ 'audio/skill/lianpo2.mp3', 'audio/skill/lianying1.mp3', 'audio/skill/lianying2.mp3', + 'audio/skill/lianzhou1.mp3', + 'audio/skill/lianzhou2.mp3', 'audio/skill/lianzhu1.mp3', 'audio/skill/lianzhu2.mp3', 'audio/skill/lianzi1.mp3', @@ -2240,6 +2194,8 @@ window.noname_asset_list=[ 'audio/skill/liegong2.mp3', 'audio/skill/liehou1.mp3', 'audio/skill/liehou2.mp3', + 'audio/skill/liejie1.mp3', + 'audio/skill/liejie2.mp3', 'audio/skill/lieren_ol_zhurong1.mp3', 'audio/skill/lieren_ol_zhurong2.mp3', 'audio/skill/lieren1.mp3', @@ -2324,6 +2280,8 @@ window.noname_asset_list=[ 'audio/skill/luanzhan2.mp3', 'audio/skill/lulve1.mp3', 'audio/skill/lulve2.mp3', + 'audio/skill/luochong1.mp3', + 'audio/skill/luochong2.mp3', 'audio/skill/luoshen1.mp3', 'audio/skill/luoshen2.mp3', 'audio/skill/luoyan1.mp3', @@ -2378,6 +2336,8 @@ window.noname_asset_list=[ 'audio/skill/miji2.mp3', 'audio/skill/mingce1.mp3', 'audio/skill/mingce2.mp3', + 'audio/skill/mingcha1.mp3', + 'audio/skill/mingcha2.mp3', 'audio/skill/mingfa1.mp3', 'audio/skill/mingfa2.mp3', 'audio/skill/mingjian1.mp3', @@ -2442,6 +2402,8 @@ window.noname_asset_list=[ 'audio/skill/neifa2.mp3', 'audio/skill/new_jiangchi1.mp3', 'audio/skill/new_jiangchi2.mp3', + 'audio/skill/new_reyaowu_sb_huaxiong1.mp3', + 'audio/skill/new_reyaowu_sb_huaxiong2.mp3', 'audio/skill/new_reyaowu1.mp3', 'audio/skill/new_reyaowu2.mp3', 'audio/skill/niepan_re_pangtong1.mp3', @@ -2452,6 +2414,8 @@ window.noname_asset_list=[ 'audio/skill/nifu2.mp3', 'audio/skill/niluan1.mp3', 'audio/skill/niluan2.mp3', + 'audio/skill/ns_nsshimeng1.mp3', + 'audio/skill/ns_nsshimeng2.mp3', 'audio/skill/nzry_binglve1.mp3', 'audio/skill/nzry_binglve2.mp3', 'audio/skill/nzry_chenglve1.mp3', @@ -2549,6 +2513,8 @@ window.noname_asset_list=[ 'audio/skill/olhunzi_re_sunyi2.mp3', 'audio/skill/olhunzi1.mp3', 'audio/skill/olhunzi2.mp3', + 'audio/skill/oljieming1.mp3', + 'audio/skill/oljieming2.mp3', 'audio/skill/oljiezi1.mp3', 'audio/skill/oljiezi2.mp3', 'audio/skill/oljiuchi1.mp3', @@ -2563,8 +2529,12 @@ window.noname_asset_list=[ 'audio/skill/olluanji2.mp3', 'audio/skill/olniepan1.mp3', 'audio/skill/olniepan2.mp3', + 'audio/skill/olqisi1.mp3', + 'audio/skill/olqisi2.mp3', 'audio/skill/olruoyu1.mp3', 'audio/skill/olruoyu2.mp3', + 'audio/skill/olshengong1.mp3', + 'audio/skill/olshengong2.mp3', 'audio/skill/olsujian1.mp3', 'audio/skill/olsujian2.mp3', 'audio/skill/oltuntian1.mp3', @@ -2607,6 +2577,8 @@ window.noname_asset_list=[ 'audio/skill/pianyi2.mp3', 'audio/skill/piaoling1.mp3', 'audio/skill/piaoling2.mp3', + 'audio/skill/piaoping1.mp3', + 'audio/skill/piaoping2.mp3', 'audio/skill/pindi1.mp3', 'audio/skill/pindi2.mp3', 'audio/skill/pinghe1.mp3', @@ -2661,6 +2633,8 @@ window.noname_asset_list=[ 'audio/skill/qiaobian32.mp3', 'audio/skill/qiaobian41.mp3', 'audio/skill/qiaobian42.mp3', + 'audio/skill/qiaoli1.mp3', + 'audio/skill/qiaoli2.mp3', 'audio/skill/qiaomeng1.mp3', 'audio/skill/qiaomeng2.mp3', 'audio/skill/qiaoshi1.mp3', @@ -2669,6 +2643,7 @@ window.noname_asset_list=[ 'audio/skill/qiaoshui2.mp3', 'audio/skill/qiaoyan1.mp3', 'audio/skill/qiaoyan2.mp3', + 'audio/skill/qibaodao2.mp3', 'audio/skill/qibie1.mp3', 'audio/skill/qibie2.mp3', 'audio/skill/qice_backup1.mp3', @@ -2697,6 +2672,8 @@ window.noname_asset_list=[ 'audio/skill/qingjue2.mp3', 'audio/skill/qingleng1.mp3', 'audio/skill/qingleng2.mp3', + 'audio/skill/qingliang1.mp3', + 'audio/skill/qingliang2.mp3', 'audio/skill/qinglong_skill.mp3', 'audio/skill/qingman1.mp3', 'audio/skill/qingman2.mp3', @@ -2764,6 +2741,8 @@ window.noname_asset_list=[ 'audio/skill/quanjin2.mp3', 'audio/skill/quanjiu1.mp3', 'audio/skill/quanjiu2.mp3', + 'audio/skill/quhu_ol_xunyu1.mp3', + 'audio/skill/quhu_ol_xunyu2.mp3', 'audio/skill/quhu_re_xunyu1.mp3', 'audio/skill/quhu_re_xunyu2.mp3', 'audio/skill/quhu1.mp3', @@ -2963,6 +2942,8 @@ window.noname_asset_list=[ 'audio/skill/reqingguo2.mp3', 'audio/skill/reqingxi1.mp3', 'audio/skill/reqingxi2.mp3', + 'audio/skill/reqinwang1.mp3', + 'audio/skill/reqinwang2.mp3', 'audio/skill/reqiuyuan1.mp3', 'audio/skill/reqiuyuan2.mp3', 'audio/skill/requanji1.mp3', @@ -3019,6 +3000,8 @@ window.noname_asset_list=[ 'audio/skill/reyanyu2.mp3', 'audio/skill/reyanzhu1.mp3', 'audio/skill/reyanzhu2.mp3', + 'audio/skill/reyicong_dc_gongsunzan.mp3', + 'audio/skill/reyicong_dc_gongsunzan1.mp3', 'audio/skill/reyicong1.mp3', 'audio/skill/reyicong2.mp3', 'audio/skill/reyiji1.mp3', @@ -3042,6 +3025,8 @@ window.noname_asset_list=[ 'audio/skill/reyonglve2.mp3', 'audio/skill/rezaiqi1.mp3', 'audio/skill/rezaiqi2.mp3', + 'audio/skill/rezhanjue1.mp3', + 'audio/skill/rezhanjue2.mp3', 'audio/skill/rezhiheng_shen_caopi1.mp3', 'audio/skill/rezhiheng_shen_caopi2.mp3', 'audio/skill/rezhiheng1.mp3', @@ -3072,6 +3057,12 @@ window.noname_asset_list=[ 'audio/skill/ruoyu_re_liushan2.mp3', 'audio/skill/ruoyu1.mp3', 'audio/skill/ruoyu2.mp3', + 'audio/skill/rw_bagua_skill.mp3', + 'audio/skill/rw_baiyin_skill.mp3', + 'audio/skill/rw_renwang_skill.mp3', + 'audio/skill/rw_tengjia1.mp3', + 'audio/skill/rw_tengjia2.mp3', + 'audio/skill/rw_zhuge_skill.mp3', 'audio/skill/sanchen1.mp3', 'audio/skill/sanchen2.mp3', 'audio/skill/sanjian_skill.mp3', @@ -3086,6 +3077,18 @@ window.noname_asset_list=[ 'audio/skill/sbaiyin.mp3', 'audio/skill/sbaiyin1.mp3', 'audio/skill/sbaiyin2.mp3', + 'audio/skill/sbjieyue1.mp3', + 'audio/skill/sbjieyue2.mp3', + 'audio/skill/sbjieyue3.mp3', + 'audio/skill/sbjieyue4.mp3', + 'audio/skill/sbliegong1.mp3', + 'audio/skill/sbliegong2.mp3', + 'audio/skill/sbxiayuan1.mp3', + 'audio/skill/sbxiayuan2.mp3', + 'audio/skill/sbyangwei1.mp3', + 'audio/skill/sbyangwei2.mp3', + 'audio/skill/sbyaoming1.mp3', + 'audio/skill/sbyaoming2.mp3', 'audio/skill/scfuhai1.mp3', 'audio/skill/scfuhai2.mp3', 'audio/skill/sghuishi1.mp3', @@ -3162,6 +3165,8 @@ window.noname_asset_list=[ 'audio/skill/sheyan2.mp3', 'audio/skill/sheyi1.mp3', 'audio/skill/sheyi2.mp3', + 'audio/skill/shezang1.mp3', + 'audio/skill/shezang2.mp3', 'audio/skill/shhlianhua1.mp3', 'audio/skill/shhlianhua2.mp3', 'audio/skill/shibei_xin_jushou1.mp3', @@ -3187,8 +3192,12 @@ window.noname_asset_list=[ 'audio/skill/shiyong3.mp3', 'audio/skill/shiyuan1.mp3', 'audio/skill/shiyuan2.mp3', + 'audio/skill/shizhan1.mp3', + 'audio/skill/shizhan2.mp3', 'audio/skill/shoucheng1.mp3', 'audio/skill/shoucheng2.mp3', + 'audio/skill/shouli1.mp3', + 'audio/skill/shouli2.mp3', 'audio/skill/shoulijian.mp3', 'audio/skill/shouxi1.mp3', 'audio/skill/shouxi2.mp3', @@ -3443,6 +3452,10 @@ window.noname_asset_list=[ 'audio/skill/tongduo2.mp3', 'audio/skill/tongji1.mp3', 'audio/skill/tongji2.mp3', + 'audio/skill/tongli1.mp3', + 'audio/skill/tongli2.mp3', + 'audio/skill/tongqu1.mp3', + 'audio/skill/tongqu2.mp3', 'audio/skill/tongyuan1.mp3', 'audio/skill/tongyuan2.mp3', 'audio/skill/tspowei1.mp3', @@ -3466,6 +3479,8 @@ window.noname_asset_list=[ 'audio/skill/tuntian2.mp3', 'audio/skill/tuogu1.mp3', 'audio/skill/tuogu2.mp3', + 'audio/skill/tuoxian.mp3', + 'audio/skill/tuoxian2.mp3', 'audio/skill/tuxi1.mp3', 'audio/skill/tuxi2.mp3', 'audio/skill/tuxing1.mp3', @@ -3643,6 +3658,8 @@ window.noname_asset_list=[ 'audio/skill/xiangle_re_liushan2.mp3', 'audio/skill/xiangle1.mp3', 'audio/skill/xiangle2.mp3', + 'audio/skill/xiangshu1.mp3', + 'audio/skill/xiangshu2.mp3', 'audio/skill/xianjing1.mp3', 'audio/skill/xianjing2.mp3', 'audio/skill/xianshuai1.mp3', @@ -3964,6 +3981,8 @@ window.noname_asset_list=[ 'audio/skill/xiusheng2.mp3', 'audio/skill/xixiu1.mp3', 'audio/skill/xixiu2.mp3', + 'audio/skill/xiyan1.mp3', + 'audio/skill/xiyan2.mp3', 'audio/skill/xiying1.mp3', 'audio/skill/xiying2.mp3', 'audio/skill/xizhen1.mp3', @@ -4175,6 +4194,10 @@ window.noname_asset_list=[ 'audio/skill/yuanlve2.mp3', 'audio/skill/yuanqing1.mp3', 'audio/skill/yuanqing2.mp3', + 'audio/skill/yuanyu1.mp3', + 'audio/skill/yuanyu2.mp3', + 'audio/skill/yuanzi1.mp3', + 'audio/skill/yuanzi2.mp3', 'audio/skill/yuce_re_manchong1.mp3', 'audio/skill/yuce_re_manchong2.mp3', 'audio/skill/yuce1.mp3', @@ -4185,6 +4208,8 @@ window.noname_asset_list=[ 'audio/skill/yuejian2.mp3', 'audio/skill/yufeng1.mp3', 'audio/skill/yufeng2.mp3', + 'audio/skill/yuheng1.mp3', + 'audio/skill/yuheng2.mp3', 'audio/skill/yuhua1.mp3', 'audio/skill/yuhua2.mp3', 'audio/skill/yujue1.mp3', @@ -4321,6 +4346,8 @@ window.noname_asset_list=[ 'audio/skill/zhiyan_gexuan1.mp3', 'audio/skill/zhiyan_re_yufan1.mp3', 'audio/skill/zhiyan_re_yufan2.mp3', + 'audio/skill/zhiyan_xin_yufan1.mp3', + 'audio/skill/zhiyan_xin_yufan2.mp3', 'audio/skill/zhiyan1.mp3', 'audio/skill/zhiyan2.mp3', 'audio/skill/zhiyi1.mp3', @@ -5549,6 +5576,15 @@ window.noname_asset_list=[ 'image/character/ns_zanghong.jpg', 'image/character/re_duji.jpg', 'image/character/re_liuchen.jpg', + 'image/character/caohua.jpg', + 'image/character/dc_liuyu.jpg', + 'image/character/ns_limi.jpg', + 'image/character/ol_xunyu.jpg', + 'image/character/qinyilu.jpg', + 'image/character/ruanhui.jpg', + 'image/character/xin_mamidi.jpg', + 'image/character/xin_quancong.jpg', + 'image/character/zhangxuan.jpg', 'image/character/baiwuchang.jpg', 'image/character/baosanniang.jpg', diff --git a/game/game.js b/game/game.js index 99aa776b4..7bd047e02 100644 --- a/game/game.js +++ b/game/game.js @@ -7148,13 +7148,6 @@ return this.childNodes[row].childNodes[col]; } }; - Array.prototype.numOf=function(item){ - var num=0; - for(var i=0;i1){ if(!info.multitarget){ if(!event.fixedSeat&&!sort){ - targets.sortBySeat(player); + targets.sortBySeat((_status.currentPhase||player)); } if(animate) for(var i=0;i2) player.turnOver(); 'step 1' @@ -11438,7 +11450,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){ gzkuangfu:'狂斧', gzkuangfu_info:'出牌阶段限一次。当你使用【杀】指定目标后,你可获得目标角色装备区内的一张牌。然后若此【杀】未造成伤害,则你弃置两张手牌。', gzliegong:'烈弓', - gzliegong_info:'①你对手牌数不大于你的角色使用【杀】不受距离关系的限制。②当你使用【杀】指定目标后,若其体力值不小于你,则你可以选择一项:⒈令此【杀】对其的伤害值基数+1。⒉令其不氪响应此【杀】。', + gzliegong_info:'①你对手牌数不大于你的角色使用【杀】不受距离关系的限制。②当你使用【杀】指定目标后,若其体力值不小于你,则你可以选择一项:⒈令此【杀】对其的伤害值基数+1。⒉令其不可响应此【杀】。', gzhongyan:'红颜', gzhongyan_info:'锁定技。①你区域内的黑桃牌和黑桃判定牌的花色视为红桃。②若你的装备区内有红桃牌,则你的手牌上限+1。', gztianxiang:'天香', @@ -11595,6 +11607,8 @@ game.import('mode',function(lib,game,ui,get,ai,_status){ gzdeshao_info:'每回合限X次(X为你的体力值)。其他角色使用黑色牌指定你为唯一目标后,若其暗置的武将牌数大于等于你,则你可以弃置其一张牌。', gzmingfa:'明伐', gzmingfa_info:'出牌阶段限一次,你可以选择一名敌方角色。该角色的下个回合结束时,若其手牌数:小于你,你对其造成1点伤害并获得其一张手牌;大于你,你摸X张牌(X为你与其的手牌数之差且至多为5)。', + gzjilei_info:'当你受到有来源的伤害后,你可以声明一种牌的类别。若如此做,你令伤害来源不能使用、打出或弃置此类别的手牌直到回合结束。', + gzdanlao_info:'当你成为普通锦囊牌的目标后,若此牌的目标数大于1,则你可以摸一张牌,令此牌对你无效。', gz_cuimao:'崔琰毛玠', gzzhengbi:'征辟',