From a15678aa29a185dde2381676c29994cf1480999e Mon Sep 17 00:00:00 2001 From: Spmario233 Date: Wed, 17 Jul 2019 16:25:58 +0800 Subject: [PATCH] v1.9.90(part2) --- character/diy.js | 4 +- character/extra.js | 106 +++--- character/mobile.js | 41 +++ character/old.js | 9 +- character/refresh.js | 20 +- character/shenhua.js | 118 +++--- character/sp.js | 692 ++++++++++++++++++++++++++++++++--- character/xinghuoliaoyuan.js | 38 +- character/yijiang.js | 27 +- character/yxs.js | 3 +- 10 files changed, 860 insertions(+), 198 deletions(-) create mode 100644 character/mobile.js diff --git a/character/diy.js b/character/diy.js index 2c3986e77..03931a9a9 100755 --- a/character/diy.js +++ b/character/diy.js @@ -4596,7 +4596,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ ns_nanhua:'南华', ns_nanhua_left:'幻身·左', ns_nanhua_right:'幻身·右', - ns_huamulan:'sp花木兰', + ns_huamulan:'SP花木兰', ns_huangzu:'黄祖', ns_yanliang:'颜良', ns_wenchou:'文丑', @@ -4606,7 +4606,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ ns_zhugeliang:'诸葛亮', ns_wangyue:'王越', ns_yuji:'于吉', - ns_caocaosp:'sp曹操', + ns_caocaosp:'SP曹操', ns_xinxianying:'辛宪英', ns_sunjian:'孙坚', ns_simazhao:'司马昭', diff --git a/character/extra.js b/character/extra.js index 0c6056cfb..e6525199e 100755 --- a/character/extra.js +++ b/character/extra.js @@ -29,7 +29,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, skill:{ "new_wuhun":{ - audio:"wuhun", + audio:"wuhun3", group:["new_wuhun_mark","new_wuhun_die"], trigger:{ player:"damageEnd", @@ -63,7 +63,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, subSkill:{ die:{ - audio:"wuhun", + audio:"wuhun3", skillAnimation:true, trigger:{ player:"dieBegin", @@ -137,6 +137,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){ event.num=0; player.line(targets,'green'); player.chooseControl('手牌区','装备区','判定区').set('ai',function(){ + if(game.hasPlayer(function(current){ + return current.countCards('j')&¤t!=player&&get.attitude(player,current)>0; + })) return 2; return Math.floor(Math.random()*3); }).set('prompt','请选择优先获得的区域'); "step 2" @@ -155,7 +158,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ var card=cards.randomGet(); player.gain(card); target.$giveAuto(card,player); - game.delay(); + game.delay(0.3); break; } } @@ -167,13 +170,16 @@ game.import('character',function(lib,game,ui,get,ai,_status){ "step 5" event.count--; if(event.count){ - player.chooseBool(get.prompt2('new_guixin')); + player.chooseBool(get.prompt2('new_guixin')).ai=function(){ + return lib.skill.new_guixin.check({num:event.count},player); + }; } else{ event.finish(); } "step 6" if(event.count&&result.bool){ + player.logSkill('new_guixin'); event.goto(1); } }, @@ -222,23 +228,19 @@ game.import('character',function(lib,game,ui,get,ai,_status){ event.targets=game.filterPlayer(); event.targets.remove(player); event.targets.sort(lib.sort.seat); - event.targets2=event.targets.slice(0); player.line(event.targets,'green'); "step 1" if(event.targets.length){ - event.targets.shift().damage(); - event.redo(); + event.current=event.targets.shift() + event.current.discard(event.current.getCards('e')).delay=false; } "step 2" - if(event.targets2.length){ - var cur=event.targets2.shift(); - if(cur&&cur.countCards('he')){ - cur.chooseToDiscard('e',true,Infinity); - cur.chooseToDiscard('h',true,4); - } - event.redo(); - } - "step 3" + event.current.chooseToDiscard('h',true,4).delay=false; + "step 3" + event.current.damage(); + game.delay(0.5); + if(event.targets.length) event.goto(1); + "step 4" player.turnOver(); }, ai:{ @@ -1945,6 +1947,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, "nzry_jieying":{ audio:2, + global:"g_nzry_jieying", ai:{ effect:{ target:function(card){ @@ -1965,7 +1968,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ return !player.isLinked(); }, content:function(){ - if(!player.isLinked()) player.link(); + player.link(true); }, }, '2':{ @@ -1986,7 +1989,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ if(result.bool){ player.line(result.targets); player.logSkill('nzry_jieying'); - result.targets[0].link(); + result.targets[0].link(true); }else{ event.finish(); }; @@ -1994,7 +1997,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, }, }, - "_nzry_jieying":{ + "g_nzry_jieying":{ mod:{ maxHandcard:function (player,num){ if(game.countPlayer(function(current){return current.hasSkill('nzry_jieying')})>0&&player.isLinked()) return num+2; @@ -2048,7 +2051,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ if(player.storage.nzry_junlve%2==1){ result.targets[0].damage(); }else{ - result.targets[0].link(); + result.targets[0].link(true); player.discardPlayerCard(result.targets[0],1,'hej'); }; }; @@ -2354,8 +2357,15 @@ game.import('character',function(lib,game,ui,get,ai,_status){ event.list2.push(list[i]); }; }; - target.discard(event.list2); - player.discard(event.list1); + if(event.list1.length&&event.list2.length){ + target.discard(event.list2).delay=false; + player.discard(event.list1).delay=false; + game.delay(); + } + else{ + target.discard(event.list2); + player.discard(event.list1); + } }; 'step 2' if(event.list1.length+event.list2.length==4){ @@ -2393,16 +2403,12 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, 'drlt_jieying':{ audio:2, - init:function (player){ - player.storage.drlt_jieying=0; - }, marktext:"营", intro:{ content:function(storage){ - return '当前有'+storage+'个“营”'; + return '已获得“营”标记'; }, }, - mark:true, group:["drlt_jieying_1","drlt_jieying_2","drlt_jieying_3"], subSkill:{ '1':{ @@ -2412,8 +2418,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, forced:true, content:function(){ - player.storage.drlt_jieying++; - player.syncStorage('drlt_jieying'); + player.storage.drlt_jieying=player; + player.markSkill('drlt_jieying'); game.log(player,'获得了“营”标记'); }, }, @@ -2426,7 +2432,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ content:function(){ 'step 0' player.chooseTarget(get.prompt('drlt_jieying'),function(card,player,target){ - return target.storage.drlt_jieying==undefined; + return target!=player; }).ai=function(target){ if(get.attitude(player,target)>0) return 0.1; @@ -2443,12 +2449,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){ var target=result.targets[0]; player.line(target); player.logSkill('drlt_jieying'); - delete player.storage.drlt_jieying; + player.storage.drlt_jieying=target; + target.storage.drlt_jieying2=player; player.unmarkSkill('drlt_jieying'); game.log(player,'失去了“营”标记'); - player.storage.drlt_jieying1=target; - if(target.storage.drlt_jieying==undefined) target.storage.drlt_jieying=0; - target.storage.drlt_jieying++; target.markSkill('drlt_jieying'); game.log(target,'获得了“营”标记'); }; @@ -2457,33 +2461,37 @@ game.import('character',function(lib,game,ui,get,ai,_status){ '3':{ audio:'drlt_jieying', trigger:{ - global:'phaseAfter' + global:['phaseAfter','dieAfter'] }, forced:true, filter:function(event,player){ - return event.player!=player&&event.player.storage.drlt_jieying!=undefined + return player.storage.drlt_jieying==event.player; }, + logTarget:'player', content:function(){ - if(trigger.player.countCards('h')>0){ - trigger.player.give(trigger.player.getCards('h'),player); + if(trigger.player.isAlive()){ + if(trigger.player.countCards('h')>0){ + trigger.player.give(trigger.player.getCards('h'),player); + } + delete trigger.player.storage.drlt_jieying2; + trigger.player.unmarkSkill('drlt_jieying'); + game.log(trigger.player,'失去了“营”标记'); } - if(player.storage.drlt_jieying==undefined) player.storage.drlt_jieying=0; - player.storage.drlt_jieying++; - delete trigger.player.storage.drlt_jieying; - trigger.player.unmarkSkill('drlt_jieying'); + player.storage.drlt_jieying=player; player.markSkill('drlt_jieying'); game.log(player,'获得了“营”标记'); }, }, }, + global:'g_drlt_jieying', }, - '_drlt_jieying':{ + 'g_drlt_jieying':{ mod:{ cardUsable:function (card,player,num){ - if(player.storage.drlt_jieying!=undefined&&card.name=='sha') return num+1; + if((player.storage.drlt_jieying==player||(player.storage.drlt_jieying2&&player.storage.drlt_jieying2.isAlive()&&player.storage.drlt_jieying2.storage.drlt_jieying==player))&&card.name=='sha') return num+1; }, maxHandcard:function (player,num){ - if(player.storage.drlt_jieying!=undefined) return num+1; + if(player.storage.drlt_jieying==player||(player.storage.drlt_jieying2&&player.storage.drlt_jieying2.isAlive()&&player.storage.drlt_jieying2.storage.drlt_jieying==player)) return num+1; }, }, audio:'drlt_jieying', @@ -2492,7 +2500,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, forced:true, filter:function(event,player){ - return player.storage.drlt_jieying!=undefined; + return player.storage.drlt_jieying==player||(player.storage.drlt_jieying2&&player.storage.drlt_jieying2.isAlive()&&player.storage.drlt_jieying2.storage.drlt_jieying==player); }, content:function(){ trigger.num++; @@ -2568,7 +2576,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ sbaiyin:'拜印', sbaiyin_info:'觉醒技,准备阶段开始时,若你拥有的“忍”标记枚数不小于4,你减1点体力上限,然后获得“极略”', jilue:'极略', - jilue_info:'每当一名角色的判定牌生效前,若你有手牌,你可以弃1枚“忍”标记发动“鬼才”(界);每当你受到伤害后,你可以弃1枚“忍”标记,发动“放逐”;每当你使用锦囊牌时,你可以弃1枚“忍”标记,发动“集智”(界);出牌阶段限一次,若你有牌,你可以弃1枚“忍”标记,发动“制衡”(界);出牌阶段,你可以弃1枚“忍”标记,执行“完杀”的效果,直到回合结束。', + jilue_info:'每当一名角色的判定牌生效前,若你有牌,你可以弃1枚“忍”标记发动“鬼才”(界);每当你受到伤害后,你可以弃1枚“忍”标记,发动“放逐”;每当你使用锦囊牌时,你可以弃1枚“忍”标记,发动“集智”(界);出牌阶段限一次,若你有牌,你可以弃1枚“忍”标记,发动“制衡”(界);出牌阶段,你可以弃1枚“忍”标记,执行“完杀”的效果,直到回合结束。', jilue_guicai:'鬼才', jilue_fangzhu:'放逐', jilue_wansha:'完杀', @@ -2616,9 +2624,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){ ol_wuqian:'无前', ol_wuqian_info:'出牌阶段,你可以弃2枚“暴怒”标记并选择一名其他角色,你视为拥有技能“无双”并令其防具无效,直到回合结束。', ol_shenfen:'神愤', - ol_shenfen_info:'出牌阶段,你可以弃6枚“暴怒”标记并选择所有其他角色,对这些角色各造成1点伤害,然后这些角色先各弃置其装备区里的牌,再各弃置四张手牌,最后你将你的武将牌翻面。每阶段限一次。', + ol_shenfen_info:'出牌阶段,你可以弃6枚“暴怒”标记并选择所有其他角色,然后这些角色先各弃置其装备区里的牌,再各弃置四张手牌,然后受到来自你的1点伤害。最后你将你的武将牌翻面。每阶段限一次。', "new_wuhun":"武魂", - "new_wuhun_info":"锁定技,当你受到伤害后,伤害来源获得X个“梦魇”’标记(X为伤害点数)。锁定技,当你死亡时,你选择一名“梦魇”标记数量最多的其他角色。你的死亡流程结算完成后,该角色进行一次判定:若判定结果不为【桃】或【桃园结义】,则该角色立刻死亡。", + "new_wuhun_info":"锁定技,当你受到伤害后,伤害来源获得X个“梦魇”标记(X为伤害点数)。锁定技,当你死亡时,你选择一名“梦魇”标记数量最多的其他角色。你的死亡流程结算完成后,该角色进行一次判定:若判定结果不为【桃】或【桃园结义】,则该角色立刻死亡。", "new_guixin":"归心", "new_guixin_info":"当你受到1点伤害后,你可以随机获得每名其他角色区域里的一张牌,然后你翻面", }, diff --git a/character/mobile.js b/character/mobile.js new file mode 100644 index 000000000..a63e79f51 --- /dev/null +++ b/character/mobile.js @@ -0,0 +1,41 @@ +'use strict'; +game.import('character',function(lib,game,ui,get,ai,_status){ + return { + name:'mobile', + connectBanned:['miheng'], + connect:true, + character:{ + re_jikang:["male","wei",3,["new_qingxian","new_juexiang"]], + 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']], + sunru:['female','wu',3,['yingjian','shixin']], + lifeng:['male','shu',3,['tunchu','shuliang']], + zhuling:['male','wei',4,['zhanyi']], + liuye:['male','wei',3,['polu','choulve']], + zhaotongzhaoguang:["male","shu",4,["yizan_use","xinfu_longyuan"],[]], + majun:["male","wei",3,["xinfu_jingxie1","xinfu_qiaosi"],[]], + simazhao:["male","wei",3,["xinfu_daigong","xinfu_zhaoxin"],[]], + wangyuanji:["female","wei",3,["xinfu_qianchong","xinfu_shangjian"],[]], + pangdegong:["male","qun",3,["xinfu_pingcai","xinfu_pdgyingshi"],[]], + re_sp_zhugeliang:["male","shu",3,["rehuoji","rekanpo","bazhen"],[]], + re_xunyu:["male","wei",3,["quhu","rejieming"],[]], + re_dianwei:["male","wei",4,["reqiangxi"],[]], + re_yanwen:["male","qun",4,["reshuangxiong"],[]], + re_pangtong:['male','shu',3,['xinlianhuan','niepan'],[]], + xin_yuanshao:['male','qun',4,['reluanji','xueyi'],['zhu']], + old_caochun:['male','wei',4,['shanjia']], + old_yuanshu:['male','qun',4,['xinyongsi','yjixi']], + }, + characterFilter:{ + }, + skill:{ + }, + translate:{ + re_jikang:"新嵇康", + old_bulianshi:'新步练师', + old_caochun:'旧曹纯', + } + }; +}); diff --git a/character/old.js b/character/old.js index 4b159b7c3..d96febbdc 100755 --- a/character/old.js +++ b/character/old.js @@ -21,7 +21,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){ old_wangyi:['female','wei',3,['oldzhenlie','oldmiji']], old_caozhen:['male','wei',4,['sidi']], old_quancong:['male','wu',4,['zhenshan']], - old_yuanshu:['male','qun',4,['yongsi','weidi']], old_lingju:['female','qun',3,['jieyuan','fenxin_old']], old_maliang:['male','shu',3,['xiemu','naman']], old_chenqun:['male','wei',3,['dingpin','oldfaen']], @@ -29,7 +28,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){ old_zhuzhi:['male','wu',4,['anguo']], old_machao:['male','qun',4,['zhuiji','cihuai']], - old_bulianshi:['female','wu',3,['old_anxu','zhuiyi']], old_zhugezhan:["male","shu",3,["old_zuilun","old_fuyin"]], zhangliang:["male","qun",3,["old_jijun","old_fangtong"]], }, @@ -562,7 +560,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, }, translate:{ - old_yuanshu:'旧袁术', + old_yuanshu:'手杀袁术', old_xusheng:'旧徐盛', old_lingtong:'旧凌统', old_zhuran:'旧朱然', @@ -577,10 +575,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){ old_chenqun:'旧陈群', old_zhuhuan:'旧朱桓', old_zhuzhi:'旧朱治', - old_machao:'旧马超', - old_bulianshi:'旧步练师', + old_machao:'☆SP马超', old_zhugezhan:"旧诸葛瞻", - zhangliang:'旧张梁', + zhangliang:'SP张梁', "old_jijun":"集军", "old_jijun_info":"出牌阶段,你可以将任意张手牌置于你的武将牌上。(均称为“方”)", diff --git a/character/refresh.js b/character/refresh.js index 609f117a4..641ae0aa8 100755 --- a/character/refresh.js +++ b/character/refresh.js @@ -33,13 +33,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){ re_zhenji:['female','wei',3,['reluoshen','qingguo']], re_zhugeliang:['male','shu',3,['reguanxing','kongcheng']], re_huaxiong:["male","qun",6,["new_reyaowu"]], - - re_sp_zhugeliang:["male","shu",3,["rehuoji","rekanpo","bazhen"],[]], - re_xunyu:["male","wei",3,["quhu","rejieming"],[]], - re_dianwei:["male","wei",4,["reqiangxi"],[]], - re_yanwen:["male","qun",4,["reshuangxiong"],[]], - re_pangtong:['male','shu',3,['xinlianhuan','niepan'],[]], - xin_yuanshao:['male','qun',4,['reluanji','xueyi'],['zhu']], }, characterIntro:{ re_gongsunzan:'群雄之一。出身贵族,因母地位卑贱,只当了郡中小吏。他貌美,声音洪亮,机智善辩。后随卢植于缑氏山中读书,粗通经传。', @@ -898,7 +891,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ content:function (){ "step 0" player.chooseCardTarget({ - position:'h', + position:'he', filterCard:true, selectCard:[1,Infinity], filterTarget:function(card,player,target){ @@ -922,7 +915,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ if(target.countCards('h')>_status.event.player.countCards('h')) return 0; return att-4; }, - prompt:'请选择要送人的卡牌' + prompt:get.prompt2('new_qingjian'), }); "step 1" if(result.bool){ @@ -1034,7 +1027,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ return [1,-2]; } if(card.name=='sha'&&(get.color(card)=='black')){ - return [1,0.6]; + return [0,-0.6]; } }, }, @@ -1908,6 +1901,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ skillAnimation:true, audio:2, unique:true, + juexingji:true, derivation:'gongxin', trigger:{player:'phaseBegin'}, forced:true, @@ -2159,6 +2153,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ unique:true, mark:true, skillAnimation:true, + limited:true, trigger:{player:'phaseBegin'}, init:function(player){ player.storage.retishen=false; @@ -2552,6 +2547,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, retieji:{ audio:2, + audioname:['boss_lvbu3'], trigger:{player:'shaBegin'}, check:function(event,player){ return get.attitude(player,event.target)<0; @@ -2712,6 +2708,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ skillAnimation:true, audio:2, unique:true, + juexingji:true, trigger:{source:'damageAfter'}, forced:true, derivation:'jianyan', @@ -2820,6 +2817,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ audio:2, unique:true, mark:true, + limited:true, trigger:{global:'useCard'}, priority:5, filter:function(event,player){ @@ -3049,7 +3047,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ "new_tishen2":"替身", "new_tishen2_info":"", "new_qingjian":"清俭", - "new_qingjian_info":"每当你于摸牌阶段外获得牌时,你可以展示任意张手牌并交给一名其他角色。然后,当前回合角色本回合的手牌上限+X。(X为你给出的牌中包含的类别数)", + "new_qingjian_info":"每当你于摸牌阶段外获得牌时,你可以展示任意张牌并交给一名其他角色。然后,当前回合角色本回合的手牌上限+X(X为你给出的牌中包含的类别数)。每回合限一次。", "qingjian_add":"清俭", "qingjian_add_info":"", "new_reqingnang":"青囊", diff --git a/character/shenhua.js b/character/shenhua.js index 1c4cbe515..9941c0edb 100755 --- a/character/shenhua.js +++ b/character/shenhua.js @@ -175,6 +175,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, forced:true, unique:true, + juexingji:true, derivation:['drlt_qingce'], init:function(player){ player.storage.drlt_hongju=false; @@ -528,6 +529,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, forced:true, unique:true, + juexingji:true, derivation:['drlt_huairou'], init:function(player){ player.storage.drlt_poshi=false; @@ -985,6 +987,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ audio:2, mark:true, locked:false, + zhuanhuanji:true, marktext:'拒', intro:{ content:function(storage,player,skill){ @@ -1150,8 +1153,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){ "nzry_binglve":{}, "nzry_huaiju":{ marktext:"橘", - init:function(player){ - player.storage.nzry_huaiju=0; + init:function(player,skill){ + if(!player.storage[skill]) player.storage[skill]=0; }, intro:{ content:'当前有#个“橘”', @@ -1159,44 +1162,40 @@ game.import('character',function(lib,game,ui,get,ai,_status){ mark:true, audio:2, trigger:{ - global:'gameStart' + global:'gameDrawAfter' }, forced:true, content:function(){ player.storage.nzry_huaiju+=3; player.syncStorage('nzry_huaiju'); game.log(player,'获得了3个“橘”'); - }, + }, + group:['tachibana_effect'], }, - "_nzry_huaiju":{ - audio:2, + //没错 这是个橘 + "tachibana_effect":{ + audio:'nzry_huaiju', trigger:{ - player:'damageBefore' + global:['damageBefore','phaseDrawBegin'], }, forced:true, - filter:function (event,player){ - return player.storage.nzry_huaiju>0; + filter:function(event,player){ + return event.player.storage.nzry_huaiju&&event.player.storage.nzry_huaiju>0; }, content:function(){ - trigger.cancel(); - player.storage.nzry_huaiju--; - player.syncStorage('nzry_huaiju'); - if(player.storage.nzry_huaiju<=0) player.unmarkSkill('nzry_huaiju'); - game.log(player,'移去了1个“橘”'); - }, - }, - "_nzry_huaiju1":{ - audio:2, - trigger:{ - player:'phaseDrawBegin' + player.line(trigger.player,'green'); + if(trigger.name=='damage'){ + trigger.cancel(); + trigger.player.storage.nzry_huaiju--; + if(!trigger.player.storage.nzry_huaiju) trigger.player.unmarkSkill('nzry_huaiju'); + else{ + trigger.player.syncStorage('nzry_huaiju'); + trigger.player.updateMarks('nzry_huaiju'); + } + game.log(trigger.player,'移去了1个“橘”'); + } + else trigger.num++; }, - forced:true, - filter:function (event,player){ - return player.storage.nzry_huaiju>0; - }, - content:function(){ - trigger.num++; - }, }, "nzry_yili":{ audio:2, @@ -1209,7 +1208,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){ player.chooseTarget(get.prompt('nzry_yili'),function(card,player,target){ return target!=player }).ai=function(target){ - if(player.storage.nzry_huaiju>1) return get.attitude(player,target); + var player=_status.event.player; + if(player.storage.nzry_huaiju>2||player.hp>2) return get.attitude(player,target); return -1; }; 'step 1' @@ -1217,6 +1217,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ event.target=result.targets[0]; if(player.storage.nzry_huaiju>0){ player.chooseControl().set('choiceList',['流失一点体力','移去一个“橘”']).set('ai',function(){ + if(player.hp>2) return 0; return 1; }); } @@ -1225,6 +1226,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){ event.finish(); }; 'step 2' + player.line(event.target,'green'); + player.logSkill('nzry_huaiju'); if(result.index==1){ player.storage.nzry_huaiju--; player.syncStorage('nzry_huaiju'); @@ -1233,8 +1236,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }else{ player.loseHp(); }; - player.line(event.target); - player.logSkill('nzry_huaiju'); if(event.target.storage.nzry_huaiju==undefined) event.target.storage.nzry_huaiju=0; event.target.markSkill('nzry_huaiju'); event.target.storage.nzry_huaiju++; @@ -1256,9 +1257,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){ content:function(){ trigger.cancel(); if(player.storage.nzry_huaiju==undefined) player.storage.nzry_huaiju=0; - player.markSkill('nzry_huaiju'); player.storage.nzry_huaiju++; player.syncStorage('nzry_huaiju'); + player.markSkill('nzry_huaiju'); game.log(player,'获得了1个“橘”'); }, }, @@ -1442,6 +1443,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ "nzry_chenglve":{ mark:true, locked:false, + zhuanhuanji:true, marktext:'成', intro:{ content:function(storage,player,skill){ @@ -1636,6 +1638,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ "nzry_zhenliang":{ mark:true, locked:false, + zhuanhuanji:true, marktext:'贞', intro:{ content:function(storage,player,skill){ @@ -1675,7 +1678,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ if(result.bool){ player.storage.nzry_zhenliang=true; player.discard(result.cards); - target.damage(); + target.damage('nocard'); }; }, ai:{ @@ -1747,6 +1750,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ "nzry_shenshi":{ mark:true, locked:false, + zhuanhuanji:true, marktext:'审', intro:{ content:function(storage,player,skill){ @@ -1779,7 +1783,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ 'step 0' player.storage.nzry_shenshi=true; target.gain(cards,player); - target.damage(); + target.damage('nocard'); 'step 1' if(!target.isAlive()){ player.chooseTarget('请选择一名角色并令其将手牌摸至四张',function(card,player,target){ @@ -2288,6 +2292,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, qimou:{ unique:true, + limited:true, enable:'phaseUse', filter:function(event,player){ return !player.storage.qimou; @@ -2472,6 +2477,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ skillAnimation:true, audio:2, unique:true, + juexingji:true, priority:-10, derivation:'reguanxing', trigger:{player:'phaseBeginStart'}, @@ -2608,6 +2614,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ skillAnimation:true, audio:2, unique:true, + juexingji:true, zhuSkill:true, keepSkill:true, derivation:'jijiang', @@ -2889,6 +2896,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ skillAnimation:true, audio:2, unique:true, + juexingji:true, trigger:{player:'phaseBegin'}, forced:true, filter:function(event,player){ @@ -3796,10 +3804,14 @@ game.import('character',function(lib,game,ui,get,ai,_status){ audio:2, unique:true, gainable:true, - trigger:{global:'dieEnd'}, + trigger:{global:'die'}, priority:5, filter:function(event){ - return event.playerCards&&event.playerCards.length>0 + if(!event.playerCards||!event.playerCards.length) return false; + for(var i=0;i李傕本为董卓部将,后被董卓的女婿牛辅派遣至中牟与朱儁交战,大破朱儁,进而至陈留、颍川等地劫掠。初平三年(192年)董卓和牛辅被杀后,李傕归无所依,于是采用贾诩之谋,伙同郭汜、张济、樊稠等原董卓部曲将攻向长安。击败吕布,杀死王允等人,占领长安,把持朝廷大权。后诸将不和,李傕在会议上杀死了樊稠,又与郭汜分别劫持了汉献帝和众臣,相互交战,张济率兵赶来和解,于是二人罢兵,李傕出屯池阳黄白城,郭汜、张济等人随汉献帝东归前往弘农。
后来,李傕、郭汜、张济反悔,联合起来追击汉献帝,与杨奉、董承等人几番交战。汉献帝一路逃亡,狼狈不堪,到达安邑,与李傕等人讲和。不久,汉献帝被曹操迎往许都。建安三年(198年),曹操派谒者仆射裴茂召集关西诸将段煨等人征讨李傕,灭其三族。", zhangji:"张济(?-196年),武威郡祖厉县(今甘肃靖远东南)人。东汉末年割据军阀之一。 张济原为董卓部将,董卓被诛杀后,张济与李傕一同率军攻破长安,任中郎将。不久,升任镇东将军,封平阳侯,出屯弘农。献帝东迁时,张济升任骠骑将军,率军护卫献帝,后来因与董承等人有矛盾,便与李傕、郭汜一同追赶献帝。 建安元年(196年),张济因军队缺粮而进攻穰城,中流矢而死。死后,部队由侄儿张绣接管。", guosi:"郭汜(?-197年),又名郭多,凉州张掖(今甘肃张掖西北)人,东汉末年将领、军阀,献帝时权臣。原为董卓部下。董卓被杀后,凉州众将归无所依,于是采用贾诩之谋,联兵将攻向长安,击败吕布,杀死王允等人,占领长安,把持朝廷大权。几年后,郭汜被部将伍习杀死。", @@ -772,8 +772,535 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, }, skill:{ + //统率三军诸葛瑾和文聘 + "zhenwei_three":{ + global:"zhenwei_three_others", + subSkill:{ + others:{ + mod:{ + globalTo:function (from,to,distance){ + if(from.side!=to.side&&game.hasPlayer(function(current){ + return current!=to&¤t.side==to.side&¤t.hasSkill('zhenwei_three'); + }))return distance+1; + }, + }, + sub:true, + }, + }, + }, + "huanshi_three":{ + audio:"huanshi", + trigger:{ + global:"judge", + }, + filter:function (event,player){ + return player.countCards('he')>0&&player.side==event.player.side; + }, + direct:true, + content:function (){ + "step 0" + player.chooseCard(get.translation(trigger.player)+'的'+(trigger.judgestr||'')+'判定为'+ + get.translation(trigger.player.judging[0])+','+get.prompt('huanshi_three'),'he').set('ai',function(card){ + var trigger=_status.event.getTrigger(); + var player=_status.event.player; + var judging=_status.event.judging; + var result=trigger.judge(card)-trigger.judge(judging); + var attitude=get.attitude(player,trigger.player); + if(attitude==0||result==0) return 0; + if(attitude>0){ + return result-get.value(card)/2; + } + else{ + return -result-get.value(card)/2; + } + }).set('judging',trigger.player.judging[0]); + "step 1" + if(result.bool){ + player.respond(result.cards,'highlight'); + } + else{ + event.finish(); + } + "step 2" + if(result.bool){ + player.logSkill('huanshi_three'); + if(trigger.player.judging[0].clone){ + trigger.player.judging[0].clone.classList.remove('thrownhighlight'); + game.broadcast(function(card){ + if(card.clone){ + card.clone.classList.remove('thrownhighlight'); + } + },trigger.player.judging[0]); + game.addVideo('deletenode',player,get.cardsInfo([trigger.player.judging[0].clone])); + } + trigger.player.judging[0].discard(); + trigger.player.judging[0]=result.cards[0]; + if(!get.owner(result.cards[0],'judge')){ + trigger.position.appendChild(result.cards[0]); + } + game.log(trigger.player,'的判定牌改为',result.cards[0]); + game.delay(2); + } + }, + ai:{ + tag:{ + rejudge:1, + }, + }, + }, + //英文版特典武将凯撒 + zhengfu:{ + trigger:{ + player:"shaBegin", + }, + check:function (event,player){ + return get.attitude(player,event.target)<0; + }, + logTarget:"target", + line:false, + content:function (){ + 'step 0' + player.line(trigger.target,{color:[220, 90, 139]}); + player.chooseControl(['basic','trick','equip']).set('ai',function(){ + if(!trigger.target.countCards('h','sha')&&trigger.target.countCards('h','shan')) return 'trick'; + return 'basic'; + }).prompt='请选择一种牌的类别'; + 'step 1' + trigger.target.chooseCard('he','交给'+get.translation(player)+'一张'+get.translation(result.control)+'牌,否则此【杀】不可被闪避。',function(card){ + return get.type(card,'trick')==result.control; + }).set('ai',function(card){ + var num=_status.event.num; + if(num==0) return 0; + if(card.name=='shan') return num>1?2:0; + return 8-get.value(card); + }).set('num',trigger.target.countCards('h','shan')) + 'step 2' + if(result.bool){ + var cards=result.cards; + trigger.target.$giveAuto(cards,player) + player.gain(cards); + } + else trigger.directHit=true; + game.delay(); + }, + }, + //变权移植 + wanwei:{ + trigger:{target:['rewriteGainResult','rewriteDiscardResult']}, + direct:true, + filter:function(event,player){ + return event.player!=player; + }, + audio:2, + content:function(){ + 'step 0' + var prompt='即将失去'+get.translation(trigger.result.cards)+',是否发动【挽危】?'; + var next=player.choosePlayerCard(player,prompt,trigger.position); + next.set('ai',function(button){ + return 20-get.value(button.link); + }); + next.filterButton=trigger.filterButton; + next.selectButton=trigger.result.cards.length; + 'step 1' + if(result.bool){ + player.logSkill('wanwei'); + trigger.result.cards=result.links.slice(0); + trigger.result.links=result.links.slice(0); + trigger.cards=result.links.slice(0); + trigger.untrigger(); + } + } + }, + yuejian:{ + trigger:{global:'phaseDiscardBegin'}, + audio:2, + filter:function(event,player){ + return event.player.countUsed()0&&event.player.needsToDiscard(); + }, + subSkill:{ + num:{ + mod:{ + maxHandcard:function(player,num){ + return num+player.maxHp; + } + } + }, + } + }, + gzjili:{ + subSkill:{ + count:{ + trigger:{player:['useCard','respond']}, + silent:true, + priority:1, + content:function(){ + player.storage.gzjili++; + } + }, + init:{ + trigger:{global:'phaseBefore'}, + silent:true, + content:function(){ + player.storage.gzjili=0; + } + } + }, + group:['gzjili_count','gzjili_init'], + trigger:{player:['useCard','respond']}, + frequent:true, + filter:function(event,player){ + return player.storage.gzjili==player.getAttackRange(); + }, + audio:2, + content:function(){ + player.draw(player.getAttackRange()); + }, + ai:{ + threaten:1.8 + } + }, + xiongsuan:{ + limited:true, + enable:'phaseUse', + filterCard:true, + filter:function(event,player){ + return player.countCards('h'); + }, + check:function(card){ + return 7-get.value(card); + }, + filterTarget:true, + content:function(){ + 'step 0' + player.awakenSkill('xiongsuan'); + target.damage('nocard'); + 'step 1' + player.draw(3); + var list=[]; + var skills=target.getOriginalSkills(); + for(var i=0;i1){ + player.chooseControl(list).set('prompt','选择一个限定技在回合结束后重置之'); + } + else{ + event.finish(); + } + 'step 2' + target.storage.xiongsuan_restore=result.control; + target.addTempSkill('xiongsuan_restore','phaseBegin'); + }, + subSkill:{ + restore:{ + trigger:{global:'phaseAfter'}, + silent:true, + content:function(){ + player.restoreSkill(player.storage.xiongsuan_restore); + } + } + }, + ai:{ + order:4, + damage:true, + result:{ + target:function(player,target){ + if(target.hp>1){ + var skills=target.getOriginalSkills(); + for(var i=0;i0) return 10; + if(target.hp>=4) return 5; + if(target.hp==3){ + if(player.countCards('h')<=2&&game.hasPlayer(function(current){ + return current.hp<=1&&get.attitude(player,current)<0; + })){ + return 3; + } + } + return 0; + } + } + } + }, + diancai:{ + group:['diancai_count','diancai_init'], + audio:2, + trigger:{global:'phaseUseEnd'}, + filter:function(event,player){ + return _status.currentPhase!=player&&player.storage.diancai>=player.hp; + }, + content:function(){ + 'step 0' + var num=player.maxHp-player.countCards('h'); + if(num>0){ + player.draw(num); + } + }, + subSkill:{ + init:{ + trigger:{global:'phaseUseBegin'}, + filter:function(event,player){ + return _status.currentPhase!=player; + }, + silent:true, + content:function(){ + player.storage.diancai=0; + } + }, + count:{ + trigger:{player:'loseEnd'}, + silent:true, + filter:function(event,player){ + return _status.currentPhase!=player; + }, + content:function(){ + player.storage.diancai+=trigger.cards.length; + } + } + } + }, + diaodu:{ + audio:2, + group:"diaodu_use", + subfrequent:['use'], + subSkill:{ + use:{ + trigger:{ + player:"useCard", + }, + audio:"diaodu", + frequent:true, + prompt:'是否发动【调度】摸一张牌?', + filter:function (event,player){ + return get.type(event.card)=='equip' + }, + content:function (){ + player.draw('nodelay'); + }, + ai:{ + reverseEquip:true, + effect:{ + target:function (card,player,target,current){ + if(get.type(card)=='equip') return [1,3]; + }, + }, + }, + }, + }, + trigger:{ + player:"phaseUseBegin", + }, + filter:function (event,player){ + return game.hasPlayer(function(current){ + return current!=player&¤t.countGainableCards(player,'e')>0; + }); + }, + direct:true, + content:function (){ + 'step 0' + player.chooseTarget(get.prompt2('diaodu'),function(card,player,current){ + return current!=player&¤t.countGainableCards(player,'e')>0; + }).ai=function(target){ + var num=get.attitude(_status.event.player,target); + if(target.isDamaged()&&target.getEquip('baiyin')&&att>0) return 2*num + return -num; + }; + 'step 1' + if(result.bool){ + event.target1=result.targets[0]; + player.logSkill('diaodu',event.target1); + player.line(event.target1,'diaodu'); + player.gainPlayerCard(event.target1,'e',true); + } + else event.finish(); + 'step 2' + if(result.bool){ + event.card=result.cards[0]; + player.chooseTarget('是否将'+get.translation(event.card)+'交给一名其他角色?',function(card,player,current){ + return current!=player&¤t!=event.target1; + }); + } + else event.finish(); + 'step 3' + if(result.bool){ + var target=result.targets[0]; + player.line(target,'green'); + target.gain(card,player) + player.$give(card,target); + } + }, + }, + zhengbi:{ + trigger:{player:'phaseUseBegin'}, + filter:function(event,player){ + //if(event.player!=player) return false; + return game.hasPlayer(function(current){return current!=player&¤t.isHealthy()})||player.countCards('h',{type:'basic'}); + }, + content:function(){ + 'step 0' + var choices=[]; + if(game.hasPlayer(function(current){return current.isHealthy()})) choices.push('选择一名未受伤的角色'); + if(player.countCards('h',{type:'basic'})) choices.push('交给一名角色一张基本牌'); + player.chooseControl(choices,ui.create.dialog('征辟

选择一项
','hidden')).set('ai',function(){ + if(choices.length>1){ + return 1; + } + return 0; + }); + 'step 1' + if(result.control=='选择一名未受伤的角色') player.chooseTarget('征辟

选择一名未受伤的角色,你对其使用牌没有次数和距离限制直到回合结束
',function(card,player,target){ + return target!=player&&target.isHealthy(); + },true); + else player.chooseCardTarget({ + prompt:'征辟

交给一名其他角色一张基本牌,然后该角色交给你一张非基本牌或两张基本牌
', + position:'h', + filterCard:function(card){return get.type(card)=='basic'}, + filterTarget:function(card,player,target){ + return target!=player; + }, + ai1:function(card){return 7-get.value(card)}, + //ai2:function(card,player,target){} + }).set('forced',true); + 'step 2' + event.target=result.targets[0]; + player.line(result.targets,'green'); + if(result.cards.length){ + event.cards=result.cards; + result.targets[0].gain(result.cards,player); + player.$give(result.cards,result.targets[0]); + } + else{ + player.storage.zhengbi_eff1=result.targets[0]; + player.addTempSkill('zhengbi_eff1'); + event.finish(); + } + 'step 3' + var choices=[]; + if(target.countCards('he',{type:['trick','delay','equip']})) choices.push('一张非基本牌'); + if(target.countCards('h',{type:'basic'})>1) choices.push('两张基本牌'); + if(choices.length) target.chooseControl(choices,ui.create.dialog('征辟

交给'+get.translation(player)+'
')).set('ai',function(event,player){ + if(choices.length>1){ + if(player.countCards('he',{type:['trick','delay','equip']},function(card){return get.value(card)<7})) return 0; + return 1; + } + return 0; + }); + else{ + if(target.countCards('h')){ + var cards=target.getCards('h'); + player.gain(cards,target); + target.$giveAuto(cards,player); + event.finish(); + } + else event.finish(); + } + 'step 4' + var check=(result.control=='一张非基本牌'); + target.chooseCard('he',(check?1:2),{type:(check?['trick','delay','equip']:'basic')},true); + 'step 5' + if(result.cards){ + player.gain(result.cards,target); + target.$giveAuto(result.cards,player); + } + }, + subSkill:{ + eff1:{ + sub:true, + mod:{ + targetInRange:function (card,player,target){ + if(target==player.storage.zhengbi_eff1) return true; + }, + cardUsable:function (card,player,num){ + if(typeof num=='number'&&player.storage.zhengbi_eff1.isAlive()) return num+100; + }, + playerEnabled:function (card,player,target){ + if(player.storage.zhengbi_eff1.isAlive()&&target!=player.storage.zhengbi_eff1){ + var num=player.getCardUsable(card)-100; + if(num<=0) return false; + } + }, + }, + onremove:true, + }, + eff2:{sub:true}, + } + }, + fengying:{ + limited:true, + enable:'phaseUse', + position:'h', + filterCard:true, + selectCard:-1, + filter:function(event,player){ + return !player.storage.fengying&&player.countCards('h')>0; + }, + filterTarget:function(card,player,target){ + return target==player; + }, + selectTarget:-1, + discard:false, + lose:false, + content:function(){ + 'step 0' + player.awakenSkill('fengying'); + player.storage.fengying=true; + player.insertPhase(); + var evt=_status.event.getParent('phaseUse'); + if(evt&&evt.name=='phaseUse'){ + evt.skipped=true; + } + 'step 1' + var cards=player.getCards('h'); + player.discard(cards); + player.chooseTarget('请选择至多'+cards.length+'名角色,令这些角色将手牌摸至手牌上限。',[1,cards.length],function(card,player,target){ + return target.countCards('h')2){ + return Math.min(5,target.maxHp)-target.countCards('h'); + } + return att/3; + }); + 'step 2' + if(result.bool){ + var list=result.targets; + list.sort(lib.sort.seat); + player.line(list,'thunder'); + game.asyncDraw(list,function(current){ + return current.maxHp-current.countCards('h'); + }); + } + }, + skillAnimation:'epic', + animationColor:'water', + ai:{ + order:0.1, + result:{ + player:0, + } + }, + }, //新服曹笨 - xinshanjia:{ group:["xinshanjia_count"], subSkill:{ @@ -1087,7 +1614,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ if(player.hasSkill('liuli')) return false; return lib.skill.liuli.filter(event,player); }, - audio:"ext:新•界限突破:2", + audio:"liuli", trigger:{ target:"shaBefore", }, @@ -2089,6 +2616,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){ sptunjiang:{ trigger:{player:'phaseUseBegin'}, silent:true, + locked:false, + subfrequent:['end'], content:function(){ player.addTempSkill('sptunjiang_count'); player.addTempSkill('sptunjiang_end'); @@ -2115,6 +2644,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ end:{ trigger:{player:'phaseEnd'}, frequent:true, + prompt2:'结束阶段,若你未跳过本回合的出牌阶段,且你于本回合出牌阶段内未使用牌指定过其他角色为目标,则你可以摸X张牌(X为全场势力数)。', filter:function(event,player){ return !player.hasSkill('sptunjiang_used'); }, @@ -2126,6 +2656,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, baijia:{ unique:true, + juexingji:true, ai:{ combo:'guju' }, @@ -2646,7 +3177,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ } }, xianfu:{ - trigger:{global:'gameStart',player:'enterGame'}, + trigger:{global:'gameDrawAfter'}, forced:true, filter:function(){ return game.players.length>1; @@ -2664,15 +3195,16 @@ game.import('character',function(lib,game,ui,get,ai,_status){ 'step 1' if(result.bool){ var target=result.targets[0]; - player.line(target,'green'); - game.log(target,'成为了','【先辅】','的目标'); + //player.line(target,'green'); + //game.log(target,'成为了','【先辅】','的目标'); target.storage.xianfu2=player; target.addSkill('xianfu2'); } } }, xianfu2:{ - mark:'character', + //mark:'character', + marktext:'辅', intro:{ content:'当你受到伤害后,$受到等量的伤害,当你回复体力后,$回复等量的体力' }, @@ -2681,12 +3213,15 @@ game.import('character',function(lib,game,ui,get,ai,_status){ forced:true, popup:false, filter:function(event,player){ - return player.storage.xianfu2&&player.storage.xianfu2.isIn()&&event.num>0; + if(!(player.storage.xianfu2&&player.storage.xianfu2.isIn()&&event.num>0)) return false; + if(event.name=='damage') return true; + return player.storage.xianfu2.isDamaged(); }, content:function(){ 'step 0' game.delayx(); 'step 1' + player.markSkill('xianfu2'); var target=player.storage.xianfu2; player.line(target,'green'); target.logSkill('xianfu'); @@ -2716,7 +3251,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ 'step 2' event.color=result.color; if(event.color=='black'){ - player.chooseTarget('弃置一名角色区域内的一张牌',true,function(card,player,target){ + player.chooseTarget('弃置一名角色区域内的一张牌',function(card,player,target){ return target.countCards('hej'); }).set('ai',function(target){ var player=_status.event.player; @@ -2731,7 +3266,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }) } else{ - var next=player.chooseTarget('令一名角色摸一张牌',true); + var next=player.chooseTarget('令一名角色摸一张牌'); var xianfu=game.findPlayer(function(current){ return current.hasSkill('xianfu2')&¤t.storage.xianfu2==player; }); @@ -2754,6 +3289,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ } else{ if(target.hasSkill('xianfu2')&&target.storage.xianfu2==player){ + target.markSkill('xianfu2'); target.draw(2); } else{ @@ -2763,13 +3299,14 @@ game.import('character',function(lib,game,ui,get,ai,_status){ } 'step 4' if(--event.num>0){ - player.chooseBool('是否再次发动【筹策】?'); + player.chooseBool(get.prompt2('chouce')); } else{ event.finish(); } 'step 5' if(result.bool){ + player.logSkill('chouce'); event.goto(1); } }, @@ -3010,6 +3547,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ content:'已造成#点伤害' }, unique:true, + juexingji:true, content:function(){ player.storage.moucheng+=trigger.num; if(player.hasSkill('moucheng')){ @@ -4308,6 +4846,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ fuhan:{ trigger:{player:'phaseBefore'}, unique:true, + limited:true, skillAnimation:true, forceunique:true, filter:function(event,player){ @@ -4472,6 +5011,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, skillAnimation:true, unique:true, + juexingji:true, content:function(){ 'step 0' player.awakenSkill('yjixi'); @@ -4883,6 +5423,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ shichou:{ skillAnimation:true, unique:true, + limited:true, enable:'phaseUse', zhuSkill:true, filter:function(event,player){ @@ -5403,6 +5944,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, jianshu:{ unique:true, + limited:true, enable:'phaseUse', animationColor:'thunder', skillAnimation:'epic', @@ -5465,8 +6007,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, yongdi:{ unique:true, + limited:true, trigger:{player:'damageEnd'}, - animationColor:'fire', + animationColor:'thunder', skillAnimation:'legend', filter:function(event,player){ return !player.storage.yongdi; @@ -6274,10 +6817,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }).set('ai',function(card){ if(card.name=='bagua') return 10; return 7-get.value(card); - }); + }).logSkill='jiqiao'; 'step 1' if(result.bool){ - player.logSkill('jiqiao'); event.cards=get.cards(3*result.cards.length); player.showCards(event.cards); } @@ -7461,6 +8003,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ trigger:{player:'phaseBegin'}, forced:true, unique:true, + juexingji:true, audio:2, skillAnimation:true, animationColor:'fire', @@ -7510,6 +8053,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){ skillAnimation:true, trigger:{player:'phaseBegin'}, forced:true, + unique:true, + juexingji:true, filter:function(event,player){ return !player.storage.danji&&player.countCards('h')>player.hp; }, @@ -8596,6 +9141,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ fengliang:{ skillAnimation:true, unique:true, + juexingji:true, audio:2, derivation:'tiaoxin', trigger:{player:'dying'}, @@ -9384,6 +9930,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ animationColor:'fire', audio:2, unique:true, + juexingji:true, forceunique:true, derivation:'xiaoji', trigger:{player:'phaseBegin'}, @@ -9904,6 +10451,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ unique:true, enable:'phaseUse', mark:true, + limited:true, derivation:'yongjue', filter:function(event,player){ return !player.storage.cunsi&&player.countCards('h')&&!player.isTurnedOver(); @@ -10515,7 +11063,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ game.delay(); } 'step 2' - targets[0].damage('fire'); + targets[0].damage('fire','nocard'); }, ai:{ damage:true, @@ -10721,7 +11269,11 @@ game.import('character',function(lib,game,ui,get,ai,_status){ } if(get.is.versus()){ event.versus=true; - player.chooseBool(get.prompt('hongyuan')); + player.chooseBool(get.prompt('hongyuan')).ai=function(){ + return game.countPlayer(function(current){ + return player.side==current.side; + })>2; + }; } else{ player.chooseTarget(get.prompt('hongyuan'),[1,2],function(card,player,target){ @@ -10880,7 +11432,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ content:function(){ "step 0" player.addSkill('duwu3'); - target.damage(); + target.damage('nocard'); "step 1" if(!player.hasSkill('duwu3')){ player.addSkill('duwu2'); @@ -11444,6 +11996,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, forced:true, unique:true, + juexingji:true, content:function(){ var num=player.maxHp-player.countCards('h'); if(num>0){ @@ -11548,6 +12101,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ mark:true, direct:true, unique:true, + limited:true, content:function(){ "step 0" var check=(player.hp==1||(player.hp==2&&player.countCards('h')<=1)); @@ -11616,12 +12170,12 @@ game.import('character',function(lib,game,ui,get,ai,_status){ mizhu:'糜竺', buzhi:'步骘', chenlin:'陈琳', - yuanshu:'袁术', + yuanshu:'SP袁术', gongsunzan:'公孙瓒', - sp_diaochan:'sp貂蝉', + sp_diaochan:'SP貂蝉', yangxiu:'杨修', - sp_zhaoyun:'sp赵云', - jsp_zhaoyun:'界sp赵云', + sp_zhaoyun:'SP赵云', + jsp_zhaoyun:'☆SP赵云', caohong:'曹洪', liuxie:'刘协', xiahouba:'夏侯霸', @@ -11633,13 +12187,13 @@ game.import('character',function(lib,game,ui,get,ai,_status){ chengyu:'程昱', simalang:'司马朗', tianfeng:'田丰', - sp_pangtong:'sp庞统', - sp_jiaxu:'sp贾诩', + sp_pangtong:'SP庞统', + sp_jiaxu:'SP贾诩', maliang:'马良', - sp_caoren:'sp曹仁', + sp_caoren:'SP曹仁', yuejin:'乐进', mifuren:'糜夫人', - sp_dongzhuo:'sp董卓', + sp_dongzhuo:'SP董卓', chendong:'陈武董袭', jiangfei:'蒋琬费祎', jiangqing:'蒋钦', @@ -11649,11 +12203,11 @@ game.import('character',function(lib,game,ui,get,ai,_status){ caoang:'曹昂', kongrong:'孔融', fuwan:'伏完', - sp_pangde:'sp庞德', + sp_pangde:'SP庞德', sp_sunshangxiang:'孙尚香', zhugedan:'诸葛诞', - sp_machao:'sp马超', - sp_jiangwei:'sp姜维', + sp_machao:'SP马超', + sp_jiangwei:'SP姜维', zhangbao:'张宝', yangxiou:'杨修', shixie:'士燮', @@ -11661,33 +12215,33 @@ game.import('character',function(lib,game,ui,get,ai,_status){ zhanglu:'张鲁', wutugu:'兀突骨', mateng:'马腾', - sp_caiwenji:'sp蔡文姬', + sp_caiwenji:'SP蔡文姬', zhugeguo:'诸葛果', liuzan:'留赞', lingcao:'凌操', sunru:'孙茹', lingju:'灵雎', lifeng:'李丰', - jsp_guanyu:'sp关羽', + jsp_guanyu:'SP关羽', zhuling:'朱灵', sunluyu:'孙鲁育', hanba:'旱魃', panfeng:'潘凤', zumao:'祖茂', daxiaoqiao:'大小乔', - sp_daqiao:'sp大乔', - sp_ganning:'sp甘宁', - sp_zhangfei:'sp张飞', - sp_xiahoudun:'sp夏侯惇', + sp_daqiao:'☆SP大乔', + sp_ganning:'☆SP甘宁', + sp_zhangfei:'☆SP张飞', + sp_xiahoudun:'☆SP夏侯惇', cuiyan:'崔琰', wenpin:'文聘', - jsp_huangyueying:'sp黄月英', - sp_lvmeng:'sp吕蒙', + jsp_huangyueying:'SP黄月英', + sp_lvmeng:'☆SP吕蒙', guansuo:'关索', tadun:'蹋顿', yanbaihu:'严白虎', wanglang:'王朗', - sp_liubei:'sp刘备', + sp_liubei:'☆SP刘备', caochun:'曹纯', dongbai:'董白', zhaoxiang:'赵襄', @@ -11707,6 +12261,12 @@ game.import('character',function(lib,game,ui,get,ai,_status){ luzhi:'鲁芝', sp_liuqi:'刘琦', huangjinleishi:'黄巾雷使', + bianfuren:'卞夫人', + shamoke:'沙摩柯', + lvfan:'吕范', + liqueguosi:'李傕郭汜', + cuimao:'崔琰毛玠', + kaisa:"凯撒", lijue:"李傕", zhangji:"张济", @@ -11719,7 +12279,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ simahui:"司马徽", baosanniang:"鲍三娘", xurong:"徐荣", - sp_xiahoushi:"sp夏侯氏", + sp_xiahoushi:"SP夏侯氏", zhangqiying:"张琪瑛", xf_tangzi:"唐咨", xf_huangquan:"黄权", @@ -11750,6 +12310,12 @@ game.import('character',function(lib,game,ui,get,ai,_status){ "new_luoyan_liuli_info":"", ol_shichou:"誓仇", ol_shichou_info:"当你使用【杀】时,你可以令至多X名角色也成为此【杀】的目标。(X为你已损失的体力值)", + "zhenwei_three":"镇卫", + "zhenwei_three_info":"锁定技,敌方角色至己方其他角色的距离+1。", + "huanshi_three":"缓释", + "huanshi_three_info":"一名友方角色的判定牌生效前,你可打出一张牌代替之。", + zhengfu:"征服", + "zhengfu_info":"当你使用【杀】指定目标时,你可以选择一种牌的类别,然后除非目标角色交给你一种该类别的牌,否则其不能闪避此【杀】。", yizan:"翊赞", yizan_info:"你可以将两张牌(其中至少一张是基本牌)当任意基本牌牌使用", @@ -11773,6 +12339,24 @@ game.import('character',function(lib,game,ui,get,ai,_status){ zhennan_info:"当你成为【南蛮入侵】的目标时,你可令一名其他角色随机受到一至三点伤害", xushen:"许身", xushen_info:"当其他男性角色令你脱离濒死状态时,若“关索”不在场,其可以选择是否用“关索”替换其武将牌,然后你回复一点体力并获得技能【镇南】", + + wanwei:'挽危', + wanwei_info:'当你因被其他角色获得或弃置而失去牌时,你可以改为自己选择失去的牌', + yuejian:'约俭', + yuejian_info:'一名角色的弃牌阶段开始时,若其本回合内使用过的牌数小于X,则你可以令其本回合的手牌上限+X。(X为其的体力上限)', + gzjili:'蒺藜', + gzjili_info:'当你于一回合内使用或打出第X张牌时,你可以摸X张牌(X为你的攻击范围)。', + xiongsuan:'凶算', + xiongsuan_info:'限定技,出牌阶段,你可以弃置一张手牌并选择一名角色,对其造成1点伤害,然后你摸三张牌。若该角色有已发动的限定技,则你选择其中一个限定技,此回合结束后视为该限定技未发动过。', + diaodu:"调度", + diaodu_info:"当你使用装备牌时,你可以摸一张牌;出牌阶段开始时,你可以获得一名其他角色装备区里的一张牌,然后你可以将此牌交给另一名角色。", + diancai:'典财', + diancai_info:'其他角色的出牌阶段结束时,若你于此阶段失去了x张或更多的牌,则你可以将手牌摸至体力上限。', + zhengbi:'征辟', + zhengbi_info:'出牌阶段开始时,你可以选择一项:选择一名未受伤的其他角色,你对其使用的牌无距离限制且不计入使用次数直到回合结束;或将一张基本牌交给一名其他角色,然后其交给你一张非基本牌或两张基本牌。', + fengying:'奉迎', + fengying_info:'限定技,出牌阶段,你可以弃置所有手牌。若如此做,你可以令等量的角色将手牌摸至X张(X为其手牌上限且至多为5)。然后,你结束出牌阶段,并在当前回合结束后进行一个新的回合。', + qingzhong:'清忠', qingzhong_info:'出牌阶段开始时,你可以摸两张牌,若如此做,本阶段结束时,你与手牌数最少的角色交换手牌。', weijing:'卫境', @@ -12086,7 +12670,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ aocai3:'傲才', huxiao:'虎啸', huxiao3:'虎啸', - xueji:'血祭', + xueji:'雪恨', wuji:'武继', shushen:'淑慎', shenzhi:'神智', diff --git a/character/xinghuoliaoyuan.js b/character/xinghuoliaoyuan.js index 7b447c314..75f2a5283 100755 --- a/character/xinghuoliaoyuan.js +++ b/character/xinghuoliaoyuan.js @@ -1165,7 +1165,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ reality[get.type(he[i],'trick')]=true; } event.num=0; - var tl=['basic','trick','delay']; + var tl=['basic','trick','equip']; for(var i=0;i0 + trigger:{global:'die'}, + priority:5, + filter:function(event){ + if(!event.playerCards||!event.playerCards.length) return false; + for(var i=0;i0&&event.source.isHealthy()){ @@ -1998,7 +1998,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ var trigger=_status.event.getTrigger(); var player=_status.event.player; if(trigger.targets.contains(target)) return false; - return lib.filter.targetEnabled2(trigger.card,player,target)&&lib.filter.targetInRange(trigger.card,player,target); + return lib.filter.targetEnabled2(trigger.card,player,target); }).set('prompt2',prompt2).set('ai',function(target){ var trigger=_status.event.getTrigger(); var player=_status.event.player; @@ -3422,6 +3422,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ return player!=target; }, unique:true, + limited:true, selectTarget:-1, multitarget:true, multiline:true, @@ -5018,7 +5019,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ clone.delete(); } },event.card1); - target.damage(); + target.damage('nocard'); } else if(name1!='sha'&&event.card2.name=='shan'){ player.discard(event.card1).set('animate',false); @@ -5162,7 +5163,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ var players=game.filterPlayer(); for(var i=0;i1&&(nh>=4||(nh>=3&&players[i].countCards('h','sha')))){ + if(player!=players[i]&&players[i].group=='shu'&&get.attitude(players[i],player)>2&&(nh>=3&&players[i].countCards('h','sha'))){ yep=true;break; } } @@ -5234,7 +5235,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ var player=_status.event.player,players=game.filterPlayer(); for(var i=0;i1&&(nh>=4||(nh>=3&&players[i].countCards('h','sha')))){ + if(players[i]!=player&&players[i].group=='shu'&&get.attitude(players[i],player)>2&&(nh>=3&&players[i].countCards('h','sha'))){ return 5-get.value(card); } } @@ -5644,6 +5645,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ content:'limited' }, unique:true, + limited:true, content:function(){ 'step 0' player.storage.xingshuai=true; @@ -6097,6 +6099,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ return player!=target; }, unique:true, + limited:true, selectTarget:-1, mark:true, line:'fire', @@ -6256,6 +6259,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ skillAnimation:true, audio:2, unique:true, + limited:true, mark:true, init:function(player){ player.storage.jiefan=false; @@ -6324,6 +6328,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ skillAnimation:true, audio:2, unique:true, + limited:true, enable:'chooseToUse', init:function(player){ player.storage.fuli=false; @@ -6448,7 +6453,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ position:'he', filterCard:true, content:function(){ - target.damage(); + target.damage('nocard'); }, ai:{ result:{ @@ -6995,6 +7000,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ skillAnimation:true, audio:3, unique:true, + juexingji:true, trigger:{player:'phaseBegin'}, forced:true, filter:function(event,player){ @@ -7057,6 +7063,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ skillAnimation:true, audio:2, unique:true, + limited:true, enable:'phaseUse', filter:function(event,player){ return !player.storage.xianzhou&&player.countCards('e')>0; @@ -8349,7 +8356,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ switch(num){ case 1:player.discardPlayerCard(target,true);break; case 2:target.chooseCard('选择一张牌交给'+get.translation(player),'he',true);break; - case 3:target.damage();break; + case 3:target.damage('nocard');break; default:game.asyncDraw([player,target],2); } if(num!=2) event.finish(); @@ -8489,6 +8496,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, xuanfeng:{ audio:2, + audioname:['boss_lvbu3'], trigger:{player:['loseEnd','phaseDiscardEnd']}, direct:true, filter:function(event,player){ @@ -9718,7 +9726,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){ qinmi:'秦宓', caiyong:'蔡邕', "re_yujin":"于禁", - "re_jikang":"新嵇康", "new_qingxian":"清弦", "new_qingxian_info":"出牌阶段限一次,你可以弃置至多X张牌并选择等量的其他角色。这些角色中,装备区内牌数少于你的回复1点体力,等于你的摸一张牌,多于你的失去1点体力。若你以此法指定的角色数等于X,则你摸一张牌。(X为你的体力值)", diff --git a/character/yxs.js b/character/yxs.js index 8935f8fe4..413179532 100644 --- a/character/yxs.js +++ b/character/yxs.js @@ -48,6 +48,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ yxs_lanlinwang:['male','shu',4,['guimian','lyuxue']], }, characterIntro:{ + yxs_qinqiong:'秦琼(?—638年),字叔宝,齐州历城(今山东济南市)人,隋末唐初名将。初为隋将,先后在来护儿、张须陀、裴仁基帐下任职,因勇武过人而远近闻名。后随裴仁基投奔瓦岗军领袖李密,瓦岗败亡后转投王世充,因见王世充为人奸诈,与程咬金等人一起投奔李唐。投唐后随李世民南征北战,是一个能在万马军中取敌将首级的勇将,但也因此浑身是伤。唐统一后,秦琼久病缠身,于贞观十二年(638)病逝。生前官至左武卫大将军、翼国公,死后追赠为徐州都督、胡国公,谥曰“壮”。贞观十七年被列入凌烟阁二十四功臣。', yxs_wuzetian:'中国历史上唯一一个正统的女皇帝,也是继位年龄最大的皇帝(67岁即位),又是寿命最长的皇帝之一(终年82岁)。唐高宗时为皇后(655—683)、唐中宗和唐睿宗时为皇太后(683—690),后自立为武周皇帝(690—705),改国号“唐”为“周”,定都洛阳,并号其为“神都”。史称“武周”或“南周”,705年退位。武则天也是一位女诗人和政治家。', yxs_caocao:' 曹操(155年7月18日-220年3月15日),字孟德,一名吉利,小字阿瞒,汉族,沛国谯(今安徽省亳州市)人。曹操生于宦官之家,适逢乱世,但是胸怀大志,参与剿灭董卓战争,之后在官渡大败袁绍,占据北方,挟天子以令诸侯。最后兵败赤壁,与吴,蜀三分天下。', yxs_mozi:' 宋国大夫,名翟,鲁人(今山东滕州人)。墨子是我国战国时期著名的思想家、教育家、科学家、军事家、社会活动家,墨家学派的创始人。墨子曾阻止鲁阳文君攻郑,说服公输般而止楚攻宋。楚惠王打算以书社封墨子,越王也打算以吴之地方五百里以封墨子,但墨子都没有接受。其创立墨家学说,并有《墨子》一书传世。', @@ -57,7 +58,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ yxs_yangyuhuan:'唐朝贵妃,名玉环,字太真,蒲州永乐人(今山西永济)。杨玉环自小习音律,善歌舞,姿色超群。27岁时,得唐玄宗宠幸,召入宫中,封为贵妃。杨贵妃天生丽质,回眸一笑百媚生,六宫粉黛无颜色,堪称大唐第一美女,此后千余年无出其右者。其与西施、昭君、貂蝉并称中国古代四大美女。', yxs_baosi:'褒姒,周幽王姬宫涅的王后,褒姒原是一名弃婴,被一对做小买卖的夫妻收养,在褒国(今陕西省汉中西北)长大,公元前七七九年(周幽王三年),周幽王征伐有褒国,褒人献出美女褒姒乞降,幽王爱如掌上明珠,立为妃,宠冠周王宫,翌年,褒姒生子伯服(一作伯般),幽王对她更加宠爱,竟废去王后申氏和太子宜臼,册立褒姒为王后,立伯服为太子,周太史伯阳叹气道:“周王室已面临大祸,这是不可避免的了。”', yxs_napolun:'法兰西第一共和国执政、法兰西第一帝国皇帝,出生在法国科西嘉岛,是一位卓越的军事天才。他多次击败保王党的反扑和反法同盟的入侵,捍卫了法国大革命的成果。他颁布的《民法典》更是成为了后世资本主义国家的立法蓝本。他执政期间多次对外扩张,形成了庞大的帝国体系,创造了一系列军事奇迹。', - yxs_kaisa:'凯撒是罗马共和国末期杰出的军事统帅、政治家。他公元前60年与庞培、克拉苏秘密结成前三巨头同盟,随后出任高卢总督,在大约8年的时间内征服了高卢全境(今法国一带),还袭击了日耳曼和不列颠。前49年,他率军占领罗马,打败庞培,集大权于一身,实行独裁统治并制定了《儒略历》。', + kaisa:'凯撒是罗马共和国末期杰出的军事统帅、政治家。他公元前60年与庞培、克拉苏秘密结成前三巨头同盟,随后出任高卢总督,在大约8年的时间内征服了高卢全境(今法国一带),还袭击了日耳曼和不列颠。前49年,他率军占领罗马,打败庞培,集大权于一身,实行独裁统治并制定了《儒略历》。', yxs_zhuyuanzhang:' 朱元璋,明王朝的开国皇帝。原名重八,后取名兴宗。汉族,濠州(今安徽凤阳县东)钟离太平乡人。朱元璋自幼贫寒,父母兄长均死于瘟疫,孤苦无依,入皇觉寺为小沙弥,入寺不到二个月,因荒年寺租难收,寺主封仓遣散众僧,只得离乡为游方僧,后参加了起义军,并改名“朱元璋”意为诛(朱)灭元朝的璋(璋,古代的一种玉器)。25岁时参加郭子兴领导的红巾军反抗蒙元暴政,在郭子兴手下,率兵出征,有攻必克;因此郭便把养女马氏嫁与了他。元至正二十八年(1368),在基本击破各路农民起义军和扫平元的残余势力后,于南京称帝,国号大明,年号洪武,建立了全国统一的封建政权。朱元璋统治时期被称为“洪武之治”。葬于明孝陵。', yxs_jinke:'荆轲,喜好读书击剑,为人慷慨侠义。后游历到燕国,被称为“荆卿”(或荆叔),随之由燕国智勇深沉的“节侠”田光推荐给太子丹,拜为上卿。秦国灭赵后,兵锋直指燕国南界,太子丹震惧,与田光密谋,决定派荆轲入秦行刺秦王。荆轲献计太子丹,拟以秦国叛将樊于期之头及燕督亢(今河北涿县、易县、固安一带,是一块肥沃的土地)地图进献秦王,相机行刺。太子丹不忍杀樊于期,荆轲只好私见樊于期,告以实情,樊于期为成全荆轲而自刎。', yxs_libai:'字太白,号青莲居士,又号“谪仙人”,祖籍陇西郡成纪县(今甘肃省平凉市静宁县南)。李白是唐朝著名的浪漫主义诗人,有“诗仙”之称。李白生平作诗无数,存世诗文达千余篇之多,《蜀道难》、《行路难》、《梦游天姥吟留别》、《将进酒》等诗篇脍炙人口,妇孺皆知,另有《李太白集》传世。',