diff --git a/audio/die/huaxin.mp3 b/audio/die/huaxin.mp3 new file mode 100644 index 000000000..f1e051871 Binary files /dev/null and b/audio/die/huaxin.mp3 differ diff --git a/audio/die/re_fazheng.mp3 b/audio/die/re_fazheng.mp3 new file mode 100644 index 000000000..c57d4a3ec Binary files /dev/null and b/audio/die/re_fazheng.mp3 differ diff --git a/audio/die/re_fuhuanghou.mp3 b/audio/die/re_fuhuanghou.mp3 new file mode 100644 index 000000000..17a6e0e6c Binary files /dev/null and b/audio/die/re_fuhuanghou.mp3 differ diff --git a/audio/skill/reenyuan1.mp3 b/audio/skill/reenyuan1.mp3 new file mode 100644 index 000000000..d9a52e926 Binary files /dev/null and b/audio/skill/reenyuan1.mp3 differ diff --git a/audio/skill/reenyuan2.mp3 b/audio/skill/reenyuan2.mp3 new file mode 100644 index 000000000..9b1d309a5 Binary files /dev/null and b/audio/skill/reenyuan2.mp3 differ diff --git a/audio/skill/reqiuyuan1.mp3 b/audio/skill/reqiuyuan1.mp3 new file mode 100644 index 000000000..ed427a3d7 Binary files /dev/null and b/audio/skill/reqiuyuan1.mp3 differ diff --git a/audio/skill/reqiuyuan2.mp3 b/audio/skill/reqiuyuan2.mp3 new file mode 100644 index 000000000..f3cf9bf08 Binary files /dev/null and b/audio/skill/reqiuyuan2.mp3 differ diff --git a/audio/skill/rexuanhuo1.mp3 b/audio/skill/rexuanhuo1.mp3 new file mode 100644 index 000000000..f7926488d Binary files /dev/null and b/audio/skill/rexuanhuo1.mp3 differ diff --git a/audio/skill/rexuanhuo2.mp3 b/audio/skill/rexuanhuo2.mp3 new file mode 100644 index 000000000..d3f4e3c03 Binary files /dev/null and b/audio/skill/rexuanhuo2.mp3 differ diff --git a/audio/skill/rezhuikong1.mp3 b/audio/skill/rezhuikong1.mp3 new file mode 100644 index 000000000..629fb591d Binary files /dev/null and b/audio/skill/rezhuikong1.mp3 differ diff --git a/audio/skill/rezhuikong2.mp3 b/audio/skill/rezhuikong2.mp3 new file mode 100644 index 000000000..2eaa90a10 Binary files /dev/null and b/audio/skill/rezhuikong2.mp3 differ diff --git a/audio/skill/wanggui1.mp3 b/audio/skill/wanggui1.mp3 new file mode 100644 index 000000000..c33112d4f Binary files /dev/null and b/audio/skill/wanggui1.mp3 differ diff --git a/audio/skill/wanggui2.mp3 b/audio/skill/wanggui2.mp3 new file mode 100644 index 000000000..12ef9eef5 Binary files /dev/null and b/audio/skill/wanggui2.mp3 differ diff --git a/audio/skill/xibing1.mp3 b/audio/skill/xibing1.mp3 new file mode 100644 index 000000000..5c41611eb Binary files /dev/null and b/audio/skill/xibing1.mp3 differ diff --git a/audio/skill/xibing2.mp3 b/audio/skill/xibing2.mp3 new file mode 100644 index 000000000..5eca634bc Binary files /dev/null and b/audio/skill/xibing2.mp3 differ diff --git a/audio/voice/female/0.mp3 b/audio/voice/female/0.mp3 new file mode 100644 index 000000000..894aeee13 Binary files /dev/null and b/audio/voice/female/0.mp3 differ diff --git a/audio/voice/female/1.mp3 b/audio/voice/female/1.mp3 new file mode 100644 index 000000000..f09ea04c4 Binary files /dev/null and b/audio/voice/female/1.mp3 differ diff --git a/audio/voice/female/10.mp3 b/audio/voice/female/10.mp3 new file mode 100644 index 000000000..0725e242d Binary files /dev/null and b/audio/voice/female/10.mp3 differ diff --git a/audio/voice/female/11.mp3 b/audio/voice/female/11.mp3 new file mode 100644 index 000000000..f0290e81c Binary files /dev/null and b/audio/voice/female/11.mp3 differ diff --git a/audio/voice/female/12.mp3 b/audio/voice/female/12.mp3 new file mode 100644 index 000000000..9a98762e3 Binary files /dev/null and b/audio/voice/female/12.mp3 differ diff --git a/audio/voice/female/13.mp3 b/audio/voice/female/13.mp3 new file mode 100644 index 000000000..3fda38f6c Binary files /dev/null and b/audio/voice/female/13.mp3 differ diff --git a/audio/voice/female/14.mp3 b/audio/voice/female/14.mp3 new file mode 100644 index 000000000..b0402dbd9 Binary files /dev/null and b/audio/voice/female/14.mp3 differ diff --git a/audio/voice/female/15.mp3 b/audio/voice/female/15.mp3 new file mode 100644 index 000000000..e92f68f58 Binary files /dev/null and b/audio/voice/female/15.mp3 differ diff --git a/audio/voice/female/16.mp3 b/audio/voice/female/16.mp3 new file mode 100644 index 000000000..f5dc5593e Binary files /dev/null and b/audio/voice/female/16.mp3 differ diff --git a/audio/voice/female/17.mp3 b/audio/voice/female/17.mp3 new file mode 100644 index 000000000..09e75ad65 Binary files /dev/null and b/audio/voice/female/17.mp3 differ diff --git a/audio/voice/female/18.mp3 b/audio/voice/female/18.mp3 new file mode 100644 index 000000000..b8a51a294 Binary files /dev/null and b/audio/voice/female/18.mp3 differ diff --git a/audio/voice/female/19.mp3 b/audio/voice/female/19.mp3 new file mode 100644 index 000000000..98ef77953 Binary files /dev/null and b/audio/voice/female/19.mp3 differ diff --git a/audio/voice/female/2.mp3 b/audio/voice/female/2.mp3 new file mode 100644 index 000000000..3ff36cff1 Binary files /dev/null and b/audio/voice/female/2.mp3 differ diff --git a/audio/voice/female/20.mp3 b/audio/voice/female/20.mp3 new file mode 100644 index 000000000..b5324a0bb Binary files /dev/null and b/audio/voice/female/20.mp3 differ diff --git a/audio/voice/female/21.mp3 b/audio/voice/female/21.mp3 new file mode 100644 index 000000000..f92278b85 Binary files /dev/null and b/audio/voice/female/21.mp3 differ diff --git a/audio/voice/female/22.mp3 b/audio/voice/female/22.mp3 new file mode 100644 index 000000000..41a350979 Binary files /dev/null and b/audio/voice/female/22.mp3 differ diff --git a/audio/voice/female/3.mp3 b/audio/voice/female/3.mp3 new file mode 100644 index 000000000..1d060c369 Binary files /dev/null and b/audio/voice/female/3.mp3 differ diff --git a/audio/voice/female/4.mp3 b/audio/voice/female/4.mp3 new file mode 100644 index 000000000..e3c3dad96 Binary files /dev/null and b/audio/voice/female/4.mp3 differ diff --git a/audio/voice/female/5.mp3 b/audio/voice/female/5.mp3 new file mode 100644 index 000000000..957904abb Binary files /dev/null and b/audio/voice/female/5.mp3 differ diff --git a/audio/voice/female/6.mp3 b/audio/voice/female/6.mp3 new file mode 100644 index 000000000..9569f5ad2 Binary files /dev/null and b/audio/voice/female/6.mp3 differ diff --git a/audio/voice/female/7.mp3 b/audio/voice/female/7.mp3 new file mode 100644 index 000000000..621d72ae2 Binary files /dev/null and b/audio/voice/female/7.mp3 differ diff --git a/audio/voice/female/8.mp3 b/audio/voice/female/8.mp3 new file mode 100644 index 000000000..cef998a74 Binary files /dev/null and b/audio/voice/female/8.mp3 differ diff --git a/audio/voice/female/9.mp3 b/audio/voice/female/9.mp3 new file mode 100644 index 000000000..c5ab8109d Binary files /dev/null and b/audio/voice/female/9.mp3 differ diff --git a/audio/voice/male/0.mp3 b/audio/voice/male/0.mp3 new file mode 100644 index 000000000..5f196fe7a Binary files /dev/null and b/audio/voice/male/0.mp3 differ diff --git a/audio/voice/male/1.mp3 b/audio/voice/male/1.mp3 new file mode 100644 index 000000000..538812f89 Binary files /dev/null and b/audio/voice/male/1.mp3 differ diff --git a/audio/voice/male/10.mp3 b/audio/voice/male/10.mp3 new file mode 100644 index 000000000..8cb93ce1d Binary files /dev/null and b/audio/voice/male/10.mp3 differ diff --git a/audio/voice/male/11.mp3 b/audio/voice/male/11.mp3 new file mode 100644 index 000000000..92f4bf9d0 Binary files /dev/null and b/audio/voice/male/11.mp3 differ diff --git a/audio/voice/male/12.mp3 b/audio/voice/male/12.mp3 new file mode 100644 index 000000000..4b6a88316 Binary files /dev/null and b/audio/voice/male/12.mp3 differ diff --git a/audio/voice/male/13.mp3 b/audio/voice/male/13.mp3 new file mode 100644 index 000000000..e1f3b3a74 Binary files /dev/null and b/audio/voice/male/13.mp3 differ diff --git a/audio/voice/male/14.mp3 b/audio/voice/male/14.mp3 new file mode 100644 index 000000000..da6ba0b02 Binary files /dev/null and b/audio/voice/male/14.mp3 differ diff --git a/audio/voice/male/15.mp3 b/audio/voice/male/15.mp3 new file mode 100644 index 000000000..1160814d7 Binary files /dev/null and b/audio/voice/male/15.mp3 differ diff --git a/audio/voice/male/16.mp3 b/audio/voice/male/16.mp3 new file mode 100644 index 000000000..119b9c524 Binary files /dev/null and b/audio/voice/male/16.mp3 differ diff --git a/audio/voice/male/17.mp3 b/audio/voice/male/17.mp3 new file mode 100644 index 000000000..b4fa076bc Binary files /dev/null and b/audio/voice/male/17.mp3 differ diff --git a/audio/voice/male/18.mp3 b/audio/voice/male/18.mp3 new file mode 100644 index 000000000..567967515 Binary files /dev/null and b/audio/voice/male/18.mp3 differ diff --git a/audio/voice/male/19.mp3 b/audio/voice/male/19.mp3 new file mode 100644 index 000000000..aebf01ac7 Binary files /dev/null and b/audio/voice/male/19.mp3 differ diff --git a/audio/voice/male/2.mp3 b/audio/voice/male/2.mp3 new file mode 100644 index 000000000..3ef3b083f Binary files /dev/null and b/audio/voice/male/2.mp3 differ diff --git a/audio/voice/male/20.mp3 b/audio/voice/male/20.mp3 new file mode 100644 index 000000000..dc8ca598f Binary files /dev/null and b/audio/voice/male/20.mp3 differ diff --git a/audio/voice/male/21.mp3 b/audio/voice/male/21.mp3 new file mode 100644 index 000000000..1fd4ef5da Binary files /dev/null and b/audio/voice/male/21.mp3 differ diff --git a/audio/voice/male/22.mp3 b/audio/voice/male/22.mp3 new file mode 100644 index 000000000..8eb50d7a3 Binary files /dev/null and b/audio/voice/male/22.mp3 differ diff --git a/audio/voice/male/3.mp3 b/audio/voice/male/3.mp3 new file mode 100644 index 000000000..5d9b8d29c Binary files /dev/null and b/audio/voice/male/3.mp3 differ diff --git a/audio/voice/male/4.mp3 b/audio/voice/male/4.mp3 new file mode 100644 index 000000000..4c2f87b2a Binary files /dev/null and b/audio/voice/male/4.mp3 differ diff --git a/audio/voice/male/5.mp3 b/audio/voice/male/5.mp3 new file mode 100644 index 000000000..e3f72cf29 Binary files /dev/null and b/audio/voice/male/5.mp3 differ diff --git a/audio/voice/male/6.mp3 b/audio/voice/male/6.mp3 new file mode 100644 index 000000000..0a2a29e46 Binary files /dev/null and b/audio/voice/male/6.mp3 differ diff --git a/audio/voice/male/7.mp3 b/audio/voice/male/7.mp3 new file mode 100644 index 000000000..e7e5600f5 Binary files /dev/null and b/audio/voice/male/7.mp3 differ diff --git a/audio/voice/male/8.mp3 b/audio/voice/male/8.mp3 new file mode 100644 index 000000000..1678b67f3 Binary files /dev/null and b/audio/voice/male/8.mp3 differ diff --git a/audio/voice/male/9.mp3 b/audio/voice/male/9.mp3 new file mode 100644 index 000000000..1f9bb9471 Binary files /dev/null and b/audio/voice/male/9.mp3 differ diff --git a/card/yingbian.js b/card/yingbian.js index 0bf00ab81..68ddfaeab 100644 --- a/card/yingbian.js +++ b/card/yingbian.js @@ -813,7 +813,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){ ['club',4,'bingliang'], ['club',4,'zhujinqiyuan',null,['yingbian_zhuzhan']], ['club',5,'sha',null,['yingbian_kongchao']], - ['club',5,'sha'], + ['club',5,'sha','thunder'], ['club',5,'dilu'], ['club',6,'sha'], ['club',6,'sha','thunder'], @@ -870,14 +870,14 @@ game.import('card',function(lib,game,ui,get,ai,_status){ ['diamond',10,'sha','fire'], ['diamond',10,'shan'], ['diamond',10,'shan'], - ['diamond',11,'chuqibuyi'], + ['diamond',11,'shan'], ['diamond',11,'shan'], ['diamond',11,'shan'], ['diamond',12,'tao'], - ['diamond',12,'shan'], + ['diamond',12,'chuqibuyi'], ['diamond',12,'wutiesuolian'], ['diamond',12,'wuxie'], - ['diamond',13,'sha','fire'], + ['diamond',13,'sha'], ['diamond',13,'zixin'], ['diamond',13,'hualiu'], ], diff --git a/character/diy.js b/character/diy.js index d505a71f6..6a0f6dd26 100755 --- a/character/diy.js +++ b/character/diy.js @@ -61,6 +61,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ key_shiroha:['female','key',3,['shiroha_yuzhao','shiroha_guying','shiroha_jiezhao']], key_shizuku:['female','key',3,['shizuku_sizhi','shizuku_biyi','shizuku_sanhua']], key_hiroto:['male','key',3,['hiroto_huyu','hiroto_tuolao']], + key_sakuya:['male','key',4,['youlong','luanfeng','sakuya_junbu']], key_kud:['female','key',3,['kud_qiaoshou','kud_buhui']], key_misuzu:['female','key',3,['misuzu_hengzhou','misuzu_nongyin','misuzu_zhongxing']], @@ -171,7 +172,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ 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"], diy_fakenews:["diy_wenyang","ns_zhangwei","ns_caimao"], 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_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","key_hisako","key_hinata","key_noda","key_tomoya","key_nagisa","key_ayato","key_ao","key_yuzuru","sp_key_kanade","key_mio","key_midori","key_kyoko","key_shizuru","key_shiorimiyuki","key_miki","key_shiori","key_kaori","sp_key_yuri","key_akiko","key_abyusa","key_godan","key_yuu","key_ryoichi","key_kotori","key_jojiro","key_shiroha","key_shizuku","key_hiroto"], + diy_key:["key_lucia","key_kyousuke","key_yuri","key_haruko","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","key_hisako","key_hinata","key_noda","key_tomoya","key_nagisa","key_ayato","key_ao","key_yuzuru","sp_key_kanade","key_mio","key_midori","key_kyoko","key_shizuru","key_shiorimiyuki","key_miki","key_shiori","key_kaori","sp_key_yuri","key_akiko","key_abyusa","key_godan","key_yuu","key_ryoichi","key_kotori","key_jojiro","key_shiroha","key_shizuku","key_hiroto","key_sakuya"], diy_trashbin:['old_jiakui','ol_guohuai','junk_zhangrang','junk_simayi'], }, }, @@ -187,6 +188,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ diy_tianyu:'字国让,渔阳雍奴(今天津市武清区东北)人。三国时期曹魏将领。初从刘备,因母亲年老回乡,后跟随公孙瓒,公孙瓒败亡,劝说鲜于辅加入曹操。曹操攻略河北时,田豫正式得到曹操任用,历任颖阴、郎陵令、弋阳太守等。', }, characterTitle:{ + key_sakuya:'#bRewrite', key_hiroto:'#b神様になった日', key_shizuku:'#bSummer Pockets', key_shiroha:'#bSummer Pockets', @@ -348,6 +350,84 @@ game.import('character',function(lib,game,ui,get,ai,_status){ key_lucia:['key_shizuru'], }, skill:{ + sakuya_junbu:{ + mod:{ + targetInRange:function(card,player){ + if(player.countDisabled()>=1) return true; + }, + cardUsable:function(card,player){ + if(player.countDisabled()>=2) return true; + }, + }, + trigger:{player:'useCard2'}, + direct:true, + filter:function(event,player){ + if(player.countDisabled()>=4) return true; + return lib.skill.sakuya_junbu.filter2.apply(this,arguments); + }, + filter2:function(event,player){ + if(player.countDisabled()<3) return false; + var card=event.card; + var info=get.info(card); + if(info.allowMultiple==false) return false; + if(event.targets&&!info.multitarget){ + if(game.hasPlayer(function(current){ + return !event.targets.contains(current)&&lib.filter.targetEnabled2(card,player,current); + })){ + return true; + } + } + return false; + }, + content:function(){ + 'step 0' + if(player.countDisabled()>=4){ + trigger.directHit.addArray(game.players); + if(!lib.skill.sakuya_junbu.filter2(trigger,player)){ + event.finish(); + return; + } + } + var prompt2='为'+get.translation(trigger.card)+'增加一个目标'; + player.chooseTarget(get.prompt('sakuya_junbu'),function(card,player,target){ + var player=_status.event.player; + return !_status.event.targets.contains(target)&&lib.filter.targetEnabled2(_status.event.card,player,target); + }).set('prompt2',prompt2).set('ai',function(target){ + var trigger=_status.event.getTrigger(); + var player=_status.event.player; + return get.effect(target,trigger.card,player,player); + }).set('card',trigger.card).set('targets',trigger.targets); + 'step 1' + if(result.bool){ + if(!event.isMine()) game.delayx(); + event.targets=result.targets; + } + else{ + event.finish(); + } + 'step 2' + if(event.targets){ + player.logSkill('sakuya_junbu',event.targets); + trigger.targets.addArray(event.targets); + } + }, + group:'sakuya_junbu_damage', + subSkill:{ + damage:{ + trigger:{source:'damageBegin1'}, + forced:true, + sub:true, + filter:function(event,player){ + return player.countDisabled()>=5&&event.getParent().type=='card'; + }, + logTarget:'player', + content:function(){ + player.loseHp(); + trigger.num++; + }, + }, + }, + }, hiroto_huyu:{ trigger:{global:'phaseUseEnd'}, direct:true, @@ -6185,8 +6265,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, lucia_duqu:{ mod:{ - cardSavable:function(card,player){ - if(player.isDying()&&card.name=='du'&&!player.hasSkill('lucia_duqu_terra')) return true; + cardSavable:function(card,player,target){ + if(player==target&&card.name=='du'&&!player.hasSkill('lucia_duqu_terra')) return true; }, }, trigger:{ @@ -6224,6 +6304,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, ai:{ usedu:true, + save:true, + skillTagFilter:function(player,tag,target){ + return player==target&&player.hasUsableCard('du')&&!player.hasSkill('lucia_duqu_terra'); + }, }, subSkill:{terra:{sub:true}} }, @@ -11751,6 +11835,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ key_shiroha:'鸣濑白羽', key_shizuku:'水织静久', key_hiroto:'铃木央人', + key_sakuya:'凤咲夜', lucia_duqu:'毒躯', lucia_duqu_info:'锁定技,①当你对其他角色造成伤害或受到其他角色的伤害时,你和对方各获得一张花色点数随机的【毒】。
②当你因【毒】失去体力时,你改为回复等量的体力。
③当你处于濒死状态时,你可以使用一张【毒】(每回合限一次)。', lucia_zhenren:'振刃', @@ -12058,6 +12143,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){ hiroto_zonglve_info:'锁定技,你的手牌上限+3。出牌阶段限一次,你可以将一张手牌背面朝下放置,并展示一名其他角色的一张手牌。若这两张牌:颜色相同,你对其造成1点伤害并弃置其展示的牌。颜色不同,你获得该角色区域内的两张牌。', hiroto_tuolao:'脱牢', hiroto_tuolao_info:'觉醒技,回合结束后,若此回合不是你的第一个回合且你本轮内未因〖虎驭〗失去过牌,则你摸三张牌,失去〖虎驭〗并获得〖纵略〗。', + sakuya_junbu:'均步', + sakuya_junbu_info:'锁定技,若你已废除的装备栏数量:≥1,你使用牌无距离限制。≥2,你使用牌无次数限制。≥3,你使用牌时可以多指定一个目标。≥4,你使用的牌不可被响应。≥5,你使用牌造成伤害时失去1点体力,令此伤害+1。', key_kud:'库特莉亚芙卡', kud_qiaoshou:'巧手', diff --git a/character/mobile.js b/character/mobile.js index 1d4b0ebf6..c9833063f 100644 --- a/character/mobile.js +++ b/character/mobile.js @@ -1367,7 +1367,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ content:function(){ 'step 0' player.chooseTarget('请选择【诤荐】的目标',lib.translate.zhengjian_info).set('ai',function(target){ - if(target.hasSkill('zhengjian')) return 0; + if(target.hasSkill('zhengjian_mark')) return 0; if(player==target) return 0.5; return get.attitude(_status.event.player,target)*(1+target.countCards('h')); }); @@ -1379,6 +1379,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){ } }, group:'zhengjian_draw', + ai:{ + notemp:true, + }, }, zhengjian_draw:{ audio:'zhengjian', @@ -5832,7 +5835,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ var player=_status.event.player; if(player.hasSkill('xinxhzhiyan_true')) return 0; var num=Math.max(0,player.countCards('h')-player.hp); - if(ui.selected.cards.length||player.hasSkill('xinxhzhiyan_false')) return [num,num]; + if(ui.selected.cards.length||player.hasSkill('xinxhzhiyan_false')||player.countCards('h')>=player.maxHp) return [num,num]; return [0,num] }, filterTarget:lib.filter.notMe, diff --git a/character/old.js b/character/old.js index b8ff1c0ab..7476477bf 100755 --- a/character/old.js +++ b/character/old.js @@ -7,7 +7,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ old_standard:['ol_yuanshu'], old_shenhua:["yuji","zhangjiao","old_zhugezhan","old_guanqiujian","xiahouyuan","weiyan","xiaoqiao","pangde"], old_refresh:["old_zhangfei","old_huatuo","old_zhaoyun","ol_huaxiong"], - old_yijiang1:["masu","xushu","yujin","xin_yujin","old_xusheng","old_lingtong"], + old_yijiang1:["masu","xushu","yujin","xin_yujin","old_xusheng","old_lingtong","fazheng"], old_yijiang2:["old_zhonghui"], old_yijiang3:["liru","old_zhuran","old_fuhuanghou","old_caochong"], old_yijiang4:["old_caozhen","old_chenqun","old_zhuhuan"], @@ -18,6 +18,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, }, character:{ + fazheng:['male','shu',3,['enyuan','xuanhuo']], ol_xinxianying:['female','wei',3,['caishi','zhongjian']], ol_yuanshu:['male','qun',4,['wangzun','tongji']], pangde:['male','qun',4,['mashu','mengjin']], @@ -790,6 +791,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ oldxuanfeng_info:'每当你失去一次装备区里的牌时,你可以执行下列两项中的一项:1.视为对任意一名其他角色使用一张【杀】(此【杀】不计入每回合的使用限制);2.对与你距离1以内的一名其他角色造成一点伤害', ol_yuanshu:'旧袁术', ol_xinxianying:'旧辛宪英', + fazheng:'旧法正', old_standard:'标准包', old_shenhua:'神话再临', diff --git a/character/rank.js b/character/rank.js index 76fc59236..12073c6a7 100644 --- a/character/rank.js +++ b/character/rank.js @@ -35,6 +35,7 @@ window.noname_character_rank={ 'key_hina', 'sp_key_kanade', 'key_shizuru', + 'key_sakuya', ], ap:[ 'gjqt_aruan', @@ -444,6 +445,8 @@ window.noname_character_rank={ 'key_shizuku', 'wangrong', 'mini_lvbu', + 're_fazheng', + 'huaxin', ], bp:[ 'chess_diaochan', @@ -631,6 +634,7 @@ window.noname_character_rank={ 'mini_sunquan', 'mini_zuoci', 'mini_jiangwei', + 're_fuhuanghou', ], b:[ 'diy_feishi', @@ -939,6 +943,7 @@ window.noname_character_rank={ 'hucheer', 'jin_xiahouhui', 'xin_zhangfei', + 'wolongfengchu', ], c:[ 'xiahoudun', @@ -1108,6 +1113,7 @@ window.noname_character_rank={ 'key_shiina', 'key_shiroha', 'key_hina', + 'key_sakuya', ], epic:[ 'pal_yueqi', @@ -1535,6 +1541,8 @@ window.noname_character_rank={ 'xin_hansui', 'duyu', 'zhanghuyuechen', + 're_fazheng', + 're_fuhuanghou', ], junk:[ 'sunshao', @@ -1552,6 +1560,7 @@ window.noname_character_rank={ 'xin_chengpu', 'junk_zhangrang', 'junk_simayi', + 'wolongfengchu', ], } }; diff --git a/character/refresh.js b/character/refresh.js index 51f020b6b..d77e8656c 100755 --- a/character/refresh.js +++ b/character/refresh.js @@ -9,15 +9,17 @@ 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","ol_pangde","re_taishici"], refresh_lin:['re_zhurong','re_menghuo','ol_sunjian','re_caopi','re_xuhuang','ol_dongzhuo'], refresh_shan:['re_dengai','re_jiangwei','re_caiwenji','ol_liushan','re_zhangzhang','re_zuoci','re_sunce','ol_dengai'], - refresh_yijiang1:['re_wuguotai','re_gaoshun','re_caozhi','yujin_yujin','re_masu','xin_xusheng','xin_fazheng','xin_lingtong'], + refresh_yijiang1:['re_wuguotai','re_gaoshun','re_caozhi','yujin_yujin','re_masu','xin_xusheng','re_fazheng','xin_lingtong'], refresh_yijiang2:['old_madai','wangyi','guanzhang','re_handang','re_zhonghui','re_liaohua','re_chengpu','re_caozhang','re_bulianshi','xin_liubiao'], - refresh_yijiang3:['re_jianyong','re_guohuai','re_zhuran','re_panzhangmazhong','re_yufan','re_liru','re_manchong'], + refresh_yijiang3:['re_jianyong','re_guohuai','re_zhuran','re_panzhangmazhong','re_yufan','re_liru','re_manchong','re_fuhuanghou'], refresh_yijiang4:['re_sunluban','re_wuyi','re_hanhaoshihuan'], refresh_yijiang5:['re_zhangyi','re_quancong','re_caoxiu','re_sunxiu'], }, }, connect:true, character:{ + re_fuhuanghou:['female','qun',3,['rezhuikong','reqiuyuan']], + re_fazheng:['male','shu',3,['reenyuan','rexuanhuo']], xin_lingtong:['male','wu',4,['decadexuanfeng','yongjin']], xin_liubiao:['male','qun',3,['decadezishou','decadezongshi']], re_caoxiu:['male','wei',4,['qianju','reqingxi']], @@ -30,7 +32,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){ re_bulianshi:['female','wu',3,['reanxu','zhuiyi']], re_hanhaoshihuan:['male','wei',4,['reshenduan','reyonglve']], re_panzhangmazhong:['male','wu',4,['reduodao','reanjian']], - xin_fazheng:['male','shu',3,['xinenyuan','xinxuanhuo'],['die_audio']], wangyi:['female','wei',3,['zhenlie','miji']], old_madai:['male','shu',4,['mashu','qianxi']], guanzhang:['male','shu',4,['fuhun']], @@ -127,6 +128,310 @@ game.import('character',function(lib,game,ui,get,ai,_status){ sunben:['zhouyu','taishici','daqiao'], }, skill:{ + rezhuikong:{ + audio:2, + trigger:{global:'phaseZhunbeiBegin'}, + check:function(event,player){ + if(get.attitude(player,event.player)<-2){ + var cards=player.getCards('h'); + if(cards.length>player.hp) return true; + for(var i=0;i7&&useful<7) return true; + } + } + return false; + }, + logTarget:'player', + filter:function(event,player){ + return player.hp1&&get.effect(player,{name:'sha'},trigger.player,player)>0&&Math.random()<0.9)); + "step 1" + if(result.bool){ + trigger.player.addTempSkill('zishou2'); + event.finish(); + } + else if(result.target&&get.position(result.target)=='d') player.gain(result.target,'gain2','log'); + "step 2" + var card={name:'sha',isCard:true}; + if(trigger.player.canUse(card,player,false)) trigger.player.useCard(card,player,false); + }, + }, + reqiuyuan:{ + audio:2, + trigger:{target:'useCardToTarget'}, + direct:true, + filter:function(event,player){ + return event.card.name=='sha'; + }, + content:function(){ + "step 0" + player.chooseTarget(get.prompt2('reqiuyuan'),function(card,player,target){ + return target!=player&&!_status.event.targets.contains(target)&&_status.event.playerx.canUse('sha',target,false); + }).set('ai',function(target){ + var trigger=_status.event.getTrigger(); + var player=_status.event.player; + return get.effect(target,trigger.card,trigger.player,player)+0.1; + }).set('targets',trigger.targets).set('playerx',trigger.player); + "step 1" + if(result.bool){ + var target=result.targets[0]; + player.logSkill('reqiuyuan',target); + event.target=target; + target.chooseCard(function(card,player){ + var name=get.name(card,player); + return name!='sha'&&get.type(name)=='basic'; + },'h','交给'+get.translation(player)+ + '一张不为【杀】的基本牌,或成为此杀的额外目标且不可响应此【杀】').set('ai',function(card){ + return get.attitude(target,_status.event.sourcex)>=0?1:-1; + }).set('sourcex',player); + game.delay(); + } + else{ + event.finish(); + } + "step 2" + if(result.bool){ + player.gain(result.cards,event.target,'give'); + game.delay(); + } + else{ + trigger.getParent().targets.push(event.target); + trigger.getParent().triggeredTargets2.push(event.target); + trigger.directHit.push(event.target); + game.log(event.target,'成为了',trigger.card,'的额外目标'); + } + }, + ai:{ + expose:0.2, + effect:{ + target:function(card,player,target){ + if(card.name!='sha') return; + var players=game.filterPlayer(); + if(get.attitude(player,target)<=0){ + for(var i=0;i0&& + get.effect(target2,{name:'shacopy',nature:card.nature,suit:card.suit},player,player)<0){ + if(target.hp==target.maxHp) return 0.3; + return 0.6; + } + } + } + else{ + for(var i=0;i0){ + if(player.canUse(card,target2)) return; + if(target.hp==target.maxHp) return [0,1]; + return [0,0]; + } + } + } + } + } + } + }, + reenyuan:{ + audio:2, + group:['reenyuan1','reenyuan2'], + }, + reenyuan1:{ + audio:'reenyuan', + trigger:{player:'gainEnd'}, + filter:function(event,player){ + if(!event.source||event.source==player||!event.source.isIn()) return false; + var evt=event.getl(event.source); + return evt&&evt.cards2&&evt.cards2.length>1; + }, + check:function(event,player){ + return get.attitude(player,event.source)>0; + }, + logTarget:'source', + prompt2:'令该角色摸一张牌', + content:function(){ + trigger.source.draw(); + }, + }, + reenyuan2:{ + audio:'reenyuan', + trigger:{player:'damageEnd'}, + logTarget:'source', + filter:function(event,player){ + return event.source&&event.source!=player&&event.source.isAlive(); + }, + check:function(event,player){ + var att=get.attitude(player,event.source); + var num=event.source.countCards('h'); + if(att<=0) return true; + if(num>2) return true; + if(num) return att<4; + return false; + }, + prompt2:'令该角色选择一项:①失去1点体力。②交给你一张手牌。若此牌不为♥,则你摸一张牌。', + content:function(){ + 'step 0' + event.count=trigger.num; + 'step 1' + var target=trigger.source; + event.count--; + if(!target.countCards('h')) event._result={bool:false}; + else target.chooseCard('h','恩怨:将一张手牌交给'+get.translation(player)+',或失去1点体力').set('ai',function(card){ + if(get.attitude(_status.event.player,_status.event.getParent().player)>0){ + if(get.suit(card)!='heart') return 15-get.value(card); + return 11-get.value(card); + } + else{ + var num=12-_status.event.player.hp*2; + if(get.suit(card)!='heart') num-=2; + return num-get.value(card); + } + }); + 'step 2' + var target=trigger.source; + if(result.bool){ + var card=result.cards[0]; + event.card=card; + player.gain(card,target,'giveAuto'); + } + else{ + target.loseHp(); + event.goto(4); + } + 'step 3' + if(get.suit(card)!='heart') player.draw(); + 'step 4' + var target=trigger.source; + if(target.isAlive()&&event.count>0) player.chooseBool(get.prompt('reenyuan',target),'令该角色选择一项:①失去1点体力。②交给你一张手牌。若此牌不为♥,则你摸一张牌。').set('ai',function(){ + var evt=_status.event.getTrigger(); + return lib.skill.reenyuan2.check(evt.player,evt.source); + }); + else event.finish(); + 'step 5' + if(result.bool){ + player.logSkill('reenyuan2',trigger.source); + event.goto(1); + } + }, + }, + rexuanhuo:{ + audio:2, + trigger:{player:'phaseDrawEnd'}, + direct:true, + filter:function(event,player){ + return player.countCards('h')>1&&game.countPlayer()>2; + }, + content:function(){ + 'step 0' + var ai2=function(target){ + var player=_status.event.player; + if(get.attitude(player,target)<=0) return 0; + var list=[null,'fire','thunder','ice','juedou']; + if(target.hasSkill('ayato_zenshen')) list.push('kami'); + var num=Math.max.apply(Math,list.map(function(i){ + if(i=='juedou') return target.getUseValue({name:'juedou',isCard:true},false); + var card={name:'sha',nature:i,isCard:true}; + return target.getUseValue(card,false); + })); + if(target.hasSkillTag('nogain')) num/=4; + return num; + }; + player.chooseCardTarget({ + prompt:get.prompt2('rexuanhuo'), + filterCard:true, + selectCard:2, + position:'h', + filterTarget:lib.filter.notMe, + goon:game.hasPlayer(function(current){ + return current!=player&&ai2(player,current)>0; + }), + ai1:function(card){ + if(!_status.event.goon) return 0; + return 7-get.value(card); + }, + ai2:ai2, + }); + 'step 1' + if(result.bool){ + var target=result.targets[0]; + event.target=target; + player.logSkill('rexuanhuo',target); + target.gain(result.cards,player,'giveAuto'); + } + else event.finish(); + 'step 2' + if(game.hasPlayer(function(current){ + return current!=player&¤t!=target; + })) player.chooseTarget(function(card,player,target){ + return target!=player&&target!=_status.event.target; + },'选择'+get.translation(target)+'使用【杀】或【决斗】的目标',true).set('target',target).set('ai',function(target){ + var evt=_status.event; + var list=[null,'fire','thunder','ice','juedou']; + if(evt.target.hasSkill('ayato_zenshen')) list.push('kami') + return Math.max.apply(Math,list.map(function(i){ + var card={name:'sha',isCard:true}; + if(i=='juedou') card.name='juedou'; + else if(i) card.nature=i; + if(!evt.target.canUse(card,target,false)) return 0; + return get.effect(target,card,evt.target,evt.player); + })); + }); + else event.finish(); + 'step 3' + var target2=result.targets[0]; + event.target2=target2; + player.line(target2); + game.log(player,'选择了',target2); + var list=[null,'fire','thunder','ice']; + var vcards=[]; + if(target.hasSkill('ayato_zenshen')) list.push('kami'); + for(var i of list){ + if(target.canUse({name:'sha',isCard:true,nature:i},target2,false)) vcards.push(['基本','','sha',i]); + } + if(target.canUse({name:'juedou',isCard:true},target2,false)) vcards.push(['基本','','juedou']); + if(!vcards.length){ + if(!target.countCards('h')) event.finish(); + else event._result={index:1}; + } + else if(!target.countCards('h')){ + event._result={index:0}; + } + else{ + event.vcards=vcards; + target.chooseControl().set('choiceList',[ + '视为对'+get.translation(target2)+'使用任意一种【杀】或【决斗】', + '将所有手牌交给'+get.translation(player), + ]); + } + 'step 4' + if(result.index==0){ + if(event.vcards.length==1) event._result={links:event.vcards,bool:true}; + else target.chooseButton(['请选择要对'+get.translation(event.target2)+'使用的牌',[event.vcards,'vcard']],true).set('ai',function(button){ + var player=_status.event.player; + return get.effect(_status.event.getParent().target2,{name:button.link[2],isCard:true,nature:button.link[3]},player,player); + }); + } + else{ + player.gain(target.getCards('h'),target,'giveAuto'); + event.finish(); + } + 'step 5' + if(result.bool) target.useCard({name:result.links[0][2],isCard:true,nature:result.links[0][3]},false,event.target2); + }, + ai:{ + expose:0.17, + fireAttack:true, + skillTagFilter:function(player){ + return player.hasFriend(); + }, + }, + }, decadezongshi:{ audio:2, mod:{ @@ -421,7 +726,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ "step 2" if(result.bool){ if(!event.logged){ - player.logSkill('xuanfeng',result.targets); + player.logSkill('decadexuanfeng',result.targets); event.logged=true; } else player.line(result.targets[0],'green'); @@ -8264,7 +8569,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){ old_madai:'界马岱', wangyi:'界王异', guanzhang:'界关兴张苞', - xin_fazheng:'界法正', rezishou:'自守', rezishou2:'自守', //rezishou_info:'摸牌阶段,你可以多摸X张牌。若如此做,本回合你对其他角色造成伤害时,防止此伤害,且结束阶段,若你本回合没有使用牌指定其他角色为目标,则你可以将场上的一张装备牌移动到自己的装备区。(X为场上势力数)', @@ -8330,6 +8634,18 @@ game.import('character',function(lib,game,ui,get,ai,_status){ re_caozhen:'界曹真', residi:'司敌', residi_info:'结束阶段,你可以摸一张牌,并将一张牌置于你的武将牌上,称为“司”。其他角色的出牌阶段开始时,你可以移去任意张“司”。若如此做,其本阶段内不能使用或打出与这些“司”颜色相同的牌,且此阶段结束时,若X:不大于2,你视为对其使用【杀】;不大于1,你摸两张牌;不大于0,你将牌堆顶的一张牌置于你的武将牌上,称为“司”。(X为该角色本阶段内使用过牌的类型数)', + re_fazheng:'界法正', + reenyuan:'恩怨', + reenyuan1:'恩怨', + reenyuan2:'恩怨', + reenyuan_info:'当你获得一名其他角色的至少两张牌后,你可以令其摸一张牌。当你受到1点伤害后,你可令伤害来源选择一项:①失去1点体力。②交给你一张手牌。若此牌不为♥,则你摸一张牌。', + rexuanhuo:'眩惑', + rexuanhuo_info:'摸牌阶段结束时,你可以交给一名其他角色两张手牌,然后该角色选择一项:1. 视为对你选择的另一名角色使用任意一种【杀】,2. 交给你所有手牌。', + re_fuhuanghou:'界伏皇后', + reqiuyuan:'求援', + reqiuyuan_info:'当你成为【杀】的目标时,你可选择另一名其他角色。除非该角色交给你一张除【杀】以外的基本牌,否则其也成为此【杀】的目标且该角色不能响应此【杀】。', + rezhuikong:'惴恐', + rezhuikong_info:'其他角色的回合开始时,若你已受伤,你可与其拼点:若你赢,本回合该角色只能对自己使用牌;若你没赢,你获得其拼点的牌,然后其视为对你使用一张【杀】。', refresh_standard:'界限突破·标', refresh_feng:'界限突破·风', diff --git a/character/shenhua.js b/character/shenhua.js index 5d184b883..c747bf4ce 100755 --- a/character/shenhua.js +++ b/character/shenhua.js @@ -1087,6 +1087,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ pretao:true, directHit_ai:true, skillTagFilter:function(player,tag,arg){ + if(tag=='pretao') return true; if(player._wanglie_temp) return false; player._wanglie_temp=true; var bool=function(){ diff --git a/character/sp.js b/character/sp.js index 9a64e8092..83dc1b60c 100755 --- a/character/sp.js +++ b/character/sp.js @@ -5,18 +5,20 @@ game.import('character',function(lib,game,ui,get,ai,_status){ connect:true, characterSort:{ sp:{ - sp_default:["caoying","simahui","yangxiu","chenlin","caohong","xiahouba","yuanshu","sp_diaochan","sp_zhaoyun","liuxie","zhugejin","zhugeke","guanyinping","simalang","zhangxingcai","fuwan","sp_sunshangxiang","caoang","sp_caoren","zhangbao","maliang","zhugedan","sp_jiangwei","sp_machao","sunhao","shixie","mayunlu","zhanglu","wutugu","sp_caiwenji","zhugeguo","lingju","jsp_guanyu","jsp_huangyueying","sunluyu","zumao","wenpin","daxiaoqiao","tadun","yanbaihu","chengyu","wanglang","sp_pangde","sp_jiaxu","litong","mizhu","buzhi","caochun","dongbai","zhaoxiang","mazhong","dongyun","kanze","heqi","wangyun","sunqian","xizhicai","quyi","luzhi","xujing","yuantanyuanshang","sunshao","zhangling",'guansuo','baosanniang','ol_zhangchangpu','caoshuang','sp_zhangliao'], + sp_default:["caoying","simahui","yangxiu","chenlin","caohong","xiahouba","yuanshu","sp_diaochan","sp_zhaoyun","liuxie","zhugejin","zhugeke","guanyinping","simalang","zhangxingcai","fuwan","sp_sunshangxiang","caoang","sp_caoren","zhangbao","maliang","zhugedan","sp_jiangwei","sp_machao","sunhao","shixie","mayunlu","zhanglu","wutugu","sp_caiwenji","zhugeguo","lingju","jsp_guanyu","jsp_huangyueying","sunluyu","zumao","wenpin","daxiaoqiao","tadun","yanbaihu","chengyu","wanglang","sp_pangde","sp_jiaxu","litong","mizhu","buzhi","caochun","dongbai","zhaoxiang","mazhong","dongyun","kanze","heqi","wangyun","sunqian","xizhicai","quyi","luzhi","xujing","yuantanyuanshang","sunshao","zhangling",'guansuo','baosanniang','ol_zhangchangpu','caoshuang','sp_zhangliao','wolongfengchu'], sp_zhongdan:["cuiyan","huangfusong"], sp_star:["sp_xiahoushi","jsp_zhaoyun","huangjinleishi","sp_pangtong","sp_daqiao","sp_ganning","sp_xiahoudun","sp_lvmeng","sp_zhangfei","sp_liubei"], sp_sticker:['sp_gongsunzan','sp_simazhao','sp_wangyuanji','sp_xinxianying','sp_liuxie'], sp_guozhan:["zangba","shamoke","ganfuren","yuejin","hetaihou","dingfeng","panfeng","jianggan"], - sp_guozhan2:["mifuren","mateng","tianfeng","chendong","sp_dongzhuo","jiangfei","jiangqing","kongrong","bianfuren","liqueguosi","lvfan","cuimao","jiling","zhangren","zoushi"], + sp_guozhan2:["mifuren","mateng","tianfeng","chendong","sp_dongzhuo","jiangfei","jiangqing","kongrong","bianfuren","liqueguosi","lvfan","cuimao","jiling","zhangren","zoushi","huaxin"], sp_single:["niujin"], sp_others:["hanba","caiyang"], }, }, characterFilter:{}, character:{ + huaxin:['male','wei',3,['wanggui','xibing']], + wolongfengchu:['male','shu',4,['youlong','luanfeng']], sp_zhangliao:['male','qun',4,['mubing','ziqu','diaoling']], caoshuang:['male','wei',4,['retuogu','shanzhuan']], ol_zhangchangpu:['female','wei',3,['yanjiao','olxingshen']], @@ -150,6 +152,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){ //kaisa:["male","western",4,["zhengfu"]], }, characterIntro:{ + wolongfengchu:'沙比武将,懒得复制粘贴,自己去看诸葛亮和庞统的介绍吧。', + huaxin:'华歆(157年-232年1月30日),字子鱼,汉族。平原郡高唐县人(今山东省高唐县)。汉末至三国曹魏初年名士、重臣。华歆早年拜太尉陈球为师,与卢植、郑玄、管宁等为同门,又与管宁、邴原共称一龙,华歆为龙头。汉灵帝时华歆被举为孝廉,任郎中,因病去官。又被大将军何进征召为尚书郎。后任豫章太守,甚得民心。孙策率军南下,华歆举郡投降,被奉为上宾。官渡之战时,被征为议郎、参司空军事。入为尚书、侍中,又代荀彧为尚书令。丞相曹操讨孙权时,授华歆为军师。后为魏王国的御史大夫。曹丕即王位,拜华歆为相国,封安乐乡侯。曹魏建立后,其相国职名改称司徒。魏明帝即位,升任太尉,晋封博平侯。太和五年十二月(232年1月),华歆去世,年七十五,谥号“敬”。有文集三十卷,今佚失,其余见《全三国文》。', caoshuang:'曹爽(?-249年2月9日),字昭伯,沛国谯县(今安徽亳州市)人。三国时期魏国权臣,大司马曹真长子。曹爽体态肥胖,凭借宗室身份,出入宫廷,交好太子曹叡。魏明帝即位,起家员外散骑侍郎,累迁城门校尉、散骑常侍,转武卫将军。太和五年(231年),袭封邵陵侯。景初三年(239年),魏明帝曹叡病危,拜大将军、假黄钺,与司马懿并为托孤大臣。少帝曹芳即位,加侍中,改封武安侯。势倾四海,声震天下。任用私人,专权乱政,侵吞公产。伐蜀失败,虚耗国力。起居逾制,软禁郭太后。正始十年,太傅司马懿发动高平陵政变,掌握魏国大权。曹爽失去大将军职务,以谋反之罪处死,夷灭三族。', zhangling:'张道陵(34年2月22日—156年),字辅汉,原名陵,道教正一道实际创立者,汉朝东汉时期丰邑(今江苏徐州丰县)人。太上老君降临蜀地,“授以三天正法,命为天师”,张道陵整合当时的:黄老派、方仙道、文始派等先秦修道团体,创立道教称正一盟威之道。后世尊称为“老祖天师”、“正一真人”、“三天扶教大法师”、高明上帝、张天师。著作《老子想尔注》,弟子有3000多人,设立24治,奠基天师道。张道陵、葛玄、许逊、萨守坚合称四大天师。张道陵创建道教的背景:当时在巴蜀一带,原有巴人信奉原始巫教,大规模的淫祀而害民。而这些祀奉鬼妖(学名为:妖邪)的法教巫师聚众敛财,无恶不作。张天师携王长、赵升二位弟子和黄帝九鼎丹经,来到北邙山修行,平定了那些祸害百姓的巫妖之教。川渝一带流传的张天师以太上老君剑印符箓大破鬼兵的故事就是以此为原型的。', caiyang:'蔡阳(?-201年),又作蔡扬,东汉丞相曹操部下武将,汝南太守。于建安六年(201)奉曹操之命攻击与刘备联合的汝南贼龚都等人,兵败被刘备所杀。明代小说《三国演义》改编为“云长擂鼓斩蔡阳”。', @@ -391,6 +395,335 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, }, skill:{ + //华歆 + wanggui:{ + audio:2, + trigger:{ + player:'damageEnd', + source:'damageSource', + }, + direct:true, + filter:function(event,player){ + return player.hasSkill('wanggui')&&!player.hasSkill('wanggui2'); + }, + content:function(){ + 'step 0' + player.addTempSkill('wanggui2'); + var bool; + var guozhan=get.mode()=='guozhan'; + if(guozhan) bool=player.isUnseen(2); + else bool=!player._xibing; + if(bool){ + player.chooseTarget('望归:是否对一名'+(guozhan?'势力不同的':'其他')+'角色造成1点伤害?',guozhan?function(card,player,target){ + return target.isEnemyOf(player); + }:lib.filter.notMe).set('ai',function(target){ + var player=_status.event.player; + return get.damageEffect(target,player,player); + }); + } + else event.goto(2); + 'step 1' + if(result.bool){ + var target=result.targets[0]; + player.logSkill('wanggui',target); + target.damage(); + } + event.finish(); + 'step 2' + if(get.mode()=='guozhan'){ + player.chooseBool('望归:是否令所有与自己势力相同的角色各摸一张牌?'); + } + else player.chooseTarget('望归:是否令至多三名角色各摸一张牌?',[1,3]).set('ai',function(target){ + var att=get.attitude(_status.event.player,target); + if(target.hasSkill('nogain')&&target!=_status.currentPhase) att/=10; + return att; + }); + 'step 3' + if(result.bool){ + var targets=result.targets; + if(get.mode()=='guozhan') targets=game.filterPlayer(function(current){ + return current.isFriendOf(player); + }); + targets.sortBySeat(); + player.logSkill('wanggui',targets); + game.asyncDraw(targets); + } + else event.finish(); + 'step 4' + game.delayx(); + }, + }, + wanggui2:{}, + xibing:{ + audio:2, + trigger:{global:'useCardToPlayered'}, + filter:function(event,player){ + if(player==event.player||event.targets.length!=1||event.player.countCards('h')>=event.player.hp) return false; + var bool=function(card){ + return (card.name=='sha'||get.type(card,false)=='trick')&&get.color(card,false)=='black'; + }; + if(!bool(event.card)) return false; + var evt=event.getParent('phaseUse'); + if(evt.player!=event.player) return false; + return event.player.getHistory('useCard',function(evtx){ + return bool(evtx.card)&&evtx.getParent('phaseUse')==evt; + })[0]==event.getParent(); + }, + logTarget:'player', + check:function(event,player){ + var target=event.player; + var att=get.attitude(player,target); + var num=target.countCards('h',function(card){ + return target.hasValueTarget(card,null,true); + }); + if(!num) return att>0; + var num2=Math.min(5,target.hp-target.countCards('h')); + return num>num2; + }, + content:function(){ + 'step 0' + trigger.player.draw(Math.min(5,trigger.player.hp-trigger.player.countCards('h'))); + trigger.player.addTempSkill('xibing2'); + player._xibing=true; + if(get.mode()!='guozhan'||player.isUnseen(2)||trigger.player.isUnseen(2)) event.finish(); + 'step 1' + var target=trigger.player; + var players1=[player.name1,player.name2]; + var players2=[target.name1,target.name2]; + player.chooseButton(2,[ + '是否暗置自己和'+get.translation(target)+'的各一张武将牌?', + '
你的武将牌
', + [players1,'character'], + '
'+get.translation(target)+'的武将牌
', + [players2,'character'], + ]).set('players',players1).set('complexSelect',true).set('filterButton',function(button){ + return (ui.selected.buttons.length==0)==(_status.event.players.contains(button.link)); + }); + 'step 2' + if(result.bool){ + var target=trigger.player; + player.hideCharacter(player.name1==result.links[0]?0:1); + target.hideCharacter(target.name1==result.links[1]?0:1); + player.addTempSkill('xibing3'); + target.addTempSkill('xibing3'); + } + }, + }, + xibing2:{ + mod:{ + cardEnabled2:function(card){ + if(get.position(card)=='h') return false; + }, + }, + }, + xibing3:{ + ai:{nomingzhi:true}, + }, + //卧龙凤雏双头祈福 + youlong:{ + enable:'chooseToUse', + audio:2, + audioname:['key_sakuya'], + zhuanhuanji:true, + init:function(player){ + player.storage.youlong=false; + if(!player.storage.youlong2) player.storage.youlong2=[]; + }, + hiddenCard:function(player,name){ + if(player.storage.youlong2.contains(name)||player.countDisabled()>=5) return false; + if(player.hasSkill('youlong_'+(player.storage.youlong||false))) return false; + var type=get.type(name); + if(player.storage.youlong) return type=='basic'; + return type=='trick'; + }, + filter:function(event,player){ + if(player.storage.youlong2.contains(name)||player.countDisabled()>=5) return false; + if(player.hasSkill('youlong_'+(player.storage.youlong||false))) return false; + var type=player.storage.youlong?'basic':'trick'; + for(var name of lib.inpile){ + if(player.storage.youlong2.contains(name)) continue; + if(get.type(name)!=type) continue; + if(event.filterCard({name:name,isCard:true},player,event)) return true; + } + return false; + }, + chooseButton:{ + dialog:function(event,player){ + var dialog=ui.create.dialog('游龙','hidden'); + var table=document.createElement('div'); + table.classList.add('add-setting'); + table.style.margin='0'; + table.style.width='100%'; + table.style.position='relative'; + for(var i=1;i<6;i++){ + if(player.isDisabled(i)) continue; + var td=ui.create.div('.shadowed.reduce_radius.pointerdiv.tdnode'); + td.innerHTML=''+get.translation('equip'+i)+''; + td.link=i; + td.addEventListener(lib.config.touchscreen?'touchend':'click',ui.click.button); + for(var j in lib.element.button){ + td[j]=lib.element.button[i]; + } + table.appendChild(td); + dialog.buttons.add(td); + } + dialog.content.appendChild(table); + var type=player.storage.youlong?'basic':'trick'; + var list=[]; + for(var name of lib.inpile){ + if(player.storage.youlong2.contains(name)) continue; + if(get.type(name)!=type) continue; + if(event.filterCard({name:name,isCard:true},player,event)){ + list.push([type,'',name]); + if(name=='sha'){ + list.push([type,'',name,'fire']); + list.push([type,'',name,'thunder']); + list.push([type,'',name,'ice']); + } + } + } + dialog.add([list,'vcard']); + return dialog; + }, + filter:function(button){ + if(ui.selected.buttons.length&&typeof button.link==typeof ui.selected.buttons[0].link) return false; + return true; + }, + select:2, + check:function(button){ + var player=_status.event.player; + if(typeof button.link=='number'){ + var card=player.getEquip(button.link); + if(card){ + var val=get.value(card); + if(val>0) return 0; + return 5-val; + } + switch(button.link){ + case 3:return 4.5;break; + case 4:return 4.4;break; + case 5:return 4.3;break; + case 2:return (3-player.hp)*1.5;break; + case 1:{ + if(game.hasPlayer(function(current){ + return (get.realAttitude||get.attitude)(player,current)<0&&get.distance(player,current)>1; + })) return 0; + return 3.2; + } + } + } + var name=button.link[2]; + var evt=_status.event.getParent(); + if(get.type(name)=='basic'){ + if(name=='shan') return 2; + if(evt.type=='dying'){ + if(get.attitude(player,evt.dying)<2) return false; + if(name=='jiu') return 2.1; + return 1.9; + } + if(evt.type=='phase') return player.getUseValue({name:name,nature:button.link[3],isCard:true}); + return 1; + } + if(!['chuqibuyi','shuiyanqijunx','juedou','nanman','wanjian','shunshou','zhujinqiyuan'].contains(name)) return 0; + var card={name:name,isCard:true}; + if(['shunshou','zhujinqiyuan'].contains(card.name)){ + if(!game.hasPlayer(function(current){ + return get.attitude(player,current)!=0&&get.distance(player,current)<=1&&player.canUse(card,current)&&get.effect(current,card,player,player)>0; + })) return 0; + return player.getUseValue(card)-7; + } + return player.getUseValue(card)-4; + }, + backup:function(links,player){ + if(typeof links[1]=='number') links.reverse(); + var equip=links[0]; + var name=links[1][2]; + var nature=links[1][3]; + return { + filterCard:function(){return false}, + selectCard:-1, + equip:equip, + viewAs:{ + name:name, + nature:nature, + isCard:true, + }, + popname:true, + precontent:function(){ + player.logSkill('youlong'); + player.disableEquip(lib.skill.youlong_backup.equip); + delete event.result.skill; + player.addTempSkill('youlong_'+(player.storage.youlong||false),'roundStart'); + player.storage.youlong=!player.storage.youlong; + player.storage.youlong2.add(event.result.card.name); + }, + } + }, + prompt:function(links,player){ + if(typeof links[1]=='number') links.reverse(); + var equip='equip'+links[0]; + var name=links[1][2]; + var nature=links[1][3]; + return '废除自己的'+get.translation(equip)+'栏,视为使用'+(get.translation(nature)||'')+get.translation(name); + }, + }, + ai:{ + respondSha:true, + respondShan:true, + skillTagFilter:function(player,tag,arg){ + if(arg=='respond') return false; + if(!player.storage.youlong||player.hasSkill('youlong_true')) return false; + var name=(tag=='respondSha'?'sha':'shan'); + return !player.storage.youlong2.contains(name); + }, + order:1, + result:{ + player:1, + }, + }, + }, + youlong_true:{}, + youlong_false:{}, + luanfeng:{ + audio:2, + audioname:['key_sakuya'], + trigger:{global:'dying'}, + filter:function(event,player){ + return event.player.maxHp>=player.maxHp&&event.player.hp<1; + }, + limited:true, + skillAnimation:true, + animationColor:'soil', + logTarget:'player', + check:function(event,player){ + if(get.attitude(player,event.player)<4) return false; + if(player.countCards('h',function(card){ + var mod2=game.checkMod(card,player,'unchanged','cardEnabled2',player); + if(mod2!='unchanged') return mod2; + var mod=game.checkMod(card,player,event.player,'unchanged','cardSavable',player); + if(mod!='unchanged') return mod; + var savable=get.info(card).savable; + if(typeof savable=='function') savable=savable(card,player,event.player); + return savable; + })>=1-event.player.hp) return false; + if(event.player==player||event.player==get.zhu(player)) return true; + return !player.hasUnknown(); + }, + content:function(){ + 'step 0' + player.awakenSkill('luanfeng'); + trigger.player.recover(3-trigger.player.hp); + 'step 1' + var num=trigger.player.countDisabled(); + if(num){ + for(var i=1;i<6;i++){ + if(trigger.player.isDisabled(i)) trigger.player.enableEquip(i); + } + } + trigger.player.drawTo(6-num); + if(player==trigger.player) player.storage.youlong2=[]; + }, + }, //曹爽,韩遂,何进 xiaoxi:{ audio:2, @@ -12668,7 +13001,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ if(!player.storage.songci) player.storage.songci=[]; }, filterTarget:function(card,player,target){ - return (!player.storage.songci||!player.storage.songci.contains(target))&&target.countCards('h')!=target.hp; + return (!player.storage.songci||!player.storage.songci.contains(target)); }, content:function(){ if(target.countCards('h')>target.hp){ @@ -12687,11 +13020,11 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, ai:{ order:7, - threaten:1.5, + threaten:1.6, expose:0.2, result:{ target:function(player,target){ - if(target.countCards('h')target.hp){ @@ -12699,7 +13032,22 @@ game.import('character',function(lib,game,ui,get,ai,_status){ } } } - } + }, + group:'songci_draw', + }, + songci_draw:{ + audio:'songci', + trigger:{player:'phaseDiscardEnd'}, + forced:true, + filter:function(event,player){ + if(!player.storage.songci) return false; + return !game.hasPlayer(function(current){ + return !player.storage.songci.contains(current); + }); + }, + content:function(){ + player.draw(); + }, }, baobian:{ audio:2, @@ -14689,7 +15037,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ listm=listm.concat(listv); var func=function(skill){ var info=get.info(skill); - if(info.charlotte||info.zhuSkill||(info.unique&&!info.limited)) return false; + if(info.charlotte||info.zhuSkill||(info.unique&&!info.limited)||info.juexingji) return false; return true; }; for(var i=0;i阳,每轮限一次,你可以废除你的一个装备栏,视为使用一张未以此法使用过的基本牌。'; + return '转换技,阴,每轮限一次,你可以废除你的一个装备栏,视为使用一张未以此法使用过的普通锦囊牌;阳,每轮限一次,你可以废除你的一个装备栏,视为使用一张未以此法使用过的基本牌。'; + }, }, characterReplace:{ caoshuang:['caoshuang','ns_caoshuang'], @@ -15320,6 +15672,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ bifa:'笔伐', bifa2:'笔伐', songci:'颂词', + songci_draw:'颂词', baobian:'豹变', lihun:'离魂', chongzhen:'冲阵', @@ -15512,7 +15865,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ lihun_info:'出牌阶段限一次,你可以弃置一张牌并选择一名其他男性角色。若如此做,你将武将牌翻面并获得其所有手牌。出牌阶段结束时,你交给其X张牌。(X为该角色的体力值)', chongzhen_info:'当你发动〖龙胆〗使用或打出一张牌时,你可以获得对方的一张手牌。', bifa_info:'结束阶段开始时,你可以将一张手牌移出游戏并指定一名其他角色。该角色的准备阶段开始时,其观看你移出游戏的牌并选择一项:交给你一张与此牌类型相同的手牌并获得此牌;或将此牌置入弃牌堆,然后失去1点体力。', - songci_info:'出牌阶段,你可以选择一项:令一名手牌数小于其体力值的角色摸两张牌;或令一名手牌数大于其体力值的角色弃置两张牌。每局游戏每名角色限一次。', + songci_info:'①出牌阶段,你可以选择一名未以此法选择过的角色。若其手牌数:大于其体力值,其弃置两张牌;不小于其体力值,其摸两张牌。②弃牌阶段结束时,若你已对场上所有存活角色发动过〖颂词①〗,则你摸一张牌。', yongsi_info:'锁定技,摸牌阶段,你多摸X张牌。弃牌阶段开始时,你弃置X张牌。(X为场上势力数)', yicong_info:'锁定技,当你的体力值大于2时,你计算与其他角色的距离时-1;当你的体力值不大于2时,其他角色计算与你的距离时+1。', baobian_info:'锁定技,若你的体力值为3或更少,你视为拥有技能〖挑衅〗;若你的体力值为2或更少;你视为拥有技能〖咆哮〗;若你的体力值为1,你视为拥有技能〖神速〗。', @@ -15585,6 +15938,18 @@ game.import('character',function(lib,game,ui,get,ai,_status){ xiaoxi:'骁袭', xiaoxi_info:'当你登场时,你可以视为使用一张【杀】。', quyi:'OL麴义', + wolongfengchu:'卧龙凤雏', + youlong:'游龙', + youlong_info:'转换技,阴,每轮限一次,你可以废除你的一个装备栏,视为使用一张未以此法使用过的普通锦囊牌;阳,每轮限一次,你可以废除你的一个装备栏,视为使用一张未以此法使用过的基本牌。', + luanfeng:'鸾凤', + luanfeng_info:'限定技,一名角色进入濒死状态时,若其体力上限不小于你,你可令其回复至3点体力,恢复其被废除的装备栏,令其手牌补至6-X张(X为以此法恢复的装备栏数量)。若该角色是你,重置你因“游龙”使用过的牌名。', + huaxin:'华歆', + wanggui:'望归', + wanggui_info:'每回合限触发一次,当你受到或造成伤害后,若你本局游戏内:未发动过〖息兵〗,则你可对一名其他角色造成1点伤害。已发动过〖息兵〗,则你可令至多三名角色各摸一张牌。', + wanggui_info_guozhan:'每回合限触发一次,当你造成或受到伤害后,若你:仅明置了此武将牌,则你可对与你势力不同的一名角色造成1点伤害;武将牌均明置,则你可令与你势力相同的角色各摸一张牌。', + xibing:'息兵', + xibing_info:'当一名其他角色在其出牌阶段内使用第一张黑色【杀】或黑色普通锦囊牌指定唯一角色为目标后,你可令该角色将手牌摸至当前体力值(至多摸五张)且本回合不能再使用手牌。', + xibing_info_guozhan:'当一名其他角色在其出牌阶段内使用第一张黑色【杀】或黑色普通锦囊牌指定唯一角色为目标后,你可令该角色将手牌摸至当前体力(至多摸五张)值且本回合不能再使用手牌。若你与其均明置了所有武将牌,则你可以暗置你与其各一张武将牌且本回合不能再明置此武将牌。', sp_default:"常规", sp_zhongdan:"忠胆英杰", diff --git a/character/sp2.js b/character/sp2.js index 90eafcdea..d93447143 100644 --- a/character/sp2.js +++ b/character/sp2.js @@ -301,7 +301,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ player.recover(num); } 'step 1' - player.drawTo(Math.min(player.maxHp,5)).gaintag=['tairan']; + if(player.countCards('h')0; + return player!=_status.currentPhase&&player.countCards('he',{color:'red'})>0; }, filterCard:function(card){ return get.color(card)=='red'; diff --git a/character/yijiang.js b/character/yijiang.js index 16b4ec5a8..dacd8a7e4 100755 --- a/character/yijiang.js +++ b/character/yijiang.js @@ -6,7 +6,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ //connectBanned:['qinmi'], characterSort:{ yijiang:{ - yijiang_2011:['caozhi','re_yujin','zhangchunhua','fazheng','xin_masu','xin_xushu','xusheng','lingtong','wuguotai','chengong','gaoshun'], + yijiang_2011:['caozhi','re_yujin','zhangchunhua','xin_fazheng','xin_masu','xin_xushu','xusheng','lingtong','wuguotai','chengong','gaoshun'], yijiang_2012:['old_wangyi','xunyou','zhonghui','madai','liaohua','old_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'], @@ -16,7 +16,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, }, character:{ - fazheng:['male','shu',3,['enyuan','xuanhuo']], + xin_fazheng:['male','shu',3,['xinenyuan','xinxuanhuo'],['die_audio']], old_guanzhang:['male','shu',4,['old_fuhun']], old_wangyi:['female','wei',3,['oldzhenlie','oldmiji']], caozhang:['male','wei',4,['jiangchi']], @@ -12125,7 +12125,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ zhangchunhua:['jin_zhangchunhua','zhangchunhua','mini_zhangchunhua'], yujin:['yujin_yujin','re_yujin','ol_yujin','xin_yujin','yujin'], xushu:['re_xushu','xin_xushu','xushu'], - fazheng:['xin_fazheng','fazheng'], + fazheng:['re_fazheng','xin_fazheng','fazheng'], masu:['xin_masu','re_masu','masu'], xusheng:['xin_xusheng','re_xusheng','xusheng','old_xusheng'], wuguotai:['re_wuguotai','wuguotai'], @@ -12149,7 +12149,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ yufan:['re_yufan','yufan'], zhuran:['re_zhuran','xin_zhuran','zhuran','old_zhuran'], liru:['re_liru','xin_liru','liru'], - fuhuanghou:['fuhuanghou','old_fuhuanghou'], + fuhuanghou:['re_fuhuanghou','fuhuanghou','old_fuhuanghou'], chenqun:['chenqun','old_chenqun'], hanhaoshihuan:['re_hanhaoshihuan','hanhaoshihuan'], caozhen:['caozhen','old_caozhen'], @@ -12180,7 +12180,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ yujin:'毅重于禁', masu:'旧马谡', xin_masu:'马谡', - fazheng:'法正', + xin_fazheng:'法正', wuguotai:'吴国太', chengong:'陈宫', xusheng:'徐盛', diff --git a/game/asset.js b/game/asset.js index ac5a0d89c..68bb6bbbe 100644 --- a/game/asset.js +++ b/game/asset.js @@ -1,5 +1,5 @@ window.noname_asset_list=[ - 'v1.9.108.3.3', + 'v1.9.108.4', 'audio/background/aozhan_chaoming.mp3', 'audio/background/aozhan_online.mp3', 'audio/background/aozhan_rewrite.mp3', @@ -675,6 +675,9 @@ window.noname_asset_list=[ 'audio/die/xushao.mp3', 'audio/die/zhanghuyuechen.mp3', 'audio/die/zhangling.mp3', + 'audio/die/re_fazheng.mp3', + 'audio/die/re_fuhuanghou.mp3', + 'audio/die/huaxin.mp3', 'audio/skill/decadezishou1.mp3', 'audio/skill/decadezishou2.mp3', @@ -2955,6 +2958,65 @@ window.noname_asset_list=[ 'audio/skill/zlhuji2.mp3', 'audio/skill/zlshoufu1.mp3', 'audio/skill/zlshoufu2.mp3', + 'audio/skill/reenyuan1.mp3', + 'audio/skill/reenyuan2.mp3', + 'audio/skill/reqiuyuan1.mp3', + 'audio/skill/reqiuyuan2.mp3', + 'audio/skill/rexuanhuo1.mp3', + 'audio/skill/rexuanhuo2.mp3', + 'audio/skill/rezhuikong1.mp3', + 'audio/skill/rezhuikong2.mp3', + 'audio/skill/wanggui1.mp3', + 'audio/skill/wanggui2.mp3', + 'audio/skill/xibing1.mp3', + 'audio/skill/xibing2.mp3', + + 'audio/voice/male/0.mp3', + 'audio/voice/male/1.mp3', + 'audio/voice/male/2.mp3', + 'audio/voice/male/3.mp3', + 'audio/voice/male/4.mp3', + 'audio/voice/male/5.mp3', + 'audio/voice/male/6.mp3', + 'audio/voice/male/7.mp3', + 'audio/voice/male/8.mp3', + 'audio/voice/male/9.mp3', + 'audio/voice/male/10.mp3', + 'audio/voice/male/11.mp3', + 'audio/voice/male/12.mp3', + 'audio/voice/male/13.mp3', + 'audio/voice/male/14.mp3', + 'audio/voice/male/15.mp3', + 'audio/voice/male/16.mp3', + 'audio/voice/male/17.mp3', + 'audio/voice/male/18.mp3', + 'audio/voice/male/19.mp3', + 'audio/voice/male/20.mp3', + 'audio/voice/male/21.mp3', + 'audio/voice/male/22.mp3', + 'audio/voice/female/0.mp3', + 'audio/voice/female/1.mp3', + 'audio/voice/female/2.mp3', + 'audio/voice/female/3.mp3', + 'audio/voice/female/4.mp3', + 'audio/voice/female/5.mp3', + 'audio/voice/female/6.mp3', + 'audio/voice/female/7.mp3', + 'audio/voice/female/8.mp3', + 'audio/voice/female/9.mp3', + 'audio/voice/female/10.mp3', + 'audio/voice/female/11.mp3', + 'audio/voice/female/12.mp3', + 'audio/voice/female/13.mp3', + 'audio/voice/female/14.mp3', + 'audio/voice/female/15.mp3', + 'audio/voice/female/16.mp3', + 'audio/voice/female/17.mp3', + 'audio/voice/female/18.mp3', + 'audio/voice/female/19.mp3', + 'audio/voice/female/20.mp3', + 'audio/voice/female/21.mp3', + 'audio/voice/female/22.mp3', 'font/huangcao.ttf', 'font/shousha.ttf', @@ -3659,6 +3721,11 @@ window.noname_asset_list=[ 'image/character/zhangling.jpg', 'image/character/xin_zhangfei.jpg', 'image/character/junk_simayi.jpg', + 'image/character/huaxin.jpg', + 'image/character/key_sakuya.jpg', + 'image/character/re_fazheng.jpg', + 'image/character/re_fuhuanghou.jpg', + 'image/character/wolongfengchu.jpg', 'image/character/baiwuchang.jpg', 'image/character/baosanniang.jpg', diff --git a/game/game.js b/game/game.js index ae7837098..bccc306fb 100644 --- a/game/game.js +++ b/game/game.js @@ -13675,7 +13675,7 @@ if(att>0){ if(!_status.event.nojudge&&target.countCards('j',function(card){ return game.hasPlayer(function(current){ - return current.canAddJudge(card)&&get.attitude(player,current)<0; + return current!=target&¤t.canAddJudge(card)&&get.attitude(player,current)<0; }) })) return 14; if(target.countCards('e',function(card){ @@ -13711,10 +13711,10 @@ } if(i==es.length&&(_status.event.nojudge||!ui.selected.targets[0].countCards('j',function(card){ return target.canAddJudge(card); - }))){ + })||att2<=0)){ return 0; } - return -att*get.attitude(player,ui.selected.targets[0]); + return -att*att2; }); next.set('multitarget',true); next.set('targetprompt',_status.event.targetprompt||['被移走','移动目标']); @@ -15892,7 +15892,7 @@ if(player.hasSkillTag('save',true,target,true)) return true; for(var i in lib.card){ if(lib.inpile.contains(i)||player.countCards('h',i)){ - if(lib.filter.cardSavable({name:i},player,target)&&(_status.connectMode||player.hasUsableCard(i))) return true; + if(lib.card[i].savable&&lib.filter.cardSavable({name:i},player,target)&&(_status.connectMode||player.hasUsableCard(i))) return true; } } return false; @@ -15976,8 +15976,10 @@ } },this,this.name,this.sex,num,this.group); for(var i=0;i2&&game.hasPlayer(function(current){ + return (!player.isUnseen())&&player.countCards('h')>0&&game.hasPlayer(function(current){ return current!=player&¤t.hasSkill('gzxuanhuo')&&player.isFriendOf(current); }); }, - prompt:function(){ - var player=_status.event.player; - var list=game.filterPlayer(function(current){ - return current!=player&¤t.hasSkill('gzxuanhuo')&&player.isFriendOf(current); - }); - var str='选择两张牌。将第一张牌交给'+get.translation(list); - if(list.length>1) str+='中的一人'; - str+=',并弃置第二张牌'; - return str; - }, - position:'he', + prompt:'弃置一张手牌,然后获得以下技能中的一个:〖武圣〗〖咆哮〗〖龙胆〗〖铁骑〗〖烈弓〗〖狂骨〗', + position:'h', filterCard:true, - selectCard:2, check:function(card){ var player=_status.event.player; - if(player.hasSkill('new_paoxiao',true)||player.getEquip('zhuge')||game.hasPlayer(function(current){ - return current.hasSkill('new_paoxiao'); - })) return 0; + if(player.hasSkill('new_paoxiao',true)||player.getEquip('zhuge')) return 0; if(player.countCards('h',function(cardx){ - return !ui.selected.cards.contains(cardx)&&cardx!=card&&cardx.name=='sha'&&player.hasUseTarget(cardx); + return cardx!=card&&cardx.name=='sha'&&player.hasUseTarget(cardx); })<2) return 0; - if(get.position(card)=='h') return 6-get.value(card); - return 5-get.value(card); + return 6.5-get.value(card); }, - filterTarget:function(card,player,target){return target!=player&&target.hasSkill('gzxuanhuo')&&target.isFriendOf(player)}, - discard:false, - lose:false, - delay:false, content:function(){ 'step 0' - if(player!=game.me&&!player.isOnline()) cards.reverse(); - target.gain(cards[0],player); - player.$giveAuto(cards[0],target); - player.discard(cards[1]); - 'step 1' var list=['wusheng','new_paoxiao','new_longdan','new_tieji','liegong','xinkuanggu']; - for(var i=0;i0) return 11-get.value(card); return 7-get.value(card); }); - 'step 2' + 'step 1' if(result.bool){ player.gain(result.cards[0],trigger.source,'giveAuto'); } else trigger.source.loseHp(); - if(event.num>0) event.goto(1); }, audio:'enyuan2', }, @@ -3433,7 +3404,8 @@ game.import('mode',function(lib,game,ui,get,ai,_status){ "_mingzhisuodingji":{ mode:["guozhan"], enable:"phaseUse", - filter:function (event,player){ + filter:function(event,player){ + if(player.hasSkillTag('nomingzhi',false,null,true)) return false; var bool=false; var skillm=lib.character[player.name1][3]; var skillv=lib.character[player.name2][3]; @@ -3454,7 +3426,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){ return bool; }, popup:false, - content:function (){ + content:function(){ "step 0" var choice=[]; var skillm=lib.character[player.name1][3]; @@ -7409,7 +7381,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){ jianglue_info:'限定技,出牌阶段,你可以选择一个“军令”,然后与你势力相同的其他角色可以执行该军令(未确定势力角色可以在此时明置一张武将牌)。你与所有执行该军令的角色增加一点体力上限,然后回复一点体力,然后你摸X张牌(X为以此法回复了体力的角色数)。', gz_fazheng:'法正', gzxuanhuo:'眩惑', - gzxuanhuo_info:'与你势力相同的其他角色的出牌阶段限一次,该角色可以交给你一张牌并弃置一张牌,然后获得以下一项场上没有的技能直到回合结束:〖武圣〗、〖咆哮〗、〖龙胆〗、〖铁骑〗、〖烈弓〗、〖狂骨〗。', + gzxuanhuo_info:'与你势力相同的其他角色的出牌阶段限一次,其可弃置一张手牌,然后选择获得以下一项技能直到回合结束:〖武圣〗、〖咆哮〗、〖龙胆〗、〖铁骑〗、〖烈弓〗、〖狂骨〗。', gzenyuan:'恩怨', gzenyuan_info:'锁定技,当其他角色对你使用【桃】时,该角色摸一张牌;当你受到伤害后,伤害来源须交给你一张手牌或失去1点体力。', gzbuyi:'补益', @@ -7658,6 +7630,8 @@ game.import('mode',function(lib,game,ui,get,ai,_status){ gz_shibing2wu:'吴兵', gz_shibing1qun:'群兵', gz_shibing2qun:'群兵', + gz_shibing1jin:'晋兵', + gz_shibing2jin:'晋兵', gzduanchang:'断肠', gzduanchang_info:'锁定技,当你死亡时,你令杀死你的角色失去一张武将牌上的所有技能。', gzweimu:'帷幕', diff --git a/mode/versus.js b/mode/versus.js index 57a406828..6b595d361 100644 --- a/mode/versus.js +++ b/mode/versus.js @@ -29,7 +29,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){ start:function(){ "step 0" _status.mode=get.config('versus_mode'); - if(_status.connectMode&&lib.configOL.versus_mode=='guandu') _status.mode='guandu'; + if(_status.connectMode) _status.mode=lib.configOL.versus_mode; if(_status.brawl&&_status.brawl.submode){ _status.mode=_status.brawl.submode; } @@ -154,6 +154,16 @@ game.import('mode',function(lib,game,ui,get,ai,_status){ _status.brawl.chooseCharacterBefore(); } if(_status.connectMode){ + if(_status.mode=='guandu'){ + for(var i=0;i