diff --git a/audio/die/dongcheng.mp3 b/audio/die/dongcheng.mp3 new file mode 100644 index 000000000..8680c72d8 Binary files /dev/null and b/audio/die/dongcheng.mp3 differ diff --git a/audio/die/ol_xiaoqiao.mp3 b/audio/die/ol_xiaoqiao.mp3 new file mode 100644 index 000000000..dae46a5a5 Binary files /dev/null and b/audio/die/ol_xiaoqiao.mp3 differ diff --git a/audio/die/re_lingtong.mp3 b/audio/die/re_lingtong.mp3 new file mode 100644 index 000000000..dabb2641a Binary files /dev/null and b/audio/die/re_lingtong.mp3 differ diff --git a/audio/die/shen_caopi.mp3 b/audio/die/shen_caopi.mp3 new file mode 100644 index 000000000..546553e08 Binary files /dev/null and b/audio/die/shen_caopi.mp3 differ diff --git a/audio/die/shen_zhenji.mp3 b/audio/die/shen_zhenji.mp3 new file mode 100644 index 000000000..bddd7a981 Binary files /dev/null and b/audio/die/shen_zhenji.mp3 differ diff --git a/audio/die/yangyi.mp3 b/audio/die/yangyi.mp3 new file mode 100644 index 000000000..af39e3d2b Binary files /dev/null and b/audio/die/yangyi.mp3 differ diff --git a/audio/die/yujin_yujin.mp3 b/audio/die/yujin_yujin.mp3 new file mode 100644 index 000000000..20b885592 Binary files /dev/null and b/audio/die/yujin_yujin.mp3 differ diff --git a/audio/skill/chengzhao1.mp3 b/audio/skill/chengzhao1.mp3 new file mode 100644 index 000000000..a3cfd7095 Binary files /dev/null and b/audio/skill/chengzhao1.mp3 differ diff --git a/audio/skill/chengzhao2.mp3 b/audio/skill/chengzhao2.mp3 new file mode 100644 index 000000000..ddb3c0820 Binary files /dev/null and b/audio/skill/chengzhao2.mp3 differ diff --git a/audio/skill/chuyuan1.mp3 b/audio/skill/chuyuan1.mp3 new file mode 100644 index 000000000..2c81344a1 Binary files /dev/null and b/audio/skill/chuyuan1.mp3 differ diff --git a/audio/skill/chuyuan2.mp3 b/audio/skill/chuyuan2.mp3 new file mode 100644 index 000000000..2c72dfde5 Binary files /dev/null and b/audio/skill/chuyuan2.mp3 differ diff --git a/audio/skill/dengji1.mp3 b/audio/skill/dengji1.mp3 new file mode 100644 index 000000000..0db8e3600 Binary files /dev/null and b/audio/skill/dengji1.mp3 differ diff --git a/audio/skill/dengji2.mp3 b/audio/skill/dengji2.mp3 new file mode 100644 index 000000000..e452cb7ea Binary files /dev/null and b/audio/skill/dengji2.mp3 differ diff --git a/audio/skill/duoduan1.mp3 b/audio/skill/duoduan1.mp3 new file mode 100644 index 000000000..f3e783932 Binary files /dev/null and b/audio/skill/duoduan1.mp3 differ diff --git a/audio/skill/duoduan2.mp3 b/audio/skill/duoduan2.mp3 new file mode 100644 index 000000000..108c14937 Binary files /dev/null and b/audio/skill/duoduan2.mp3 differ diff --git a/audio/skill/gongsun1.mp3 b/audio/skill/gongsun1.mp3 new file mode 100644 index 000000000..3afe0d4ae Binary files /dev/null and b/audio/skill/gongsun1.mp3 differ diff --git a/audio/skill/gongsun2.mp3 b/audio/skill/gongsun2.mp3 new file mode 100644 index 000000000..89fc8f38f Binary files /dev/null and b/audio/skill/gongsun2.mp3 differ diff --git a/audio/skill/olfangquan_shen_caopi1.mp3 b/audio/skill/olfangquan_shen_caopi1.mp3 new file mode 100644 index 000000000..a7e3704e9 Binary files /dev/null and b/audio/skill/olfangquan_shen_caopi1.mp3 differ diff --git a/audio/skill/olfangquan_shen_caopi2.mp3 b/audio/skill/olfangquan_shen_caopi2.mp3 new file mode 100644 index 000000000..a7e3704e9 Binary files /dev/null and b/audio/skill/olfangquan_shen_caopi2.mp3 differ diff --git a/audio/skill/olluanji_shen_caopi1.mp3 b/audio/skill/olluanji_shen_caopi1.mp3 new file mode 100644 index 000000000..eec9126b9 Binary files /dev/null and b/audio/skill/olluanji_shen_caopi1.mp3 differ diff --git a/audio/skill/olluanji_shen_caopi2.mp3 b/audio/skill/olluanji_shen_caopi2.mp3 new file mode 100644 index 000000000..eec9126b9 Binary files /dev/null and b/audio/skill/olluanji_shen_caopi2.mp3 differ diff --git a/audio/skill/rehongyan1.mp3 b/audio/skill/rehongyan1.mp3 new file mode 100644 index 000000000..4e0962348 Binary files /dev/null and b/audio/skill/rehongyan1.mp3 differ diff --git a/audio/skill/rehongyan2.mp3 b/audio/skill/rehongyan2.mp3 new file mode 100644 index 000000000..09e8478e2 Binary files /dev/null and b/audio/skill/rehongyan2.mp3 differ diff --git a/audio/skill/rejianxiong_shen_caopi1.mp3 b/audio/skill/rejianxiong_shen_caopi1.mp3 new file mode 100644 index 000000000..0508c1ee2 Binary files /dev/null and b/audio/skill/rejianxiong_shen_caopi1.mp3 differ diff --git a/audio/skill/rejianxiong_shen_caopi2.mp3 b/audio/skill/rejianxiong_shen_caopi2.mp3 new file mode 100644 index 000000000..14910ee3a Binary files /dev/null and b/audio/skill/rejianxiong_shen_caopi2.mp3 differ diff --git a/audio/skill/rejieyue1.mp3 b/audio/skill/rejieyue1.mp3 new file mode 100644 index 000000000..5b878050e Binary files /dev/null and b/audio/skill/rejieyue1.mp3 differ diff --git a/audio/skill/rejieyue2.mp3 b/audio/skill/rejieyue2.mp3 new file mode 100644 index 000000000..dd04c87dd Binary files /dev/null and b/audio/skill/rejieyue2.mp3 differ diff --git a/audio/skill/rerende_shen_caopi1.mp3 b/audio/skill/rerende_shen_caopi1.mp3 new file mode 100644 index 000000000..bc9baa86e Binary files /dev/null and b/audio/skill/rerende_shen_caopi1.mp3 differ diff --git a/audio/skill/rerende_shen_caopi2.mp3 b/audio/skill/rerende_shen_caopi2.mp3 new file mode 100644 index 000000000..bc9baa86e Binary files /dev/null and b/audio/skill/rerende_shen_caopi2.mp3 differ diff --git a/audio/skill/rezhiheng_shen_caopi1.mp3 b/audio/skill/rezhiheng_shen_caopi1.mp3 new file mode 100644 index 000000000..9bad754d0 Binary files /dev/null and b/audio/skill/rezhiheng_shen_caopi1.mp3 differ diff --git a/audio/skill/rezhiheng_shen_caopi2.mp3 b/audio/skill/rezhiheng_shen_caopi2.mp3 new file mode 100644 index 000000000..9bad754d0 Binary files /dev/null and b/audio/skill/rezhiheng_shen_caopi2.mp3 differ diff --git a/audio/skill/shenfu1.mp3 b/audio/skill/shenfu1.mp3 new file mode 100644 index 000000000..6dd9caac8 Binary files /dev/null and b/audio/skill/shenfu1.mp3 differ diff --git a/audio/skill/shenfu2.mp3 b/audio/skill/shenfu2.mp3 new file mode 100644 index 000000000..bc34118c9 Binary files /dev/null and b/audio/skill/shenfu2.mp3 differ diff --git a/audio/skill/tianxiang_ol_xiaoqiao1.mp3 b/audio/skill/tianxiang_ol_xiaoqiao1.mp3 new file mode 100644 index 000000000..997bff227 Binary files /dev/null and b/audio/skill/tianxiang_ol_xiaoqiao1.mp3 differ diff --git a/audio/skill/tianxiang_ol_xiaoqiao2.mp3 b/audio/skill/tianxiang_ol_xiaoqiao2.mp3 new file mode 100644 index 000000000..adf6e1697 Binary files /dev/null and b/audio/skill/tianxiang_ol_xiaoqiao2.mp3 differ diff --git a/audio/skill/tianxing1.mp3 b/audio/skill/tianxing1.mp3 new file mode 100644 index 000000000..eee34acf8 Binary files /dev/null and b/audio/skill/tianxing1.mp3 differ diff --git a/audio/skill/tianxing2.mp3 b/audio/skill/tianxing2.mp3 new file mode 100644 index 000000000..c327ffc4d Binary files /dev/null and b/audio/skill/tianxing2.mp3 differ diff --git a/audio/skill/xuanfeng_re_lingtong1.mp3 b/audio/skill/xuanfeng_re_lingtong1.mp3 new file mode 100644 index 000000000..b057dd828 Binary files /dev/null and b/audio/skill/xuanfeng_re_lingtong1.mp3 differ diff --git a/audio/skill/xuanfeng_re_lingtong2.mp3 b/audio/skill/xuanfeng_re_lingtong2.mp3 new file mode 100644 index 000000000..a9e1cf1fa Binary files /dev/null and b/audio/skill/xuanfeng_re_lingtong2.mp3 differ diff --git a/card/standard.js b/card/standard.js index 905df2954..c90084fe7 100644 --- a/card/standard.js +++ b/card/standard.js @@ -78,7 +78,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){ if(typeof event.baseDamage!='number') event.baseDamage=1; if(typeof event.extraDamage!='number') event.extraDamage=0; "step 1" - if(event.directHit||(!_status.connectMode&&lib.config.skip_shan&&!target.hasShan())){ + if(event.directHit||event.directHit2||(!_status.connectMode&&lib.config.skip_shan&&!target.hasShan())){ event._result={bool:false}; } else if(event.skipShan){ @@ -109,18 +109,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){ } else if(get.damageEffect(target,evt.player,target,evt.card.nature)>=0) bool=false; if(bool){ - if(typeof card=='string'){ - var info=get.info(card); - if(info.ai&&info.ai.order){ - if(typeof info.ai.order=='number'){ - return info.ai.order; - } - else if(typeof info.ai.order=='function'){ - return info.ai.order(); - } - } - } - return 3; + return get.order(card); } return 0; }).set('shanRequired',event.shanRequired); @@ -246,6 +235,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){ game.delay(0.5); }, ai:{ + order:3, basic:{ useful:[7,2], value:[7,2], diff --git a/character/diy.js b/character/diy.js index 8f1d14e22..e24b6845f 100755 --- a/character/diy.js +++ b/character/diy.js @@ -31,9 +31,13 @@ game.import('character',function(lib,game,ui,get,ai,_status){ key_harukakanata:['female','key',3,['haruka_shuangche']], key_inari:['female','key',2,['inari_baiwei','inari_huhun']], key_shiina:['female','key',3,['shiina_qingshen','shiina_feiyan']], - key_sunohara:['unknown','key',3,['sunohara_chengshuang','sunohara_tiaoyin','sunohara_jianren']], + key_sunohara:['unknown','key','3/4',['sunohara_chengshuang','sunohara_tiaoyin','sunohara_jianren']], key_rin:['female','key',3,['rin_baoqiu']], key_sasami:['female','key',3,['sasami_miaobian']], + key_akane:['female','key',3,['akane_jugu','akane_quanqing','akane_yifu'],['zhu']], + key_doruji:['female','key',16,['doruji_feiqu']], + key_yuiko:['female','key',3,['yuiko_fenglun','yuiko_dilve']], + key_riki:['female','key',3,['riki_spwenji','riki_nvzhuang','riki_mengzhong']], // diy_caocao:['male','wei',4,['xicai','diyjianxiong','hujia']], // diy_hanlong:['male','wei',4,['siji','ciqiu']], diy_feishi:['male','shu',3,['shuaiyan','moshou']], @@ -113,7 +117,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ diy:{ diy_tieba:["diy_wenyang","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_zhangwei"], diy_default:["diy_feishi","diy_liuyan","diy_yuji","diy_caiwenji","diy_lukang","diy_zhenji","diy_liufu","diy_xizhenxihong","diy_liuzan","diy_zaozhirenjun","diy_yangyi","diy_tianyu"], - diy_key:["key_lucia","key_kyousuke","key_yuri","key_haruko","key_kagari","key_umi","key_rei","key_komari","key_yukine","key_yusa","key_misa","key_masato","key_iwasawa","key_kengo","key_yoshino","key_yui","key_tsumugi","key_saya","key_harukakanata","key_inari","key_shiina","key_sunohara","key_rin","key_sasami"], + diy_key:["key_lucia","key_kyousuke","key_yuri","key_haruko","key_kagari","key_umi","key_rei","key_komari","key_yukine","key_yusa","key_misa","key_masato","key_iwasawa","key_kengo","key_yoshino","key_yui","key_tsumugi","key_saya","key_harukakanata","key_inari","key_shiina","key_sunohara","key_rin","key_sasami","key_akane","key_doruji","key_yuiko","key_riki"], diy_yongjian:["ns_chendao","yj_caoang"], }, }, @@ -129,6 +133,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){ diy_tianyu:'字国让,渔阳雍奴(今天津市武清区东北)人。三国时期曹魏将领。初从刘备,因母亲年老回乡,后跟随公孙瓒,公孙瓒败亡,劝说鲜于辅加入曹操。曹操攻略河北时,田豫正式得到曹操任用,历任颖阴、郎陵令、弋阳太守等。', }, characterTitle:{ + key_riki:'#bLittle Busters!', + key_yuiko:'#bLittle Busters!', + key_akane:'#bRewrite', key_sasami:'#bLittle Busters!', key_rin:'#bLittle Busters!', key_shiina:'#rAngel Beats!', @@ -187,6 +194,325 @@ game.import('character',function(lib,game,ui,get,ai,_status){ yuji:['zuoci'] }, skill:{ + riki_spwenji:{ + audio:2, + trigger:{player:'phaseUseBegin'}, + direct:true, + filter:function(event,player){ + return game.hasPlayer(function(current){ + return current!=player&¤t.countCards('he'); + }); + }, + content:function(){ + 'step 0' + player.chooseTarget(get.prompt2('riki_spwenji'),function(card,player,target){ + return target!=player&&target.countCards('he'); + }).set('ai',function(target){ + var att=get.attitude(_status.event.player,target); + if(att>0) return Math.sqrt(att)/10; + return 5-att; + }); + 'step 1' + if(result.bool){ + var target=result.targets[0]; + event.target=target; + player.logSkill('riki_spwenji',target); + target.chooseCard('he',true,'问计:将一张牌交给'+get.translation(player)); + } + else{ + event.finish(); + } + 'step 2' + if(result.bool){ + player.addTempSkill('riki_spwenji_respond'); + player.storage.riki_spwenji_respond=result.cards[0].name; + event.target.give(result.cards,player,true); + } + }, + subSkill:{ + respond:{ + onremove:true, + trigger:{player:'useCard'}, + forced:true, + charlotte:true, + audio:'riki_spwenji', + filter:function(event,player){ + return event.card.name==player.storage.riki_spwenji_respond; + }, + content:function(){ + trigger.directHit.addArray(game.players); + }, + } + } + }, + riki_nvzhuang:{ + trigger:{player:'phaseJieshuBegin'}, + forced:true, + content:function(){ + player.draw(player.countCards('h')==0?2:1); + }, + }, + riki_mengzhong:{ + trigger:{player:'phaseZhunbeiBegin'}, + forced:true, + derivation:'riki_chongzhen', + juexingji:true, + unique:true, + skillAnimation:true, + animationColor:'key', + filter:function(event,player){ + var num=0; + player.getAllHistory('gain',function(evt){ + if(evt.getParent().name=='riki_spwenji') num+=evt.cards.length; + }); + return num>=3; + }, + content:function(){ + player.awakenSkill('riki_mengzhong'); + player.removeSkill('riki_spwenji'); + player.gainMaxHp(); + player.recover(); + player.addSkill('riki_chongzhen'); + }, + }, + riki_chongzhen:{ + trigger:{ + player:"phaseUseBegin", + }, + direct:true, + content:function(){ + 'step 0' + player.chooseTarget(get.prompt2('riki_chongzhen'),function(card,player,target){ + return player.canCompare(target); + }).set('ai',function(target){ + return -get.attitude(player,target)*(1+target.countCards('e'))/(1+target.countCards('j')); + }); + 'step 1' + if(result.bool){ + var target=result.targets[0]; + event.target=target; + player.logSkill('riki_chongzhen',target); + player.chooseToCompare(target); + } + else{ + event.finish(); + } + 'step 2' + if(result.bool){ + var num=0; + if(target.countCards('h')) num++; + if(target.countCards('e')) num++; + if(target.countCards('j')) num++; + if(num){ + player.gainPlayerCard(target,num,'hej',true).set('filterButton',function(button){ + for(var i=0;i0&&game.hasPlayer(function(current){ + return player.canCompare(current); + }); + }, + filterTarget:function(card,player,target){ + return player.canCompare(target); + }, + content:function(){ + 'step 0' + player.chooseToCompare(target); + 'step 1' + if(result.bool) player.addTempSkill('yuiko_fenglun2','phaseUseEnd'); + }, + ai:{ + order:10, + result:{target:-1}, + }, + }, + yuiko_fenglun2:{ + mod:{ + cardUsable:function(){return Infinity}, + targetInRange:function(){return true}, + }, + }, + yuiko_dilve:{ + enable:"chooseCard", + check:function(){ + return 20; + }, + filter:function(event){ + return event.type=='compare'&&!event.directresult; + }, + onCompare:function(player){ + return game.cardsGotoOrdering(get.bottomCards()).cards; + }, + group:'yuiko_dilve_gain', + subSkill:{ + gain:{ + trigger:{ + player:['chooseToCompareAfter','compareMultipleAfter'], + target:['chooseToCompareAfter','compareMultipleAfter'] + }, + filter:function(event,player){ + if(event.preserve) return false; + return [event.card1,event.card2].filterInD('od').length>0; + }, + prompt2:function(event,player){ + return '获得'+get.translation([event.card1,event.card2].filterInD('od')); + }, + content:function(){ + player.gain([trigger.card1,trigger.card2].filterInD('od'),'gain2','log'); + } + }, + }, + }, + doruji_feiqu:{ + trigger:{ + player:'useCard', + target:'useCardToTargeted', + }, + forced:true, + filter:function(event,player){ + return event.card.name=='sha'; + }, + content:function(){ + if(trigger.name=='useCard') trigger.directHit.addArray(game.players); + else trigger.directHit.add(player); + }, + }, + akane_jugu:{ + audio:2, + mod:{ + maxHandcard:function(player,num){ + return num+player.maxHp; + } + }, + trigger:{global:'gameDrawAfter',player:'enterGame'}, + forced:true, + content:function(){ + player.draw(player.maxHp); + } + }, + akane_quanqing:{ + enable:'phaseUse', + filterCard:true, + filterTarget:function(card,player,target){ + return target!=player&&player.inRange(target); + }, + position:'he', + check:function(card){ + var val=get.value(card); + var num=card.number; + if(num>10) return 8-val; + var player=_status.event.player; + if(player.getUseValue(card,null,true)>player.getUseValue({name:'guohe'})) return 0; + if(num>6) return 6-val; + return 3-val; + }, + content:function(){ + 'step 0' + var num=cards[0].number; + var trans=get.translation(target); + var list=['令'+trans+'摸一张牌']; + event.addIndex=0; + if(num>6){ + if(target.countDiscardableCards(player,'hej')>0) list.push('弃置'+trans+'区域内的一张牌'); + else event.addIndex++; + } + if(num>10) list.push('对'+trans+'造成1点伤害'); + if(list.length==1) event._result={index:0}; + else player.chooseControl().set('choiceList',list).set('index',list.length-1).set('ai',function(){return _status.event.index}); + 'step 1' + if(result.index>0) result.index+=event.addIndex; + switch(result.index){ + case 0:target.draw();break; + case 1:player.discardPlayerCard(target,'hej',true);break; + case 2:target.damage('nocard');break; + } + }, + ai:{ + order:4, + result:{ + target:function(player,target){ + var card=ui.selected.cards[0]; + if(card){ + if(card.number>10) return get.damageEffect(target,player,target); + if(card.number>6) return lib.card.guohe.ai.result.target.apply(this,arguments); + return 1; + } + }, + }, + }, + }, + akane_yifu:{ + unique:true, + global:'akane_yifu2', + zhuSkill:true, + }, + akane_yifu2:{ + audio:2, + enable:'phaseUse', + discard:false, + line:true, + direct:true, + delay:false, + lose:false, + prepare:function(cards,player,targets){ + targets[0].logSkill('akane_yifu'); + }, + prompt:function(){ + var player=_status.event.player; + var list=game.filterPlayer(function(target){ + return target!=player&&target.hasZhuSkill('akane_yifu',player); + }); + var str='将一张手牌交给'+get.translation(list); + if(list.length>1) str+='中的一人'; + return str; + }, + filter:function(event,player){ + if(player.group!='key') return false; + if(player.countCards('h')==0) return 0; + return game.hasPlayer(function(target){ + return target!=player&&target.hasZhuSkill('akane_yifu',player)&&!target.hasSkill('akane_yifu3'); + }); + }, + filterCard:true, + log:false, + filterTarget:function(card,player,target){ + return target!=player&&target.hasZhuSkill('akane_yifu',player)&&!target.hasSkill('akane_yifu3'); + }, + content:function(){ + 'step 0' + target.gain(cards,player,'giveAuto'); + target.addTempSkill('akane_yifu3','phaseUseEnd'); + target.draw(); + 'step 1' + if(target.countCards('h')>0) target.chooseCard('h',true,'交给'+get.translation(player)+'一张牌').set('ai',function(card){ + return 14-get.value(card); + }); + else event.finish(); + 'step 2' + player.gain(result.cards,target,'giveAuto'); + }, + ai:{ + expose:0.3, + order:10, + result:{ + target:5 + } + } + }, + akane_yifu3:{}, sasami_miaobian:{ derivation:['sasami_gongqing','sasami_funan','sasami_baoqiu'], init2:function(player){ @@ -501,7 +827,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, }, shiina_feiyan:{ - animalList:['key_inari'], + animalList:['key_inari','key_doruji'], trigger:{global:'phaseBegin'}, direct:true, filter:function(event,player){ @@ -637,7 +963,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ if(max>0) max+=0.5; return max; } - return 3; + return 4; }, result:{ player:1, @@ -856,7 +1182,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, chooseButton:{ dialog:function(event,player){ - var list=[]; + var list=[]; for(var i=0;i0; + }, + content:function(){ + var list=[]; + var list2=[]; + for(var i=0;i②当你因【毒】失去体力时,你改为回复等量的体力。
③当你处于濒死状态时,你可以使用一张【毒】(每回合限一次)。', lucia_zhenren:'振刃', @@ -7071,6 +7462,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){ iwasawa_mysong_info:'锁定技,当你即将进行濒死结算时,取消之。回合开始时,若你的体力值小于1,则你获得技能〖奋音〗直到回合结束。回合结束时,若你的体力值小于1,你死亡。', iwasawa_fenyin:'奋音', iwasawa_fenyin_info:'你的回合内,当你使用牌时,若此牌与你于此回合内使用的上一张牌的颜色不同,则你可以摸一张牌。', + iwasawa_refenyin:'奋音', + iwasawa_refenyin_info:'锁定技,你的回合内,当一张牌进入弃牌堆后,若本回合内没有过与此牌花色相同的卡牌进入过弃牌堆,则你摸一张牌。', + //卡牌花色的计算不受【红颜】等技能的影响 kengo_weishang:'伪伤', key_weishang_sha:'伪伤', key_weishang_shan:'伪伤', @@ -7137,6 +7531,27 @@ game.import('character',function(lib,game,ui,get,ai,_status){ sasami_funan_info:'其他角色使用或打出牌响应你使用的牌时,你可令其获得你使用的牌(其本回合不能使用或打出这些牌),然后你获得其使用或打出的牌。', sasami_baoqiu:'暴球', sasami_baoqiu_info:'锁定技,你的攻击范围+2。当你使用【杀】指定目标后,你进行判定。若结果:为红色,此【杀】对其的伤害值基数+1;为黑色,其无法闪避此【杀】;为♠/♥,此【杀】不计入使用次数限制且你摸一张牌;为♦/♣,目标角色的所有非锁定技失效直到回合结束,且你弃置其一张牌。', + akane_jugu:'巨贾', + akane_jugu_info:'锁定技,1.你的手牌上限+X。2.游戏开始时,你摸X张牌(X为你的体力上限)', + akane_quanqing:'权倾', + akane_quanqing_info:'出牌阶段,你可选择:1.弃置一张点数大于10的牌并对攻击范围内的一名其他角色造成1点伤害;2.弃置一张点数大于6的牌并弃置攻击范围内的一名其他角色区域内的一张牌。3.弃置一张牌并令攻击范围内的一名其他角色摸一张牌。', + akane_yifu:'蚁附', + akane_yifu2:'蚁附', + akane_yifu_info:'主公技,其他键势力角色的出牌阶段限一次,其可交给你一张手牌。然后你摸一张牌,并将一张手牌交给该角色。', + doruji_feiqu:'肥躯', + doruji_feiqu_info:'锁定技,当你使用【杀】时,或你成为【杀】的目标后,你令此【杀】不可被响应。', + yuiko_fenglun:'锋论', + yuiko_fenglun_info:'出牌阶段限一次,你可以和一名其他角色拼点。若你赢,你本阶段内使用牌没有次数和距离限制。', + yuiko_dilve:'底略', + yuiko_dilve_info:'你可以使用牌堆底的一张牌进行拼点。当你拼点后,你可以获得两张拼点牌。', + riki_spwenji:'问计', + riki_spwenji_info:'出牌阶段开始时,你可以令一名其他角色交给你一张牌。你于本回合内使用与该牌名称相同的牌时不能被其他角色响应。', + riki_nvzhuang:'女装', + riki_nvzhuang_info:'锁定技,此武将牌的性别视为女性。结束阶段,若你:有手牌,你摸一张牌;没有手牌,你摸两张牌。', + riki_mengzhong:'梦终', + riki_mengzhong_info:'觉醒技,准备阶段,若你已因〖问计〗获得了三张或更多的牌,则你加1点体力上限并回复1点体力,失去〖问计〗并获得〖重振〗。', + riki_chongzhen:'重振', + riki_chongzhen_info:'出牌阶段开始时,你可以与一名角色拼点。若你赢,你获得该角色手牌区,装备区,判定区的各一张牌;若你没赢,你于此阶段内使用牌时不能指定其他角色为目标。', yj_caoang:'SP曹昂', yjxuepin:'血拼', diff --git a/character/extra.js b/character/extra.js index e4d13b646..d6a686910 100755 --- a/character/extra.js +++ b/character/extra.js @@ -11,7 +11,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ extra_shan:['shen_zhaoyun','shen_simayi'], extra_yin:['shen_liubei','shen_luxun'], extra_lei:['shen_ganning','shen_zhangliao'], - extra_ol:['ol_zhangliao'], + extra_ol:['ol_zhangliao','shen_caopi','shen_zhenji'], }, }, character:{ @@ -29,6 +29,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){ "shen_zhangliao":["male","shen",4,["drlt_duorui","drlt_zhiti"],["wei"]], "shen_ganning":["male","shen","3/6",["drlt_poxi","drlt_jieying"],["wu"]], ol_zhangliao:['male','shen',4,['olduorui','olzhiti'],['wei']], + shen_caopi:['male','shen',6,['chuyuan','dengji'],['wei']], + shen_zhenji:['female','shen',4,['shenfu','qixian'],['wei']], }, characterIntro:{ shen_guanyu:'关羽,字云长。曾水淹七军、擒于禁、斩庞德、威震华夏,吓得曹操差点迁都躲避,但是东吴偷袭荆州,关羽兵败被害。后传说吕蒙因关羽之魂索命而死。', @@ -40,6 +42,151 @@ game.import('character',function(lib,game,ui,get,ai,_status){ //shen_ganning:"体力上限:6", }, skill:{ + shenfu:{ + audio:2, + trigger:{player:'phaseEnd'}, + direct:true, + content:function(){ + 'step 0' + event.logged=false; + event.targets=[]; + event.goto(player.countCards('h')%2==1?1:4); + 'step 1' + player.chooseTarget(get.prompt('shenfu'),'对一名其他角色造成1点雷属性伤害',lib.filter.notMe).set('ai',function(target){ + var player=_status.event.player; + return get.damageEffect(target,player,player,'thunder')*(target.hp==1?2:1); + }); + 'step 2' + if(result.bool){ + var target=result.targets[0]; + event.target=target; + if(!event.logged){ + event.logged=true; + player.logSkill('shenfu',target,'thunder'); + } + else player.line(target,'thunder'); + target.damage('thunder'); + } + else event.finish(); + 'step 3' + if(target.isDead()) event.goto(1); + else event.finish(); + 'step 4' + player.chooseTarget(get.prompt('shenfu'),'令一名角色摸一张牌或弃置其一张手牌',function(card,player,target){ + return !_status.event.getParent().targets.contains(target); + }).set('ai',function(target){ + var att=get.attitude(_status.event.player,target); + var delta=target.hp-target.countCards('h'); + if(Math.abs(delta)==1&&get.sgn(delta)==get.sgn(att)) return 3*Math.abs(att); + if(att>0||target.countCards('h')>0) return Math.abs(att); + return 0; + }); + 'step 5' + if(result.bool){ + var target=result.targets[0]; + event.target=target; + if(!event.logged){ + event.logged=true; + player.logSkill('shenfu',target); + } + else player.line(target,'green'); + targets.push(target); + if(!target.countCards('h')) event._result={bool:false}; + else player.discardPlayerCard(target,'h','弃置'+get.translation(target)+'一张手牌,或点【取消】令其摸一张牌。'); + } + else event.finish(); + 'step 6' + if(!result.bool) target.draw(); + 'step 7' + if(target.hp==target.countCards('h')) event.goto(4); + }, + }, + qixian:{ + mod:{ + maxHandcardFinal:function(player,num){ + return num-player.hp+7; + }, + }, + }, + chuyuan:{ + audio:2, + trigger:{global:'damageEnd'}, + filter:function(event,player){ + return event.player.isAlive(); + }, + logTarget:'player', + content:function(){ + 'step 0' + trigger.player.draw(); + 'step 1' + if(!trigger.player.countCards('h')) event.finish(); + else trigger.player.chooseCard('h',true,'选择一张牌置于'+get.translation(player)+'的武将牌上作为「储」'); + 'step 2' + trigger.player.lose(result.cards,ui.special,'visible','toStorage'); + trigger.player.$give(result.cards,player,false); + game.log(trigger.player,'选择了',result.cards); + player.markAuto('chuyuan',result.cards); + }, + mod:{ + maxHandcard:function(player,num){ + return num+player.getStorage('chuyuan').length; + }, + }, + intro:{ + content:'cards', + onunmark:'throw', + }, + }, + dengji:{ + audio:2, + derivation:['tianxing','new_rejianxiong','rerende','rezhiheng','olluanji','olfangquan'], + trigger:{player:'phaseZhunbeiBegin'}, + forced:true, + unique:true, + juexingji:true, + skillAnimation:true, + animationColor:'water', + filter:function(event,player){ + return player.getStorage('chuyuan').length>=3; + }, + content:function(){ + player.awakenSkill(event.name); + player.addSkill('tianxing'); + player.addSkill('new_rejianxiong'); + player.loseMaxHp(); + player.gain(player.storage.chuyuan,'gain2','fromStorage'); + player.unmarkAuto('chuyuan',player.storage.chuyuan); + }, + }, + tianxing:{ + audio:2, + trigger:{player:'phaseZhunbeiBegin'}, + forced:true, + unique:true, + juexingji:true, + skillAnimation:true, + animationColor:'thunder', + filter:function(event,player){ + return player.getStorage('chuyuan').length>=3; + }, + content:function(){ + 'step 0' + player.awakenSkill(event.name); + player.loseMaxHp(); + player.gain(player.storage.chuyuan,'gain2','fromStorage'); + player.unmarkAuto('chuyuan',player.storage.chuyuan); + player.removeSkill('chuyuan'); + player.chooseControl('rerende','rezhiheng','olluanji','olfangquan').set('prompt','选择获得一个技能').set('ai',function(){ + var player=_status.event.player; + if(!player.hasSkill('luanji')&&!player.hasSkill('olluanji')&&player.getUseValue({name:'wanjian'})>4) return 'olluanji'; + if(!player.hasSkill('rezhiheng')) return 'rezhiheng'; + if(!player.hasSkill('rerende')) return 'rerende'; + return 'olfangquan'; + }); + 'step 1' + player.addSkillLog(result.control); + }, + }, olzhiti:{ audio:'drlt_zhiti', global:'olzhiti2', @@ -2866,6 +3013,19 @@ game.import('character',function(lib,game,ui,get,ai,_status){ olduorui_info:'当你于出牌阶段内对一名角色造成伤害后,你可以选择该角色武将牌上的一个技能。若如此做,你结束出牌阶段,且你令此技能于其下个回合结束之前无效。', olzhiti:'止啼', olzhiti_info:'锁定技,你攻击范围内已受伤角色的手牌上限-1。若场上已受伤的角色数:不小于1,你的手牌上限+1;不小于3,你于摸牌阶段开始时令额定摸牌数+1;不小于5,回合结束时,你随机废除一名角色的一个随机装备栏。', + shen_caopi:'神曹丕', + chuyuan:'储元', + chuyuan_info:'一名角色受到伤害后,你可以令其摸一张牌。然后其将一张手牌置于你的武将牌上,称为「储」。你的手牌上限+X(X为你武将牌上的「储」数)。', + dengji:'登极', + dengji_info:'觉醒技,准备阶段,若你武将牌上的「储」数不小于3,则你减1点体力上限并获得所有「储」,然后获得技能〖天行〗和〖奸雄〗', + tianxing:'天行', + tianxing_info:'觉醒技,准备阶段,若你武将牌上的「储」数不小于3,则你减1点体力上限并获得所有「储」,然后失去技能〖储元〗,选择获得以下技能中的一个:〖仁德〗/〖制衡〗/〖乱击〗/〖放权〗', + shen_zhenji:'神甄姬', + shenfu:'神赋', + shenfu_info:'回合结束时,若你的手牌数为:奇数,你可对一名其他角色造成1点伤害。若其死亡,你可重复此流程。偶数,你可选择一名本回合内未选择过的角色,你令其摸一张牌或弃置其一张手牌。若其手牌数等于体力值,你可重复此流程。', + qixian:'七弦', + qixian_info:'锁定技,你的手牌上限视为7。', + extra_feng:'神话再临·风', extra_huo:'神话再临·火', extra_lin:'神话再临·林', diff --git a/character/mobile.js b/character/mobile.js index 57345655e..1792d8666 100644 --- a/character/mobile.js +++ b/character/mobile.js @@ -6,12 +6,14 @@ game.import('character',function(lib,game,ui,get,ai,_status){ connect:true, characterSort:{ mobile:{ - mobile_default:["miheng","taoqian","liuzan","lingcao","sunru","lifeng","zhuling","liuye","zhaotongzhaoguang","majun","simazhao","wangyuanji","pangdegong","shenpei","hujinding","zhangyì","jiakui","yangbiao","chendeng"], - mobile_others:["re_jikang","old_bulianshi","old_yuanshu","re_wangyun","re_baosanniang","re_weiwenzhugezhi","re_zhanggong","re_xugong","xin_yuanshao","re_liushan","xin_xiahoudun","re_sp_zhugeliang","re_heqi","re_guanqiujian","re_pangtong"], + mobile_default:["miheng","taoqian","lingcao","sunru","lifeng","zhuling","liuye","zhaotongzhaoguang","majun","simazhao","wangyuanji","pangdegong","shenpei","hujinding","zhangyì","jiakui","yangbiao","chendeng","dongcheng","yangyi"], + mobile_others:["re_jikang","old_bulianshi","old_yuanshu","re_wangyun","re_baosanniang","re_weiwenzhugezhi","re_zhanggong","re_xugong","xin_yuanshao","re_liushan","xin_xiahoudun","re_sp_zhugeliang","re_heqi","re_guanqiujian","re_pangtong","old_liuzan"], mobile_sunben:["re_sunben"], }, }, character:{ + yangyi:['male','shu',3,['duoduan','gongsun']], + dongcheng:['male','qun',4,['chengzhao']], re_pangtong:['male','shu',3,['xinlianhuan','niepan'],[]], re_guanqiujian:['male','wei',4,['rezhengrong','rehongju']], chendeng:['male','qun',3,['zhouxuan','fengji']], @@ -25,7 +27,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ old_bulianshi:['female','wu',3,['anxu','zhuiyi']], miheng:['male','qun',3,['kuangcai','shejian']], taoqian:['male','qun',3,['zhaohuo','yixiang','yirang']], - liuzan:['male','wu',4,['fenyin']],lingcao:['male','wu',4,['dujin']], + old_liuzan:['male','wu',4,['fenyin']],lingcao:['male','wu',4,['dujin']], sunru:['female','wu',3,['yingjian','shixin']], lifeng:['male','shu',3,['tunchu','shuliang']], zhuling:['male','wei',4,['xinzhanyi']], @@ -53,6 +55,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){ re_sunben:['male','wu',4,['jiang','rehunzi','zhiba'],['zhu']], }, characterIntro:{ + yangyi:'杨仪(?-235年),字威公,襄阳(今湖北襄阳)人,三国时期蜀汉官员。最初为荆州刺史傅群的主簿,后投奔关羽,任为功曹。关羽遣其至成都,大受刘备赞赏,擢为尚书。因与尚书令刘巴不和,调为弘农太守。建兴三年(225年)任丞相参军,此后一直跟随诸葛亮战斗。亮卒,他部署安全退军。诸葛亮在生前定蒋琬继己任,杨仪仅拜中军师。建兴十三年(235年),因多出怨言,被削职流放至汉嘉郡。但杨仪仍不自省,又上书诽谤,言辞激烈,最后下狱,自杀身亡。', + dongcheng:'董承(?~200年),字号不详,冀州河间人(今河北献县)人。东汉末年外戚大臣,汉灵帝母亲董太后侄子,汉献帝嫔妃董贵人之父。初从西凉军,为董卓女婿牛辅部曲。护卫汉献帝刘协从长安东归洛阳,拜为卫将军,受封列侯。建安四年(199年),拜车骑将军。自称领受汉献帝衣带诏,联合刘备、种辑、吴子兰、王子服、吴硕等人密谋诛杀曹操。五年正月,图谋泄露,董承诸人及董贵人全部遇害。', chendeng:'陈登(163—201),字元龙,下邳淮浦(今江苏涟水西)人。东汉末年将领、官员。沛相陈珪之子。为人爽朗,性格沈静,智谋过人,少年时有扶世济民之志,并且博览群书,学识渊博。二十五岁时,举孝廉,任东阳县长。虽然年轻,但他能够体察民情,抚弱育孤,深得百姓敬重。后来,徐州牧陶谦提拔他为典农校尉,主管一州农业生产。他亲自考察徐州的土壤状况,开发水利,发展农田灌溉,使汉末迭遭破坏的徐州农业得到一定程度的恢复,百姓们安居乐业,“秔稻丰积”。建安初奉使赴许,向曹操献灭吕布之策,被授广陵太守。以灭吕布有功,加伏波将军。又迁东城太守。年三十九卒。其子陈肃,魏文帝时追陈登之功,为郎中。', yangbiao:'杨彪(142年-225年),字文先。弘农郡华阴县(今陕西华阴)人。东汉末年名臣,太尉杨赐之子、名士杨修之父。杨彪少年时受家学熏陶,初举孝廉、茂才。其后征拜为议郎,参与续写《东观汉记》。任京兆尹时,揭发黄门令王甫的贪赃行为,使其被定罪诛杀。累任侍中、五官中郎将、卫尉等职。汉献帝时,遍历三公(司空、司徒、太尉)之职。权臣董卓意图迁都时,他据理力争。献帝东迁时,杨彪尽节护主。曹操挟献帝定都许县后,将杨彪下狱,获释后又任太常。他见汉室衰微,便诈称脚疾,不理世事。曹魏建立后,拒绝出任太尉,改光禄大夫,待以客礼。黄初六年(225年),杨彪去世,年八十四。其著作现仅存《答曹公书》一篇。', zhangyì:'张翼(?-264年),字伯恭,益州犍为郡武阳县人。三国时期蜀汉将领。历任梓潼、广汉、蜀郡三郡太守,出任庲降都督,后随诸葛亮和姜维北伐,官至左车骑将军,领冀州刺史。初封关内侯,进爵都亭侯。蜀汉灭亡后,魏将钟会密谋造反,成都大乱,张翼亦为乱兵所杀。张翼是蜀汉第三任庲降都督,由于执法严厉,不得南夷欢心。在北伐上,张翼认为国小民疲,不应滥用武力,是蜀汉朝廷当时极少敢当朝和姜维争辩北伐问题的大臣。', @@ -268,6 +272,225 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, characterFilter:{}, skill:{ + gongsun:{ + audio:2, + trigger:{player:'phaseUseBegin'}, + direct:true, + filter:function(event,player){ + return player.countCards('he')>1; + }, + content:function(){ + 'step 0' + player.chooseCardTarget({ + prompt:get.prompt2('gongsun'), + selectCard:2, + filterCard:lib.filter.cardDiscardable, + filterTarget:lib.filter.notMe, + position:'he', + ai1:function(){return -1}, + }); + 'step 1' + if(result.bool){ + var target=result.targets[0]; + event.target=target; + player.logSkill('gongsun',target); + player.discard(result.cards); + player.addTempSkill('gongsun_shadow',{player:['phaseBegin','die']}); + var list=[]; + for(var i=0;i0) str+='
' + str+=get.translation(shadow[i][0]); + str+=':'; + str+=get.translation(shadow[i][1]); + } + return str; + }, + }, + mod:{ + cardEnabled:function(card,player){ + var list=player.storage.gongsun_shadow; + for(var i=0;i0&&!player.hasSkill('duoduan_im'); + }, + content:function(){ + 'step 0' + player.chooseCard('he',get.prompt2('duoduan')).set('ai',function(card){ + if(_status.event.goon) return 8-get.value(card); + return 0; + }).set('goon',function(){ + if(get.attitude(trigger.player,player)>0) return true; + if(!player.hasShan()) return true; + return event.getRand()<0.5; + }()); + 'step 1' + if(result.bool){ + player.addTempSkill('duoduan_im'); + var card=result.cards[0]; + player.logSkill('duoduan',trigger.player); + player.lose(card,ui.discardPile,'visible'); + player.$throw(card,1000); + game.log(player,'将',card,'置入弃牌堆'); + player.draw(); + } + else event.finish(); + 'step 2' + trigger.player.chooseToDiscard('弃置一张牌令'+get.translation(player)+'不能闪避此【杀】,或点「取消」摸两张牌并令此【杀】对其无效').set('ai',function(card){ + if(_status.event.goon) return 6-get.value(card); + return 0; + }).set('goon',get.attitude(trigger.player,player)<0); + 'step 3' + if(result.bool){ + trigger.directHit.add(player); + } + else{ + trigger.player.draw(2); + trigger.excluded.add(player); + } + }, + }, + duoduan_im:{ + //'im' refers to 'Iwasawa Masami' in 'Angel Beats!' + //Although she disappeared in the Episode 3 of the anime, but her route in the game is really worth to play. + }, + chengzhao:{ + audio:2, + trigger:{global:'phaseJieshuBegin'}, + filter:function(event,player){ + var num=0; + player.getHistory('gain',function(evt){ + num+=evt.cards.length; + }); + if(num<2) return false; + return player.countCards('h')>0&&game.hasPlayer(function(current){ + return player!=current&&player.canCompare(current); + }); + }, + direct:true, + content:function(){ + 'step 0' + player.chooseTarget(get.prompt2('chengzhao'),function(card,player,target){ + return player.canCompare(target); + }).set('ai',function(target){ + return -get.attitude(_status.event.player,target)/target.countCards('h'); + }); + 'step 1' + if(result.bool){ + var target=result.targets[0]; + event.target=target; + player.logSkill('chengzhao',target); + player.chooseToCompare(target); + } + else event.finish(); + 'step 2' + if(result.bool){ + var card={name:'sha',isCard:true}; + if(player.canUse(card,target,false)) player.useCard(card,target,false).card.chengzhao=true; + } + }, + ai:{ + unequip:true, + skillTagFilter:function(player,tag,arg){ + if(!arg||!arg.card||arg.card.chengzhao!=true) return false; + }, + }, + }, rezhengrong:{ trigger:{player:'useCardAfter'}, direct:true, @@ -481,8 +704,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, fengji3:{ mod:{ - maxHandcard:function(player,num){ - return num+player.getDamagedHp(); + maxHandcardBase:function(player,num){ + return player.maxHp; }, }, }, @@ -702,7 +925,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ trigger:{player:['equipEnd','loseEnd']}, forced:true, popup:false, - derivation:['reyingzi','qixi','xuanfeng'], + derivation:['reyingzi','qixi','rexuanfeng'], filter:function(event,player){ if(player.equiping) return false; var suits=[]; @@ -732,7 +955,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ switch(suits.length){ case 1:player.addAdditionalSkill(skill,['reyingzi']);break; case 2:player.addAdditionalSkill(skill,['reyingzi','qixi']);break; - case 3:player.addAdditionalSkill(skill,['reyingzi','qixi','xuanfeng']);break; + case 3:player.addAdditionalSkill(skill,['reyingzi','qixi','rexuanfeng']);break; } }, ai:{ @@ -1586,8 +1809,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, huaizi:{ mod:{ - maxHandcard:function(player,num){ - return num+player.getDamagedHp(); + maxHandcardBase:function(player,num){ + return player.maxHp; }, }, //audio:2, @@ -1881,7 +2104,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ shouye:{ audio:2, group:'shouye_after', - trigger:{target:"useCardToTargeted"}, + trigger:{target:"useCardToTarget"}, filter:function(event,player){ return event.player!=player&&event.targets.length==1; }, @@ -1897,7 +2120,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){ player.chooseToDuiben(trigger.player); 'step 1' if(result.bool){ - trigger.excluded.add(player); + trigger.targets.remove(player); + trigger.getParent().triggeredTargets2.remove(player); trigger.getParent().shouyeer=player; } }, @@ -3904,7 +4128,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ db_def2:'开城诱敌', shouye:'守邺', - shouye_info:'每回合限一次。当其他角色使用牌指定你为唯一目标时,你可以与其进行【对策】。若你赢,则此牌对你无效,且你于此牌结算完成后获得其对应的所有实体牌。', + shouye_info:'每回合限一次。当其他角色使用牌指定你为唯一目标时,你可以与其进行【对策】。若你赢,则你取消此牌的目标,且你于此牌结算完成后获得其对应的所有实体牌。', liezhi:'烈直', liezhi_info:'准备阶段,你可以依次弃置至多两名角色区域内的各一张牌。若你受到过伤害,则〖烈直〗于你的下个回合无效。', @@ -3923,7 +4147,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ hujinding:'胡金定', huaizi:'怀子', - huaizi_info:'锁定技,你的手牌上限+X(X为你已损失的体力值)', + huaizi_info:'锁定技,你的手牌上限为你的体力上限。', renshi:'仁释', renshi_info:'锁定技,当你受到【杀】的伤害时,若你已受伤,则你防止此伤害并获得此【杀】对应的所有实体牌,然后减1点体力上限。', wuyuan:'武缘', @@ -3980,7 +4204,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ zhouxuan2:'周旋', zhouxuan_info:'结束阶段,你可以弃置一张牌并指定一名角色,然后选择一个基本牌的名称或非基本牌的类型。其使用或打出下一张牌时,若此牌的名称或类型和你选择的相同,则你观看牌堆顶的三张牌,然后将这些牌分配给任意角色。', fengji:'丰积', - fengji_info:'锁定技,回合结束时,你记录你的手牌数。回合开始时,若你的手牌数不小于你记录的手牌数,则你摸两张牌且本回合手牌上限+X。(X为你已损失的体力值)', + fengji_info:'锁定技,回合结束时,你记录你的手牌数。回合开始时,若你的手牌数不小于你记录的手牌数,则你摸两张牌且本回合手牌上限为体力上限。', re_guanqiujian:'手杀毌丘俭', rezhengrong:'征荣', rehongju:'鸿举', @@ -3990,6 +4214,15 @@ game.import('character',function(lib,game,ui,get,ai,_status){ rehongju_info:'觉醒技,准备阶段,若你武将牌上「荣」的数量不小于3且有角色死亡,则你摸等同于「荣」数量的牌。然后可以用任意数量的手牌交换等量的「荣」。你减1点体力上限并获得技能〖清侧〗。', reqingce_info:'出牌阶段,你可以将一张「荣」置入弃牌堆,然后弃置场上的一张牌。', re_pangtong:"手杀庞统", + dongcheng:'董承', + chengzhao:'承诏', + chengzhao_info:'一名角色的结束阶段,若你于本回合内获得了两张以上的牌,则你可以与一名其他角色拼点。若你赢,你视为对其使用一张无视防具的【杀】。', + yangyi:'杨仪', + duoduan:'度断', + duoduan_info:'每回合限一次,当你成为【杀】的目标后,你可以重铸一张牌。若如此做,此【杀】的使用者选择一项:摸两张牌令此【杀】无效,或弃置一张牌并令你不能闪避此【杀】。', + gongsun:'共损', + gongsun_info:'出牌阶段开始时,你可以弃置两张牌并指定一名其他角色。你选择一个基本牌或普通锦囊牌的牌名。直到你的下回合开始或你死亡,你与其不能使用或打出或弃置此名称的牌。', + gongsun_shadow:'共损', } }; }); diff --git a/character/old.js b/character/old.js index 2d74b0505..8cc241841 100755 --- a/character/old.js +++ b/character/old.js @@ -7,9 +7,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){ old_shenhua:["yuji","zhangjiao","old_zhugezhan","old_guanqiujian","xiahouyuan","weiyan","xiaoqiao"], old_refresh:["old_zhangfei","old_huatuo"], old_yijiang1:["masu","xushu","fazheng","yujin","xin_yujin","old_xusheng","old_lingtong","ol_yujin"], - old_yijiang2:["old_madai","old_zhonghui","old_wangyi","old_guanzhang","ol_liaohua"], - old_yijiang3:["liru","old_zhuran","ol_zhuran","ol_manchong","ol_guohuai","old_fuhuanghou","old_caochong"], - old_yijiang4:["old_caozhen","old_chenqun","old_zhuhuan","ol_wuyi"], + old_yijiang2:["old_madai","old_zhonghui","old_wangyi","old_guanzhang"], + old_yijiang3:["liru","old_zhuran","ol_manchong","old_fuhuanghou","old_caochong"], + old_yijiang4:["old_caozhen","old_chenqun","old_zhuhuan"], old_yijiang5:["old_caoxiu","old_quancong","old_zhuzhi"], old_yijiang67:["ol_xinxianying","ol_zhangrang","ol_liuyu"], old_sp:["old_lingju","old_maliang","old_machao","zhangliang","jsp_caoren","ol_guansuo","old_zhangxingcai","old_huangfusong","ol_maliang","panfeng"], @@ -63,12 +63,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){ ol_xinxianying:['female','wei',3,['caishi','zhongjian']], ol_zhangrang:['male','qun',3,['taoluan']], ol_yujin:['male','wei',4,['rezhenjun']], - ol_zhuran:['male','wu',4,['danshou']], - ol_liaohua:['male','shu',4,['dangxian','fuli']], ol_guansuo:['male','shu',4,['zhengnan','xiefang']], ol_manchong:['male','wei',3,['yuce','junxing']], - ol_guohuai:['male','wei',4,['jingce']], - ol_wuyi:['male','shu',4,['benxi']], ol_liuyu:['male','qun',2,['zongzuo','zhige']], old_guanqiujian:["male","wei",4,["drlt_zhenrong","drlt_hongju"],[]], }, @@ -876,8 +872,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){ ol_guansuo:'OL关索', ol_manchong:'OL满宠', ol_guohuai:'OL郭淮', - ol_wuyi:'OL吴懿', - ol_liuyu:'OL刘虞', old_fuhuanghou:'旧伏皇后', old_caochong:'旧曹冲', old_guanqiujian:'旧毌丘俭', diff --git a/character/refresh.js b/character/refresh.js index da65fac37..e44894fd2 100755 --- a/character/refresh.js +++ b/character/refresh.js @@ -9,11 +9,20 @@ game.import('character',function(lib,game,ui,get,ai,_status){ refresh_huo:["ol_sp_zhugeliang","re_xunyu","re_dianwei","re_yanwen","ol_pangtong","ol_yuanshao","re_pangde"], refresh_lin:['re_zhurong','re_menghuo','re_dongzhuo','re_sunjian','re_caopi','re_xuhuang'], refresh_shan:['re_dengai','re_jiangwei','re_caiwenji','ol_liushan','re_zhangzhang','re_zuoci','re_sunce'], - refresh_yijiang:['re_xusheng','re_wuguotai','re_gaoshun','re_zhangyi','re_caozhi'], + refresh_yijiang:['re_xusheng','re_wuguotai','re_gaoshun','re_zhangyi','re_caozhi','re_zhuran','re_wuyi','re_liaohua','re_guohuai','re_zhuran','re_chengpu','re_caozhang','re_quancong','yujin_yujin','re_lingtong'], }, }, connect:true, character:{ + re_lingtong:['male','wu',4,['rexuanfeng']], + yujin_yujin:['male','wei',4,['rejieyue']], + re_caozhang:['male','wei',4,['new_jiangchi']], + re_chengpu:['male','wu',4,['lihuo','rechunlao']], + re_quancong:['male','wu',4,['xinyaoming']], + re_liaohua:['male','shu',4,['xindangxian','xinfuli']], + re_guohuai:['male','wei',4,['xinjingce']], + re_wuyi:['male','shu',4,['xinbenxi']], + re_zhuran:['male','wu',4,['xindanshou']], re_caozhi:['male','wei',3,['reluoying','rejiushi','chengzhang']], ol_pangtong:['male','shu',3,['xinlianhuan','olniepan'],[]], re_zhangyi:['male','shu',4,['rewurong','shizhi']], @@ -94,6 +103,376 @@ game.import('character',function(lib,game,ui,get,ai,_status){ sunben:['zhouyu','taishici','daqiao'], }, skill:{ + rexuanfeng:{ + audio:'xuanfeng', + audioname:['boss_lvbu3','re_heqi','re_lingtong'], + trigger:{player:['loseAfter','phaseDiscardEnd']}, + direct:true, + filter:function(event,player){ + if(!game.hasPlayer(function(current){ + return current!=player&¤t.countCards('he')>0; + })) return false; + if(event.name=='phaseDiscard'){ + var cards=[]; + player.getHistory('lose',function(evt){ + if(evt&&evt.getParent('phaseDiscard')==event&&evt.hs) cards.addArray(evt.hs); + }); + return cards.length>1; + } + else return event.es&&event.es.length>0; + }, + content:function(){ + 'step 0' + var list=['弃置至多两名其他角色的合计两张牌']; + if(lib.skill.rexuanfeng.canMoveCard(player)) list.push('将一名其他角色装备区内的一张牌移动到另一名角色的装备区内'); + player.chooseControl('cancel2').set('choiceList',list).set('prompt',get.prompt('rexuanfeng')).set('ai',function(){ + if(lib.skill.rexuanfeng.canMoveCard(player,true)) return 1; + return 0; + }); + 'step 1' + if(result.control!='cancel2'){ + player.logSkill('rexuanfeng'); + if(result.index==1) event.goto(5); + else event.count=2; + } + else event.finish(); + 'step 2' + player.chooseTarget('弃置一名其他角色的一张牌',function(card,player,target){ + if(player==target) return false; + return target.countDiscardableCards(player,'he'); + }).set('ai',function(target){ + return -get.attitude(_status.event.player,target); + }); + 'step 3' + if(result.bool){ + player.line(result.targets[0],'green'); + player.discardPlayerCard(result.targets[0],'he',true); + event.count--; + } + else event.finish(); + 'step 4' + if(event.count) event.goto(2); + else event.finish(); + 'step 5' + var next=player.chooseTarget(2,function(card,player,target){ + if(player==target) return false; + if(ui.selected.targets.length){ + var from=ui.selected.targets[0]; + if(target.isMin()) return false; + var es=from.getCards('e'); + for(var i=0;i0; + } + }); + next.set('ai',function(target){ + var player=_status.event.player; + var att=get.attitude(player,target); + var sgnatt=get.sgn(att); + if(ui.selected.targets.length==0){ + if(att>0){ + if(target.countCards('e',function(card){ + return get.value(card,target)<0&&game.hasPlayer(function(current){ + return current!=player&¤t!=target&&get.attitude(player,current)<0&¤t.isEmpty(get.subtype(card)) + }); + })>0) return 9; + } + else if(att<0){ + if(game.hasPlayer(function(current){ + if(current!=target&¤t!=player&&get.attitude(player,current)>0){ + var es=target.getCards('e'); + for(var i=0;i0&¤t.isEmpty(get.subtype(es[i]))&&get.value(es[i],current)>0) return true; + } + } + })){ + return -att; + } + } + return 0; + } + var es=ui.selected.targets[0].getCards('e'); + var i; + var att2=get.sgn(get.attitude(player,ui.selected.targets[0])); + for(i=0;iget.attitude(player,targets1)){ + if(get.value(button.link,targets0)<0) return 10; + return 0; + } + else{ + return get.equipValue(button.link); + } + },targets[0]).set('targets0',targets[0]).set('targets1',targets[1]).set('filterButton',function(button){ + var targets1=_status.event.targets1; + return targets1.isEmpty(get.subtype(button.link)); + }); + } + else{ + event.finish(); + } + 'step 9' + if(result.bool&&result.links.length){ + var link=result.links[0]; + event.targets[1].equip(link); + event.targets[0].$give(link,event.targets[1]) + game.delay(); + event.result={bool:true}; + } + }, + canMoveCard:function(player,withatt){ + return game.hasPlayer(function(current){ + if(player==current) return false; + var att=get.sgn(get.attitude(player,current)); + if(!withatt||att!=0){ + var es=current.getCards('e'); + for(var i=0;i0; + }, + content:function(){ + 'step 0' + player.chooseCardTarget({ + prompt:get.prompt2('rejieyue'), + filterCard:true, + position:'he', + filterTarget:lib.filter.notMe, + ai1:function(card){ + var player=_status.event.player; + if(get.name(card)=='du') return 20; + if(get.position(card)=='e'&&get.value(card)<=0) return 14; + if(get.position(card)=='h'&&game.hasPlayer(function(current){ + return current!=player&&get.attitude(player,current)>0&¤t.getUseValue(card)>player.getUseValue(card)&¤t.getUseValue(card)>player.getUseValue(card); + })) return 12; + if(game.hasPlayer(function(current){ + return current!=player&&get.attitude(player,current)>0; + })){ + if(card.name=='wuxie') return 11; + if(card.name=='shan'&&player.countCards('h','shan')>1) return 9 + } + return 6/Math.max(1,get.value(card)); + }, + ai2:function(target){ + var player=_status.event.player; + var card=ui.selected.cards[0]; + var att=get.attitude(player,target); + if(card.name=='du') return -6*att; + if(att>0){ + if(get.position(card)=='h'&&target.getUseValue(card)>player.getUseValue(card)) return 4*att; + if(get.value(card,target)>get.value(card,player)) return 2*att; + return 1.2*att; + } + return -att*Math.min(4,target.countCards('he'))/4; + }, + }); + 'step 1' + if(result.bool){ + var target=result.targets[0]; + event.target=target; + player.logSkill('rejieyue',target); + target.gain(result.cards,player,'giveAuto'); + } + else event.finish(); + 'step 2' + var num=0; + if(target.countCards('h')) num++; + if(target.countCards('e')) num++; + if(num>0){ + var next=target.chooseCard('he',num,'选择保留每个区域的各一张牌,然后弃置其余的牌。或点取消,令'+get.translation(player)+'摸三张牌',function(card){ + for(var i=0;i=0); + next.set('maxNum',num); + next.set('ai',function(card){ + if(_status.event.goon) return -1; + var num=_status.event.maxNum; + if(ui.selected.cards.length>=num-1){ + var val=get.value(player.getCards('he',function(cardx){ + return cardx!=card&&!ui.selected.cards.contains(cardx); + })); + if(val>=14) return 0; + } + return get.value(card); + }); + } + else event._result={bool:false}; + 'step 3' + if(!result.bool) player.draw(3); + else { + var cards=target.getCards('he'); + cards.removeArray(result.cards); + if(cards.length) target.discard(cards); + } + }, + ai:{ + threaten:1.3, + expose:0.2, + }, + }, + rechunlao:{ + trigger:{player:'phaseJieshuBegin'}, + direct:true, + audio:2, + filter:function(event,player){ + return player.countCards('h')>0&&(_status.connectMode||player.countCards('h','sha')>0)&&!player.storage.rechunlao.length; + }, + init:function(player){ + if(!player.storage.rechunlao) player.storage.rechunlao=[]; + }, + intro:{ + content:'cards', + onunmark:function(storage,player){ + if(storage&&storage.length){ + player.$throw(storage,1000); + game.cardsDiscard(storage); + game.log(storage,'被置入了弃牌堆'); + storage.length=0; + } + }, + }, + content:function(){ + 'step 0' + player.chooseCard([1,Math.max(1,player.countCards('h','sha'))],get.prompt('rechunlao'),{name:'sha'}).set('ai',function(){ + return 1; + }); + 'step 1' + if(result.bool){ + player.logSkill('rechunlao'); + player.storage.rechunlao=player.storage.rechunlao.concat(result.cards); + player.syncStorage('rechunlao'); + player.markSkill('rechunlao'); + player.lose(result.cards,ui.special,'toStorage'); + player.$give(result.cards,player,false); + } + }, + ai:{ + effect:{ + player:function(card,player,target){ + if(_status.currentPhase!=player) return; + if(card.name=='sha'&&!player.needsToDiscard()&& + !player.storage.rechunlao.length&&target.hp>1){ + return 'zeroplayertarget'; + } + } + }, + threaten:1.4 + }, + group:'rechunlao2' + }, + rechunlao2:{ + enable:'chooseToUse', + filter:function(event,player){ + return event.type=='dying'&&event.dying&&event.dying.hp<=0&&player.storage.rechunlao.length>0; + }, + filterTarget:function(card,player,target){ + return target==_status.event.dying; + }, + direct:true, + delay:false, + selectTarget:-1, + content:function(){ + "step 0" + player.chooseCardButton(get.translation('rechunlao'),player.storage.rechunlao,true); + "step 1" + if(result.bool){ + player.logSkill('rechunlao'); + player.$throw(result.links); + player.storage.rechunlao.remove(result.links[0]); + game.cardsDiscard(result.links[0]); + player.syncStorage('rechunlao') + event.type='dying'; + target.useCard({name:'jiu',isCard:true},target); + if(!player.storage.rechunlao.length){ + player.unmarkSkill('rechunlao'); + } + else{ + player.markSkill('rechunlao'); + } + var nature=get.nature(result.links[0]); + if(nature=='fire') player.recover(); + if(nature=='thunder') player.draw(2); + } + }, + ai:{ + order:6, + skillTagFilter:function(player){ + return player.storage.rechunlao.length>0; + }, + save:true, + result:{ + target:3 + }, + threaten:1.6 + }, + }, reluoying:{ audio:2, group:['reluoying_discard','reluoying_judge'], @@ -124,7 +503,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){ } } if(cards.length){ - player.chooseButton(['落英:选择要获得的牌',cards],[1,cards.length]).ai=get.buttonValue; + player.chooseButton(['落英:选择要获得的牌',cards],[1,cards.length]).set('ai',function(button){ + return get.value(button.link,player,'raw'); + }); } "step 2" if(result.bool){ @@ -149,7 +530,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, content:function(){ "step 0" - player.chooseButton(['落英:选择要获得的牌',trigger.cards],[1,trigger.cards.length]).ai=get.buttonValue; + player.chooseButton(['落英:选择要获得的牌',trigger.cards],[1,trigger.cards.length]).set('ai',function(button){ + return get.value(button.link,player,'raw'); + }); "step 1" if(result.bool){ player.logSkill(event.name); @@ -340,6 +723,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, }, rehongyan:{ + audio:2, mod:{ suit:function(card,suit){ if(suit=='spade') return 'heart'; @@ -1084,6 +1468,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, olfangquan:{ audio:2, + audioname:['shen_caopi'], trigger:{player:'phaseUseBefore'}, filter:function(event,player){ return player.countCards('h')>0&&!player.hasSkill('olfangquan3'); @@ -1158,6 +1543,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, olluanji:{ inherit:'luanji', + audioname:['shen_caopi'], audio:2, line:false, group:'olluanji_remove', @@ -2903,7 +3289,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ } } } - return num==0||num<=player.countCards('h')-player.maxHandcard; + return num==0||num<=player.countCards('h')-player.getHandcardLimit(); }, content:function (){ var list=[]; @@ -3529,6 +3915,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, rezhiheng:{ audio:2, + audioname:['shen_caopi'], enable:'phaseUse', usable:1, position:'he', @@ -3666,7 +4053,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, rerende:{ audio:2, - audioname:['gz_jun_liubei'], + audioname:['gz_jun_liubei','shen_caopi'], enable:'phaseUse', filterCard:true, selectCard:[1,Infinity], @@ -4182,8 +4569,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){ threaten:1.5 }, mod:{ - maxHandcard:function(player,num){ - if(player.hp0; + }, + content:function(){ + var list=[]; + var list2=[]; + for(var i=0;i4?8:4))); + }, + filterCard:true, + position:'he', + check:function(card){ + var val=get.value(card); + if(!_status.event.player.getStorage('fenyin_mark').contains(get.suit(card))) return 12-val; + return 8-val; + }, + filterTarget:lib.filter.notMe, + content:function(){ + target.damage('nocard'); + }, + }, //新潘凤 xinkuangfu:{ enable:'phaseUse', @@ -4393,11 +4489,11 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, direct:true, filter:function(event,player){ - return event.card&&event.card.name=='sha'&&player.isDamaged(); + return event.card&&event.card.name=='sha';//&&player.isDamaged(); }, content:function(){ 'step 0' - var num=player.getDamagedHp(); + var num=Math.max(1,player.getDamagedHp()); player.chooseTarget('是否发动【誓仇】,令至多'+num+'名其他角色也成为此【杀】的目标?',[1,num],function(card,player,target){ return target!=player&&!trigger.targets.contains(target)&&player.canUse({name:'sha'},target); }).ai=function(target){ @@ -4863,7 +4959,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){ return event.card.name==player.storage.spwenji_respond; }, content:function(){ - trigger.directHit.addArray(game.players); + trigger.directHit.addArray(game.filterPlayer(function(current){ + return current!=player; + })); }, } } @@ -7893,7 +7991,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ else{ num=1; } - if(player.getStat().skill.dingpan>=num) return false; + if((player.getStat().skill.dingpan||0)>=num) return false; return true; }, filterTarget:function(card,player,target){ @@ -13175,6 +13273,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ selectTarget:function(){ return [1,ui.selected.cards.length]; }, + complexSelect:true, check:function(card){ if(get.color(card)=='black') return -1; return 9-get.value(card); @@ -17288,7 +17387,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ "new_luoyan_liuli":"流离", "new_luoyan_liuli_info":"", ol_shichou:"誓仇", - ol_shichou_info:"当你使用【杀】时,你可以令至多X名角色也成为此【杀】的目标。(X为你已损失的体力值)", + ol_shichou_info:"当你使用【杀】时,你可以令至多X名角色也成为此【杀】的目标。(X为你已损失的体力值且至少为1)", "zhenwei_three":"镇卫", "zhenwei_three_info":"锁定技,敌方角色至己方其他角色的距离+1。", "huanshi_three":"缓释", @@ -17870,6 +17969,11 @@ game.import('character',function(lib,game,ui,get,ai,_status){ re_panfeng:'潘凤', xinkuangfu:'狂斧', xinkuangfu_info:'出牌阶段限一次,你可选择:1,弃置装备区里的一张牌,你使用无对应实体牌的普【杀】。若此【杀】造成伤害,你摸两张牌。2,弃置一名其他角色装备区里的一张牌,你使用无对应实体牌的普【杀】。若此【杀】未造成伤害,你弃置两张牌。', + old_liuzan:'手杀留赞', + refenyin:'奋音', + refenyin_info:'锁定技,你的回合内,当一张牌进入弃牌堆后,若本回合内没有过与此牌花色相同的卡牌进入过弃牌堆,则你摸一张牌。', + liji:'力激', + liji_info:'出牌阶段限X次,你可以弃置一张牌并对一名其他角色造成1点伤害。(X为本回合内进入过弃牌堆的卡牌数除以8,若场上人数小于5则改为除以4,向下取整)', sp_default:"常规", sp_whlw:"文和乱武", diff --git a/character/standard.js b/character/standard.js index 8cae25a6d..832c7f5ca 100755 --- a/character/standard.js +++ b/character/standard.js @@ -7,7 +7,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ standard:{ standard_2008:["caocao","simayi","xiahoudun","zhangliao","xuzhu","guojia","zhenji","liubei","guanyu","zhangfei","zhugeliang","zhaoyun","machao","huangyueying","sunquan","ganning","lvmeng","huanggai","zhouyu","daqiao","luxun","sunshangxiang","huatuo","lvbu","diaochan",], standard_2013:["huaxiong","re_yuanshu"], - standard_2019:["gongsunzan","caozhang","xf_yiji"], + standard_2019:["gongsunzan","xf_yiji"], }, }, character:{ @@ -39,7 +39,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){ huaxiong:['male','qun',6,['yaowu']], gongsunzan:['male','qun',4,['yicong']], - caozhang:['male','wei',4,['new_jiangchi']], xf_yiji:["male","shu",3,["xinfu_jijie","xinfu_jiyuan"],[]], re_yuanshu:['male','qun',4,['wangzun','tongji']], }, @@ -2618,7 +2617,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ xinbiyue:'闭月', pileTop:'牌堆顶', pileBottom:'牌堆底', - ganglie_info:'当你受到伤害后,你可以进行一次判定。若结果不为红桃,则伤害来源须弃置两张手牌,否则受到来自你的一点伤害。', + ganglie_info:'当你受到伤害后,你可以进行判定。若结果不为红桃,则伤害来源须弃置两张手牌,否则受到来自你的一点伤害。', tuxi_info:'摸牌阶段,你可以改为获得至多两名其他角色的各一张手牌。', luoyi_info:'摸牌阶段,你可以少摸一张牌。若如此做,当你本回合内使用【杀】或【决斗】造成伤害时,此伤害+1。', tiandu_info:'当你的判定牌生效后,你可以获得之。', @@ -2640,9 +2639,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){ longdan_info:'你可以将【杀】当做【闪】,或将【闪】当做【杀】使用或打出。', mashu_info:'锁定技,你计算与其他角色的距离时-1。', mashu2_info:'锁定技,你计算与其他角色的距离时-1。', - feiying_info:'锁定技,其他角色计算与你的距离时+1', - tieji_info:'当你使用【杀】指定目标时,你可以进行判定。若结果为红色,则此【杀】不可被闪避。', - jizhi_info:'当你使用一张非转化的普通锦囊牌时,你可以摸一张牌。', + feiying_info:'锁定技,其他角色计算与你的距离时+1。', + tieji_info:'当你使用【杀】指定目标后,你可以进行判定。若结果为红色,则此【杀】不可被闪避。', + jizhi_info:'当你使用非转化的普通锦囊牌时,你可以摸一张牌。', xinjizhi:'集智', xinjizhi_info:'当你使用非转化的普通锦囊牌时,你可以摸一张牌。', xinjizhi_info_alter:'每当你使用一张非转化的锦囊牌,可以摸一张牌,如果摸到的是基本牌,你可以弃置这张牌,然后本回合手牌上限+1', @@ -2654,7 +2653,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ xinzhiheng:'制衡', xinzhiheng_info:'出牌阶段限1次,你可以弃置任意张牌并摸等量的牌', xinzhiheng_info_alter:'出牌阶段限1次,你可以弃置任意张牌并摸等量的牌,如果在发动制衡时弃置了所有手牌,你额外摸一张牌', - jiuyuan_info:'主公技,锁定技,其他吴势力角色对濒死的你使用【桃】时,你额外回复一点体力。', + jiuyuan_info:'主公技,锁定技,其他吴势力角色对你使用的【桃】的回复值+1。', xinjiuyuan:'救援', xinjiuyuan_info:'主公技,锁定技,濒死阶段,吴势力角色对你使用的[桃]额外回复一点体力', xinjiuyuan_info_alter:'主公技,其他吴国角色对自己使用【桃】时,如果他的体力值大于你,他可以选择让你回复1点体力,然后他摸1张牌', @@ -2663,8 +2662,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){ kurou_info:'出牌阶段,你可以失去一点体力,然后摸两张牌。', yingzi_info:'摸牌阶段,你可以多摸一张牌。', fanjian_info:'出牌阶段限一次,你可以令一名角色选择一种花色并展示你的一张手牌,若选择的花色与展示的不同,该角色受到来自你的一点伤害。然后该角色获得展示的牌。', - guose_info:'你可以将一张方片的手牌当做【乐不思蜀】使用。', - liuli_info:'当你成为【杀】的目标时,你可以弃置一张牌并将此【杀】转移给攻击范围内的一名其他角色(不能是此【杀】的使用者或其他目标)。', + guose_info:'你可以将一张方片手牌当做【乐不思蜀】使用。', + liuli_info:'当你成为【杀】的目标时,你可以弃置一张牌并将此【杀】转移给攻击范围内的一名其他角色(不能是此【杀】的使用者)。', qianxun_info:'锁定技,你不能成为【顺手牵羊】和【乐不思蜀】的目标。', lianying_info:'当你失去最后的手牌时,你可以摸一张牌。', xiaoji_info:'当你失去一张装备区内的牌后,你可以摸两张牌。', @@ -2675,13 +2674,13 @@ game.import('character',function(lib,game,ui,get,ai,_status){ xinjieyin_info_alter:'出牌阶段限1次,你可以选择一名男性角色,弃置一张手牌或将一张装备牌置于其装备区,你与其体力较高的角色摸一张牌,体力值较低的角色回复1点体力', qingnang_info:'出牌阶段限一次,你可以弃置一张手牌并令一名角色回复一点体力。', jijiu_info:'你的回合外,你可以将一张红色牌当做【桃】使用。', - wushuang_info:'锁定技,你使用的【杀】或【决斗】需要两张【闪】或【杀】响应。', + wushuang_info:'锁定技,当你使用【杀】或【决斗】指定目标后,你令此牌需要依次使用或打出两张【闪】或【杀】响应。', lijian_info:'出牌阶段限一次,你可以弃置一张牌,视为一名男性角色对另一名男性角色使用一张【决斗】(不可被【无懈可击】响应)。', biyue_info:'结束阶段,你可以摸一张牌。', xinbiyue_info:'结束阶段,你可以摸一张牌', xinbiyue_info_alter:'结束阶段,你可以摸一张牌,如果你没有手牌,改为摸2张牌', yaowu:'耀武', - yaowu_info:'锁定技,当任意一名角色使用红色【杀】对你造成伤害时,该角色回复1点体力或摸一张牌。', + yaowu_info:'锁定技,一名角色使用红色【杀】对你造成伤害时,该角色回复1点体力或摸一张牌。', "new_jiangchi":"将驰", "new_jiangchi_info":"摸牌阶段结束时,你可以选择一项:1、摸一张牌,若如此做,你本回合内不能使用或打出【杀】。 2、弃置一张牌,若如此做,出牌阶段你使用【杀】无距离限制且你可以额外使用一张【杀】,直到回合结束。", "xinfu_jijie":"机捷", diff --git a/character/tw.js b/character/tw.js index f9a307c61..66967b4c9 100644 --- a/character/tw.js +++ b/character/tw.js @@ -329,7 +329,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ trigger:{global:'useCardToPlayer'}, filter:function(event,player){ return event.card&&event.card.name=='sha'&&event.player!=player&&event.target!=player&& - event.targets.length==1&&event.player.inRange(player)<=1; + event.targets.length==1&&event.player.inRange(player); }, logTarget:'target', check:function(event,player){ diff --git a/character/yijiang.js b/character/yijiang.js index d06e47c80..60d92b6c6 100755 --- a/character/yijiang.js +++ b/character/yijiang.js @@ -7,7 +7,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ characterSort:{ yijiang:{ yijiang_2011:['caozhi','re_yujin','zhangchunhua','xin_fazheng','xin_masu','xin_xushu','xusheng','lingtong','wuguotai','chengong','gaoshun'], - yijiang_2012:['wangyi','xunyou','zhonghui','madai','liaohua','guanzhang','bulianshi','handang','chengpu','liubiao','old_huaxiong'], + yijiang_2012:['wangyi','xunyou','zhonghui','madai','liaohua','guanzhang','bulianshi','handang','chengpu','liubiao','old_huaxiong','caozhang'], yijiang_2013:['manchong','guohuai','caochong','guanping','liufeng','jianyong','yufan','panzhangmazhong','zhuran','xin_liru','fuhuanghou'], yijiang_2014:['hanhaoshihuan','chenqun','caozhen','zhangsong','wuyi','zhoucang','zhuhuan','guyong','sunluban','yj_jushou','caifuren'], yijiang_2015:['caoxiu','caorui','zhongyao','xiahoushi','liuchen','zhangyi','zhuzhi','quancong','sunxiu','gongsunyuan','guotufengji'], @@ -16,7 +16,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, }, character:{ - guohuai:['male','wei',4,['xinjingce']], + caozhang:['male','wei',4,['jiangchi']], + guohuai:['male','wei',4,['jingce']], zhangchunhua:['female','wei',3,['jueqing','shangshi']], caozhi:['male','wei',3,['luoying','jiushi']], caochong:['male','wei',3,['chengxiang','renxin']], @@ -24,7 +25,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ xin_xushu:['male','shu',3,['xinwuyan','xinjujian']], xin_masu:['male','shu',3,['sanyao','zhiman']], xin_fazheng:['male','shu',3,['xinenyuan','xinxuanhuo'],['die_audio']], - zhuran:['male','wu',4,['xindanshou']], + zhuran:['male','wu',4,['danshou']], xusheng:['male','wu',4,['xinpojun']], wuguotai:['female','wu',3,['ganlu','buyi']], lingtong:['male','wu',4,['xuanfeng']], @@ -53,11 +54,11 @@ game.import('character',function(lib,game,ui,get,ai,_status){ panzhangmazhong:['male','wu',4,['duodao','anjian']], zhoucang:['male','shu',4,['xinzhongyong']], guanping:['male','shu',4,['longyin']], - liaohua:['male','shu',4,['xindangxian','xinfuli']], + liaohua:['male','shu',4,['dangxian','fuli']], chengpu:['male','wu',4,['lihuo','chunlao']], gaoshun:['male','qun',4,['xinxianzhen','jinjiu']], caozhen:['male','wei',4,['xinsidi']], - wuyi:['male','shu',4,['xinbenxi']], + wuyi:['male','shu',4,['benxi']], hanhaoshihuan:['male','wei',4,['shenduan','yonglve']], caorui:['male','wei',3,['huituo','mingjian','xingshuai'],['zhu']], @@ -67,7 +68,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ zhangyi:['male','shu',4,['wurong','shizhi']], sunxiu:['male','wu',3,['yanzhu','xingxue','zhaofu'],['zhu']], zhuzhi:['male','wu',4,['xinanguo']], - quancong:['male','wu',4,['xinyaoming']], + quancong:['male','wu',4,['yaoming']], gongsunyuan:['male','qun',4,['huaiyi']], guotufengji:['male','qun',3,['jigong','shifei']], @@ -306,7 +307,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ var list=[ '为XXX多指定一个目标', '令XXX无视防具', - '令XXX不可被响应', + '令XXX不可被抵消', '当XXX造成伤害时摸一张牌', ]; var choiceList=ui.create.dialog('【奔袭】:请选择一至两项','forcebutton'); @@ -392,7 +393,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, function(trigger,player,event){ player.storage.xinbenxi_directHit.add(trigger.card); - trigger.directHit.addArray(game.players); + trigger.nowuxie=true; + trigger.customArgs.default.directHit2=true; }, function(trigger,player,event){ player.storage.xinbenxi_damage.add(trigger.card); @@ -411,7 +413,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, ai:{ unequip:true, - norespond:true, + //norespond:true, skillTagFilter:function(player,tag,arg){ if(tag=='unequip'){ if(arg&&player.storage.xinbenxi_unequip.contains(arg.card)) return true; @@ -5734,9 +5736,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, jigong2:{ mod:{ - maxHandcard:function(player,num){ + maxHandcardBase:function(player,num){ var damage=player.getStat().damage; - if(typeof damage=='number') return num-player.hp+damage; + if(typeof damage=='number') return damage; return 0; } } @@ -9474,7 +9476,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){ } } if(cards.length){ - player.chooseButton(['落英:选择要获得的牌',cards],[1,cards.length]).ai=get.buttonValue; + player.chooseButton(['落英:选择要获得的牌',cards],[1,cards.length]).set('ai',function(button){ + return get.value(button.link,player,'raw'); + }); } "step 2" if(result.bool){ @@ -9500,7 +9504,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, content:function(){ "step 0" - player.chooseButton(['落英:选择要获得的牌',trigger.cards],[1,trigger.cards.length]).ai=get.buttonValue; + player.chooseButton(['落英:选择要获得的牌',trigger.cards],[1,trigger.cards.length]).set('ai',function(button){ + return get.value(button.link,player,'raw'); + }); "step 1" if(result.bool){ player.logSkill(event.name); @@ -11287,7 +11293,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ benxi:'奔袭', benxi_info:'锁定技,你的回合内,你每使用一次牌后,你的进攻距离+1直到回合结束;你的回合内,若你与所有角色的距离均为1,你无视其他角色的防具,且你使用的【杀】可额外指定一个目标', xinbenxi:'奔袭', - xinbenxi_info:'锁定技,当你于回合内使用牌时,你本回合计算与其他角色的距离-1。你的回合内,若你至场上所有其他角色的距离均不大于1,则当你使用【杀】或普通锦囊牌选择唯一目标后,你选择至多两项:1.为此牌多指定一个目标;2.令此牌无视防具;3.令此牌不可被响应;4.你因此牌造成伤害时摸一张牌。', + xinbenxi_info:'锁定技,当你于回合内使用牌时,你本回合计算与其他角色的距离-1。你的回合内,若你至场上所有其他角色的距离均不大于1,则当你使用【杀】或普通锦囊牌选择唯一目标后,你选择至多两项:1.为此牌多指定一个目标;2.令此牌无视防具;3.令此牌不可被抵消;4.你因此牌造成伤害时摸一张牌。', sidi:'司敌', sidi2:'司敌', sidi3:'司敌', diff --git a/game/asset.js b/game/asset.js index e070f5e02..b79b4f5dc 100644 --- a/game/asset.js +++ b/game/asset.js @@ -1,5 +1,5 @@ window.noname_asset_list=[ - 'v1.9.99', + 'v1.9.99.1', 'audio/background/aozhan_chaoming.mp3', 'audio/background/aozhan_online.mp3', 'audio/background/aozhan_rewrite.mp3', @@ -560,6 +560,13 @@ window.noname_asset_list=[ 'audio/die/xunchen.mp3', 'audio/die/re_caozhi.mp3', 'audio/die/wangshuang.mp3', + 'audio/die/dongcheng.mp3', + 'audio/die/ol_xiaoqiao.mp3', + 'audio/die/re_lingtong.mp3', + 'audio/die/shen_caopi.mp3', + 'audio/die/shen_zhenji.mp3', + 'audio/die/yangyi.mp3', + 'audio/die/yujin_yujin.mp3', 'audio/skill/anguo1.mp3', 'audio/skill/anguo2.mp3', @@ -2449,6 +2456,38 @@ window.noname_asset_list=[ 'audio/skill/reluoying2.mp3', 'audio/skill/spzhuilie1.mp3', 'audio/skill/spzhuilie2.mp3', + 'audio/skill/chengzhao1.mp3', + 'audio/skill/chengzhao2.mp3', + 'audio/skill/chuyuan1.mp3', + 'audio/skill/chuyuan2.mp3', + 'audio/skill/dengji1.mp3', + 'audio/skill/dengji2.mp3', + 'audio/skill/duoduan1.mp3', + 'audio/skill/duoduan2.mp3', + 'audio/skill/gongsun1.mp3', + 'audio/skill/gongsun2.mp3', + 'audio/skill/olfangquan_shen_caopi1.mp3', + 'audio/skill/olfangquan_shen_caopi2.mp3', + 'audio/skill/olluanji_shen_caopi1.mp3', + 'audio/skill/olluanji_shen_caopi2.mp3', + 'audio/skill/rehongyan1.mp3', + 'audio/skill/rehongyan2.mp3', + 'audio/skill/rejianxiong_shen_caopi1.mp3', + 'audio/skill/rejianxiong_shen_caopi2.mp3', + 'audio/skill/rejieyue1.mp3', + 'audio/skill/rejieyue2.mp3', + 'audio/skill/rerende_shen_caopi1.mp3', + 'audio/skill/rerende_shen_caopi2.mp3', + 'audio/skill/rezhiheng_shen_caopi1.mp3', + 'audio/skill/rezhiheng_shen_caopi2.mp3', + 'audio/skill/shenfu1.mp3', + 'audio/skill/shenfu2.mp3', + 'audio/skill/tianxiang_ol_xiaoqiao1.mp3', + 'audio/skill/tianxiang_ol_xiaoqiao2.mp3', + 'audio/skill/tianxing1.mp3', + 'audio/skill/tianxing2.mp3', + 'audio/skill/xuanfeng_re_lingtong1.mp3', + 'audio/skill/xuanfeng_re_lingtong2.mp3', 'font/huangcao.ttf', 'font/shousha.ttf', @@ -2979,6 +3018,24 @@ window.noname_asset_list=[ 'image/character/re_panfeng.jpg', 'image/character/wangshuang.jpg', 'image/character/yj_caoang.jpg', + 'image/character/dongcheng.jpg', + 'image/character/key_akane.jpg', + 'image/character/key_doruji.jpg', + 'image/character/key_riki.jpg', + 'image/character/key_yuiko.jpg', + 'image/character/old_liuzan.jpg', + 'image/character/re_caozhang.jpg', + 'image/character/re_chengpu.jpg', + 'image/character/re_guohuai.jpg', + 'image/character/re_liaohua.jpg', + 'image/character/re_lingtong.jpg', + 'image/character/re_quancong.jpg', + 'image/character/re_wuyi.jpg', + 'image/character/re_zhuran.jpg', + 'image/character/shen_caopi.jpg', + 'image/character/shen_zhenji.jpg', + 'image/character/yangyi.jpg', + 'image/character/yujin_yujin.jpg', 'image/character/baiwuchang.jpg', 'image/character/baosanniang.jpg', diff --git a/game/config.js b/game/config.js index ee59c5f90..a30f535ce 100644 --- a/game/config.js +++ b/game/config.js @@ -1,233 +1,236 @@ -window.config={ - forbidai:['ns_liuzhang','xin_yuji','re_yuji'], - forbidai_user:[], - forbidall:[], - forbidstone:['zhugedan','pal_xuanxiao','hs_malfurion','lusu','chenlin','hs_siwangzhiyi', - 'gjqt_bailitusu','yuanshao','swd_anka','swd_nicole','daqiao','re_daqiao','hs_xuanzhuanjijia', - 'zhuran','huatuo','swd_tuwei','hs_guldan','wangyi','caoang','swd_guyue','swd_rongshuang', - 'swd_jiangziya','guojia','re_guojia','shen_caocao','swd_qiner','caopi','hs_yngvar','guansuo', - 'gjqt_aruan','swd_hanluo','hs_anduin','swd_huanglei','yxs_yujix','yxs_luzhishen','swd_muyun','ow_tianshi', - 'pal_yuejinzhao','hs_antonidas','xushi','hs_lreno' - ], - forbidchess:['hetaihou','swd_kangnalishi'], - forbidboss:['caiwenji','gjqt_aruan','pal_xuanxiao','swd_hupo'], - forbiddouble:['zhugedan','swd_kangnalishi','dongzhuo','wutugu','hs_siwangzhiyi','hs_ronghejuren','hs_shanlingjuren'], - forbidthreecard:['qiankunbiao','shenhuofeiya','gw_ciguhanshuang','gw_birinongwu','gw_qinpendayu','gw_poxiao'], - all:{ - sgscharacters:['standard','shenhua','xinghuoliaoyuan','refresh','yijiang','sp','extra','old','mobile','tw'], - sgscards:['standard','extra','sp','guozhan','zhulu'], - sgsmodes:['identity','guozhan','versus','doudizhu','single','brawl','connect'], - stockmode:['identity','guozhan','versus','boss','doudizhu','single','chess','stone','connect','brawl','tafang'], - stockextension:['boss','cardpile','coin','wuxing'], - layout:['default','newlayout'], - theme:['woodden','music','simple'], - card_font:['xiaozhuan','huangcao','caoshu','xingshu'], - double_hp:['hejiansan','pingjun','zuidazhi','zuixiaozhi','zonghe'], - image_background_filter:['default','blur','gray','sepia','invert','saturate','contrast','hue','brightness'], - }, - - game:'sgs', - duration:500, - hoveration:1000, - doubleclick_intro:true, - cheat:false, - volumn_background:8, - volumn_audio:8, - - connect_avatar:'caocao', - connect_nickname:'无名玩家', - config_menu:true, - auto_popped_config:true, - auto_popped_history:false, - auto_skill:true, - auto_confirm:true, - enable_drag:true, - enable_pressure:false, - pressure_taptic:true, - hover_handcard:true, - hover_all:true, - right_info:true, - longpress_info:true, - long_info:true, - background_music:'music_default', - background_audio:true, - background_speak:true, - glow_phase:'yellow', - die_move:'flip', - - skin:{}, - gameRecord:{}, - extensionInfo:{}, - autoskilllist:[], - hiddenModePack:[], - hiddenCharacterPack:[], - hiddenCardPack:[], - hiddenPlayPack:[], - hiddenBackgroundPack:[], - customBackgroundPack:[], - favouriteCharacter:[], - favouriteMode:[], - recentIP:[], - vintageSkills:[], - alteredSkills:[], - brokenFile:[], - - theme:'woodden', - layout:'mobile', - card_style:'default', - cardback_style:'default', - hp_style:'default', - - image_character:'default', - image_background:'default', - - asset_image:true, - asset_font:true, - - card_font:'xiaozhuan', - show_statusbar_ios:'off', - show_statusbar_android:false, - show_name:true, - show_replay:false, - show_round_menu:true, - show_pause:true, - show_auto:true, - show_volumn:true, - show_cardpile:true, - only_fullskin:true, - show_connect:true, - show_wuxie:false, - show_wuxie_self:true, - show_stat:true, - show_playerids:true, - show_scrollbar:false, - mousewheel:true, - fold_card:true, - threed_card:false, - vertical_scroll:false, - handcard_scroll:0, - animation:true, - skill_animation_type:'default', - paused:false, - title:false, - button_press:true, - damage_shake:true, - log_highlight:true, - player_border:'normal', - radius_size:'default', - - modeconfig:false, - gameconfig:false, - appearence:false, - video:'20', - coin:0, - - intro:'i', - right_click:'pause', - sort:'type_sort', - - cards:['standard','ex','extra','sp','classic','basic'], - characters:['standard','shenhua','sp','yijiang','refresh','xinghuoliaoyuan','mobile','extra'], - connect_characters:[], - connect_cards:[], - plays:[], - extensions:[], - banned:[], - bannedcards:[], - forbidlist:[], - bannedpile:{}, - customcardpile:{}, - addedpile:{}, - - mode:'identity', - mode_config:{ - global:{ - player_number:8, - auto_identity:'off', - double_character:false, - save_progress:true, - free_choose:true, - swap:true, - change_identity:true, - battle_number:3, - double_hp:'pingjun', - }, - identity:{ - identity:[ - ['zhu','fan'], - ['zhu','nei','fan'], - ['zhu','zhong','nei','fan'], - ['zhu','zhong','nei','fan','fan'], - ['zhu','zhong','nei','fan','fan','fan'], - ['zhu','zhong','zhong','nei','fan','fan','fan'], - ['zhu','zhong','zhong','nei','fan','fan','fan','fan'], - ], - choice:{ - zhu:3, - zhong:4, - nei:5, - fan:3, - }, - show_identity:true, - difficulty:'normal', - dierestart:true - }, - guozhan:{ - difficulty:'normal', - initshow_draw:'mark', - dierestart:true - }, - }, - current_mode:{}, - customforbid:[], - forbid:[ - ['huashen'], - ['rehuashen'], - ['xinmanjuan'], - //['xinleiji','fuji'], - ['xinleiji','xinfu_jijun'], - ['reluanji','jueqing'], - ['lianying','rende'], - ['lianying','anxian'], - ['lianying','yinguo'], - ['lianying','qingjian'], - ['boss_juejing','rende'], - ['boss_juejing','anxian'], - ['boss_juejing','yinguo'], - ['boss_juejing','qingjian'], - ['shangshi','rende'], - ['shangshi','anxian'], - ['shangshi','yinguo'], - ['shangshi','qingjian'], - ['rende','relianying'], - ['anxian','relianying'], - ['yinguo','relianying'], - ['shenxing','relianying'], - ['qingjian','relianying'], - ['rende','yuling'], - ['anxian','yuling'], - ['yinguo','yuling'], - ['qingjian','yuling'], - //['qingnang','yiji'], - //['qingnang','reyiji'], - //['qingjian','tuntian'], - // ['yiji','tuntian'], - // ['reyiji','tuntian'], - ['tuntian','guidao'], - ['tuntian','tiandao'], - ['tuntian','huanshi'], - // ['tuntian','guicai'], - // ['jiang','chongzhen'], - // ['fenji','yuling'], - ['jiushi','guixin'], - ['xiuhua','qiaoxie'], - ['xiuhua','xuanfeng'], - ['xiuhua','duanxing'], - ['xiuhua','xiaoji'], - ['xiuhua','xiaoji'], - // ['jiushi','jushou'], - // ['jiushi','kuiwei'], - ['zishu','xinfu_songsang'], - ['zishu','shenxing'], - ] -}; +window.config={ + forbidai:['ns_liuzhang','xin_yuji','re_yuji'], + forbidai_user:[], + forbidall:[], + forbidstone:['zhugedan','pal_xuanxiao','hs_malfurion','lusu','chenlin','hs_siwangzhiyi', + 'gjqt_bailitusu','yuanshao','swd_anka','swd_nicole','daqiao','re_daqiao','hs_xuanzhuanjijia', + 'zhuran','huatuo','swd_tuwei','hs_guldan','wangyi','caoang','swd_guyue','swd_rongshuang', + 'swd_jiangziya','guojia','re_guojia','shen_caocao','swd_qiner','caopi','hs_yngvar','guansuo', + 'gjqt_aruan','swd_hanluo','hs_anduin','swd_huanglei','yxs_yujix','yxs_luzhishen','swd_muyun','ow_tianshi', + 'pal_yuejinzhao','hs_antonidas','xushi','hs_lreno' + ], + forbidchess:['hetaihou','swd_kangnalishi'], + forbidboss:['caiwenji','gjqt_aruan','pal_xuanxiao','swd_hupo'], + forbiddouble:['zhugedan','swd_kangnalishi','dongzhuo','wutugu','hs_siwangzhiyi','hs_ronghejuren','hs_shanlingjuren'], + forbidthreecard:['qiankunbiao','shenhuofeiya','gw_ciguhanshuang','gw_birinongwu','gw_qinpendayu','gw_poxiao'], + all:{ + sgscharacters:['standard','shenhua','xinghuoliaoyuan','refresh','yijiang','sp','extra','old','mobile','tw'], + sgscards:['standard','extra','sp','guozhan','zhulu'], + sgsmodes:['identity','guozhan','versus','doudizhu','single','brawl','connect'], + stockmode:['identity','guozhan','versus','boss','doudizhu','single','chess','stone','connect','brawl','tafang'], + stockextension:['boss','cardpile','coin','wuxing'], + layout:['default','newlayout'], + theme:['woodden','music','simple'], + card_font:['xiaozhuan','huangcao','caoshu','xingshu'], + double_hp:['hejiansan','pingjun','zuidazhi','zuixiaozhi','zonghe'], + image_background_filter:['default','blur','gray','sepia','invert','saturate','contrast','hue','brightness'], + }, + + game:'sgs', + duration:500, + hoveration:1000, + doubleclick_intro:true, + cheat:false, + volumn_background:8, + volumn_audio:8, + + connect_avatar:'caocao', + connect_nickname:'无名玩家', + config_menu:true, + auto_popped_config:true, + auto_popped_history:false, + auto_skill:true, + auto_confirm:true, + enable_drag:true, + enable_pressure:false, + pressure_taptic:true, + hover_handcard:true, + hover_all:true, + right_info:true, + longpress_info:true, + long_info:true, + background_music:'music_default', + background_audio:true, + background_speak:true, + glow_phase:'yellow', + die_move:'flip', + + skin:{}, + gameRecord:{}, + extensionInfo:{}, + autoskilllist:[], + hiddenModePack:[], + hiddenCharacterPack:[], + hiddenCardPack:[], + hiddenPlayPack:[], + hiddenBackgroundPack:[], + customBackgroundPack:[], + favouriteCharacter:[], + favouriteMode:[], + recentIP:[], + vintageSkills:[], + alteredSkills:[], + brokenFile:[], + + theme:'woodden', + layout:'mobile', + card_style:'default', + cardback_style:'default', + hp_style:'default', + + image_character:'default', + image_background:'default', + + asset_image:true, + asset_font:true, + + card_font:'xiaozhuan', + show_statusbar_ios:'off', + show_statusbar_android:false, + show_name:true, + show_replay:false, + show_round_menu:true, + show_pause:true, + show_auto:true, + show_volumn:true, + show_cardpile:true, + only_fullskin:true, + show_connect:true, + show_wuxie:false, + show_wuxie_self:true, + show_stat:true, + show_playerids:true, + show_scrollbar:false, + mousewheel:true, + fold_card:true, + threed_card:false, + vertical_scroll:false, + handcard_scroll:0, + animation:true, + skill_animation_type:'default', + paused:false, + title:false, + button_press:true, + damage_shake:true, + log_highlight:true, + player_border:'normal', + radius_size:'default', + + modeconfig:false, + gameconfig:false, + appearence:false, + video:'20', + coin:0, + + intro:'i', + right_click:'pause', + sort:'type_sort', + + cards:['standard','ex','extra','sp','classic','basic'], + characters:['standard','shenhua','sp','yijiang','refresh','xinghuoliaoyuan','mobile','extra'], + connect_characters:[], + connect_cards:[], + plays:[], + extensions:[], + banned:[], + bannedcards:[], + forbidlist:[], + bannedpile:{}, + customcardpile:{}, + addedpile:{}, + + mode:'identity', + mode_config:{ + global:{ + player_number:8, + auto_identity:'off', + double_character:false, + save_progress:true, + free_choose:true, + swap:true, + change_identity:true, + battle_number:3, + double_hp:'pingjun', + }, + identity:{ + identity:[ + ['zhu','fan'], + ['zhu','nei','fan'], + ['zhu','zhong','nei','fan'], + ['zhu','zhong','nei','fan','fan'], + ['zhu','zhong','nei','fan','fan','fan'], + ['zhu','zhong','zhong','nei','fan','fan','fan'], + ['zhu','zhong','zhong','nei','fan','fan','fan','fan'], + ], + choice:{ + zhu:3, + zhong:4, + nei:5, + fan:3, + }, + show_identity:true, + difficulty:'normal', + dierestart:true + }, + guozhan:{ + difficulty:'normal', + initshow_draw:'mark', + dierestart:true + }, + }, + current_mode:{}, + customforbid:[], + forbid:[ + ['huashen'], + ['rehuashen'], + ['xinmanjuan'], + //['xinleiji','fuji'], + ['xinleiji','xinfu_jijun'], + ['reluanji','jueqing'], + ['lianying','rende'], + ['lianying','anxian'], + ['lianying','yinguo'], + ['lianying','qingjian'], + ['boss_juejing','rende'], + ['boss_juejing','anxian'], + ['boss_juejing','yinguo'], + ['boss_juejing','qingjian'], + ['shangshi','rende'], + ['shangshi','anxian'], + ['shangshi','yinguo'], + ['shangshi','qingjian'], + ['rende','relianying'], + ['anxian','relianying'], + ['yinguo','relianying'], + ['shenxing','relianying'], + ['qingjian','relianying'], + ['rende','yuling'], + ['anxian','yuling'], + ['yinguo','yuling'], + ['qingjian','yuling'], + //['qingnang','yiji'], + //['qingnang','reyiji'], + //['qingjian','tuntian'], + // ['yiji','tuntian'], + // ['reyiji','tuntian'], + ['tuntian','guidao'], + ['tuntian','tiandao'], + ['tuntian','huanshi'], + // ['tuntian','guicai'], + // ['jiang','chongzhen'], + // ['fenji','yuling'], + ['jiushi','guixin'], + ['xiuhua','qiaoxie'], + ['xiuhua','xuanfeng'], + ['xiuhua','duanxing'], + ['xiuhua','xiaoji'], + ['xiuhua','xiaoji'], + // ['jiushi','jushou'], + // ['jiushi','kuiwei'], + ['zishu','xinfu_songsang'], + ['zishu','shenxing'], + ['akane_quanqing','lianying'], + ['akane_quanqing','relianying'], + ['akane_quanqing','shangshi'], + ] +}; diff --git a/game/game.js b/game/game.js index 53ba5af6a..74b25585b 100644 --- a/game/game.js +++ b/game/game.js @@ -11225,7 +11225,7 @@ return; } else{ - player.lose(event.card,'visible'); + player.lose(event.card,'visible',ui.ordering); player.$phaseJudge(event.card); event.cancelled=false; event.trigger('phaseJudge'); @@ -14558,6 +14558,7 @@ game.addVideo('lose',player,[get.cardsInfo(hs),get.cardsInfo(es),get.cardsInfo(js)]); event.cards2=hs.concat(es); player.getHistory('lose').push(event); + game.getGlobalHistory().cardMove.push(event); player.update(); game.addVideo('loseAfter',player); event.num=0; @@ -20336,18 +20337,19 @@ } } }, - getHistory:function(key,filter){ + getHistory:function(key,filter,last){ if(!key) return this.actionHistory[this.actionHistory.length-1]; if(!filter) return this.actionHistory[this.actionHistory.length-1][key]; else{ var history=this.getHistory(key).slice(0); + if(last) history=history.slice(0,history.indexOf(last)+1); for(var i=0;i
'+get.translation(skills[i])+'
'+lib.translate[skills[i]+'_info']+'
'); + uiintro.add('
'+get.translation(skills[i])+'
'+lib.translate[skills[i]+'_info']+'
'); } else{ uiintro.add('
【'+translation+'】
'+get.skillInfoTranslation(skills[i])+'
'); @@ -50020,7 +50031,7 @@ if(lib.translate[skills[i]+'_info']){ translation=lib.translate[skills[i]+'_ab']||get.translation(skills[i]).slice(0,2); if(lib.skill[skills[i]]&&lib.skill[skills[i]].nobracket){ - uiintro.add('
'+get.translation(skills[i])+'
'+get.skillInfoTranslation(skills[i])+'
'); + uiintro.add('
'+get.translation(skills[i])+'
'+get.skillInfoTranslation(skills[i])+'
'); } else{ uiintro.add('
【'+translation+'】
'+get.skillInfoTranslation(skills[i])+'
'); diff --git a/game/update.js b/game/update.js index 18675c0b6..5581cdaec 100644 --- a/game/update.js +++ b/game/update.js @@ -1,22 +1,22 @@ window.noname_update={ - version:'1.9.99', + version:'1.9.99.1', update:'1.9.98.7.1', changeLog:[ - '王双,新潘凤,界小乔,界魏延,界曹植', + '界凌统,界于禁,神曹丕,神甄姬,杨仪,董承,界程普', 'bug修复', ], files:[ - 'card/extra.js', + //'card/extra.js', //'card/huanlekapai.js', //'card/sp.js', - //'card/standard.js', + 'card/standard.js', //'card/swd.js', //'card/mtg.js', //'card/guozhan.js', //'card/gwent.js', //'card/yunchou.js', //'card/zhenfa.js', - 'card/zhulu.js', + //'card/zhulu.js', 'character/diy.js', 'character/extra.js', //'character/hearth.js', @@ -25,33 +25,33 @@ window.noname_update={ //'character/hearth.js', 'character/mobile.js', //'character/mtg.js', - ////'character/old.js', + 'character/old.js', 'character/refresh.js', 'character/shenhua.js', 'character/sp.js', - //'character/tw.js', - //'character/standard.js', + 'character/tw.js', + 'character/standard.js', //'character/swd.js', //'character/xianjian.js', //'character/xinghuoliaoyuan.js', 'character/yijiang.js', //'character/yxs.js', //'extension/boss/extension.js', - //'layout/default/layout.css', + 'layout/default/layout.css', //'layout/nova/layout.css', - //'mode/identity.js', + 'mode/identity.js', //'mode/doudizhu.js', - //'mode/guozhan.js', + 'mode/guozhan.js', //'mode/chess.js', //'mode/tafang.js', //'mode/single.js', //'mode/stone.js', //'mode/brawl.js', //'mode/versus.js', - //'mode/boss.js', + 'mode/boss.js', 'game/game.js', //'game/NoSleep.js', - //'game/config.js', + 'game/config.js', //'game/package.js', //'game/asset.js', //'game/source.js', diff --git a/image/character/dongcheng.jpg b/image/character/dongcheng.jpg new file mode 100644 index 000000000..a363c18b6 Binary files /dev/null and b/image/character/dongcheng.jpg differ diff --git a/image/character/key_akane.jpg b/image/character/key_akane.jpg new file mode 100644 index 000000000..393236142 Binary files /dev/null and b/image/character/key_akane.jpg differ diff --git a/image/character/key_doruji.jpg b/image/character/key_doruji.jpg new file mode 100644 index 000000000..18ff3f00e Binary files /dev/null and b/image/character/key_doruji.jpg differ diff --git a/image/character/key_riki.jpg b/image/character/key_riki.jpg new file mode 100644 index 000000000..858e604f6 Binary files /dev/null and b/image/character/key_riki.jpg differ diff --git a/image/character/key_yuiko.jpg b/image/character/key_yuiko.jpg new file mode 100644 index 000000000..b95f05869 Binary files /dev/null and b/image/character/key_yuiko.jpg differ diff --git a/image/character/old_liuzan.jpg b/image/character/old_liuzan.jpg new file mode 100644 index 000000000..331680c7d Binary files /dev/null and b/image/character/old_liuzan.jpg differ diff --git a/image/character/re_caozhang.jpg b/image/character/re_caozhang.jpg new file mode 100644 index 000000000..b5d6aae0d Binary files /dev/null and b/image/character/re_caozhang.jpg differ diff --git a/image/character/re_chengpu.jpg b/image/character/re_chengpu.jpg new file mode 100644 index 000000000..89e5328a4 Binary files /dev/null and b/image/character/re_chengpu.jpg differ diff --git a/image/character/re_guohuai.jpg b/image/character/re_guohuai.jpg new file mode 100644 index 000000000..9e1a9a56d Binary files /dev/null and b/image/character/re_guohuai.jpg differ diff --git a/image/character/re_liaohua.jpg b/image/character/re_liaohua.jpg new file mode 100644 index 000000000..1a66369c4 Binary files /dev/null and b/image/character/re_liaohua.jpg differ diff --git a/image/character/re_lingtong.jpg b/image/character/re_lingtong.jpg new file mode 100644 index 000000000..2e44e41f7 Binary files /dev/null and b/image/character/re_lingtong.jpg differ diff --git a/image/character/re_quancong.jpg b/image/character/re_quancong.jpg new file mode 100644 index 000000000..77a83e5c9 Binary files /dev/null and b/image/character/re_quancong.jpg differ diff --git a/image/character/re_wuyi.jpg b/image/character/re_wuyi.jpg new file mode 100644 index 000000000..da5958283 Binary files /dev/null and b/image/character/re_wuyi.jpg differ diff --git a/image/character/re_zhuran.jpg b/image/character/re_zhuran.jpg new file mode 100644 index 000000000..841cac8e8 Binary files /dev/null and b/image/character/re_zhuran.jpg differ diff --git a/image/character/shen_caopi.jpg b/image/character/shen_caopi.jpg new file mode 100644 index 000000000..6ad8727cb Binary files /dev/null and b/image/character/shen_caopi.jpg differ diff --git a/image/character/shen_zhenji.jpg b/image/character/shen_zhenji.jpg new file mode 100644 index 000000000..8e9c752bb Binary files /dev/null and b/image/character/shen_zhenji.jpg differ diff --git a/image/character/yangyi.jpg b/image/character/yangyi.jpg new file mode 100644 index 000000000..ccae41894 Binary files /dev/null and b/image/character/yangyi.jpg differ diff --git a/image/character/yujin_yujin.jpg b/image/character/yujin_yujin.jpg new file mode 100644 index 000000000..0f3817910 Binary files /dev/null and b/image/character/yujin_yujin.jpg differ diff --git a/layout/default/layout.css b/layout/default/layout.css index a7055848a..369bf56bd 100644 --- a/layout/default/layout.css +++ b/layout/default/layout.css @@ -1873,6 +1873,10 @@ div:not(.handcards)>.card>.info>span, width: 70px !important; white-space: nowrap; } +.skilln { + left: 0 !important; + width: 70px !important; +} .skill>.card { transform: scale(0.56); transform-origin: top left; diff --git a/mode/boss.js b/mode/boss.js index 2d44b94f7..8ab805a69 100644 --- a/mode/boss.js +++ b/mode/boss.js @@ -8467,14 +8467,14 @@ game.import('mode',function(lib,game,ui,get,ai,_status){ if(player.countCards('h')==0) return false; if(!player.hasSkill('qiangxi')) return true; if(!player.hasSkill('retieji')) return true; - if(!player.hasSkill('xuanfeng')) return true; + if(!player.hasSkill('rexuanfeng')) return true; if(!player.hasSkill('wansha')) return true; return false; }, filterCard:true, position:'he', check:function(card){ - if(get.position(card)=='e'&&_status.event.player.hasSkill('xuanfeng')) return 16-get.value(card); + if(get.position(card)=='e'&&_status.event.player.hasSkill('rexuanfeng')) return 16-get.value(card); return 7-get.value(card); }, content:function(){ @@ -8482,7 +8482,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){ var list=[]; if(!player.hasSkill('qiangxi')) list.push('qiangxi'); if(!player.hasSkill('retieji')) list.push('retieji'); - if(!player.hasSkill('xuanfeng')) list.push('xuanfeng'); + if(!player.hasSkill('rexuanfeng')) list.push('rexuanfeng'); if(!player.hasSkill('wansha')) list.push('wansha'); if(list.length==1){ player.addTempSkill(list[0]); @@ -8490,9 +8490,9 @@ game.import('mode',function(lib,game,ui,get,ai,_status){ } else{ player.chooseControl(list,function(){ - if(list.contains('xuanfeng')&&player.countCards('he',{type:'equip'})) return 'xuanfeng'; + if(list.contains('rexuanfeng')&&player.countCards('he',{type:'equip'})) return 'rexuanfeng'; if(!player.getStat().skill.qiangxi){ - if(player.hasSkill('qiangxi')&&player.getEquip(1)&&list.contains('xuanfeng')) return 'xuanfeng'; + if(player.hasSkill('qiangxi')&&player.getEquip(1)&&list.contains('rexuanfeng')) return 'rexuanfeng'; if(list.contains('wansha')||list.contains('qiangxi')){ var players=game.filterPlayer(); for(var i=0;i