diff --git a/audio/die/key_shiki.mp3 b/audio/die/key_shiki.mp3 new file mode 100644 index 000000000..846c64a30 Binary files /dev/null and b/audio/die/key_shiki.mp3 differ diff --git a/audio/die/leitong.mp3 b/audio/die/leitong.mp3 new file mode 100644 index 000000000..ad798510e Binary files /dev/null and b/audio/die/leitong.mp3 differ diff --git a/audio/die/sp_sufei.mp3 b/audio/die/sp_sufei.mp3 new file mode 100644 index 000000000..22ea430b5 Binary files /dev/null and b/audio/die/sp_sufei.mp3 differ diff --git a/audio/die/wulan.mp3 b/audio/die/wulan.mp3 new file mode 100644 index 000000000..a241886f3 Binary files /dev/null and b/audio/die/wulan.mp3 differ diff --git a/audio/skill/gaoyuan1.mp3 b/audio/skill/gaoyuan1.mp3 new file mode 100644 index 000000000..056d900a4 Binary files /dev/null and b/audio/skill/gaoyuan1.mp3 differ diff --git a/audio/skill/gaoyuan2.mp3 b/audio/skill/gaoyuan2.mp3 new file mode 100644 index 000000000..f2a738543 Binary files /dev/null and b/audio/skill/gaoyuan2.mp3 differ diff --git a/audio/skill/kuiji1.mp3 b/audio/skill/kuiji1.mp3 new file mode 100644 index 000000000..b9cf7e756 Binary files /dev/null and b/audio/skill/kuiji1.mp3 differ diff --git a/audio/skill/kuiji2.mp3 b/audio/skill/kuiji2.mp3 new file mode 100644 index 000000000..a4e5f2b0f Binary files /dev/null and b/audio/skill/kuiji2.mp3 differ diff --git a/audio/skill/shiki_omusubi1.mp3 b/audio/skill/shiki_omusubi1.mp3 new file mode 100644 index 000000000..7b8c03720 Binary files /dev/null and b/audio/skill/shiki_omusubi1.mp3 differ diff --git a/audio/skill/shiki_omusubi2.mp3 b/audio/skill/shiki_omusubi2.mp3 new file mode 100644 index 000000000..3b3a48192 Binary files /dev/null and b/audio/skill/shiki_omusubi2.mp3 differ diff --git a/audio/skill/wlcuorui1.mp3 b/audio/skill/wlcuorui1.mp3 new file mode 100644 index 000000000..e3c95a6f7 Binary files /dev/null and b/audio/skill/wlcuorui1.mp3 differ diff --git a/audio/skill/wlcuorui2.mp3 b/audio/skill/wlcuorui2.mp3 new file mode 100644 index 000000000..3f5220c14 Binary files /dev/null and b/audio/skill/wlcuorui2.mp3 differ diff --git a/audio/skill/yuri_xingdong1.mp3 b/audio/skill/yuri_xingdong1.mp3 new file mode 100644 index 000000000..ac40b68e0 Binary files /dev/null and b/audio/skill/yuri_xingdong1.mp3 differ diff --git a/audio/skill/yuri_xingdong2.mp3 b/audio/skill/yuri_xingdong2.mp3 new file mode 100644 index 000000000..07d5b2c9d Binary files /dev/null and b/audio/skill/yuri_xingdong2.mp3 differ diff --git a/audio/skill/zhengjian1.mp3 b/audio/skill/zhengjian1.mp3 new file mode 100644 index 000000000..5e6596a09 Binary files /dev/null and b/audio/skill/zhengjian1.mp3 differ diff --git a/audio/skill/zhengjian2.mp3 b/audio/skill/zhengjian2.mp3 new file mode 100644 index 000000000..23fd56b96 Binary files /dev/null and b/audio/skill/zhengjian2.mp3 differ diff --git a/card/extra.js b/card/extra.js index ad99bf458..5b1df0eb7 100644 --- a/card/extra.js +++ b/card/extra.js @@ -15,6 +15,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){ forceDie:true, onLose:function(){ player.unmarkSkill('muniu_skill6'); + delete player.getStat('skill').muniu_skill; if((event.getParent(2)&&event.getParent(2).name!='swapEquip')&&event.parent.type!='equip'&&card&&card.cards&&card.cards.length){ player.$throw(card.cards,1000); player.popup('muniu'); diff --git a/card/standard.js b/card/standard.js index c77c99c84..e4741bdd3 100644 --- a/card/standard.js +++ b/card/standard.js @@ -1722,12 +1722,14 @@ game.import('card',function(lib,game,ui,get,ai,_status){ direct:true, audio:true, filter:function(event,player){ - return player.countCards('he')>2&&event.target.isAlive(); + return player.countCards('he',function(card){ + return card!=player.getEquip('guanshi'); + })>=2&&event.target.isAlive(); }, content:function(){ "step 0" var next=player.chooseToDiscard(get.prompt('guanshi'),2,'he',function(card){ - return _status.event.player.getCards('e',{subtype:'equip1'}).contains(card)==false; + return _status.event.player.getEquip('guanshi')!=card; }); next.logSkill='guanshi_skill'; next.set('ai',function(card){ diff --git a/character/diy.js b/character/diy.js index a90927f1c..b81ee6d26 100755 --- a/character/diy.js +++ b/character/diy.js @@ -4548,6 +4548,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, }, yuri_xingdong:{ + audio:2, group:'yuri_xingdong_gain', subSkill:{ mark:{ @@ -5127,7 +5128,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ backup:function(links,player){ return { filterCard:function(card,player){ - return get.type(card,'trick')!='trick'&&player.canAddJudge({name:links[0][2],cards:[card]}); + return get.itemtype(card)=='card'&&get.type(card,'trick')!='trick'&&player.canAddJudge({name:links[0][2],cards:[card]}); }, filterTarget:function(card,player,target){ return player==target; @@ -10365,6 +10366,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ nszhihuang_damage:'制皇', nszhihuang_info:'每回合限一次,当主公使用牌时,你可以移去一张“威”,然后获得此牌。锁定技,若你的手牌数大于主公,则你使用牌造成的伤害+1。', + diy_wenyang:'文鸯', yj_caoang:'SP曹昂', yjxuepin:'血拼', yjxuepin_info:'出牌阶段限一次,你可以选择攻击范围内的一名角色并失去1点体力。你弃置其两张牌。若这两张牌类型相同,你回复1点体力。', diff --git a/character/extra.js b/character/extra.js index 34d0b52fe..4031c0216 100755 --- a/character/extra.js +++ b/character/extra.js @@ -47,6 +47,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, skill:{ shiki_omusubi:{ + audio:2, trigger:{global:'roundStart'}, direct:true, content:function(){ diff --git a/character/mobile.js b/character/mobile.js index cdfa2f9a3..0f1888f53 100644 --- a/character/mobile.js +++ b/character/mobile.js @@ -6,13 +6,14 @@ game.import('character',function(lib,game,ui,get,ai,_status){ connect:true, characterSort:{ mobile:{ - mobile_default:["miheng","taoqian","lingcao","sunru","lifeng","zhuling","liuye","zhaotongzhaoguang","majun","simazhao","wangyuanji","pangdegong","shenpei","hujinding","zhangyì","jiakui","yangbiao","chendeng","dongcheng","yangyi","dengzhi","zhengxuan"], + mobile_default:["miheng","taoqian","lingcao","sunru","lifeng","zhuling","liuye","zhaotongzhaoguang","majun","simazhao","wangyuanji","pangdegong","shenpei","hujinding","zhangyì","jiakui","yangbiao","chendeng","dongcheng","yangyi","dengzhi","zhengxuan","sp_sufei"], mobile_yijiang:["yj_zhanghe","yj_zhangliao","yj_xuhuang","yj_ganning"], mobile_others:["re_jikang","old_bulianshi","old_yuanshu","re_wangyun","re_baosanniang","re_weiwenzhugezhi","re_zhanggong","re_xugong","xin_yuanshao","re_liushan","xin_xiahoudun","re_sp_zhugeliang","re_heqi","re_guanqiujian","re_pangtong","old_liuzan","xin_chengpu","re_sunjian"], mobile_sunben:["re_sunben"], }, }, character:{ + sp_sufei:['male','qun',4,['zhengjian','gaoyuan']], yj_zhangliao:['male','qun',4,['weifeng']], yj_zhanghe:['male','qun',4,['xinzhilve']], yj_xuhuang:['male','qun',4,['xinxhzhiyan']], @@ -31,7 +32,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ re_sp_zhugeliang:["male","shu",3,["bazhen","rehuoji","rekanpo"],[]], xin_xiahoudun:['male','wei',4,['reganglie','xinqingjian']], zhangyì:['male','shu',4,['zhiyi']], - jiakui:['male','wei',3,['zhongzuo','wanlan']], + jiakui:['male','wei',3,['tongqu','xinwanlan']], re_jikang:["male","wei",3,["new_qingxian","new_juexiang"]], old_bulianshi:['female','wu',3,['anxu','zhuiyi']], miheng:['male','qun',3,['kuangcai','shejian']], @@ -283,6 +284,278 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, characterFilter:{}, skill:{ + //苏飞,新贾逵 + tongqu:{ + audio:'zhongzuo', + trigger:{ + global:['gameDrawAfter','damageEnd','phaseDrawBegin2'], + player:['enterGame','phaseUseBegin'], + }, + direct:true, + filter:function(event,player){ + if(event.name=='phaseDraw') return !event.numFixed&&event.player.hasMark('tongqu'); + if(event.name=='damage') return event.player.hasMark('tongqu'); + if(event.name=='phaseUse') return game.hasPlayer(function(current){ + return !current.hasMark('tongqu'); + }); + return !player.hasMark('tongqu'); + }, + content:function(){ + 'step 0' + if(trigger.name=='phaseDraw'){ + player.logSkill('tongqu',trigger.player); + trigger.num++; + trigger.player.addTempSkill('tongqu2','phaseDrawAfter'); + event.finish(); + } + else if(trigger.name=='damage'){ + player.logSkill('tongqu',trigger.player); + trigger.player.removeMark('tongqu',1); + event.finish(); + } + else if(trigger.name=='phaseUse'){ + player.chooseTarget(get.prompt2('tongqu'),function(card,player,target){ + return !target.hasMark('tongqu'); + }).set('ai',function(target){ + return get.attitude(_status.event.player,target) + }); + } + else{ + player.logSkill('tongqu'); + player.addMark('tongqu',1); + event.finish(); + } + 'step 1' + if(result.bool){ + var target=result.targets[0]; + player.logSkill('tongqu',target); + target.addMark('tongqu',1); + } + }, + marktext:'渠', + intro:{content:'mark'}, + }, + tongqu2:{ + trigger:{player:'phaseDrawEnd'}, + forced:true, + silent:false, + filter:function(event,player){ + var bool=game.hasPlayer(function(current){ + return current!=player&¤t.hasMark('tongqu'); + }); + return player.countCards('he',function(card){ + if(bool) return true; + return lib.filter.cardDiscardable(card,player); + })>0; + }, + content:function(){ + 'step 0' + player.chooseCardTarget({ + forced:true, + position:'he', + filterCard:true, + filterTarget:function(card,player,target){ + return player!=target&&target.hasMark('tongqu'); + }, + selectTarget:function(){ + if(ui.selected.cards.length&&!lib.filter.cardDiscardable(ui.selected.cards[0],_status.event.player)) return [1,1]; + return [0,1]; + }, + prompt:'弃置一张牌,或将一张牌交给一名有“渠”的其他角色', + ai1:function(card){ + var player=_status.event.player; + if(get.name(card)=='du') return 20; + if(get.position(card)=='e'&&get.value(card)<=0) return 14; + if(get.position(card)=='h'&&game.hasPlayer(function(current){ + return current!=player&¤t.hasMark('tongqu')&&get.attitude(player,current)>0&¤t.getUseValue(card)>player.getUseValue(card)&¤t.getUseValue(card)>player.getUseValue(card); + })) return 12; + if(game.hasPlayer(function(current){ + return current!=player&¤t.hasMark('tongqu')&&get.attitude(player,current)>0; + })){ + if(card.name=='wuxie') return 11; + if(card.name=='shan'&&player.countCards('h','shan')>1) return 9 + } + return 6/Math.max(1,get.value(card)); + }, + ai2:function(target){ + var player=_status.event.player; + var card=ui.selected.cards[0]; + var att=get.attitude(player,target); + if(card.name=='du') return -6*att; + if(att>0){ + if(get.position(card)=='h'&&target.getUseValue(card)>player.getUseValue(card)) return 4*att; + if(get.value(card,target)>get.value(card,player)) return 2*att; + return 1.2*att; + } + return 0; + }, + }); + 'step 1' + if(result.bool){ + if(result.targets.length) result.targets[0].gain(result.cards,player,'giveAuto'); + else player.discard(result.cards); + } + }, + }, + xinwanlan:{ + audio:'wanlan', + trigger:{global:'damageBegin4'}, + filter:function(event,player){ + return event.player.hp<=event.num&&player.countCards('he',function(card){ + return get.type(card)!='basic'; + })>=1; + }, + 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,'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+trigger.num-event.player.hp) return false; + if(event.player==player||event.player==get.zhu(player)) return true; + return !player.hasUnknown(); + }, + content:function(){ + player.discard(player.getCards('he',function(card){ + return get.type(card)!='basic'; + })); + trigger.cancel(); + }, + }, + zhengjian:{ + audio:2, + trigger:{player:'phaseJieshuBegin'}, + locked:true, + direct:true, + content:function(){ + 'step 0' + player.chooseTarget('请选择【诤荐】的目标',lib.translate.zhengjian_info).set('ai',function(target){ + if(target.hasSkill('zhengjian')) return 0; + if(player==target) return 0.5; + return get.attitude(_status.event.player,target)*(1+target.countCards('h')); + }); + 'step 1' + if(result.bool){ + var target=result.targets[0]; + player.logSkill('zhengjian',target); + target.addSkill('zhengjian_mark'); + } + }, + group:'zhengjian_draw', + }, + zhengjian_draw:{ + audio:'zhengjian', + trigger:{player:'phaseBegin'}, + forced:true, + filter:function(event){ + return game.hasPlayer(function(current){ + return current.hasSkill('zhengjian_mark'); + }); + }, + logTarget:function(event){ + return game.filterPlayer(function(current){ + return current.hasSkill('zhengjian_mark'); + }); + }, + content:function(){ + 'step 0' + var list=game.filterPlayer(function(current){ + return current.countMark('zhengjian_mark')>0; + }); + if(list.length){ + event.delay=true; + game.asyncDraw(list,function(target){ + return Math.min(5,target.maxHp,target.countMark('zhengjian_mark')); + }); + } + 'step 1' + game.countPlayer(function(current){ + current.removeSkill('zhengjian_mark'); + }); + if(event.delay) game.delayx(); + }, + }, + zhengjian_mark:{ + trigger:{player:['useCard1','respond']}, + silent:true, + firstDo:true, + onremove:true, + charlotte:true, + content:function(){ + player.addMark('zhengjian_mark',1,false); + }, + init:function(player,skill){ + if(!player.storage[skill]) player.storage[skill]=0; + }, + mark:true, + intro:{ + content:'已使用/打出过#张牌', + }, + }, + gaoyuan:{ + audio:2, + trigger:{target:'useCardToTarget'}, + direct:true, + filter:function(event,player){ + if(event.card.name!='sha') return false; + if(player.countCards('he')==0) return false; + return game.hasPlayer(function(current){ + return current!=event.player&¤t!=player&& + current.hasSkill('zhengjian_mark')&&lib.filter.targetEnabled(event.card,event.player,current); + }); + }, + content:function(){ + "step 0" + var next=player.chooseCardTarget({ + position:'he', + filterCard:lib.filter.cardDiscardable, + filterTarget:function(card,player,target){ + var trigger=_status.event; + if(target!=player&&target!=trigger.source){ + if(target.hasSkill('zhengjian_mark')&&lib.filter.targetEnabled(trigger.card,trigger.source,target)) return true; + } + return false; + }, + ai1:function(card){ + return get.unuseful(card)+9; + }, + ai2:function(target){ + if(_status.event.player.countCards('h','shan')){ + return -get.attitude(_status.event.player,target); + } + if(get.attitude(_status.event.player,target)<5){ + return 6-get.attitude(_status.event.player,target); + } + if(_status.event.player.hp==1&&player.countCards('h','shan')==0){ + return 10-get.attitude(_status.event.player,target); + } + if(_status.event.player.hp==2&&player.countCards('h','shan')==0){ + return 8-get.attitude(_status.event.player,target); + } + return -1; + }, + prompt:get.prompt('gaoyuan'), + prompt2:'弃置一张牌,将此【杀】转移给一名有“诤”的角色', + source:trigger.player, + card:trigger.card, + }); + "step 1" + if(result.bool){ + var target=result.targets[0]; + player.logSkill(event.name,target); + player.discard(result.cards); + var evt=trigger.getParent(); + evt.triggeredTargets2.remove(player); + evt.targets.remove(player); + evt.targets.push(target); + } + }, + }, //一 将 成 名 zhilve:{ audio:2, @@ -2941,6 +3214,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ return [1,3-player.storage.xinfu_zhaoxin.length]; }, discard:false, + toStorage:true, //lose:false, delay:false, content:function (){ @@ -5082,7 +5356,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, }, translate:{ - "re_sp_zhugeliang":"手杀卧龙", + old_liuzan:'手杀留赞', + re_sp_zhugeliang:"手杀卧龙", ly_piliche:'霹雳车', ly_piliche_info:'当你对其他角色造成伤害后,若造成伤害的牌不为延时锦囊牌,你可以弃置其装备区里的防具牌与+1坐骑牌;当你失去此装备时,销毁之。', polu:'破橹', @@ -5378,6 +5653,17 @@ game.import('character',function(lib,game,ui,get,ai,_status){ gnjinfan_info:'弃牌阶段开始时,你可将任意张手牌置于武将牌上,称为“铃”(每种花色的“铃”限一张)。当你需要使用或打出一张手牌时,你可以使用或打出一张“铃”。当有“铃”移动到处理区后,你从牌堆中获得与此次移动到第一张“铃”花色相同的一张牌。', gnsheque:'射却', gnsheque_info:'一名其他角色的准备阶段开始时,若其装备区内有牌,则你可以对其使用一张【杀】(无距离关系的限制且无视防具)。', + sp_sufei:'SP苏飞', + zhengjian:'诤荐', + zhengjian_draw:'诤荐', + zhengjian_mark:'诤荐', + zhengjian_info:'锁定技,结束阶段,你令一名角色获得一枚“诤”。回合开始时,你令有“诤”的角色移去“诤”并摸X张牌(X为其最后一次获得“诤”后使用和打出的牌数,且至多不能超过其体力上限或5)。', + gaoyuan:'告援', + gaoyuan_info:'当你成为【杀】的目标时,你可弃置一张牌将此【杀】转移给一名有“诤”且不是此【杀】使用者的其他角色。', + tongqu:'通渠', + tongqu_info:'游戏开始时,你获得一个“渠”。出牌阶段开始时,你可令一名没有“渠”的角色获得一个“渠”。有“渠”的角色摸牌阶段,其多摸一张牌,然后其将一张牌交给一名有“渠”的其他角色或弃置一张牌。有“渠”的角色受到伤害后,其弃置“渠”', + xinwanlan:'挽澜', + xinwanlan_info:'当有角色受到伤害时,若伤害点数大于其体力值,则你可以弃置所有非基本牌(至少两张)并防止此伤害。', } }; }); diff --git a/character/old.js b/character/old.js index f7962a0e9..e982b0fcc 100755 --- a/character/old.js +++ b/character/old.js @@ -12,16 +12,15 @@ game.import('character',function(lib,game,ui,get,ai,_status){ old_yijiang4:["old_caozhen","old_chenqun","old_zhuhuan"], old_yijiang5:["old_caoxiu","old_quancong","old_zhuzhi"], old_yijiang67:["ol_xinxianying","ol_zhangrang","ol_liuyu"], - old_sp:["old_lingju","old_maliang","old_machao","zhangliang","jsp_caoren","ol_guansuo","old_zhangxingcai","old_huangfusong","ol_maliang","panfeng","old_wangyun","sunluyu"], - old_mobile:["old_caochun","old_majun"], + old_sp:["old_lingju","old_maliang","old_machao","zhangliang","jsp_caoren","ol_guansuo","old_zhangxingcai","old_huangfusong","ol_maliang","old_wangyun"], + old_mobile:["old_caochun","old_majun","old_jiakui"], }, }, character:{ - sunluyu:['female','wu',3,['new_meibu','new_mumu']], + old_jiakui:['male','wei',3,['zhongzuo','wanlan']], pangde:['male','qun',4,['mashu','mengjin']], ol_huaxiong:["male","qun",6,["new_reyaowu"]], old_wangyun:['male','qun',4,['wylianji','moucheng']], - panfeng:['male','qun',4,['kuangfu']], xiaoqiao:['female','wu',3,['tianxiang','hongyan']], weiyan:['male','shu',4,['kuanggu']], xiahouyuan:['male','wei',4,['shensu']], @@ -845,6 +844,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, }, translate:{ + old_jiakui:'旧贾逵', old_zhangxingcai:'旧张星彩', old_majun:'骰子马钧', old_yuanshu:'手杀袁术', diff --git a/character/refresh.js b/character/refresh.js index 1fe2b8780..ea1ea9a80 100755 --- a/character/refresh.js +++ b/character/refresh.js @@ -303,7 +303,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ event.count--; player.draw(); "step 2" - if(player.countCards('he')){ + if(player.countCards('h')){ player.chooseCard('将一张手牌置于武将牌上作为“权”',true); } else{ diff --git a/character/sp.js b/character/sp.js index fcb2889b8..8656d2bb0 100755 --- a/character/sp.js +++ b/character/sp.js @@ -5,46 +5,22 @@ 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","re_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","wenyang","xujing","yuantanyuanshang","wangshuang","sunshao","liuzan","xingdaorong"], - sp_guansuo:['guansuo','baosanniang','huaman'], - sp_whlw:["xurong","lijue","zhangji","fanchou","guosi"], - sp_zlzy:["zhangqiying","lvkai","zhanggong","weiwenzhugezhi","beimihu"], - sp_longzhou:["xf_tangzi","xf_huangquan","xf_sufei","sp_liuqi"], - sp_zizouqi:["mangyachang","xugong","zhangchangpu"], - sp_sbfm:["lisu","xinpi","zhangwen"], - sp_shengun:["puyuan","guanlu","gexuan","xushao"], + sp_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'], 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","re_panfeng","jianggan"], + 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_guandu:["sp_zhanghe","xunchen","sp_shenpei","gaolan","lvkuanglvxiang","chunyuqiong","sp_xuyou"], sp_single:["hejin","hansui","niujin"], sp_others:["hanba","caiyang"], }, }, - characterFilter:{ - chunyuqiong:function(mode){ - return mode!='identity'&&mode!='guozhan'; - }, - sp_xuyou:function(mode){ - return mode=='versus'&&['guandu','4v4','four'].contains(_status.mode); - }, - }, + characterFilter:{}, character:{ + zhangling:['male','qun',4,['zlhuji','zlshoufu'],['unseen']], caiyang:['male','qun',1,['yinka'],['forbidai','unseen']], - sp_xuyou:['male','qun',3,['spshicai','spfushi']], - chunyuqiong:['male','qun',5,['cangchu','sushou','liangying']], - lvkuanglvxiang:['male','qun',4,['liehou','qigong']], - xingdaorong:['male','qun','4/6',['xuxie']], - liuzan:['male','wu',4,['refenyin','liji']], - re_panfeng:['male','qun',4,['xinkuangfu']], - gaolan:['male','qun',4,['xiying']], - sp_shenpei:['male','qun',3,['gangzhi','beizhan']], - xunchen:['male','qun',3,['fenglve','mouzhi']], - sp_zhanghe:['male','qun',4,['yuanlve']], + panfeng:['male','qun',4,['kuangfu']], sunshao:['male','wu',3,['bizheng','yidian']], - wangshuang:['male','wei',8,['spzhuilie']], sp_gongsunzan:['male','qun',4,['spyicong','sptuji']], sp_simazhao:['male','wei',3,['spzhaoxin','splanggu']], sp_wangyuanji:['female','wei',3,['spfuluan','spshude']], @@ -53,40 +29,17 @@ game.import('character',function(lib,game,ui,get,ai,_status){ huangfusong:['male','qun',4,['xinfenyue']], yuantanyuanshang:['male','qun',4,['neifa']], - huaman:['female','shu',3,['hmmanyi','mansi','souying','zhanyuan']], xujing:['male','shu',3,['yuxu','xjshijian']], - xushao:['male','qun',3,['pingjian']], - puyuan:['male','shu',4,['pytianjiang','pyzhuren']], - xinpi:['male','wei',3,['xpchijie','yinju']], - lisu:['male','qun',2,['lslixun','lskuizhu']], - zhangwen:['male','wu',3,['songshu','sibian']], hejin:['male','qun',4,['mouzhu','yanhuo']], hansui:['male','qun',4,['mashu','niluan']], niujin:['male','wei',4,['cuorui','liewei']], - - guanlu:['male','wei',3,['tuiyan','busuan','mingjie']], - gexuan:['male','wu',3,['gxlianhua','zhafu']], - wenyang:['male','wei',5,['xinlvli','choujue']], - mangyachang:["male","qun",4,["spjiedao"],[]], - xugong:["male","wu",3,["biaozhao","yechou"],[]], - zhangchangpu:["female","wei",3,["yanjiao","xingshen"],[]], jianggan:["male","wei",3,["weicheng","daoshu"]], - lijue:["male","qun","4/6",["xinfu_langxi","xinfu_yisuan"],[]], - zhangji:["male","qun",4,["xinfu_lveming","xinfu_tunjun"],[]], - fanchou:["male","qun",4,["xinfu_xingluan"],[]], - guosi:["male","qun",4,["xinfu_tanbei","xinfu_sidao"],[]], - lvkai:["male","shu",3,["xinfu_tunan","xinfu_bijing"],[]], - zhanggong:["male","wei",3,["xinfu_zhenxing","xinfu_qianxin"],[]], - weiwenzhugezhi:["male","wu",4,["xinfu_fuhai"],[]], - xf_tangzi:["male","wei",4,["xinfu_xingzhao"],[]], - xf_huangquan:["male","shu",3,["xinfu_dianhu","xinfu_jianji"],[]], - xf_sufei:["male","wu",4,["xinfu_lianpian"],[]], + caoying:["female","wei",4,["xinfu_lingren","xinfu_fujian"],[]], simahui:["male","qun",3,["xinfu_jianjie","xinfu_chenghao","xinfu_yinshi"],[]], baosanniang:["female","shu",3,["xinfu_wuniang","xinfu_xushen"],[]], - xurong:["male","qun",4,["xinfu_xionghuo","xinfu_shajue"],[]], - zhangqiying:["female","qun",3,["xinfu_falu","xinfu_dianhua","xinfu_zhenyi"],[]], + sp_xiahoushi:["female","shu",3,["xinfu_yanyu","xinfu_xiaode"],[]], @@ -129,7 +82,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ sp_zhangfei:['male','shu',4,['jie','dahe']], jsp_guanyu:['male','wei',4,['new_rewusheng','danji']], jsp_huangyueying:['female','qun',3,['jiqiao','linglong']], - re_sunluyu:['female','wu',3,['remeibu','remumu']], + sunluyu:['female','wu',3,['new_meibu','new_mumu']], hanba:['female','qun',4,['fentian','zhiri']], zumao:['male','wu',4,['yinbing','juedi']], wenpin:['male','wei',4,['zhenwei']], @@ -191,10 +144,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){ xizhicai:['male','wei',3,['tiandu','xianfu','chouce']], quyi:['male','qun',4,['fuqi','jiaozi']], - - beimihu:['female','qun',3,['zongkui','guju','baijia']], - - sp_liuqi:['male','qun',3,['spwenji','sptunjiang']], luzhi:['male','wei',3,['qingzhongx','weijing']], //kaisa:["male","western",4,["zhengfu"]], @@ -207,45 +156,21 @@ game.import('character',function(lib,game,ui,get,ai,_status){ chunyuqiong:'淳于琼(?-200年),字仲简,颍川(治今河南禹州)人。东汉时期官吏,于汉灵帝中平五年(188)被任命为西园八校尉之一的右校尉,与蹇硕、袁绍、鲍鸿、曹操、赵融、冯芳、夏牟同列。为袁绍大将,与张郃、高览等人齐名。在官渡之战时镇守乌巢,遭到曹操的偷袭而惨败,自己也被曹操处斩。', lvkuanglvxiang:'吕旷(生卒年不详),与吕翔同是袁绍属下,袁绍去世后,为袁尚守东平,后来投降曹操,并被封为列侯。在《三国演义》中,在曹操准备往南准备攻击前,两人跟著大将曹仁和将军李典准备要攻击刘备。但吕旷被赵云刺下马身亡,而吕翔也死于张飞矛下,可以算是出师未捷身先死', caobuxing:'曹不兴,亦名弗兴,三国时著名画家。孙吴吴兴(今浙江湖州)人,生卒年不详。他在黄武年间(222—229年)享有很大的声誉。被称为“佛画之祖”。与东晋顾恺之、南朝宋陆探微、南朝梁张僧繇并称“六朝四大家”。又与赵达的算术、严武的弈棋、皇象的草书等号称“吴中八绝”。曹不兴善画龙、虎、马及人物,有“落墨为蝇”等传奇故事,其佛画成就对后世影响很大,相传其所画龙头令谢赫叹服不已。画迹今已不存,据《贞观公私画史》载,作品有《青溪龙》、《赤盘龙》、《南海监牧进十种马图》、《夷事夷兽样》、《桃源图》等,惜早已散佚。 但之后的著名画家卫协直接师承其法。', - xingdaorong:'邢道荣是《三国演义》中虚构的人物,为零陵太守刘度手下武将,被评价有万夫不当之勇,于《三国演义》第五十二回登场,被赵云刺死。', gaolan:'高览,生卒年不详,一名高奂,本属袁绍部将,后官渡之战淳于琼被曹操击破,与张郃一同投降曹操,被封为偏将军,东莱侯。《三国演义》里,曾与许褚、徐晃大战不分胜负。201年刘备败走荆州时,高览奉命追杀,三合斩刘辟,而后被冲阵而来的赵云刺死。', xunchen:'荀谌,字友若,荀彧之兄(一说荀彧之弟),荀绲之子,颍川人。曾任军阀袁绍的幕僚。帮助袁绍游说韩馥,夺取了冀州。', sunshao:'孙邵(163年-225年),字长绪,青州北海国人(今山东潍坊市昌乐县西)。原为北海相孔融的功曹,被孔融称赞为可任朝廷要职的人才,后随刘繇到达江东,继而辅佐孙权。孙权称吴王后,孙邵成为吴国首任丞相,数年后病逝。由于孙邵和当时吴国史官的关系并不是很好,因此在史书中并没有详细的记载。', - wangshuang:'王双(?-228年),三国时期曹魏将领。蜀汉建兴六年(228年)冬,诸葛亮出散关,攻陈仓,后粮尽而退。王双率领骑兵追击蜀军,但在与蜀军的交战中被击败,王双也被蜀军所斩。在《三国演义》中,王双字子全,是陇西郡狄道县(今甘肃临洮县)人,有万夫不当之勇。在诸葛亮北伐期间,被魏延所斩。', yuantanyuanshang:'袁谭、袁尚分别是袁绍的长子和第三子。袁绍坐拥青州、冀州、幽州、并州,本是北方最强诸侯,却于官渡大败,惭恨而终。虽然袁绍生前偏爱小儿子袁尚,却并未在继承人上有明确表态,这也导致本应以嫡长子身份继承的袁谭因郭图、审配伪立遗令未能如愿。曹操击败袁绍后,进而渡过黄河追击袁家残余势力,袁谭告急,但袁尚仅给他少量兵力。曹操得郭嘉之计退兵坐观其变,恰使两人此前的种种矛盾彻底爆发,袁谭不敌便引狼入室,派辛毗作为使者向曹操求援,让袁尚不得不北逃投奔乌桓。但袁谭也在之后背叛曹操兵败被杀。没多久,乌桓也被平定,袁熙、袁尚二人投奔公孙康后被斩首送还曹操。', - huaman:'花鬘,古典戏曲《龙凤巾》(一名《化外奇缘》)中的人物,身份为三国时期南蛮王孟获与祝融夫人的女儿,关索的夫人之一。在关于关三小姐·关银屏的民间传说中,其名字为“花中秀”,与关索其他几位夫人鲍三娘、王桃、王悦都被关索之姐关银屏编入自己的女兵营中。花鬘在《三国志》,《三国演义》均未有提及,只是戏曲中的虚构人物。其形象并非一般君主家中闺秀,而是与其母祝融相似,是一个可以披甲上阵,善于刀枪作战的女武将。戏曲中在诸葛亮平定南蛮时,花鬘曾与关索作战,失败被俘,两人互生爱意,南蛮王孟获降服后二人成婚。近些年,花鬘接连在各类三国题材的游戏中登场,更广被人知晓。', xujing:'许靖(?—222年),字文休。汝南郡平舆县(今河南省平舆县)人。汉末至三国蜀汉时期重臣、名士、评论家。许靖因与从弟许邵俱以品评人物而闻名于世。后被刘翊推举为孝廉,任尚书郎。曾先后投奔孔伷、陈祎、许贡、王朗等人,于孙策攻王朗前与家属俱避难交州,受到交趾太守士燮礼待。其后受益州牧刘璋邀请,相继为巴郡、广汉、蜀郡太守。于刘备包围成都时欲越墙叛逃,为刘璋所获。刘备定蜀后欲将其弃用,在法正的建议下方以其为左将军长史。建安二十三年(218年),刘备称汉中王,任命许靖为汉中王傅。章武元年(221年),刘备称帝,任命许靖为司徒,位列三公。章武二年(222年),去世。有文集二卷。', - xushao:'许劭(shào)(150年—195年),字子将。汝南平舆(今河南平舆县射桥镇)人。东汉末年著名人物评论家。据说他每月都要对当时人物进行一次品评,人称为“月旦评”。曾任汝南郡功曹,后南渡投靠扬州刺史刘繇。刘繇被孙策击败后,许劭随其逃往豫章郡,并在豫章去世。', - puyuan:'蒲元是三国时蜀汉杰出的工匠。为诸葛亮造刀三千口,并且制作木牛流马。后来姜维为他写过两部传记《蒲元传》《蒲元别传》。', - zhangwen:'张温(193年—230年),字惠恕,吴郡吴县(今江苏苏州)人。少修节操,容貌奇伟。孙权召拜议郎、选曹尚书,徙太子太傅。黄武三年(224),以辅义中郎将身份出使蜀汉,孙权原先害怕诸葛亮会有意留难张温,但张温不担心。在呈上蜀汉朝廷的文书刻意称颂蜀汉,以表明和解的诚意,重建两国关系。他在蜀汉表现出色,得蜀汉朝廷重视。回东吴后不久,被调进豫章的军队,事业上再无进展。孙权一方面介怀他出使蜀汉时称颂蜀汉,又嫌他声名太盛,恐怕张温不会尽忠地由他任用。当时正好碰上暨艳事件,暨艳是张温引荐的臣子,但他滥用职权,升迁评定等只看自己喜恶。事件被揭发后暨艳及同党徐彪都自杀。孙权见此,于是以张温与暨艳、徐彪等人多有来往而下罪张温,后更将张温发还到家乡吴郡。将军骆统曾上书为张温辩解,但孙权不理会。六年后,张温病逝。', - lisu:'李肃(?-192年),五原(治今内蒙古包头西北)人。永汉三年四月,司徒王允、尚书仆射士孙瑞、卓将吕布共谋诛卓。是时,天子有疾新愈,大会未央殿。布使同郡骑都尉肃等、将亲兵十馀人,伪著卫士服守掖门。布怀诏书。卓至,肃等格卓。卓惊呼布所在。布曰“有诏”,遂杀卓,夷三族。后卓女婿中郎将牛辅典兵别屯陕,分遣校尉李傕、郭汜、张济略陈留、颍川诸县。卓死,吕布使李肃至陕,欲以诏命诛辅。辅等逆与肃战,肃败走弘农,布诛肃。', - xinpi:'辛毗(生卒年不详),字佐治,颍川阳翟人。三国时期曹魏大臣。原居陇西(郡治在今甘肃临洮县),东汉光武帝建武年间,其先人东迁。当初,辛毗跟随其兄事袁绍。曹操任司空时,征召辛毗,他不受命。官渡战后,辛毗事袁绍的儿子袁谭。公元204年,曹操攻下邺城,上表推荐辛毗任议郎,后为丞相长史。公元220年,曹丕即皇帝位,以辛毗为侍中,赐爵关内侯,后赐广平亭侯。魏明帝即位,封辛毗颍乡侯,食邑三百户,后为卫尉。公元234年,诸葛亮屯兵渭南,司马懿上表魏明帝。魏明帝任辛毗为大将军军师,加使持节号。诸葛亮病逝后,辛毗返回,仍任卫尉。不久,逝世,谥肃侯。', hejin:'何进(?~189年),字遂高,南阳郡宛县(今河南南阳市宛城区)人。东汉时期外戚大臣,灵思皇后之兄。初以妹妹有宠,拜为郎中,出任虎贲中郎将、颍川太守,迁侍中、将作大匠、河南尹。黄巾起义时,拜为大将军,总镇京师,发现并镇压马元义的密谋,封为慎侯。为张大威望,在京师讲武结营,置西园八校尉。汉灵帝驾崩后,粉碎了中常侍蹇硕拥立皇子刘协的图谋,听从袁绍之言,博征智谋之士,内借元舅之资,外据辅政之权,独揽朝中大权。中平六年(189),不纳陈琳和曹操劝谏,阴结军阀董卓,联合袁绍谋诛宦竖。事情败露后,为中常侍张让等人损害,其后代是魏晋高门士族南阳何氏。', hansui:'韩遂(?-215年),字文约。凉州金城郡人。东汉末年军阀、将领,汉末群雄之一。原名韩约,后改名遂。韩遂最初闻名于西州,被羌胡叛军劫持并推举为首领,以诛宦官为名举兵造反,聚众十万,先后败皇甫嵩、张温、董卓、孙坚等名将,使得天下骚动。后受朝廷招安,拥兵割据一方长达三十余年。韩遂曾与马腾结为异姓兄弟,后二人关系破裂。袁绍、曹操相争之际,马腾、韩遂被钟繇说服,依附于曹操。马腾入京后,留其子马超统领部队。马超推举韩遂为都督起兵反叛曹操,为曹操所败,韩遂逃奔凉州,后又为夏侯渊所败,病死(一说被杀),享年七十余岁。', niujin:'牛金(生卒年不详),初为曹仁部曲将,周瑜军数万人来攻,前锋数千人始至,曹仁登城望,乃募得三百人,遣牛金迎战。但对方兵力较多,牛金遂被围困。曹仁亲自杀入阵中救出牛金。司马懿使牛金轻骑饵诱蜀军,刚交战诸葛亮就退兵,追至祁山。蜀将马岱入寇,司马懿遣将军牛金击退,斩千余级。公孙渊反,司马懿帅牛金、胡遵等步骑四万发自洛阳,后平定辽东。牛金官至后将军。', - guanlu:"管辂(209年-256年),字公明,平原(今山东德州平原县)人。三国时期曹魏术士。年八九岁,便喜仰观星辰。成人后,精通《周易》,善于卜筮、相术,习鸟语,相传每言辄中,出神入化。体性宽大,常以德报怨。正元初,为少府丞。北宋时被追封为平原子。管辂是历史上著名的术士,被后世奉为卜卦观相的祖师。", - gexuan:"葛玄(164年-244年),汉族,吴丹阳郡句容县都乡吉阳里人(今句容市),祖籍山东琅琊,三国著名高道,道教灵宝派祖师。字孝先,号仙翁,被尊称为“葛天师”。道教尊为葛仙翁,又称太极仙翁,与张道陵、许逊、萨守坚共为四大天师。为汉下邳僮侯葛艾后裔,祖葛矩,安平太守,黄门郎;从祖葛弥,豫章第五郡太守。父葛焉,字德儒,州主簿,山阴令,散骑常侍,大尚书。随左慈学道,得《太清丹经》、《黄帝九鼎神丹经》、《金液丹经》等道经。曾采药海山,吴嘉禾二年(233年),在閤皂山修道建庵,筑坛立炉,修炼九转金丹。喜好遨游山川,去过括苍山、南岳山、罗浮山。编撰《灵宝经诰》,精研上清、灵宝等道家真经,并嘱弟子世世箓传。", - wenyang:"文俶(238年—291年),一作文淑,字次骞,小名阿鸯,世称文鸯,谯郡(今安徽亳州市)人。魏末晋初名将,曹魏扬州刺史文钦之子。骁勇善战,依附大将军曹爽,效忠于王室。司马师废黜皇帝曹芳后,随父联合毌丘俭于淮南起兵勤王。兵败之后,向南投奔吴国。诸葛诞发动淮南叛乱,奉命率军驰援。双方发生内讧,父亲为诸葛诞所害,遂降于司马昭,封关内侯。西晋建立后,任平虏护军。咸宁三年(277年),拜平西将军、都督凉秦雍州三州军事,大破鲜卑首领秃发树机能,名震天下,迁使持节、护东夷校尉、监辽东军事。八王之乱中,为诸葛诞外孙、东安王司马繇所诬杀,惨遭灭族,时年五十四岁。", jianggan:"蒋干,字子翼,汉末三国时期的人物,九江(治今安徽寿县)人。历史上的蒋干是当时的名士、辩论家。而罗贯中在历史小说《三国演义》中则将蒋干刻画成了被周瑜所愚弄的小丑形象。", - zhangchangpu:"钟会的母亲。《母夫人张氏传》:夫人张氏,字昌蒲,太原兹氏人,太傅定陵成侯之命妇也。", - xugong:"许贡是东汉末官吏。先后任吴郡都尉、太守,欲送密信给曹操,要曹操注意孙策,却被孙策发现而被杀。许贡生前招揽了一些门客,当中有三人不忘故主,千方百计想要手刃仇人。建安五年(公元200年),广陵太守陈登派人秘密联系孙策治下的山贼余党,企图颠覆孙策在江东的统治。孙策决定讨伐陈登,行军到丹徒时,许贡门客终于找到了机会。因为孙策有单骑出猎,在野外思考的习惯,三门客趁孙策轻装外出打猎时,放冷箭射中孙策面颊。这些门客后来在与孙策的搏斗中,被赶到的侍卫杀死。孙策此后因为伤口感染,并且俊美的容貌被毁,终于不治身亡,去世时年仅26岁。", - mangyachang:"南蛮王孟获的部将,使一口截头大刀,骑一匹黄骠马。率军与蜀军交战,战败王平。后被平北将军马岱斩杀。只出现在《三国演义》里,正史中无此人。", huangjinleishi:"黄巾军中负责施法的女祭司二人组。", - lijue:"李傕(jué,一说“傕”读音“què”)(?—198年),字稚然。北地郡泥阳县(今陕西省耀县)人,汉末群雄之一。东汉末年汉献帝时的军阀、权臣,官至大司马、车骑将军、开府、领司隶校尉、假节。
李傕本为董卓部将,后被董卓的女婿牛辅派遣至中牟与朱儁交战,大破朱儁,进而至陈留、颍川等地劫掠。初平三年(192年)董卓和牛辅被杀后,李傕归无所依,于是采用贾诩之谋,伙同郭汜、张济、樊稠等原董卓部曲将攻向长安。击败吕布,杀死王允等人,占领长安,把持朝廷大权。后诸将不和,李傕在会议上杀死了樊稠,又与郭汜分别劫持了汉献帝和众臣,相互交战,张济率兵赶来和解,于是二人罢兵,李傕出屯池阳黄白城,郭汜、张济等人随汉献帝东归前往弘农。
后来,李傕、郭汜、张济反悔,联合起来追击汉献帝,与杨奉、董承等人几番交战。汉献帝一路逃亡,狼狈不堪,到达安邑,与李傕等人讲和。不久,汉献帝被曹操迎往许都。建安三年(198年),曹操派谒者仆射裴茂召集关西诸将段煨等人征讨李傕,灭其三族。", - zhangji:"张济(?-196年),武威郡祖厉县(今甘肃靖远东南)人。东汉末年割据军阀之一。 张济原为董卓部将,董卓被诛杀后,张济与李傕一同率军攻破长安,任中郎将。不久,升任镇东将军,封平阳侯,出屯弘农。献帝东迁时,张济升任骠骑将军,率军护卫献帝,后来因与董承等人有矛盾,便与李傕、郭汜一同追赶献帝。 建安元年(196年),张济因军队缺粮而进攻穰城,中流矢而死。死后,部队由侄儿张绣接管。", - guosi:"郭汜(?-197年),又名郭多,凉州张掖(今甘肃张掖西北)人,东汉末年将领、军阀,献帝时权臣。原为董卓部下。董卓被杀后,凉州众将归无所依,于是采用贾诩之谋,联兵将攻向长安,击败吕布,杀死王允等人,占领长安,把持朝廷大权。几年后,郭汜被部将伍习杀死。", - fanchou:"樊稠(?—195年),凉州金城(治今甘肃永靖西北)人。东汉末年军阀、将领。官至右将军,封万年侯。 原为董卓部将,董卓死后,伙同李傕、郭汜、张济等人合众十余万反扑长安,败吕布、杀王允,把持朝政。后马腾因与李傕有隙,于是联合韩遂举兵进攻,李傕派樊稠、郭汜等与其交战,大败马腾、韩遂于长平观下。樊稠追至陈仓,与韩遂友好罢兵,却遭李傕猜疑。兴平二年(195年),李傕让外甥骑都尉胡封在会议上将樊稠刺死(一说趁醉用杖击杀)。", - lvkai:"吕凯(?―225年),字季平,永昌郡不韦县(今云南保山东北)人,三国时期蜀汉官员。初任永昌郡五官掾功曹。章武三年(223年),建宁太守雍闿反叛,投降吴国,吴国任雍闿为永昌太守,吕凯闭境抗拒雍闿。建兴三年(225年),丞相诸葛亮南征,表奏吕凯功劳,任命他为云南太守,封阳迁亭侯。吕凯还未上任,便被叛乱的少数民族杀害。", - zhanggong:"张恭(生卒年不详),三国时期魏国大臣,与子张就一同闻名于西域。官至西域戊己校尉、关内侯,赠执金吾。初为敦煌郡功曹。东汉末河西大乱,太守马艾卒官,他被众人推为代理长史,遂派儿子张就请曹操委任太守,直至新太守到任。魏文帝时拜西域戊己校尉。魏明帝时去世。", - weiwenzhugezhi:"卫温 (?—231年),三国时期东吴将领,曾任将军职。诸葛直(?—231年),三国时期东吴将领。黄龙二年(230年)正月,孙权派卫温、诸葛直带领上万士兵出海寻找夷洲、亶洲,想要俘获那里的民众以充实东吴的人口,陆逊和全琮都谏言反对,孙权不听。230年和卫温一起登上台湾(当时的台湾叫做夷洲),他们是中国历史上记载的最早登陆台湾的人。卫温和诸葛直花费了约一年时间行军,士兵们因为疾病死去了十分之八到十分之九,因为亶洲太过遥远,卫温和诸葛直最终没能到达那里,只带了几千名夷洲的人返回。黄龙三年(231年),孙权认为诸葛直违背诏令,劳财伤民,无功而返,和卫温一同入狱被处死。", - xf_tangzi:"唐咨(生卒年不详),三国时魏利城(今江苏赣榆西)人。魏文帝黄初中利城郡反,推唐咨为主。后为魏军击破,遂亡至吴,官至左将军,封侯、持节。后助诸葛诞拒魏,兵败被俘。为安抚吴国军民,魏主拜唐咨为安远将军。", - xf_huangquan:"黄权(?-240年),字公衡。巴西郡阆中县(今四川阆中)人。三国时期蜀汉、曹魏将领。
黄权年轻时为郡吏,后被益州牧刘璋召为主簿。曾劝谏刘璋不要迎接刘备,因而被外放为广汉县长。刘璋败,才降刘备,被拜为偏将军。建计取汉中,拜护军。刘备为汉中王,仍领益州牧,以黄权为治中从事。及刘备称帝,将伐吴,黄权劝谏而不纳。以其为镇北将军,督江北军以防魏师进攻。刘备伐吴败还,而归途隔绝,黄权不得归,无奈之下率部降魏。被魏文帝所赏识,拜镇南将军,封育阳侯,加侍中,使同车陪乘。后领益州刺史,进驻河南。景初三年(239年),迁车骑将军、仪同三司。正始元年(240年),黄权去世,谥号“景”。", - xf_sufei:"苏飞(生卒年不详),东汉末年人物,原为东汉末年荆州牧刘表的部将,任江夏都督。
苏飞与甘宁交好,但是数次向黄祖推荐都失败。甘宁决定投效孙权时助其逃离。后来甘宁率吴军攻破江夏,苏飞兵败被俘。孙权打算将苏飞处斩,但是因为甘宁用性命担保而赦免了苏飞。降吴后官至军都督。", + caoying:"曹婴是在电影《三国志之见龙卸甲》中登场的虚拟人物,由李美琪饰演。曹婴是曹操的孙女,弓马娴熟,文武双全,深得曹操的用兵之道及心术。于凤鸣山一战中担任魏军大都督阻止诸葛亮北伐并因罗平安的告密而全歼关兴、张苞、赵云率领的蜀军部队。", simahui:"司马徽(约145—208年),字德操,颍川阳翟(今河南禹州)人。东汉末年名士,精通道学、奇门、兵法、经学。有“水镜先生”之称。 司马徽为人清雅,学识广博,有知人之明,并向刘备推荐了诸葛亮、庞统等人,受到世人的敬重。", baosanniang:"鲍三娘是中国民间传说中的人物,事迹多见于《花关索传》。相传她是鲍家庄鲍员外的小女儿。后来与关索成亲,关羽自传授其武艺,因此也造就了鲍三娘的文武双全。荆州失守之后鲍三娘就跟随关索一同投奔蜀汉,并随诸葛亮征讨南蛮。平定了南蛮之后,夫妻二人就此一直替诸葛亮镇守着南中,他们也的确留下了许多脍炙人口的行侠仗义故事,在民间广为流传。", - xurong:"徐荣(?-192年),玄菟人(一说为辽东襄平人,《公孙度传》中说公孙度本辽东襄平人,迁居玄菟,为同郡徐荣所举,任辽东太守。同郡当是同“玄菟”郡),东汉末年将领。本为中郎将,曾向董卓推举同郡出身的公孙度出任辽东太守。于汴水之战中击败曹操的独立追击军,以及在梁东之战中击败孙坚的部队。在董卓死后,受司徒王允的命令与李傕、郭汜交战,因部将胡珍投降,寡不敌众,于新丰之战被击败,战死在乱军之中。", - zhangqiying:"张琪瑛(196年-217年),字不详(或琪瑛为字,名不详),祖籍沛国丰县(今江苏省丰县)。她的曾祖父张陵是西汉留侯张良的十一世孙、天师道(五斗米道)教祖,她的父亲是东汉末年割据汉中的军阀张鲁。张琪瑛继承家说,是五斗米教的传人。", + pangdegong:"庞德公,字尚长,荆州襄阳人,东汉末年名士、隐士。 庞德公与当时徐庶、司马徽、诸葛亮、庞统等人交往密切。庞德公曾称诸葛亮为\"卧龙\",庞统为\"凤雏\",司马徽为\"水镜\",被誉为知人。对诸葛亮、庞统等人早年影响较大,并得到诸葛亮的敬重。庞德公最后隐居于鹿门山,采药而终。", zhaotongzhaoguang:"赵统,赵云长子,生卒年不详。常山真定(今为河北正定)人,陈寿在正史《三国志》中记载赵云去世后,赵统袭爵永昌亭侯,官至蜀汉虎贲中郎督,加行领军。赵广(?—263年),三国时期蜀汉牙门将,赵云的次子,赵统之弟。随姜维前往沓中,官拜牙门将。曹魏司马氏派五路大军伐蜀时,随大将军姜维与魏兵战于疆川口,姜维败绩还守剑阁,赵广于沓中战死。", majun:"马钧,字德衡,扶风(今陕西扶风)人,生活在汉朝末期,是中国古代科技史上最负盛名的机械发明家之一。马钧年幼时家境贫寒,自己又有口吃的毛病,所以不擅言谈却精于巧思,后来在魏国担任给事中的官职。马钧最突出的表现有还原指南车;改进当时操作笨重的织绫机;发明一种由低处向高地引水的龙骨水车;制作出一种轮转式发石机,能连续发射石块,远至数百步;把木制原动轮装于木偶下面,叫做“水转百戏”。此后,马钧还改制了诸葛连弩,对科学发展和技术进步做出了贡献。", @@ -256,8 +181,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){ luzhi:'鲁芝(190年—273年),字世英。扶风郡郿县(今陕西眉县)人。魏晋时期名臣。官至光禄大夫,位特进,封阴平侯。泰始九年(273年)卒,时年八十四。谥号“贞”。', xizhicai:'戏志才(生卒年不详),或志才为字,名不详(一说名忠),东汉颍川郡(今河南禹州)人。经张邈推荐,成为曹操手下谋士。为人多谋略,曹操十分器重,不幸早卒。三国演义中并无此人,三国志中只有寥寥数语。由荀彧推荐给曹操,被称为有“负俗之讥”。死后,荀彧又举荐了郭嘉。
陈寿《三国志》记载:太祖与荀彧书曰:自志才亡后,莫可与计事者。汝、颍固多奇士,谁可以继之?彧荐嘉。', sunqian:'孙乾(?—约215年),字公祐。北海郡(治今山东昌乐西)人。东汉末年刘备的幕僚。最初被大儒郑玄推荐于州里。刘备领徐州,以孙乾为从事。自徐州跟随刘备,多次作为刘备的使臣。刘备定益州后,拜孙乾为秉忠将军,其待遇仅次于麋竺,与简雍相同。不久后便病逝。', - beimihu:'卑弥呼(ひみこ,约159年-约249年,有的史书也写成“俾弥呼”)是日本弥生时代邪马台国(今日本本州近畿地区)的女王,在《三国志·魏书·倭人传》中有关于她的记载。关于她的真实身份一直众说纷纭,是个极具神秘色彩的古代女性统治者。亦是日本古代宗教鬼道教的发源者。', - liuqi:'刘琦(?-209年)。兖州山阳郡高平县(今山东省济宁市微山县两城镇)人。荆州牧刘表的长子、谏议大夫刘琮兄。官至荆州刺史。建安十四年(209年)病逝。', miheng:'祢衡(173年-198年),字正平,平原郡(今山东德州临邑德平镇)人。个性恃才傲物.和孔融交好。孔融著有《荐祢衡表》,向曹操推荐祢衡,但是祢衡称病不肯去,曹操封他为鼓手,想要羞辱祢衡,却反而被祢衡裸身击鼓而羞辱。后来祢衡骂曹操,曹操就把他遣送给刘表,祢衡对刘表也很轻慢,刘表又把他送去给江夏太守黄祖,最后因为和黄祖言语冲突而被杀,时年二十六岁。黄祖对杀害祢衡一事感到十分后悔,便将其加以厚葬。', quyi:'麴义(又作曲义、鞠义),生卒年不详,是东汉末年军阀袁绍部下的将领,能征善战,屡建战功,早年在凉州,精通羌人战法,率领着袁绍的精锐部队。后来由于自恃功高而骄纵不轨,被袁绍所杀。', taoqian:'陶谦(132年-194年),字恭祖。丹阳郡(治今安徽宣城)人。汉末群雄之一。陶谦最初为诸生,在州郡任职,被举茂才,历任舒、卢二县令、幽州刺史、议郎,性格刚直,有大志。后随左车骑将军皇甫嵩对抗北宫伯玉,任扬武校尉,之后又随张温征韩遂、边章。中平五年(188年),徐州黄巾起,陶谦被朝廷任为徐州刺史,击破徐州黄巾,并推行屯田,恢复生产。尔后听从王朗、赵昱建议遣使进京朝贡,获拜安东将军、徐州牧,封溧阳侯。晚年因战事上为曹操大败,徐州大半几乎遭兵祸所害,以致过度忧劳而逝,终年六十三岁。', @@ -289,7 +212,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){ lingcao:'东汉末年将领,吴郡余杭(今浙江余杭)人,凌统之父。早年跟随孙策转战江东。孙权统军后,凌操随其征伐黄祖,被甘宁射杀。《吴书》载:甘宁以善射,将兵在后,射杀校尉凌操', zhugeguo:'诸葛果,为《历代神仙通鉴》中诸葛亮女儿的名字,《历代神仙通鉴》记录从上古到明代的神仙历史,因此诸葛果不见于任何史书。成都西南有朝真观,即乘烟观。相传,诸葛果在这里修行后成仙升天。', zhuling:'朱灵(生卒年不详),字文博,冀州清河国人,三国时期曹魏名将。官至后将军,封为高唐侯,谥号威侯。初为袁绍部将,后归顺曹操,随曹操征伐四方,屡建战功。', - liuzan:'字正明,会稽长山人人,曾任左护军,有两子:留略、留平。少为会稽郡吏,曾参与镇压黄巾起义,后被东吴大将凌统所引用,任屯骑校尉。吴五凤二年(公元255年)留赞任左护军,随孙峻征淮南,因病撤军,被魏将蒋班围困于道,力战而死,时年73岁。', re_yuanshu:'字公路,汝南汝阳人,袁绍之弟。初为虎贲中郎将。董卓进京后以袁术为后将军,袁术因畏祸而出奔南阳。初平元年与袁绍、曹操等同时起兵,共讨董卓。后与袁绍对立,被袁绍、曹操击败,率馀众奔九江,割据扬州。建安二年称帝,建号仲氏。', fuwan:'伏完(?-209),琅邪东武(今属山东)人,东汉末大臣,汉献帝伏皇后之父。历官辅国将军、中散大夫、屯骑校尉。', liuxie:'字伯和,又字合。汉族,祖籍沛县,生于洛阳。汉灵帝第三子,被董卓迎立为帝。董卓被王允和吕布诛杀后,董卓部将李傕等攻入长安,再次挟持了他,后来逃出长安。公元196年,曹操控制了刘协,并迁都许昌,“挟天子以令诸侯”。公元220年,曹操病死,刘协被曹丕控制,随后被迫禅让于曹丕。', @@ -339,10 +261,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ wanglang:'字景兴,汉末三国经学家,曹魏初期重臣。曾任会稽太守举兵抵抗孙策,后为曹操所征,被拜为谏议大夫等职。曹丕建立魏国后任命为司空。小说《三国演义》中他在阵前与诸葛亮饶舌比拼,最终被诸葛亮言词所驳倒,一时气愤坠马身亡。', zhangliang:'东汉末年黄巾起义首领之一,张角的三弟。中平元年(184)随兄起义,号称“人公将军”。遭到朝廷所派左中郎将皇甫嵩进攻时,他率军在广宗(今河北威县)进行反击。后因警戒疏忽,遭到汉军夜袭,兵败身亡。', }, - characterTitle:{ - //"baosanniang":"Sukincen", - //'zhaotongzhaoguang':"Sukincen" - }, + characterTitle:{}, perfectPair:{ yuejin:['re_lidian'], zhugejin:['zhugeke'], @@ -370,70 +289,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){ simazhao:['wangyuanji'], }, card:{ - pyzhuren_heart:{ - fullskin:true, - derivation:'puyuan', - type:'equip', - subtype:'equip1', - distance:{attackFrom:-2}, - skills:['pyzhuren_heart'], - ai:{ - basic:{ - equipValue:2 - } - }, - }, - pyzhuren_diamond:{ - fullskin:true, - derivation:'puyuan', - type:'equip', - subtype:'equip1', - distance:{attackFrom:-1}, - skills:['pyzhuren_diamond'], - ai:{ - basic:{ - equipValue:2 - } - }, - }, - pyzhuren_club:{ - fullskin:true, - derivation:'puyuan', - type:'equip', - subtype:'equip1', - distance:{attackFrom:-1}, - skills:['pyzhuren_club'], - ai:{ - basic:{ - equipValue:2 - } - }, - }, - pyzhuren_spade:{ - fullskin:true, - derivation:'puyuan', - type:'equip', - subtype:'equip1', - skills:['pyzhuren_spade'], - ai:{ - basic:{ - equipValue:2.6 - } - }, - }, - pyzhuren_shandian:{ - fullskin:true, - derivation:'puyuan', - type:'equip', - subtype:'equip1', - distance:{attackFrom:-3}, - skills:['pyzhuren_shandian'], - ai:{ - basic:{ - equipValue:2 - } - }, - }, wy_meirenji:{ fullskin:true, vanish:true, @@ -534,6 +389,108 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, }, skill:{ + //张道陵 + zlhuji:{ + mod:{ + globalFrom:function(player,target,distance){ + return distance-1; + }, + }, + trigger:{player:'damageEnd'}, + forced:true, + content:function(){ + 'step 0' + var func=function(result){ + if(get.color(result)=='red') return 1; + return 0; + }; + if(get.itemtype(trigger.source)!='player'||!player.canUse('sha',trigger.source,false)) func=function(result){ + return 0; + }; + else if(get.effect(trigger.source,{name:'sha'},player,player)<0) func=function(result){ + if(get.color(result)=='red') return -1; + return 0; + }; + player.judge(func); + 'step 1' + if(result.bool&&get.itemtype(trigger.source)=='player'&&player.canUse('sha',trigger.source,false)){ + player.useCard({name:'sha',isCard:true},trigger.source,false); + } + }, + }, + zlshoufu:{ + enable:'phaseUse', + usable:1, + filter:function(event,player){ + return player.countCards('he')>0; + }, + filterTarget:function(card,player,target){ + return target!=player&&!target.getStorage('zlshoufu2').length; + }, + filterCard:true, + position:'he', + discard:false, + toStorage:true, + prepare:'give', + content:function(){ + target.addSkill('zlshoufu2'); + target.storage.zlshoufu2_markcount=0; + target.markAuto('zlshoufu2',cards); + player.draw(); + }, + }, + zlshoufu2:{ + marktext:'箓', + intro:{ + content:'cards', + onunmark:'throw', + }, + charlotte:true, + mod:{ + cardEnabled:function(card,player){ + if(player.getStorage('zlshoufu2').filter(function(magic){ + return get.type2(magic)==get.type(card); + }).length) return false; + }, + cardRespondable:function(card,player){ + if(player.getStorage('zlshoufu2').filter(function(magic){ + return get.type2(magic)==get.type(card); + }).length) return false; + }, + cardSavable:function(card,player){ + if(player.getStorage('zlshoufu2').filter(function(magic){ + return get.type2(magic)==get.type(card); + }).length) return false; + }, + }, + trigger:{ + player:['damageEnd','loseAfter'], + }, + forced:true, + filter:function(event,player){ + var storage=player.getStorage('zlshoufu2'); + if(!storage.length) return false; + if(event.name=='damage') return true; + if(event.type!='discard'||event.getParent('phaseDiscard').player!=player) return false; + for(var i of event.cards2){ + if(storage.filter(function(magic){ + return get.type2(magic)==get.type2(i,event.hs.contains(i)?player:false); + }).length) return true; + } + return false; + }, + content:function(){ + if(trigger.name=='lose'){ + for(var i of trigger.cards2){ + if(player.getStorage('zlshoufu2').filter(function(magic){ + return get.type2(magic)==get.type(i,trigger.hs.contains(i)?player:false); + }).length) player.storage.zlshoufu2_markcount++; + } + } + if(trigger.name=='damage'||player.storage.zlshoufu2_markcount>=2) player.unmarkSkill('zlshoufu2'); + else player.markSkill('zlshoufu2'); + }, + }, //蔡阳 yinka:{ trigger:{player:['drawBegin','judgeBegin']}, @@ -562,453 +519,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, ai:{isLuckyStar:true}, }, - //吕旷吕翔和淳于琼和官渡哔哔机 - spshicai:{ - audio:2, - enable:'phaseUse', - position:'he', - filter:function(event,player){ - return !player.storage.spshicai2||!player.getCards('h').contains(player.storage.spshicai2); - }, - filterCard:true, - prompt:function(){ - var str='弃置一张牌,然后获得'; - if(get.itemtype(_status.pileTop)=='card') str+=get.translation(_status.pileTop); - else str+='牌堆顶的一张牌'; - return str; - }, - check:function(card){ - var player=_status.event.player; - var cardx=_status.pileTop; - if(get.itemtype(cardx)!='card') return 0; - var val=player.getUseValue(cardx,null,true); - if(!val) return 0; - var val2=player.getUseValue(card,null,true); - return (val-val2)/Math.max(0.1,get.value(card)); - }, - content:function(){ - var card=get.cards()[0]; - player.storage.spshicai2=card; - player.gain(card,'draw'); - game.log(player,'获得了牌堆顶的一张牌'); - }, - group:'spshicai_mark', - ai:{ - order:1, - result:{player:1}, - }, - }, - spshicai_mark:{ - trigger:{player:'phaseUseBegin'}, - silent:true, - firstDo:true, - content:function(){ - player.addTempSkill('spshicai2','phaseUseEnd'); - }, - }, - spshicai2:{ - onremove:true, - mark:true, - intro:{ - mark:function(dialog,content,player){ - if(player!=game.me) return get.translation(player)+'观看牌堆中...'; - if(get.itemtype(_status.pileTop)!='card') return '牌堆顶无牌'; - dialog.add([_status.pileTop]); - }, - }, - }, - spfushi:{ - group:['zezhu','chenggong'], - derivation:['zezhu','chenggong'], - locked:true, - }, - zezhu:{ - audio:2, - enable:'phaseUse', - usable:1, - filter:function(event,player){ - var enemy=0; - var friend=0; - var zhu=0; - for(var i of game.players){ - if(i.isEnemyOf(player)) enemy++; - else friend++; - if(i!=player&&i.isZhu) zhu++; - } - return zhu>0&&enemy0) player.gainPlayerCard(target,'he',true); - else player.draw(); - if(event.targets2.length) event.redo(); - 'step 2' - if(player.countCards('he')>=targets.length){ - player.chooseCard('he',true,'依次选择'+get.cnNumber(targets.length)+'张牌,分别交给'+get.translation(targets),targets.length).set('ai',function(card){ - var target=_status.event.getParent().targets[ui.selected.cards.length]; - var player=_status.event.player; - return get.attitude(player,target)*get.value(card,target); - }); - } - else event.finish(); - 'step 3' - for(var i=0;i1&&event.player.isAlive())) return false; - var enemy=0; - var friend=0; - for(var i of game.players){ - if(i.isEnemyOf(player)) enemy++; - else friend++; - } - return enemy>friend; - }, - check:function(event,player){ - return get.attitude(player,event.player)>0; - }, - logTarget:'player', - content:function(){ - trigger.player.draw(); - }, - }, - cangchu:{ - trigger:{ - global:'gameDrawAfter', - player:['damageEnd','enterGame'], - }, - audio:2, - forced:true, - filter:function(event,player){ - if(event.name!='damage') return true; - return event.nature=='fire'&&player.countMark('cangchu')>0; - }, - content:function(){ - if(trigger.name!='damage') player.addMark('cangchu',3); - else{ - player.removeMark('cangchu',Math.min(trigger.num,player.countMark('cangchu'))); - if(!player.hasMark('cangchu')) event.trigger('cangchuAwaken'); - } - }, - marktext:'粮', - intro:{ - name2:'粮', - content:'mark', - }, - ai:{ - threaten:function(player,target){ - return 1+target.countMark('cangchu')/2; - }, - effect:{ - target:function(card,player,target,current){ - if(target.hasMark('cangchu')){ - if(card.name=='sha'){ - if(lib.skill.global.contains('huoshaowuchao')||card.nature=='fire'||player.hasSkill('zhuque_skill')) return 2; - } - if(get.tag(card,'fireDamage')&¤t<0) return 2; - } - } - }, - }, - }, - sushou:{ - trigger:{player:'phaseDiscardBegin'}, - frequent:true, - audio:2, - content:function(){ - 'step 0' - player.draw(1+player.countMark('cangchu')); - 'step 1' - var num=Math.min(player.countCards('h'),game.countPlayer(function(target){ - return target!=player&&target.isFriendOf(player); - })); - if(num){ - player.chooseCardTarget({ - prompt:'是否将任意张手牌交给其他己方角色?', - prompt2:'操作提示:先按顺序选中所有要给出的手牌,然后再按顺序选择等量的目标角色', - selectCard:[1,num], - selectTarget:function(){ - return ui.selected.cards.length; - }, - filterTarget:function(card,player,target){ - return target!=player&&target.isFriendOf(player); - }, - complexSelect:true, - ai1:function(card){ - if(card.name=='shan') return 1; - return Math.random(); - }, - ai2:function(target){ - return 5-Math.max(4,target.countCards('h')); - }, - }); - } - else event.finish(); - 'step 2' - if(result.bool){ - while(result.cards.length){ - var target=result.targets.shift(); - var card=result.cards.shift(); - target.gain(card,player); - player.$giveAuto(card,target); - } - event.next.sort(function(a,b){ - return lib.sort.seat(a.player,b.player); - }); - } - else event.finish(); - 'step 3' - game.delay(); - }, - }, - liangying:{ - trigger:{ - global:'phaseDrawBegin2', - player:'cangchuAwaken', - }, - forced:true, - audio:1, - logTarget:function(event,player){ - if(event.name=='phaseDraw') return event.player; - return game.filterPlayer(function(current){ - return current.isEnemyOf(player); - }); - }, - filter:function(event,player){ - if(event.name=='cangchu') return true; - return player.hasMark('cangchu')&&!event.numFixed&&event.player.isFriendOf(player); - }, - content:function(){ - 'step 0' - if(trigger.name=='cangchu'){ - player.loseMaxHp(); - var list=game.filterPlayer(function(current){ - return current.isEnemyOf(player); - }); - if(list.length){ - game.asyncDraw(list,2); - } - } - else{ - trigger.num++; - event.finish(); - } - 'step 1' - game.delay(); - }, - }, - liehou:{ - enable:'phaseUse', - usable:1, - audio:2, - filterTarget:function(card,player,target){ - return player.inRange(target)&&target.countCards('h'); - }, - content:function(){ - 'step 0' - target.chooseCard('h',true,'交给'+get.translation(player)+'一张牌'); - 'step 1' - if(result.bool){ - player.gain(result.cards,target,'giveAuto'); - } - else event.finish(); - 'step 2' - if(player.countCards('h')&&game.hasPlayer(function(current){ - return current!=target&&player.inRange(current); - })){ - player.chooseCardTarget({ - position:'h', - filterCard:true, - filterTarget:function(card,player,target){ - return target!=_status.event.getParent().target&&player.inRange(target); - }, - forced:true, - prompt:'将一张手牌交给一名攻击范围内的其他角色', - ai1:function(card){ - var player=_status.event.player; - if(get.name(card)=='du') return 20; - if(game.hasPlayer(function(current){ - return current!=_status.event.getParent().target&&player.inRange(current)&&get.attitude(player,current)>0&¤t.getUseValue(card)>player.getUseValue(card)&¤t.getUseValue(card)>player.getUseValue(card); - })) return 12; - if(game.hasPlayer(function(current){ - return current!=player&&get.attitude(player,current)>0; - })){ - if(card.name=='wuxie') return 11; - if(card.name=='shan'&&player.countCards('h','shan')>1) return 9 - } - return 6/Math.max(1,get.value(card)); - }, - ai2:function(target){ - var player=_status.event.player; - var card=ui.selected.cards[0]; - var att=get.attitude(player,target); - if(card.name=='du') return -6*att; - if(att>0){ - if(get.position(card)=='h'&&target.getUseValue(card)>player.getUseValue(card)) return 4*att; - if(get.value(card,target)>get.value(card,player)) return 2*att; - return 1.2*att; - } - return -att*Math.min(4,target.countCards('he'))/6; - }, - }); - } - else event.finish(); - 'step 3' - if(result.bool) result.targets[0].gain(result.cards,player,'giveAuto') - }, - ai:{ - order:6, - result:{ - target:-1, - }, - }, - }, - qigong:{ - trigger:{player:'shaMiss'}, - direct:true, - audio:2, - filter:function(event,player){ - return player.canUse('sha',event.target,false)&&(player.hasSha()||_status.connectMode&&player.countCards('h')); - }, - content:function(){ - "step 0" - player.chooseToUse(get.prompt('qigong'),function(card,player,event){ - if(get.name(card)!='sha') return false; - return lib.filter.filterCard.apply(this,arguments); - },trigger.target,-1).set('addCount',false).logSkill='qigong'; - }, - group:'qigong_hit', - }, - qigong_hit:{ - trigger:{player:'useCard1'}, - firstDo:true, - silent:true, - filter:function(event,player){ - return event.getParent(2).name=='qigong'; - }, - content:function(){ - trigger.directHit.addArray(game.players); - }, - }, - //说出吾名吓汝一跳 - xuxie:{ - audio:2, - trigger:{player:'phaseUseBegin'}, - logTarget:function(event,player){ - return game.filterPlayer(function(current){ - return get.distance(player,current)<=1; - }).sortBySeat(); - }, - check:function(event,player){ - if(player.isHealthy()) return false; - var list=game.filterPlayer(function(current){ - return get.distance(player,current)<=1; - }); - var draw=0; - var discard=0; - var num=2/player.getDamagedHp(); - while(list.length){ - var target=list.shift(); - var att=get.attitude(player,target); - if(att>0){ - draw++; - if(target.countDiscardableCards(player,'he')>0) discard--; - } - if(att==0){ - draw--; - if(target.countDiscardableCards(player,'he')>0) discard--; - } - if(att<0){ - draw--; - if(target.countDiscardableCards(player,'he')>0) discard++; - } - } - return draw>=num||discard>=num; - }, - content:function(){ - 'step 0' - player.loseMaxHp(); - 'step 1' - var targets=game.filterPlayer(function(current){ - return get.distance(player,current)<=1; - }).sortBySeat(); - if(!targets.length) event.finish(); - else{ - event.targets=targets; - player.chooseControl().set('choiceList',[ - '弃置'+get.translation(targets)+'的各一张牌', - '令'+get.translation(targets)+'各摸一张牌', - ]).set('ai',function(){ - var player=_status.event.player; - var list=_status.event.getParent().targets.slice(0); - var draw=0; - var discard=0; - while(list.length){ - var target=list.shift(); - var att=get.attitude(player,target); - if(att>0){ - draw++; - if(target.countDiscardableCards(player,'he')>0) discard--; - } - if(att<0){ - draw--; - if(target.countDiscardableCards(player,'he')>0) discard++; - } - } - if(draw>discard) return 1; - return 0; - }); - } - 'step 2' - event.index=result.index; - if(result.index==1){ - game.asyncDraw(targets); - } - else event.goto(4); - 'step 3' - game.delay(); - event.finish(); - 'step 4' - var target=targets.shift(); - if(target.countDiscardableCards(player,'he')>0) player.discardPlayerCard(target,'he',true); - if(targets.length) event.redo(); - }, - group:'xuxie_add', - }, - xuxie_add:{ - audio:'xuxie', - trigger:{player:'phaseUseEnd'}, - forced:true, - locked:false, - filter:function(event,player){ - return !game.hasPlayer(function(current){ - return current.maxHp0; - }, - content:function(){ - var list=[]; - var list2=[]; - for(var i=0;i4?8:4))); - }, - filterCard:true, - position:'he', - check:function(card){ - var val=get.value(card); - if(!_status.event.player.getStorage('fenyin_mark').contains(get.suit(card))) return 12-val; - return 8-val; - }, - filterTarget:lib.filter.notMe, - content:function(){ - target.damage('nocard'); - }, - }, - //新潘凤 - xinkuangfu:{ - enable:'phaseUse', - usable:1, - delay:false, - filterTarget:function(card,player,target){ - if(player==target) return player.countCards('e',function(card){ - return lib.filter.cardDiscardable(card,player); - })>0; - return target.countDiscardableCards(player,'e')>0; - }, - filter:function(event,player){ - return game.hasPlayer(function(current){ - return current.countCards('e')>0; - }); - }, - content:function(){ - 'step 0' - if(player==target) player.chooseToDiscard('e',true); - else player.discardPlayerCard(target,'e',true); - 'step 1' - player.chooseUseTarget('sha',true,false,'nodistance'); - 'step 2' - var bool=game.hasPlayer2(function(current){ - return current.getHistory('damage',function(evt){ - return evt.getParent(4)==event; - }).length>0 - }); - if(player==target&&bool) player.draw(2); - else if(player!=target&&!bool) player.chooseToDiscard('he',2,true); - }, - ai:{ - order:function(){ - return get.order({name:'sha'})+0.3; - }, - result:{ - target:function(player,target){ - var att=get.attitude(player,target); - var max=0; - var min=1; - target.countCards('e',function(card){ - var val=get.value(card); - if(val>max) max=val; - if(val0&&min<=0) return target.hasSkillTag('noe')?3:1; - if(att<0&&max>0){ - if(target.hasSkillTag('noe')) return max>6?(-max/3):0; - return -max; - } - return 0; - }, - }, - }, - }, - //官渡之战 - xiying:{ - trigger:{player:'phaseUseBegin'}, - audio:2, - direct:true, - filter:function(event,player){ - return player.countCards('h',function(card){ - return _status.connectMode||get.type(card)!='basic'; - })>0; - }, - content:function(){ - 'step 0' - var list=game.filterPlayer(function(current){ - return current!=player; - }); - list.sortBySeat(); - event.targets=list; - player.chooseToDiscard(get.prompt2('xiying'),'h',function(card){ - return get.type(card)!='basic'; - }).set('logSkill',['xiying',list]).set('ai',function(card){ - return _status.event.val-get.value(card) - }).set('val',function(){ - return 4*Math.sqrt(game.countPlayer(function(current){ - return get.attitude(player,current)<0&¤t.countCards('he')>0; - })); - }()); - 'step 1' - if(!result.bool) event.finish(); - 'step 2' - var target=targets.shift(); - event.target=target; - if(target.isAlive()) target.chooseToDiscard('he','弃置一张牌,或本回合内不能使用或打出手牌').set('ai',function(card){ - var player=_status.event.player; - var source=_status.event.getTrigger().player; - if(get.attitude(source,player)>0) return -1; - if(_status.event.getRand()>0.5) return 5-get.value(card); - return -1; - }); - 'step 3' - if(target.isAlive()&&!result.bool) target.addTempSkill('xiying2'); - if(targets.length) event.goto(2); - }, - }, - xiying2:{ - mark:true, - intro:{content:'本回合内不能使用或打出牌'}, - mod:{ - cardEnabled2:function (card){ - if(get.position(card)=='h') return false; - }, - }, - }, - gangzhi:{ - audio:2, - trigger:{ - player:'damageBefore', - source:'damageBefore', - }, - forced:true, - content:function(){ - trigger.cancel(); - trigger.player.loseHp(trigger.num); - }, - }, - beizhan:{ - trigger:{player:'phaseJieshuBegin'}, - direct:true, - audio:2, - content:function(){ - 'step 0' - player.chooseTarget(get.prompt2('beizhan')).set('ai',function(target){ - var player=_status.event.player; - var att=get.attitude(player,target); - var hs=target.countCards('h'); - var ht=target.maxHp; - if(hs>=ht&&target.isMaxHandcard()) return -att*hs; - if(hsht; - })) return att*2*(ht-hs); - return 0; - }); - 'step 1' - if(result.bool){ - var target=result.targets[0]; - player.logSkill('beizhan',target); - target.drawTo(Math.min(5,target.maxHp)) - target.addSkill('beizhan2'); - } - }, - ai:{ - expose:0.25, - }, - }, - beizhan2:{ - trigger:{player:'phaseBegin'}, - silent:true, - firstDo:true, - content:function(){ - player.removeSkill('beizhan2'); - if(player.isMaxHandcard()) player.addTempSkill('zishou2'); - }, - mark:true, - intro:{content:'回合开始时,若手牌数为全场最多,则回合内不能使用牌指定其他角色为目标'}, - }, - fenglve:{ - audio:2, - trigger:{ - player:"phaseUseBegin", - }, - direct:true, - content:function (){ - 'step 0' - var goon=player.hasCard(function(card){ - if(get.position(card)!="h") return false; - var val=get.value(card); - if(val<0) return true; - if(val<=5){ - return card.number>=12; - } - if(val<=6){ - return card.number>=13; - } - return false; - }); - player.chooseTarget(get.prompt2('fenglve'),function(card,player,target){ - return player.canCompare(target); - }).set('ai',function(target){ - if(!_status.event.goon) return 0; - return -get.attitude(player,target)*(1+target.countCards('e'))/(1+target.countCards('j')); - }).set('goon',goon); - 'step 1' - if(result.bool){ - var target=result.targets[0]; - event.target=target; - player.logSkill('fenglve',target); - player.chooseToCompare(target); - } - else{ - event.finish(); - } - 'step 2' - if(result.bool){ - var num=0; - if(target.countCards('h')) num++; - if(target.countCards('e')) num++; - if(target.countCards('j')) num++; - if(num){ - event.gainner=player; - event.giver=target; - target.choosePlayerCard(target,num,'hej',true).set('filterButton',function(button){ - for(var i=0;i0; - }, - filter:function(event,player){ - return event.getParent().name=='fenglve'&&get.position(event.card1,true)=='o'; - }, - prompt:function(event){ - return '是否令'+get.translation(event.target)+'获得'+get.translation(event.card1)+'?' - }, - logTarget:'target', - content:function(){ - trigger.target.gain(trigger.card1,'gain2','log'); - }, - }, - mouzhi:{ - audio:2, - enable:'phaseUse', - usable:1, - filter:function(event,player){ - return player.countCards('h')>0 - }, - filterCard:true, - filterTarget:function(card,player,target){ - if(target.storage.mouzhi2&&target.storage.mouzhi2.contains(player)) return false; - return target!=player; - }, - delay:0, - lose:false, - discard:false, - check:function(card){ - if(card.name=='du') return 20; - var player=_status.event.player; - var useval=player.getUseValue(card); - var maxval=0; - game.countPlayer(function(current){ - if(current!=player&&!current.hasSkillTag('nogain')&&get.attitude(player,current)>0){ - var temp=current.getUseValue(card); - if(temp>maxval) maxval=temp; - } - }); - if(maxval>0&&get.tag(card,'damage')) return 15; - if(maxval>useval) return 10; - if(player.needsToDiscard()) return 1/Math.max(0.1,get.value(card)); - return -1; - }, - content:function(){ - target.gain(cards,player,'giveAuto'); - target.addTempSkill('mouzhi2',{player:'phaseEnd'}); - target.storage.mouzhi2.add(player); - target.storage.mouzhi2.sortBySeat(target); - target.markSkill('mouzhi2'); - }, - ai:{ - order:10, - result:{ - target:function(player,target){ - if(ui.selected.cards.length){ - var card=ui.selected.cards[0]; - if(card.name=='du') return target.hasSkill('lucia_duqu')?1:-1; - var t=target.getUseValue(card); - var p=player.getUseValue(card); - if(t>p) return 2; - if(t>0) return 1.5 - if(player.needsToDiscard()) return 1; - return 0; - } - return 0; - }, - }, - }, - }, - mouzhi2:{ - init:function(player,skill){ - if(!player.storage[skill]) player.storage[skill]=[]; - }, - onremove:true, - trigger:{source:'damageSource'}, - forced:true, - intro:{ - content:'出牌阶段内第一次对一名其他角色造成伤害时,$摸一张牌', - }, - filter:function(event,player){ - var evt2=event.getParent('phaseUse'); - if(!evt2||evt2.player!=player) return false; - var history=event.player.getHistory('damage',function(evt){ - return evt.source==player&&evt.getParent('phaseUse')==evt2; - }); - return history[0]==event; - }, - content:function(){ - 'step 0' - game.asyncDraw(player.storage.mouzhi2); - 'step 1' - game.delay(); - }, - }, - yuanlve:{ - enable:'phaseUse', - usable:1, - audio:2, - filter:function(event,player){ - return player.countCards('h',function(card){ - return get.type(card)!='equip'; - }) - }, - filterCard:function(card){ - return get.type(card)!='equip'; - }, - filterTarget:lib.filter.notMe, - delay:false, - discard:false, - lose:false, - check:function(card){ - if(card.name=='du') return 20; - var player=_status.event.player; - var useval=player.getUseValue(card); - var maxval=0; - game.countPlayer(function(current){ - if(current!=player&&!current.hasSkillTag('nogain')&&get.attitude(player,current)>0){ - var temp=current.getUseValue(card); - if(temp>maxval) maxval=temp; - } - }); - if(maxval>useval) return 15; - if(maxval>0) return 10; - if(player.needsToDiscard()) return 1/Math.max(0.1,get.value(card)); - return -1; - }, - content:function(){ - 'step 0' - target.gain(cards,player,'giveAuto'); - 'step 1' - target.chooseUseTarget(cards[0]); - 'step 2' - if(result.bool) player.draw(); - }, - ai:{ - order:10, - result:{ - target:function(player,target){ - if(ui.selected.cards.length){ - var card=ui.selected.cards[0]; - if(card.name=='du') return target.hasSkill('lucia_duqu')?1:-1; - var t=target.getUseValue(card); - var p=player.getUseValue(card); - if(t>p) return 2; - if(t>0) return 1.5 - if(player.needsToDiscard()) return 1; - return 0; - } - return 0; - }, - }, - }, - }, //孙邵 bizheng:{ trigger:{player:'phaseDrawEnd'}, @@ -1733,57 +761,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){ expose:0.25, }, }, - //王双 - spzhuilie:{ - mod:{ - targetInRange:function(card){ - if(card.name=='sha') return true; - }, - }, - trigger:{player:'useCardToTargeted'}, - filter:function(event,player){ - return event.card&&event.card.name=='sha'&&!player.inRange(event.target); - }, - forced:true, - logTarget:'target', - content:function(){ - 'step 0' - player.judge(function(card){ - var type=get.subtype(card); - return ['equip1','equip4','equip3','equip6'].contains(type)?6: -6; - switch(type){ - case 'equip': return 4; - case 'trick': return -4; - default: return 0; - } - }); - 'step 1' - if(trigger.getParent().addCount!==false){ - trigger.getParent().addCount=false; - var stat=player.getStat(); - if(stat&&stat.card&&stat.card.sha) stat.card.sha--; - } - if(result.bool===true){ - var map=trigger.customArgs; - var id=trigger.target.playerid; - if(!map[id]) map[id]={}; - if(typeof map[id].extraDamage!='number') map[id].extraDamage=0; - map[id].extraDamage+=trigger.target.hp-1; - } - else if(result.bool===false) player.loseHp(); - }, - }, - spzhuilie2:{ - onremove:true, - intro:{ - content:'使用【杀】的次数上限+#', - }, - mod:{ - cardUsable:function(card,player,num){ - if(card.name=='sha') return num+player.countMark('spzhuilie2'); - }, - }, - }, //桌游志贴纸 spyinzhi:{ trigger:{player:'damageEnd'}, @@ -2413,160 +1390,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ player.draw(player.countMark('neifa_nobasic')); }, }, - //花鬘 - manyi:{audio:2}, - hmmanyi:{ - trigger:{target:'useCardToBefore'}, - forced:true, - audio:'manyi', - filter:function(event,player){ - return event.card.name=='nanman'; - }, - content:function(){ - trigger.cancel(); - }, - }, - mansi:{ - audio:2, - trigger:{global:'useCardAfter'}, - filter:function(event,player){ - return event.card.name=='nanman'&&game.countPlayer2(function(current){ - return current.getHistory('damage',function(evt){ - return evt.getParent(2)==event; - }).length>0; - })>0; - }, - frequent:true, - content:function(){ - var num=game.countPlayer2(function(current){ - return current.getHistory('damage',function(evt){ - return evt.getParent(2)==trigger; - }).length>0; - }); - player.draw(num); - player.addMark('mansi',num,false); - }, - intro:{content:'已因此技能获得了#张牌'}, - }, - souying:{ - audio:2, - trigger:{ - player:'damageBegin3', - source:'damageBegin1', - }, - direct:true, - filter:function(event,player,name){ - if(!player.countCards('h')||player.hasSkill('souying2')) return false; - if(name=='damageBegin1'){ - if(event.player.sex!='male') return false; - return event.player.getHistory('damage',function(evt){ - return evt.source==player; - }).length==1; - } - else{ - if(!event.source||event.source.sex!='male') return false; - return player.getHistory('damage',function(evt){ - return evt.source==event.source; - }).length==1; - } - }, - content:function(){ - 'step 0' - var next=player.chooseToDiscard(); - if(event.triggername=='damageBegin1'){ - event.target=trigger.player; - next.set('goon',get.attitude(player,event.target)<0&&!event.target.hasSkillTag('filterDamage',null,{ - player:player, - card:trigger.card, - })), - next.set('prompt2','弃置一张手牌,令对其造成的伤害+1'); - } - else{ - event.target=trigger.source; - next.set('goon',true); - next.set('prompt2','弃置一张手牌,令即将受到的伤害-1'); - } - next.set('prompt',get.prompt('souying',event.target)); - next.set('ai',function(card){ - if(_status.event.goon) return 6-get.value(card); - return -1; - }); - next.set('logSkill',['souying',event.target]); - 'step 1' - if(result.bool){ - player.addTempSkill('souying2'); - trigger.num+=(event.triggername=='damageBegin1'?1:-1); - } - }, - ai:{ - expose:0.25, - }, - }, - souying2:{}, - zhanyuan:{ - unique:true, - audio:2, - derivation:'hmxili', - skillAnimation:true, - animationColor:'soil', - juexingji:true, - forced:true, - filter:function(event,player){ - return player.countMark('mansi')>7; - }, - trigger:{player:'phaseZhunbeiBegin'}, - content:function(){ - 'step 0' - player.awakenSkill('zhanyuan'); - player.gainMaxHp(); - 'step 1' - player.chooseTarget('是否失去〖蛮嗣〗,令一名其他男性角色和自己一同获得技能〖系力〗?',function(card,player,target){ - return target!=player&&target.sex=='male'; - }).ai=function(target){ - return get.attitude(_status.event.player,target)-5; - }; - 'step 2' - if(result.bool){ - var target=result.targets[0]; - player.line(target,'fire'); - player.addSkill('hmxili'); - target.addSkill('hmxili'); - player.removeSkill('mansi'); - } - }, - }, - hmxili:{ - trigger:{global:'useCardToPlayered'}, - direct:true, - audio:2, - filter:function(event,player){ - return event.player!=player&&event.card.name=='sha'&&event.player.isPhaseUsing()&&event.player.hasSkill('hmxili')&&player.countCards('h')>0; - }, - content:function(){ - 'step 0' - player.chooseToDiscard('是否弃置一张手牌,令'+get.translation(trigger.card)+'对'+get.translation(trigger.target)+'的伤害+1?','h').set('logSkill',['hmxili',trigger.target]).set('goon',function(){ - var target=trigger.target; - if(get.attitude(player,target)>=0) return false; - if(trigger.target.hasSkillTag('filterDamage',null,{ - player:trigger.player, - card:trigger.card, - })||target.mayHaveShan()) return false; - return true; - }()).ai=function(card){ - if(_status.event.goon) return 5-get.value(card); - return -1; - }; - 'step 1' - if(result.bool){ - var id=trigger.target.playerid; - var map=trigger.customArgs; - if(!map[id]) map[id]={}; - if(!map[id].extraDamage) map[id].extraDamage=0; - map[id].extraDamage++; - } - }, - }, - //许邵许靖 + //许靖 yuxu:{ audio:2, trigger:{player:'useCardEnd'}, @@ -2635,710 +1459,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){ expose:0.25, }, }, - pingjian:{ - audio:1, - trigger:{ - player:['damageEnd','phaseJieshuBegin'], - }, - initList:function(){ - var list=[]; - if(_status.connectMode) var list=get.charactersOL(); - else{ - var list=[]; - for(var i in lib.character){ - if(lib.filter.characterDisabled2(i)||lib.filter.characterDisabled(i)) continue; - list.push(i); - } - } - game.countPlayer2(function(current){ - list.remove(current.name); - list.remove(current.name1); - list.remove(current.name2); - if(current.storage.rehuashen&¤t.storage.rehuashen.character) list.removeArray(current.storage.rehuashen.character) - }); - _status.characterlist=list; - }, - frequent:true, - content:function(){ - 'step 0' - if(!player.storage.pingjian) player.storage.pingjian=[]; - event._result={bool:true}; - 'step 1' - if(result.bool){ - if(!_status.characterlist){ - lib.skill.pingjian.initList(); - } - var list=[]; - var skills=[]; - var map=[]; - _status.characterlist.randomSort(); - var name2=event.triggername; - for(var i=0;i<_status.characterlist.length;i++){ - var name=_status.characterlist[i]; - if(name.indexOf('zuoci')!=-1||name.indexOf('xushao')!=-1) continue; - var skills2=lib.character[name][3]; - for(var j=0;j2) break; - } - if(!skills.length){ - player.draw(); - event.finish(); - } - else{ - skills.unshift('摸一张牌'); - player.chooseControl(skills).set('dialog',['请选择要发动的技能,或摸一张牌',[list,'character']]).set('ai',function(){return 0}); - } - } - else event.finish(); - 'step 2' - if(result.control=='摸一张牌'){ - player.draw(); - return; - } - player.storage.pingjian.add(result.control); - player.addTempSkill(result.control,event.triggername=='damageEnd'?'damageAfter':'phaseJieshu'); - }, - group:'pingjian_use', - }, - pingjian_use:{ - audio:'pingjian', - enable:'phaseUse', - usable:1, - position:'he', - content:function(){ - 'step 0' - if(!player.storage.pingjian) player.storage.pingjian=[]; - event._result={bool:true}; - 'step 1' - if(result.bool){ - var list=[]; - var skills=[]; - var map=[]; - if(!_status.characterlist){ - lib.skill.pingjian.initList(); - } - _status.characterlist.randomSort(); - for(var i=0;i<_status.characterlist.length;i++){ - var name=_status.characterlist[i]; - if(name.indexOf('zuoci')!=-1||name.indexOf('xushao')!=-1) continue; - var skills2=lib.character[name][3]; - for(var j=0;j2) break; - } - if(!skills.length){ - player.draw(); - event.finish(); - } - else{ - skills.unshift('摸一张牌'); - player.chooseControl(skills).set('dialog',['请选择要发动的技能,或摸一张牌',[list,'character']]).set('ai',function(){return 0}); - } - } - else event.finish(); - 'step 2' - if(result.control=='摸一张牌'){ - player.draw(); - return; - } - player.storage.pingjian.add(result.control); - player.addTempSkill(result.control,'phaseUseEnd'); - player.addTempSkill('pingjian_temp','phaseUseEnd'); - player.storage.pingjian_temp=result.control; - event.getParent(2).goto(0); - }, - ai:{order:10,result:{player:1}}, - }, - pingjian_temp:{ - onremove:true, - trigger:{player:'useSkillAfter'}, - silent:true, - firstDo:true, - filter:function(event,player){ - return event.skill==player.storage.pingjian_temp; - }, - content:function(){ - player.removeSkill(trigger.skill); - player.removeSkill('pingjian_temp'); - }, - }, - //蒲元 - pytianjiang:{ - audio:2, - trigger:{ - global:'gameDrawAfter', - player:'enterGame', - }, - forced:true, - locked:false, - content:function(){ - 'step 0' - var i=0; - var list=[]; - while(i++<2){ - var card=get.cardPile(function(card){ - if(get.type(card)!='equip') return false; - return list.length==0||get.subtype(card)!=get.subtype(list[0]); - }); - if(card) list.push(card); - } - if(!list.length){event.finish();return;} - event.list=list; - player.gain(event.list,'gain2'); - 'step 1' - game.delay(1); - var card=event.list.shift(); - if(player.getCards('h').contains(card)){ - player.$give(card,player,false) - player.equip(card); - } - if(event.list.length) event.redo(); - }, - group:'pytianjiang_move', - }, - pytianjiang_move:{ - audio:'pytianjiang', - prompt:'将装备区里的一张牌移动至其他角色的装备区', - enable:'phaseUse', - position:'e', - filter:function(event,player){ - return player.countCards('e')>0; - }, - check:function(){return 1}, - filterCard:true, - filterTarget:function(event,player,target){ - return target!=player&&target.canEquip(ui.selected.cards[0],true); - }, - prepare:'give', - discard:false, - lose:false, - content:function(){ - target.equip(cards[0]); - }, - ai:{ - order:11, - result:{ - target:function(player,target){ - if(ui.selected.cards.length){ - var card=ui.selected.cards[0]; - if(target.getEquip(card)||target.countCards('h',{subtype:get.subtype(card)})) return 0; - return get.effect(target,card,player,target); - } - return 0; - }, - }, - }, - }, - pyzhuren:{ - audio:2, - enable:'phaseUse', - usable:1, - filterCard:true, - selectCard:1, - check:function(card){ - var player=_status.event.player; - var name='pyzhuren_'+(card[card.name=='shandian'?'name':'suit']); - if(!lib.card[name]||_status.pyzhuren&&_status.pyzhuren[name]){ - if(!player.countCards('h','sha')) return 4-get.value(card); - return 0; - } - return 2+card.number/2-get.value(card); - }, - content:function(){ - if(!_status.pyzhuren) _status.pyzhuren={}; - var rand=get.number(cards[0])/13; - if(get.isLuckyStar(player)) rand=1; - var name='pyzhuren_'+(cards[0][cards[0].name=='shandian'?'name':'suit']); - if(!lib.card[name]||_status.pyzhuren[name]||Math.random()>rand){ - player.popup('杯具'); - game.log(player,'锻造失败'); - var card=get.cardPile(function(card){ - return card.name=='sha'; - }); - if(card) player.gain(card,'gain2'); - } - else{ - _status.pyzhuren[name]=true; - player.gain(game.createCard(name,cards[0].name=='shandian'?'spade':cards[0].suit,1),'gain2') - } - }, - ai:{ - order:10, - result:{ - player:1, - }, - }, - group:'pyzhuren_destroy', - }, - pyzhuren_destroy:{ - trigger:{global:['loseAfter','cardsDiscardAfter']}, - forced:true, - filter:function(event,player){ - var cs=event.cards; - for(var i=0;i0; - return player.countCards('h',this.filterCard)>0; - }, - filterCard:function(card){ - return get.name(card)=='sha'||get.subtype(card)=='equip1'; - }, - content:function(){ - 'step 0' - var next=player.chooseToDiscard('h',lib.skill.pyzhuren_diamond.filterCard,get.prompt(event.name,trigger.player),'弃置一张【杀】或武器牌,令即将对其造成的伤害+1'); - next.ai=function(card){ - if(_status.event.goon) return 6-get.value(card); - return -1; - }; - next.set('goon',get.attitude(player,trigger.player)<0&&!trigger.player.hasSkillTag('filterDamage',null,{ - player:player, - card:trigger.card, - })); - next.logSkill=[event.name,trigger.player]; - 'step 1' - if(result.bool) trigger.num++; - }, - ai:{ - expose:0.25, - }, - }, - pyzhuren_club:{ - audio:true, - trigger:{player:'useCard2'}, - direct:true, - filter:function(event,player){ - if(player.countUsed(null,true)>1) return false; - if(event.card.name!='sha'&&get.type(event.card)!='trick') return false; - var info=get.info(event.card); - if(info.allowMultiple==false) return false; - if(event.targets&&!info.multitarget){ - if(game.hasPlayer(function(current){ - return lib.filter.targetEnabled2(event.card,player,current)&&!event.targets.contains(current); - })){ - return true; - } - } - return false; - }, - content:function(){ - 'step 0' - var prompt2='为'+get.translation(trigger.card)+'额外指定一个目标'; - player.chooseTarget([1,player.storage.fumian_red],get.prompt(event.name),function(card,player,target){ - var player=_status.event.player; - if(_status.event.targets.contains(target)) return false; - return 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('targets',trigger.targets).set('card',trigger.card); - 'step 1' - if(result.bool){ - if(!_status.connectMode&&!event.isMine()) game.delayx(); - event.targets=result.targets; - } - else{ - event.finish(); - } - 'step 2' - if(event.targets){ - player.logSkill(event.name,event.targets); - trigger.targets.addArray(event.targets); - } - }, - }, - pyzhuren_spade:{ - audio:true, - trigger:{player:'useCardToPlayered'}, - filter:function(event,player){ - return event.card.name=='sha'&&event.targets.length==1&&get.color(event.card)=='black'; - }, - check:function(event,player){ - return get.attitude(player,event.target)<=0; - }, - content:function(){ - trigger.target.gain(trigger.cards.filterInD(),'gain2','log'); - trigger.target.loseHp().set('source',player); - }, - ai:{ - jueqing:true, - unequip_ai:true, - skillTagFilter:function(player,tag,arg){ - if(tag=='unequip_ai'){ - if(arg&&arg.name=='sha'&&get.color(arg.card)=='black') return true; - return false; - } - } - }, - }, - pyzhuren_shandian:{ - audio:true, - trigger:{player:'useCardToPlayered'}, - filter:function(event,player){ - return event.card.name=='sha'&&event.targets.length==1; - }, - check:function(event,player){ - return get.attitude(player,event.player)<=0; - }, - content:function(){ - 'step 0' - player.judge(function(card){ - if(get.suit(card)=='spade'&&card.number>1&&card.number<10) return 10; - return 0; - }); - 'step 1' - if(result.bool){ - trigger.target.damage(3,'thunder'); - trigger.getParent().excluded.add(trigger.target); - } - }, - }, - //上兵伐谋 - //伊籍在标包 不会移动 - songshu:{ - audio:2, - enable:'phaseUse', - filter:function(event,player){ - return !player.hasSkill('songshu_reflectionblue')&&player.countCards('h')>0; - }, - filterTarget:function(card,player,target){ - return target!=player&&player.canCompare(target); - }, - content:function(){ - 'step 0' - player.chooseToCompare(target).set('small',get.attitude(player,target)>0); - 'step 1' - if(!result.bool){ - target.draw(2); - player.addTempSkill('songshu_reflectionblue'); - } - }, - }, - songshu_reflectionblue:{ - }, - sibian:{ - audio:2, - trigger:{player:'phaseDrawBegin1'}, - filter:function(event,player){ - return !event.numFixed; - }, - content:function(){ - 'step 0' - trigger.changeToZero(); - event.cards=get.cards(4); - game.cardsGotoOrdering(event.cards); - player.showCards(event.cards); - 'step 1' - cards.sort(function(a,b){ - return b.number-a.number; - }); - var gains=[]; - var mx=[cards[0].number,cards[3].number]; - for(var i=0;i=game.players.length) event._result={bool:false}; - else player.chooseTarget('是否令一名手牌数最少的角色获得'+get.translation(cards),function(card,player,target){ - return target.isMinHandcard(); - }).ai=function(target){ - return get.attitude(_status.event.player,target); - } - 'step 2' - if(result.bool){ - var target=result.targets[0]; - player.line(target); - player.addExpose(0.2); - target.gain(cards,'gain2'); - } - }, - }, - lslixun:{ - audio:2, - forced:true, - trigger:{player:'damageBegin4'}, - marktext:'珠', - intro:{ - name2:'珠', - content:'共有#个“珠”', - }, - content:function(){ - trigger.cancel(); - player.addMark('lslixun',trigger.num); - }, - group:'lslixun_fate', - }, - lslixun_fate:{ - audio:'lslixun', - trigger:{player:'phaseUseBegin'}, - forced:true, - filter:function(event,player){ - return player.countMark('lslixun')>0; - }, - content:function(){ - 'step 0' - event.forceDie=true; - _status.lslixun=player.countMark('lslixun'); - player.judge(function(card){ - if(get.number(card)<_status.lslixun) return -_status.lslixun; - return 1; - }); - 'step 1' - delete _status.lslixun; - if(!result.bool){ - player.chooseToDiscard([1,player.countMark('lslixun')],'h').ai=lib.skill.qiangxi.check; - } - else event.finish(); - 'step 2' - var num=player.countMark('lslixun'); - if(result.cards&&result.cards.length) num-=result.cards.length; - if(num) player.loseHp(num); - }, - }, - lskuizhu:{ - audio:2, - trigger:{player:'phaseUseEnd'}, - direct:true, - filter:function(event,player){ - return player.isMaxHp(true)==false; - }, - content:function(){ - 'step 0' - player.chooseTarget(get.prompt2('lskuizhu'),function(card,player,target){ - return target!=player&&target.isMaxHp(); - }).ai=function(target){ - var player=_status.event.player; - var ts=Math.min(5,target.countCards('h')); - var delta=ts-player.countCards('h'); - if(delta<=0) return 0; - if(get.attitude(player,target)<1) return false; - return target.countCards('he',function(card){ - return lib.skill.zhiheng.check(card)>0; - })>1?delta:0; - }; - 'step 1' - if(result.bool){ - var target=result.targets[0]; - event.target=target; - player.logSkill('lskuizhu',target); - player.drawTo(Math.min(5,target.countCards('h'))); - } - else event.finish(); - 'step 2' - if(!player.countCards('h')){ - event.finish(); - return; - } - target.viewHandcards(player); - 'step 3' - if(!target.countCards('h')){ - event.finish(); - return; - } - target.chooseToDiscard(true,'h',[1,player.countCards('h')],'弃置至多'+get.cnNumber(player.countCards('h'))+'张手牌,并获得'+get.translation(player)+'等量的手牌').ai=function(card){ - if(ui.selected.cards.length>1) return -1; - return lib.skill.zhiheng.check.apply(this,arguments) - }; - 'step 4' - if(result.bool&&result.cards&&result.cards.length&&player.countGainableCards(target,'h')>0){ - target.gainPlayerCard(player,'h',true,result.cards.length).visible=true; - } - 'step 5' - if(result.bool&&result.cards&&result.cards.length>1){ - var bool=player.storage.lslixun>0!==true; - player.chooseTarget(bool,'令'+get.translation(target)+'对其攻击范围内的一名角色造成1点伤害'+(bool?'':',或点「取消」移去一个“珠”'),function(card,player,target){ - var source=_status.event.source; - return target!=source&&source.inRange(target); - }).set('source',target).set('ai',function(target){ - return get.damageEffect(target,_status.event.source,_status.event.player); - }); - } - else event.finish(); - 'step 6' - if(result.bool&&result.targets&&result.targets.length){ - player.line(result.targets[0]); - result.targets[0].damage(target); - } - else{ - player.removeMark('lslixun',1); - } - }, - ai:{ - expose:0.25, - }, - }, - xpchijie:{ - audio:2, - trigger:{ - player:'damageEnd', - }, - filter:function(event,player){ - if(player.hasSkill('xpchijie4')||!event.card) return false; - var evt=event.getParent('useCard'); - return evt.card==event.card&&evt.player!=player; - }, - check:function(event,player){ - var evt=event.getParent('useCard'); - var targets=evt.targets.slice(evt.num+1); - var num=0; - for(var i=0;i0&&!game.hasPlayer2(function(current){ - return current.getHistory('damage',function(evt){ - return evt.card==event.card; - }).length>0; - }); - }, - check:function(event,player){ - return get.value(event.cards.filterInD(),player,'raw')>0; - }, - content:function(){ - player.addTempSkill('xpchijie4'); - player.gain(trigger.cards.filterInD(),'log','gain2'); - }, - }, - xpchijie4:{}, - yinju:{ - audio:2, - enable:'phaseUse', - limited:true, - filterTarget:lib.filter.notMe, - skillAnimation:true, - animationColor:'water', - content:function(){ - player.awakenSkill('yinju'); - player.storage.yinju2=target; - player.addTempSkill('yinju2'); - }, - }, - yinju2:{ - trigger:{ - player:'useCardToPlayered', - source:'damageBefore', - }, - forced:true, - onremove:true, - filter:function(event,player,name){ - if(name=='useCardToPlayered'){ - if(!event.isFirstTarget) return false; - var type=get.type(event.card); - if(type=='equip') return true; - var bool=event.targets.contains(player.storage.yinju2); - return type=='delay'?!bool:bool; - } - return event.player==player.storage.yinju2; - }, - logTarget:function(event){ - return event[event.name=='damage'?'player':'target']; - }, - content:function(){ - if(trigger.name=='damage'){ - trigger.cancel(); - trigger.player.recover(trigger.num); - } - else player.draw(); - }, - }, //新1v1 yanhuo:{ audio:2, @@ -3478,559 +1598,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){ player.draw(3); }, }, - //管辂和葛玄 - gxlianhua:{ - derivation:['reyingzi','reguanxing','zhiyan','gongxin'], - audio:2, - init:function(player,skill){ - if(!player.storage[skill]) player.storage[skill]={ - red:0,black:0, - } - }, - marktext:'丹', - intro:{ - name:'丹血', - markcount:function(storage){ - return storage.red+storage.black; - }, - content:function(storage){ - return '共有'+(storage.red+storage.black)+'个标记'; - }, - }, - trigger:{global:'damage'}, - forced:true, - filter:function(event,player){ - return event.player!=player&&_status.currentPhase!=player; - }, - content:function(){ - player.storage.gxlianhua[player.getFriends().contains(trigger.player)?'red':'black']++; - player.markSkill('gxlianhua'); - }, - group:'gxlianhua_harmonia', - subSkill:{ - harmonia:{ - forced:true, - audio:'gxlianhua', - sub:true, - trigger:{player:'phaseZhunbeiBegin'}, - //filter:function(event,player){ - // return player.storage.gxlianhua&&player.storage.gxlianhua.red+player.storage.gxlianhua.black>0; - //}, - forced:true, - content:function(){ - var cards=[]; - var cards2=[]; - var skill=''; - var red=player.storage.gxlianhua.red; - var black=player.storage.gxlianhua.black; - player.storage.gxlianhua={red:0,black:0}; - player.unmarkSkill('gxlianhua'); - if(red+black<4){ - cards=['tao']; - skill='reyingzi'; - } - else if(red>black){ - cards=['wuzhong']; - skill='reguanxing'; - } - else if(red0) return 1 - return -5/(target.countCards('h')+1); - }, - }, - }, - }, - busuan_angelbeats:{ - mark:true, - intro:{ - mark:function(dialog,content,player){ - if(content&&content.length) dialog.add([content,'vcard']); - }, - }, - trigger:{player:'drawBefore'}, - forced:true, - filter:function(event,player){ - return event.getParent().name=='phaseDraw'; - }, - onremove:true, - content:function(){ - 'step 0' - var list=player.storage['busuan_angelbeats']; - var cards=[]; - for(var i=0;i1) return false; - if(stat.xinlvli>0&&(player!=_status.currentPhase||!player.storage.choujue)) return false; - if(player.hp==player.countCards('h')) return false; - if(player.hp0) player.draw(num); - else player.recover(-num); - }, - //group:'lvli3', - }, - lvli:{ - audio:2, - init:function(player,skill){ - player.storage[skill]=0; - }, - enable:'chooseToUse', - filter:function(event,player){ - if(player.storage.lvli>1) return false; - if(player.storage.lvli>0&&(player!=_status.currentPhase||!player.storage.choujue)) return false; - return event.type!='wuxie'&&event.type!='respondShan'; - }, - chooseButton:{ - dialog:function(event,player){ - var list=[]; - for(var i=0;i0){ - return 1+Math.random(); - } - return 0; - } - if(button.link[2]=='nanman'||button.link[2]=='wanjian'||button.link[2]=='taoyuan'||button.link[2]=='wugu'){ - var eff=0; - for(var i=0;i0){ - return eff+Math.random(); - } - return 0; - } - return Math.random(); - }, - backup:function(links,player){ - return { - filterCard:function(){return false;}, - audio:'lvli', - selectCard:-1, - check:function(card){ - return 1; - }, - viewAs:{name:links[0][2],nature:links[0][3]}, - } - }, - prompt:function(links,player){ - return '请选择'+(get.translation(links[0][3])||'')+get.translation(links[0][2])+'的目标'; - } - }, - ai:{ - order:4, - result:{ - player:1, - }, - threaten:2.9, - }, - group:['lvli2','lvli3','lvli4','lvli5','lvli6'] - }, - lvli2:{ - trigger:{player:['useCardBefore','respondBefore']}, - forced:true, - popup:false, - priority:35, - filter:function(event,player){ - return event.skill=='lvli_backup'||event.skill=='lvli5'||event.skill=='lvli4'; - }, - content:function(){ - 'step 0' - player.logSkill('lvli'); - player.storage.lvli++; - player.popup(trigger.card.name,trigger.name=='useCard'?'metal':'wood'); - 'step 1' - var random=0.5+player.countCards('e')*0.1; - if(get.isLuckyStar(player)||trigger.card.name=='wuxie') random=1; - if(random>=Math.random()){ - player.popup('洗具'); - } - else{ - player.popup('杯具'); - trigger.cancel(); - if(!trigger.getParent().lvli6){ - trigger.getParent().goto(0); - } - game.broadcastAll(function(str){ - var dialog=ui.create.dialog(str); - dialog.classList.add('center'); - setTimeout(function(){ - dialog.close(); - },1000); - },get.translation(player)+'声明的'+get.translation(trigger.card.name)+'并没有生效'); - game.log('然而什么都没有发生'); - game.delay(2); - } - }, - }, - lvli3:{ - trigger:{global:'phaseBefore'}, - forced:true, - silent:true, - popup:false, - content:function(){ - player.storage.lvli=0; - }, - }, - lvli4:{ - log:false, - enable:'chooseToUse', - filter:function(event,player){ - if(player.storage.lvli>1) return false; - if(player.storage.lvli>0&&(player!=_status.currentPhase||!player.storage.choujue)) return false; - return true; - }, - filterCard:function(){return false}, - selectCard:-1, - viewAs:{name:'shan'}, - ai:{ - skillTagFilter:function(player){ - if(player.storage.lvli>1) return false; - if(player.storage.lvli>0&&(player!=_status.currentPhase||!player.storage.choujue)) return false; - return true; - }, - threaten:1.5, - respondShan:true, - } - }, - lvli5:{ - log:false, - enable:'chooseToUse', - filter:function(event,player){ - if(player.storage.lvli>1) return false; - if(player.storage.lvli>0&&(player!=_status.currentPhase||!player.storage.choujue)) return false; - return true; - }, - filterCard:function(){return false}, - selectCard:-1, - viewAs:{name:'wuxie'}, - }, - lvli6:{ - trigger:{player:'damageEnd'}, - direct:true, - filter:function(event,player){ - if(!player.storage.beishui) return false; - if(player.storage.lvli>1) return false; - if(player.storage.lvli>0&&(player!=_status.currentPhase||!player.storage.choujue)) return false; - return true; - }, - content:function(){ - var next=player.chooseToUse(); - next.set('norestore',true); - next.set('_backupevent','lvli'); - next.backup('lvli'); - next.set('lvli6',true); - }, - }, - choujue:{ - derivation:['beishui','qingjiao'], - trigger:{global:'phaseAfter'}, - audio:2, - skillAnimation:true, - animationColor:'water', - unique:true, - juexingji:true, - forced:true, - init:function(player,skill){ - if(!player.storage[skill]) player.storage[skill]=false; - }, - filter:function(event,player){ - if(player.storage.choujue) return false; - return Math.abs(player.hp-player.countCards('h'))>=3; - }, - content:function(){ - player.awakenSkill('choujue'); - player.storage.choujue=true; - player.loseMaxHp(); - player.addSkill('beishui'); - }, - }, - beishui:{ - trigger:{player:'phaseZhunbeiBegin'}, - audio:2, - skillAnimation:'epic', - animationColor:'thunder', - unique:true, - juexingji:true, - forced:true, - init:function(player,skill){ - if(!player.storage[skill]) player.storage[skill]=false; - }, - filter:function(event,player){ - if(player.storage.beishui) return false; - return Math.min(player.hp,player.countCards('h'))<2; - }, - content:function(){ - player.awakenSkill('beishui'); - player.storage.beishui=true; - player.loseMaxHp(); - player.addSkill('qingjiao'); - }, - }, - qingjiao:{ - trigger:{player:'phaseUseBegin'}, - filter:function(event,player){ - return player.countCards('h')&&(ui.cardPile.hasChildNodes()||ui.discardPile.hasChildNodes()); - }, - //check:function(event,player){ - // return player.countCards('h')<=player.hp; - //}, - content:function(){ - 'step 0' - player.discard(player.getCards('h')); - 'step 1' - var evt=trigger.getParent(); - if(evt&&evt.getParent&&!evt.qingjiao){ - evt.qingjiao=true; - var next=game.createEvent('qingjiao_discard',false,evt.getParent()); - next.player=player; - next.setContent(function(){ - var hs=player.getCards('he'); - if(hs.length) player.discard(hs); - }); - } - 'step 2' - var list=[]; - var typelist=[]; - var getType=function(card){ - var sub=get.subtype(card); - if(sub) return sub; - return card.name; - }; - for(var i=0;i=8) break; - } - } - if(list.length<8){ - for(var i=0;i=8) break; - } - } - } - player.gain(list,'gain2'); - 'step 3' - game.updateRoundNumber(); - }, - }, //蒋干 weicheng:{ audio:2, @@ -4096,472 +1663,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){ used:{sub:true}, }, }, - //和沙摩柯一起上线的新服三将 - spjiedao:{ - audio:2, - trigger:{ - source:"damageBegin1", - }, - filter:function(event,player){ - return player.isDamaged()&&!player.getHistory('sourceDamage').length; - }, - logTarget:'player', - direct:true, - check:function(trigger,player){ - if(get.attitude(player,trigger.player)>=-1) return false; - return !trigger.player.hasSkillTag('filterDamage',null,{ - player:player, - card:trigger.card, - }); - }, - content:function (){ - "step 0" - var num=player.getDamagedHp(); - var map={}; - var list=[]; - for(var i=1;i<=num;i++){ - var cn=get.cnNumber(i,true); - map[cn]=i; - list.push(cn); - } - event.map=map; - player.chooseControl(list,'cancel2',function(){ - if(!lib.skill.spjiedao.check(_status.event.getTrigger(),player)) return 'cancel2'; - return get.cnNumber(_status.event.goon,true); - }).set('prompt',get.prompt2('spjiedao',trigger.player)).set('goon',num); - "step 1" - if(result.control=='cancel2') return; - player.logSkill('spjiedao',trigger.player); - var num=event.map[result.control]||1; - trigger.num+=num; - var next=game.createEvent('spjiedao_after',null,trigger.getParent()); - next.player=player; - next.target=trigger.player; - next.num=num; - next.setContent(function(){ - if(target.isAlive()) player.chooseToDiscard(num,true,'he'); - }); - }, - }, - biaozhao:{ - audio:2, - intro:{ - content:"cards", - }, - trigger:{ - player:"phaseJieshuBegin", - }, - direct:true, - filter:function (event,player){ - return player.countCards('he')>0&&!player.storage.biaozhao; - }, - content:function (){ - 'step 0' - player.chooseCard('he',get.prompt2('biaozhao')).ai=function(card){ - return 6-get.value(card); - } - 'step 1' - if(result.bool){ - player.addSkill('biaozhao2'); - player.addSkill('biaozhao3'); - player.logSkill('biaozhao'); - player.lose(result.cards,ui.special,'toStorage','visible'); - player.$give(result.cards,player,false); - player.storage.biaozhao=result.cards; - player.markSkill('biaozhao'); - } - }, - }, - "biaozhao2":{ - trigger:{ - global:["loseAfter","cardsDiscardAfter"], - }, - charlotte:true, - forced:true, - audio:"biaozhao", - filter:function (event,player){ - if(!player.storage.biaozhao) return false; - var evt=event.getParent(); - if(evt&&(evt.name=='useCard'||evt.name=='respond'||evt.name=='biaozhao2')) return false; - var suit=get.suit(player.storage.biaozhao[0]); - var num=get.number(player.storage.biaozhao[0]); - for(var i=0;ievent.num) event.num=current.countCards('h'); - }); - player.chooseTarget('是否令一名角色将手牌摸至'+event.num+'张并回复1点体力?').ai=function(target){ - var num=Math.min(event.num-target.countCards('h'),5); - if(target.isDamaged()) num++; - return num*get.attitude(_status.event.player,target); - }; - "step 1" - if(result.bool){ - var target=result.targets[0]; - player.line(target,'green'); - var draw=Math.min(num-target.countCards('h'),5); - if(draw) target.draw(draw); - target.recover(); - } - }, - }, - yechou:{ - audio:2, - trigger:{ - player:"die", - }, - direct:true, - forceDie:true, - skillAnimation:true, - animationColor:'wood', - content:function (){ - "step 0" - player.chooseTarget(get.prompt2('yechou'),function(card,player,target){ - return player!=target&&target.getDamagedHp()>1 - }).set('forceDie',true).set('ai',function(target){ - var num=get.attitude(_status.event.player,target); - return -num; - }); - "step 1" - if(result.bool){ - var target=result.targets[0]; - player.logSkill('yechou',target); - player.line(target,'green'); - target.addTempSkill('yechou2',{player:'phaseZhunbeiBegin'}); - } - }, - ai:{ - expose:0.5, - }, - }, - "yechou2":{ - mark:true, - marktext:"仇", - intro:{ - content:"每个回合结束时失去1点体力直到回合开始", - }, - trigger:{ - global:"phaseAfter", - }, - forced:true, - content:function (){player.loseHp()}, - }, - yanjiao:{ - audio:2, - ai:{ - order:10, - result:{ - player:1, - target:1.1, - }, - }, - enable:"phaseUse", - usable:1, - filterTarget:function (card,player,target){ - return target!=player; - }, - content:function (){ - "step 0" - var num=4; - if(player.storage.xingshen){ - num+=player.storage.xingshen; - player.storage.xingshen=0; - player.unmarkSkill('xingshen'); - } - event.cards=get.cards(num); - player.showCards(event.cards); - "step 1" - event.getedResult=lib.skill.yanjiao.getResult(cards); - if(!event.getedResult.length){ - game.cardsDiscard(cards); - player.addTempSkill('yanjiao2'); - event.finish(); - } - "step 2" - target.chooseControl("自动分配","手动分配").set("prompt","【严教】:是否让系统自动分配方案?").ai=function(){ - return 0; - }; - "step 3" - if(result.control=="手动分配"){ - event.map=[cards,[],[]]; - _status.noclearcountdown=true; - event.goto(8); - } - else if(!_status.connectMode){ - var choiceList=ui.create.dialog('请选择一种方案','hidden','forcebutton'); - for(var i=0;i1) player.addTempSkill('yanjiao2'); - } - event.finish(); - "step 8" - event.videoId=lib.status.videoId++; - var dialogx=['严教:选择要移动的牌']; - var name=["未分配","第一组","第二组"]; - for(var i=0;i0){ - dialogx.push('
'+name[i]+'
'); - dialogx.push(event.map[i]) - } - } - if(target.isOnline2()){ - target.send(function(dialogx,id){ - ui.create.dialog.apply(null,dialogx).videoId=id; - },dialogx,event.videoId); - } - event.dialog=ui.create.dialog.apply(null,dialogx); - event.dialog.videoId=event.videoId; - if(target!=game.me||_status.auto){ - event.dialog.style.display='none'; - } - var next=target.chooseButton(); - next.set('selectButton',function(){ - if(!_status.event.map[1].length||!_status.event.map[2].length) return 1; - var num1=0; - for(var i=0;i<_status.event.map[1].length;i++){ - num1+=_status.event.map[1][i].number; - } - var num2=0; - for(var j=0;j<_status.event.map[2].length;j++){ - num2+=_status.event.map[2][j].number; - } - return (num1==num2?[0,1]:1); - }); - next.set('map',event.map); - next.set('dialog',event.videoId); - next.set('ai',function(){return -1}); - next.set('forceAuto',true); - "step 9" - if(result.bool){ - if(!result.links.length){ - if(target.isOnline2()){ - target.send('closeDialog',event.videoId); - } - event.dialog.close(); - delete _status.noclearcountdown; - if(!_status.noclearcountdown){ - game.stopCountChoose(); - } - event.togain=[event.map[1],event.map[2],event.map[0]]; - target.showCards(event.togain[0],get.translation(target)+'分出的第一份牌'); - event.goto(5); - } - else{ - event.card=result.links[0]; - var controls=["取消分组","移动到第一组","移动到第二组"]; - for(var i=0;i4) player.storage.xingshen=4; - player.markSkill('xingshen'); - }, - }, //统率三军诸葛瑾和文聘 "zhenwei_three":{ global:"zhenwei_three_others", @@ -5388,8 +2489,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){ var card=result.cards[0]; player.line(target,'green'); target.addTempSkill('new_zhixi','phaseUseEnd'); - target.addTempSkill('new_meibu_range','phaseUseEnd'); if(card.name!='sha'&&get.type(card)!='trick'&&get.color(card)!='black'){ + target.addTempSkill('new_meibu_range','phaseUseEnd'); target.storage.meibu=player; } target.markSkillCharacter('new_meibu',player,'魅步','锁定技,出牌阶段,你至多可使用X张牌,你使用了锦囊牌后不能再使用牌(X为你的体力值)。'); @@ -5409,17 +2510,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, sub:true, }, - viewas:{ - mod:{ - cardEnabled:function (card,player){ - return false; - }, - cardSavable:function (card,player){ - return false; - }, - }, - sub:true, - }, }, }, "new_mumu":{ @@ -5475,145 +2565,42 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, }, "new_zhixi":{ + mod:{ + cardEnabled:function(card,player){ + if(player.storage.new_zhixi2||player.countMark('new_zhixi')>=player.hp) return false; + }, + cardUsable:function(card,player){ + if(player.storage.new_zhixi2||player.countMark('new_zhixi')>=player.hp) return false; + }, + cardRespondable:function(card,player){ + if(player.storage.new_zhixi2||player.countMark('new_zhixi')>=player.hp) return false; + }, + }, trigger:{ player:"useCard1", }, forced:true, popup:false, - filter:function (event,player){ - if(get.type(event.card,'trick')=='trick') return true; - return player.countUsed(null,true)>=player.hp; - }, - onremove:function (player){ + onremove:true, + firstDo:true, + onremove:function(player){ player.unmarkSkill('new_meibu'); + delete player.storage.new_zhixi; + delete player.storage.new_zhixi2; }, - content:function (){ - player.addTempSkill('new_meibu_viewas','phaseUseEnd'); + content:function(){ + player.addMark('new_zhixi',1,false); + if(get.type2(trigger.card)=='trick') player.storage.new_zhixi2=true; }, ai:{presha:true,pretao:true,nokeep:true}, }, "new_mumu2":{ mod:{ - cardEnabled:function (card){if(card.name=='sha') return false}, - }, - }, - remeibu:{ - audio:"meibu", - trigger:{ - global:"phaseUseBegin", - }, - filter:function (event,player){ - return event.player!=player&&event.player.isAlive()&&event.player.inRange(player)&&player.countCards('he')>0; - }, - direct:true, - derivation:["rezhixi"], - checkx:function (event,player){ - if(get.attitude(player,event.player)>=0) return false; - var e2=player.getEquip(2); - if(e2){ - if(e2.name=='tengjia') return true; - if(e2.name=='bagua') return true; - } - return event.player.countCards('h')>event.player.hp; - }, - content:function (){ - "step 0" - var check=lib.skill.new_meibu.checkx(trigger,player); - player.chooseToDiscard(get.prompt2('remeibu',trigger.player),'he').set('ai',function(card){ - if(_status.event.check) return 6-get.value(card); - return 0; - }).set('check',check).set('logSkill',['remeibu',trigger.player]); - "step 1" - if(result.bool){ - var target=trigger.player; - var card=result.cards[0]; - player.line(target,'green'); - target.addTempSkill('rezhixi','phaseUseEnd'); - } - }, - ai:{ - expose:0.2, - }, - }, - remumu:{ - audio:"mumu", - trigger:{ - player:"phaseUseBegin", - }, - direct:true, - content:function (){ - 'step 0' - player.chooseTarget(get.prompt('remumu'),'弃置一名角色装备区内的一张牌,或者获得一名角色装备区内的防具牌',function(card,player,target){ - if(target==player) return target.getEquip(2)!=undefined; - return target.countCards('e')>0; - }).set('ai',function(target){ - var player=_status.event.player; - var att=get.attitude(player,target) - if(target.getEquip(2)&&player.isEmpty(2)){ - return -2*att; - } - return -att; - }); - 'step 1' - if(result.bool&&result.targets&&result.targets.length){ - event.target=result.targets[0]; - player.logSkill('remumu',event.target); - player.line(event.target,'green'); - var e=event.target.getEquip(2); - event.e=e; - if(target==player) event.choice='获得一张防具牌'; - else if(e){ - player.chooseControl('弃置一张装备牌','获得一张防具牌').set('ai',function(){ - if(_status.event.player.getEquip(2)){ - return '弃置一张装备牌'; - } - return '获得一张防具牌'; - }); - } - else{ - event.choice='弃置一张装备牌'; - } - }else event.finish(); - 'step 2' - var choice=event.choice||result.control; - if(choice=='弃置一张装备牌'){ - player.discardPlayerCard(event.target,'e',true); - player.addTempSkill('remumu3'); - } - else{ - if(event.e){ - player.gain(event.e,event.target,'give'); - player.addTempSkill('remumu2') - } - } - }, - }, - remumu2:{ - mod:{ - cardUsable:function(card,player,num){ - if(card.name=='sha') return num-1; + cardEnabled:function(card){ + if(card.name=='sha') return false; }, }, }, - remumu3:{ - mod:{ - cardUsable:function(card,player,num){ - if(card.name=='sha') return num+1; - }, - }, - }, - rezhixi:{ - trigger:{ - player:"useCard", - }, - forced:true, - filter:function(event,player){ - return (event.card.name=='sha'||get.type(event.card)=='trick')&&player.countCards('h')>0; - }, - content:function(){ - player.chooseToDiscard('h',true); - }, - }, qingzhong:{ audio:2, }, @@ -5744,304 +2731,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){ } } }, - spwenji:{ - audio:2, - trigger:{player:'phaseUseBegin'}, - direct:true, - filter:function(event,player){ - return game.hasPlayer(function(current){ - return current!=player&¤t.countCards('he'); - }); - }, - content:function(){ - 'step 0' - player.chooseTarget(get.prompt2('spwenji'),function(card,player,target){ - return target!=player&&target.countCards('he'); - }).set('ai',function(target){ - var att=get.attitude(_status.event.player,target); - if(att>0) return Math.sqrt(att)/10; - return 5-att; - }); - 'step 1' - if(result.bool){ - var target=result.targets[0]; - event.target=target; - player.logSkill('spwenji',target); - target.chooseCard('he',true,'问计:将一张牌交给'+get.translation(player)); - } - else{ - event.finish(); - } - 'step 2' - if(result.bool){ - player.addTempSkill('spwenji_respond'); - player.storage.spwenji_respond=result.cards[0].name; - event.target.give(result.cards,player,true); - } - }, - subSkill:{ - respond:{ - onremove:true, - trigger:{player:'useCard'}, - forced:true, - charlotte:true, - audio:'spwenji', - filter:function(event,player){ - return event.card.name==player.storage.spwenji_respond; - }, - content:function(){ - trigger.directHit.addArray(game.filterPlayer(function(current){ - return current!=player; - })); - }, - } - } - }, - sptunjiang:{ - audio:2, - trigger:{player:'phaseJieshuBegin'}, - frequent:true, - filter:function(event,player){ - if(player.getHistory('skipped').contains('phaseUse')) return false; - return player.getHistory('useCard',function(evt){ - if(evt.targets&&evt.targets.length&&evt.isPhaseUsing()){ - var targets=evt.targets.slice(0); - while(targets.contains(player)) targets.remove(player); - return targets.length>0; - } - return false; - }).length==0; - }, - content:function(){ - player.draw(game.countGroup()); - }, - }, - bingzhao:{ - audio:2, - unique:true, - zhuSkill:true, - forced:true, - intro:{ - content:function(group){ - return '已选择了'+get.translation(group)+'势力' - }, - }, - trigger:{global:['gameDrawAfter','zhuUpdate']}, - filter:function(event,player){ - return !player.storage.bingzhao&&player.hasZhuSkill('bingzhao'); - }, - content:function(){ - 'step 0' - var list=[]; - for(var i=0;i=7; - }, - content:function(){ - player.awakenSkill('baijia'); - player.gainMaxHp(); - player.recover(); - var list=game.filterPlayer(); - for(var i=0;i1; - }; - } - else event.finish(); - 'step 2' - if(result.bool){ - trigger.player.logSkill('bingzhao',player); - player.draw(); - player.storage.guju++; - player.markSkill('guju'); - } - }, - ai:{ - combo:'zongkui' - } - }, - zongkui:{ - trigger:{player:'phaseBefore',global:'roundStart'}, - direct:true, - audio:2, - audioname:['tw_beimihu'], - filter:function(event,player){ - return game.hasPlayer(function(current){ - if(event.name=='roundStart'&&!current.isMinHp()) return false; - return current!=player&&!current.hasMark('zongkui_mark'); - }); - }, - content:function(){ - 'step 0' - player.chooseTarget(get.prompt2('zongkui'),function(card,player,target){ - if(_status.event.round&&!target.isMinHp()) return false; - return target!=player&&!target.hasMark('zongkui_mark'); - }).set('ai',function(target){ - var num=target.isMinHp()?0.5:(1+Math.random()); - if(get.attitude(_status.event.player,target)<0){ - num+=0.5; - } - return num; - }).set('round',event.triggername=='roundStart'); - 'step 1' - if(result.bool){ - var target=result.targets[0]; - player.logSkill('zongkui',target); - target.addMark('zongkui_mark',1); - } - }, - subSkill:{ - mark:{ - marktext:'傀', - intro:{ - name2:'傀', - content:'mark' - } - } - }, - ai:{ - combo:'guju', - threaten:1.4 - } - }, zishu:{ audio:2, locked:true, @@ -8383,7 +5072,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ if(!info.audioname2) info.audioname2={}; info.audioname2.old_yuanshu='weidi'; } - },list); + },event.list); } } }, @@ -9314,6 +6003,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ filterCard:{color:'black'}, mark:true, discard:false, + lose:false, delay:false, check:function(card){ if(_status.event.player.hp==1) return 8-get.value(card); @@ -15807,7 +12497,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){ return player!=target; }, discard:false, - prepare:'give2', + lose:false, + delay:false, ai:{ order:1, result:{ @@ -15833,7 +12524,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ content:function(){ "step 0" event.target1=targets[0]; - targets[0].gain(cards,player); + targets[0].gain(cards,player,'give'); var players=game.filterPlayer(); for(var i=0;i0; - }, - filter:function (event,player){ - return player.isPhaseUsing()&&get.type(event.card)=='trick'&&event.cards.filterInD().length>0; - }, - content:function (){ - player.loseMaxHp(); - player.gain(trigger.cards.filterInD(),'gain2','log'); - }, - }, - "xinfu_xingluan":{ - usable:1, - audio:2, - trigger:{ - player:"useCardAfter", - }, - filter:function (event,player){ - if(!player.isPhaseUsing()) return false; - if(get.type(event.card)==undefined) return false; - return (event.targets&&event.targets.length==1); - }, - content:function (){ - var card=get.cardPile2(function(card){ - return card.number==6; - }); - if(!card){ - player.chat('无牌可得了吗'); - game.log('但是牌堆里面已经没有点数为6的牌了!'); - event.finish(); - return; - } - player.gain(card,'gain2'); - }, - }, - "xinfu_lveming":{ - init:function (player){ - player.storage.xinfu_lveming=0; - }, - mark:true, - intro:{ - content:"已发动过#次", - }, - audio:2, - enable:"phaseUse", - usable:1, - filterTarget:function (card,player,target){ - return player!=target&&target.countCards('e')0?6:-6; - return -6-(numj+1)/numhe; - }, - }, - threaten:1.1, - }, - }, - "xinfu_tunjun":{ - skillAnimation:true, - animationColor:'metal', - limited:true, - unique:true, - enable:"phaseUse", - audio:2, - filter:function (event,player){ - if(player.storage.xinfu_tunjun) return false; - return player.storage.xinfu_lveming&&player.storage.xinfu_lveming>0; - }, - filterTarget:true, - selectTarget:1, - content:function (){ - "step 0" - player.awakenSkill('xinfu_tunjun'); - event.num=player.storage.xinfu_lveming; - event.toequip=[]; - "step 1" - var equip=get.cardPile(function(card){ - var bool1=true; - for(var i=0;i0) event.goto(1); - "step 3" - for (var i=0;itarget.getUseValue({name:'sha',cards:cards})?0:1); - } - else if(bool1){ - event.directindex=0; - } - else if(bool2){ - event.directindex=1; - } - else{ - ui.cardPile.insertBefore(card,ui.cardPile.firstChild); - event.finish(); - } - 'step 2' - var card=cards[0]; - if(result&&typeof event.directindex!='number'){ - event.directindex=result.index; - } - if(event.directindex==1){ - target.chooseUseTarget({name:'sha'},cards,true,false).viewAs=true; - } - else{ - target.chooseUseTarget(card,true,false,'nodistance'); - } - }, - ai:{ - order:7, - result:{ - target:1, - }, - }, - }, - "xinfu_bijing":{ - audio:2, - group:["xinfu_bijing_lose","xinfu_bijing_discard"], - subSkill:{ - lose:{ - trigger:{ - global:"phaseDiscardBegin", - }, - audio:'xinfu_bijing', - filter:function (event,player){ - if(!player.storage.xinfu_bijing) return false; - if(event.player==player) return false; - return player.getHistory('lose',function(evt){ - return evt.cards.contains(player.storage.xinfu_bijing); - }).length>0&&event.player.countCards('he')>0; - }, - forced:true, - logTarget:'player', - content:function (){ - trigger.player.chooseToDiscard(2,true,'he'); - }, - sub:true, - }, - discard:{ - trigger:{ - player:"phaseZhunbeiBegin", - }, - forced:true, - filter:function (event,player){ - if(!player.storage.xinfu_bijing)return false; - return player.getCards('h').contains(player.storage.xinfu_bijing); - }, - content:function (){ - player.discard(player.storage.xinfu_bijing); - delete player.storage.xinfu_bijing; - }, - sub:true, - }, - }, - trigger:{ - player:"phaseJieshuBegin", - }, - direct:true, - filter:function (player,event){ - return event.countCards('h')>0; - }, - content:function (){ - 'step 0' - player.chooseCard(get.prompt2('xinfu_bijing'),'h').set('ai',function(card){ - if(card.name=='shan') return 6; - return 6-get.value(card); - }); - 'step 1' - if(result.bool){ - player.logSkill('xinfu_bijing'); - player.showCards(result.cards); - player.storage.xinfu_bijing=result.cards[0]; - } - }, - }, - "xinfu_zhenxing":{ - audio:2, - trigger:{ - player:["damageEnd","phaseJieshuBegin"], - }, - direct:true, - content:function (){ - 'step 0' - player.chooseControl('一张','两张','三张','cancel2').set('prompt',get.prompt2('xinfu_zhenxing')).set('',function(){return 0}); - 'step 1' - if(result.control=='cancel2') event.finish(); - else{ - player.logSkill('xinfu_zhenxing'); - event.num={一张:1,两张:2,三张:3}[result.control]; - }; - 'step 2' - event.cards=get.cards(num); - player.chooseButton(['【镇行】:请选择要获得的牌',event.cards]).set('filterButton',function(button){ - for(var i=0;i=0;i--){ - if(result.bool&&result.links.contains(event.cards[i])){ - player.gain(event.cards[i],'gain2'); - } - else{ - event.cards[i].fix(); - ui.cardPile.insertBefore(event.cards[i],ui.cardPile.childNodes[0]); - } - } - game.updateRoundNumber(); - }, - }, - "xinfu_qianxin":{ - audio:2, - group:["xinfu_qianxin2"], - enable:"phaseUse", - usable:1, - onChooseToUse:function(event){ - if(!game.online){ - var num1=game.players.length-1; - var player=event.player; - var num2=ui.cardPile.childElementCount; - var num3=num2; - if(num1>num2) num3=0; - else if(!player.storage.xinfu_qianxin){} - else{ - for(var i=0;i0; - }, - filterTarget:function (card,player,target){ - return target!=player; - }, - filterCard:true, - selectCard:function (){ - var num1=game.players.length-1; - var num2=_status.event.qianxinNum; - return [1,Math.floor(num2/num1)]; - }, - discard:false, - check:function (){ - return -1; - }, - delay:false, - content:function (){ - 'step 0' - player.$throw(cards.length); - player.storage.xinfu_qianxin=cards.slice(0); - player.storage.xinfu_qianxin2=target; - var num1=game.players.length; - var num2=ui.cardPile.childElementCount; - for(var i=0;i=4){ - event._result={index:1}; - } - else{ - trigger.player.chooseControl().set('choiceList',[ - '令'+get.translation(player)+'将手牌摸至四张', - '令自己本回合的手牌上限-2' - ]).set('ai',function(){ - var player=_status.event.player; - var source=_status.event.getParent().player; - if(get.attitude(player,source)>0) return 0; - if(player.hp-player.countCards('h')>1) return 1; - return [0,1].randomGet(); - }) - } - 'step 1' - if(result.index==0){ - player.drawTo(4); - } - else{ - trigger.player.addTempSkill('xinfu_qianxin2_dis'); - } - }, - }, - "xinfu_fuhai":{ - subSkill:{ - next:{}, - previous:{}, - }, - audio:2, - group:["fuhai_clear"], - intro:{ - content:"已指定过#个目标", - }, - enable:"phaseUse", - filter:function (event,player){ - if(player.hasSkill('xinfu_fuhai_next')&&player.hasSkill('xinfu_fuhai_previous')) return false; - return player.countCards('h')>0; - }, - filterTarget:function (card,player,target){ - if(![player.next,player.previous].contains(target)||target.countCards('h')==0) return false; - if(player.hasSkill('xinfu_fuhai_next')) return target==player.previous; - if(player.hasSkill('xinfu_fuhai_previous')) return target==player.next; - return true; - }, - line:false, - content:function (){ - 'step 0' - event.side=target==player.next?'next':'previous'; - event.current=target; - if(!player.storage.xinfu_fuhai) player.storage.xinfu_fuhai=1; - player.addTempSkill('xinfu_fuhai_'+event.side,'phaseUseAfter'); - 'step 1' - if(player.countCards('h')==0||event.current.countCards('h')==0||event.current==player){ - event.finish(); - return; - } - var next=event.current[event.side]; - if(get.attitude(event.current,player)>0){ - if(get.attitude(next,target)<=0||next.countCards('h')==0||player.countCards('h')==1){ - event.stopm=true; - event.stopt=true - } - else{ - event.stopm=false; - event.stopt=false; - } - } - else{ - if(get.attitude(next,target)>=0){ - event.stopt=true; - event.stopm=false; - } - else{ - event.stopt=false; - event.stopm=false; - } - } - player.markSkill('xinfu_fuhai'); - player.line(event.current,'green'); - player.chooseCard('请选择要展示的牌',true).set('ai',function(card){ - if(_status.event.stop) return 14-get.number(card); - return get.number(card) - }).set('stop',event.stopm); - 'step 2' - event.mes=result.cards[0]; - player.showCards(event.mes); - 'step 3' - event.current.chooseCard('请选择要展示的牌',true).set('ai',function(card){ - if(_status.event.stop) return get.number(card); - return 14-get.number(card); - }).set('stop',event.stopt); - 'step 4' - event.tes=result.cards[0]; - event.current.showCards(event.tes); - 'step 5' - var num1=get.number(event.mes); - var num2=get.number(event.tes); - if(num10&&event.current.countCards('h')>0&&event.current!=player) event.goto(1); - } - }, - ai:{ - order:1, - result:{ - player:function(player,target){ - var hs=player.countCards('h'); - var side=target==player.next?'next':'previous'; - var current=player; - for(var i=0;i0) return 1; - } - return 0; - }, - }, - }, - }, - "fuhai_clear":{ - trigger:{ - player:"phaseAfter", - }, - forced:true, - silent:true, - popup:false, - filter:function (event,player){ - return player.storage.xinfu_fuhai!=undefined; - }, - content:function (){ - player.unmarkSkill('xinfu_fuhai'); - delete player.storage.xinfu_fuhai; - }, - }, - "xz_xunxun":{ - filter:function (event,player){ - var num=game.countPlayer(function(current){ - return current.isDamaged(); - }); - return num>=1&&!player.hasSkill('xunxun'); - }, - audio:2, - trigger:{ - player:"phaseDrawBegin1", - }, - //priority:10, - content:function (){ - "step 0" - event.cards=get.cards(4); - player.chooseCardButton(true,event.cards,2,'选择两张牌置于牌堆顶').set('ai',ai.get.buttonValue); - "step 1" - if(result.bool){ - var choice=[]; - for(var i=0;i=1){ - str='
  • 视为拥有技能“恂恂”'; - } - if(num>=2){ - str+=';使用装备牌时摸一张牌'; - } - if(num>=3){ - str+=';始终跳过弃牌阶段'; - } - return str; - }, - }, - trigger:{ - player:"useCard", - }, - forced:true, - filter:function (event,player){ - if(get.type(event.card)!='equip') return false; - var num=game.countPlayer(function(current){ - return current.isDamaged(); - }); - return num>=2; - }, - content:function (){ - player.draw(); - }, - }, - "xinfu_xingzhao2":{ - audio:true, - trigger:{ - player:"phaseDiscardBefore", - }, - forced:true, - filter:function (event,player){ - var num=game.countPlayer(function(current){ - return current.isDamaged(); - }); - return num>=3; - }, - content:function (){ - trigger.cancel(); - game.log(player,'跳过了弃牌阶段'); - }, - }, - "xinfu_dianhu":{ - audio:2, - trigger:{ - global:"gameDrawAfter", - player:"enterGame", - }, - forced:true, - filter:function (){ - return game.players.length>1; - }, - content:function (){ - 'step 0' - player.chooseTarget('选择【点虎】的目标',lib.translate.xinfu_dianhu_info,true,function(card,player,target){ - return target!=player&&!target.hasSkill('xinfu_dianhu2'); - }).set('ai',function(target){ - var att=get.attitude(_status.event.player,target); - if(att<0) return -att+3; - return Math.random(); - }); - 'step 1' - if(result.bool){ - var target=result.targets[0]; - player.line(target,'green'); - game.log(target,'成为了','【点虎】','的目标'); - target.storage.xinfu_dianhu2=player; - target.addSkill('xinfu_dianhu2'); - } - }, - }, - "xinfu_dianhu2":{ - mark:"character", - intro:{ - content:"当你受到来自$的伤害或回复体力后,$摸一张牌", - }, - nopop:true, - trigger:{ - player:["damageAfter","recoverAfter"], - }, - forced:true, - popup:false, - filter:function (event,player){ - if(player.storage.xinfu_dianhu2&&player.storage.xinfu_dianhu2.isIn()){ - if(event.name=='damage') return event.source==player.storage.xinfu_dianhu2; - return true; - }; - }, - content:function (){ - 'step 0' - var target=player.storage.xinfu_dianhu2; - target.logSkill('xinfu_dianhu'); - target.draw(); - }, - onremove:true, - }, - "xinfu_jianji":{ - audio:2, - enable:"phaseUse", - usable:1, - filterTarget:function (card,player,target){ - return target!=player; - }, - content:function (){ - 'step 0' - target.draw(); - 'step 1' - var card=result[0]; - if(card&&game.hasPlayer(function(current){ - return target.canUse(card,current); - })&&get.owner(card)==target){ - target.chooseToUse({ - prompt:'是否使用'+get.translation(card)+'?', - filterCard:function(cardx,player,target){ - return cardx==_status.event.cardx; - }, - cardx:card, - }); - } - }, - ai:{ - order:7.5, - result:{ - target:1, - }, - }, - }, - "xinfu_lianpian":{ - audio:2, - usable:3, - trigger:{ - player:"useCardToPlayered", - }, - frequent:true, - filter:function (event,player){ - if(!event.targets||!event.targets.length|| - event.getParent().triggeredTargets3.length>1||!event.isPhaseUsing(player)) return false; - var evt=player.getLastUsed(1); - if(!evt||!evt.targets||!evt.targets.length||!evt.isPhaseUsing(player)) return false; - for(var i=0;i0; - })){ - return num+10; - } - } - }, - }, - ai:{ - effect:{ - player:function(card,player,target){ - var evt=player.getLastUsed(); - if(evt&&evt.targets.contains(target)&&(!player.storage.counttrigger||!player.storage.counttrigger.xinfu_lianpian||!player.storage.counttrigger.xinfu_lianpian<3)&&player.isPhaseUsing(player)) return [1.5,0]; - } - }, - }, - }, "xinfu_lingren":{ usable:1, audio:2, @@ -17554,6 +13316,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ player.draw(); }, discard:false, + loseTo:'discardPile', prompt:"将一张梅花牌置入弃牌堆并摸一张牌", delay:0.5, prepare:function (cards,player){ @@ -18297,59 +14060,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, }, translate:{ - "xinfu_langxi":"狼袭", - "xinfu_langxi_info":"准备阶段,你可以对一名体力小于或等于你的其他角色造成0~2点随机伤害。", - "xinfu_yisuan":"亦算", - "xinfu_yisuan_info":"每回合限一次。当你于出牌阶段使用的锦囊牌进入弃牌堆时,你可以减1点体力上限,从弃牌堆中获得之。", - "xinfu_xingluan":"兴乱", - "xinfu_xingluan_info":"每回合限一次。当你于出牌阶段使用的仅指定一个目标的牌结算完成后,你可以从牌堆中随机获得一张点数为6的牌。", - "xinfu_lveming":"掠命", - "xinfu_lveming_info":"出牌阶段限一次,你可以选择一名装备区装备比你少的角色,令其选择一个点数,然后你进行判定:
    若点数相同,你对其造成2点伤害;
    若点数不同,则你随机获得其区域内的一张牌。", - "xinfu_tunjun":"屯军", - "xinfu_tunjun_info":"限定技,出牌阶段,你可以选择一名角色,令其随机使用牌堆中的X张装备牌。(X为你发动过“掠命”的次数)", - "xinfu_tanbei":"贪狈", - "xinfu_tanbei_info":"出牌阶段限一次,你可以令一名其他角色选择一项:
    1.令你随机获得其区域内的一张牌,本回合内你不能对其使用牌。
    2.令你此回合内对其使用牌没有次数与距离限制。", - "xinfu_sidao":"伺盗", - xinfu_sidaox:'伺盗', - "xinfu_sidao_info":"出牌阶段限一次,当你对一名其他角色连续使用两张牌后,你可以将一张手牌当做【顺手牵羊】对其使用。", - "tanbei_effect1":"贪狈", - "tanbei_effect1_info":"", - "tanbei_effect2":"贪狈", - "tanbei_effect2_info":"", - - "xinfu_tunan":"图南", - "xinfu_tunan_info":"出牌阶段限一次,你可以展示牌堆顶的一张牌并选择一名其他角色,然后该角色选择一项:使用此牌(无距离限制);或将此牌当普通【杀】使用。", - "xinfu_bijing":"闭境", - "xinfu_bijing_info":"结束阶段,你可以展示一张手牌并标记为“闭境”。若你于回合外失去“闭境”牌,则当前回合角色的弃牌阶段开始时,其需弃置两张牌。你的准备阶段,弃置手牌中的“闭境”牌。", - "xinfu_zhenxing":"镇行", - "xinfu_zhenxing_info":"结束阶段开始时或当你受到伤害后,你可以观看牌堆顶的至多三张牌,然后你获得其中与其余牌花色均不相同的一张牌。", - "xinfu_qianxin":"遣信", - "xinfu_qianxin_info":"出牌阶段限一次,若牌堆中没有“信”,你可以选择一名角色并将任意张手牌放置于牌堆中X倍数的位置(X为存活人数),称为“信”。该角色的弃牌阶段开始时,若其手牌区内有于本回合内获得过的“信”,其选择一项:令你将手牌摸至四张;本回合手牌上限-2。", - "qianxin_effect":"遣信", - "qianxin_effect_info":"", - "xinfu_qianxin2":"遣信", - "xinfu_qianxin2_info":"", - - "xinfu_fuhai":"浮海", - "xinfu_fuhai_info":"出牌阶段每个方向限一次,你可以展示一张手牌并选择上家或下家。该角色展示一张手牌,若你展示的牌点数大于等于其展示的牌点数,你弃置你展示的牌,然后继续对其上家或下家重复此流程;若你展示的牌点数小于该展示角色牌的点数,则该角色弃置其展示的牌,然后你与其各摸X张牌(X为你此回合内发动此技能选择的角色数),且你此阶段内不能再发动〖浮海〗。", - "fuhai_clear":"浮海", - "fuhai_clear_info":"", - - "xz_xunxun":"恂恂", - "xz_xunxun_info":"摸牌阶段,你可以观看牌堆顶的四张牌,然后将其中的两张牌置于牌堆顶,并将其余的牌以任意顺序置于牌堆底。", - "xinfu_xingzhao":"兴棹", - "xinfu_xingzhao_info":"锁定技,若场上的已受伤角色合计为:1个以上,你视为拥有技能〖恂恂〗;2个以上,当你使用装备牌时,摸一张牌;3个以上,弃牌阶段开始时,你跳过此阶段。", - "xinfu_xingzhao2":"兴棹", - "xinfu_xingzhao2_info":"", - "xinfu_dianhu":"点虎", - "xinfu_dianhu_info":"锁定技,游戏开始时,你选择一名其他角色。当其受到来自你的伤害后或回复体力后,你摸一张牌。", - "xinfu_dianhu2":"点虎", - "xinfu_dianhu2_info":"", - "xinfu_jianji":"谏计", - "xinfu_jianji_info":"出牌阶段限一次,你可以令一名其他角色摸一张牌。然后该角色可以使用此牌。", - "xinfu_lianpian":"联翩", - "xinfu_lianpian_info":"出牌阶段限三次。当你对一名角色连续使用牌时,你可以摸一张牌,然后可以将一张牌交给该角色。", - "xinfu_lingren":"凌人", "xinfu_lingren_info":"每回合限一次。当你于出牌阶段使用带有「伤害」这一标签的基本牌或普通锦囊牌指定目标后,你可以猜测其中的一个目标的手牌中是否有基本牌,锦囊牌或装备牌。若你猜中的项目数:≥1,此牌对该角色的伤害+1;≥2,你摸两张牌;≥3,你获得技能〖奸雄〗和〖行殇〗直到下回合开始。", "lingren_adddamage":"凌人", @@ -18471,17 +14181,15 @@ game.import('character',function(lib,game,ui,get,ai,_status){ mateng:'马腾', sp_caiwenji:'SP蔡文姬', zhugeguo:'诸葛果', - liuzan:'留赞', lingcao:'凌操', sunru:'孙茹', lingju:'灵雎', lifeng:'李丰', jsp_guanyu:'SP关羽', zhuling:'朱灵', - sunluyu:'旧孙鲁育', - re_sunluyu:'孙鲁育', + sunluyu:'OL孙鲁育', hanba:'旱魃', - panfeng:'旧潘凤', + panfeng:'OL潘凤', gz_panfeng:'潘凤', zumao:'祖茂', daxiaoqiao:'大小乔', @@ -18515,7 +14223,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){ liuye:'刘晔', beimihu:'卑弥呼', luzhi:'鲁芝', - sp_liuqi:'刘琦', huangjinleishi:'黄巾雷使', bianfuren:'卞夫人', shamoke:'沙摩柯', @@ -18524,46 +14231,22 @@ game.import('character',function(lib,game,ui,get,ai,_status){ cuimao:'崔琰毛玠', kaisa:"凯撒", - lijue:"李傕", - zhangji:"张济", - fanchou:"樊稠", - guosi:"郭汜", - lvkai:"吕凯", - zhanggong:"张恭", - weiwenzhugezhi:"卫温诸葛直", + caoying:"曹婴", simahui:"司马徽", baosanniang:"鲍三娘", - xurong:"徐荣", sp_xiahoushi:"SP夏侯氏", - zhangqiying:"张琪瑛", - xf_tangzi:"唐咨", - xf_huangquan:"黄权", - xf_sufei:"苏飞", pangdegong:"庞德公", zhaotongzhaoguang:"赵统赵广", majun:"马钧", simazhao:"司马昭", wangyuanji:"王元姬", - mangyachang:"忙牙长", - xugong:"许贡", - zhangchangpu:"张昌蒲", jianggan:"蒋干", - wenyang:'文鸯', - diy_wenyang:'文鸯', - guanlu:'管辂', - gexuan:'葛玄', hejin:'何进', hansui:'韩遂', niujin:'牛金', - xinpi:'辛毗', - lisu:'李肃', - zhangwen:'张温', - puyuan:'蒲元', - xushao:'许邵', xujing:'许靖', - huaman:'花鬘', yuantanyuanshang:'袁谭袁尚', xinfenyue:'奋钺', @@ -18571,56 +14254,11 @@ game.import('character',function(lib,game,ui,get,ai,_status){ neifa:'内伐', neifa_info:'出牌阶段开始时,你可以摸两张牌或获得场上的一张牌,然后弃置一张牌。若弃置的牌是基本牌,本回合你不能使用锦囊和装备牌,且【杀】的使用次数+X且目标+1;若弃置的不是基本牌,本回合你不能使用基本牌,且使用普通锦囊牌选择目标时可以增加或减少一个目标,前两次使用装备牌时摸X张牌(X为你发动〖内伐〗弃牌后手牌中因〖内伐〗而不能使用的牌的数量且最多为5)。', neifa_use:'内伐', - hmmanyi:'蛮裔', - hmmanyi_info:'锁定技,【南蛮入侵】对你无效。', - mansi:'蛮嗣', - mansi_info:'一名角色使用的【南蛮入侵】结算完成后,你可以摸X张牌(X为受到过此牌伤害的角色数)。', - souying:'薮影', - souying_info:'每回合限一次,当你对一名男性角色造成伤害(或一名男性角色对你造成伤害时),若此伤害是你对其(或其对你)本回合内造成的第二次伤害,你可以弃置一张手牌令此伤害+1或(-1)。', - zhanyuan:'战缘', - zhanyuan_info:'觉醒技,准备阶段,若你已因蛮嗣累计获得超过7张牌,你加一点体力上限,并可以选择一名男性角色,你与其获得技能〖系力〗,然后你失去技能〖蛮嗣〗', - hmxili:'系力', - hmxili_info:'你的回合外,当其他拥有〖系力〗技能的角色在其回合内使用【杀】指定目标后,你可以弃置一张手牌,令此【杀】伤害+1。', yuxu:'誉虚', yuxu_info:'当你于出牌阶段内使用的牌结算完成时,你可以摸一张牌。若如此做,当你于出牌阶段内使用的下一张牌结算完成时,你不能发动〖誉虚〗,且需弃置一张牌。', yuxu2:'誉虚(弃牌)', xjshijian:'实荐', xjshijian_info:'一名其他角色于其回合内使用的第二张牌结算完成后,你可弃置一张牌并令其获得技能〖誉虚〗直到回合结束。', - pingjian:'评荐', - pingjian_info:'结束阶段开始时/当你受到伤害后/出牌阶段限一次,你可以令系统随机从剩余武将牌堆中检索出三张拥有发动时机为结束阶段开始时/当你受到伤害后/出牌阶段的技能的武将牌。然后你可以选择尝试发动其中一个技能或摸一张牌。每个技能每局只能选择一次。', - pingjian_use:'评荐', - pytianjiang:'天匠', - pytianjiang_info:'游戏开始时,你随机获得两张不同副类别的装备牌,并置入你的装备区。出牌阶段,你可以将装备区内的牌移动到其他角色的装备区(可替换原装备)。', - pytianjiang_move:'天匠', - pyzhuren:'铸刃', - pyzhuren_info:'出牌阶段限一次,你可以弃置一张手牌。根据此牌的花色点数,你有一定概率打造成功并获得一张武器牌(若打造失败或武器已有则改为摸一张【杀】,花色决定武器名称,点数决定成功率)。此武器牌进入弃牌堆时,将其移出游戏。', - pyzhuren_destroy:'铸刃', - pyzhuren_heart:'红缎枪', - pyzhuren_heart_info:'每回合限一次,当你使用【杀】造成伤害后,你可以进行判定,若结果为红色,你回复1点体力。', - pyzhuren_diamond:'烈淬刀', - pyzhuren_diamond_info:'当你使用【杀】对目标角色造成伤害时,你可以弃置一张【杀】或武器牌,令此伤害+1。', - pyzhuren_club:'水波剑', - pyzhuren_club_info:'当你于出牌阶段使用第一张牌时,若此牌是普通锦囊牌或【杀】,则你可以为此牌增加一个目标。', - pyzhuren_spade:'混毒弯匕', - pyzhuren_spade_info:'当你使用的黑色【杀】指定单一目标后,你可令该角色获得此【杀】,然后其失去1点体力。', - pyzhuren_shandian:'天雷刃', - pyzhuren_shandian_info:'当你使用【杀】仅指定一名角色为目标后,可令其进行一次判定,若结果为黑桃2~黑桃9,该角色受到3点雷电伤害,然后此【杀】对其无效。', - - songshu:'颂蜀', - songshu_info:'出牌阶段,你可以和其他角色拼点。若你没赢,其摸两张牌,且你本阶段内不能再发动〖颂蜀〗', - sibian:'思辩', - sibian_info:'摸牌阶段,你可以放弃摸牌,改为亮出牌堆顶的四张牌,然后获得其中所有点数最大与点数最小的牌。若获得的牌是两张且点数之差小于存活人数,则你可以将剩余的牌交给手牌数最少的角色。', - lslixun:'利熏', - lslixun_fate:'利熏', - lslixun_info:'锁定技,当你受到伤害时,你防止此伤害,然后获得等同于伤害值的“珠”标记。出牌阶段开始时,你进行判定,若结果点数小于“珠”的数量,你弃置等同于“珠”数量的手牌(若弃牌的牌数不够,则失去剩余数量的体力值)。', - lskuizhu:'馈珠', - lskuizhu_info:'出牌阶段结束时,你可以选择体力值为全场最多的一名其他角色,将手牌摸至与该角色相同(最多摸至五张),然后该角色观看你的手牌,弃置任意张手牌并从观看的牌中获得等量的牌。若其获得的牌大于一张,则你选择一项:移去一个“珠”;或令其对其攻击范围内的一名角色造成1点伤害。', - xpchijie:'持节', - xpchijie_info:'每回合限一次。①当你受到其他角色使用的牌造成的伤害时,你可以令此牌对所有目标无效。②其他角色使用的牌结算完成时,若你是此牌的目标之一且此牌未造成过伤害,则你可以获得此牌对应的所有实体牌。', - xpchijie2:'持节', - yinju:'引裾', - yinju_info:'限定技,出牌阶段,你可以选择一名其他角色。若如此做,当你于此阶段内使用装备牌指定目标或使用延时锦囊牌指定除其外的其他角色为目标或使用其他牌指定其为目标时,你摸一张牌;当你即将对其造成伤害时,防止此伤害,然后其回复等量的体力。', - yinju2:'引裾', mouzhu:'谋诛', mouzhu_info:'出牌阶段限一次,你可以令一名有牌的其他角色交给你一张牌。然后若你的手牌数大于其,其选择视为对你使用一张【杀】或【决斗】。', yanhuo:'延祸', @@ -18632,48 +14270,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ cuorui_info_single:'锁定技,你的起始手牌数改为X+2(X为你剩余的备选武将数)。你跳过登场后的第一个判定阶段。', liewei:'裂围', liewei_info:'当你杀死一名角色后,你可以摸三张牌。', - tuiyan:'推演', - tuiyan_info:'出牌阶段开始时,你可以观看牌堆顶的两张牌。', - busuan:'卜算', - busuan_info:'出牌阶段限一次,你可以选择一名其他角色,然后选择至多两张不同的卡牌名称(限基本牌或锦囊牌)。该角色下次摸牌阶段摸牌时,改为从牌堆或弃牌堆中获得你选择的牌。', - busuan_angelbeats:'卜算', - mingjie:'命戒', - mingjie_info:'结束阶段,你可以摸一张牌,若此牌为红色,你可以重复此流程直到摸到黑色牌或摸到第三张牌。当你以此法摸到黑色牌时,你失去1点体力。', - gxlianhua:'炼化', - gxlianhua_info:'你的回合外,每当有其他角色受到伤害后,你获得一个“丹血”标记(该角色与你阵营一致时为红色,不一致为黑色,此颜色对所有玩家均不可见)直到你的准备阶段开始。准备阶段,根据你获得的“丹血”标记的数量和颜色,你从牌堆/弃牌堆中获得相应的牌以及相应技能直到回合结束。3枚或以下:〖英姿〗和【桃】;超过3枚且红色“丹血”较多:〖观星〗和【无中生有】;超过3枚且黑色“丹血”较多:〖直言〗和【顺手牵羊】;超过3枚且红色和黑色一样多:【杀】、【决斗】和〖攻心〗。', - zhafu:'札符', - zhafu_info:' 限定技,出牌阶段,你可以选择一名其他角色,令其获得一枚「札」。有「札」的角色弃牌阶段开始时,若其手牌数大于1,其移去「札」并选择保留一张手牌,然后将其余的手牌交给你。', - xinlvli:'膂力', - xinlvli_info:'每回合限一次,当你造成伤害后,你可选择:1,若你的体力值大于你的手牌数,你摸X张牌;2,若你的手牌数大于你的体力值且你已受伤,你回复X点体力(X为你的手牌数与体力值之差)。', - lvli:'膂力', - lvli4:'膂力', - lvli5:'膂力', - lvli_info:'每名角色的回合限一次,你可以声明一个基本牌或普通锦囊牌的牌名,有随机概率视为使用之(装备区里的牌数越多,成功概率越大)', - choujue:'仇决', - choujue_info:'觉醒技,一名角色的回合结束时,若你的手牌数和体力值相差3或更多,你减1点体力上限并获得技能〖背水〗,然后将〖膂力〗改为“在自己的回合时每回合限两次”。', - beishui:'背水', - beishui_info:'觉醒技,准备阶段,若你的手牌数或体力值小于2,你减1点体力上限并获得技能〖清剿〗,然后将〖膂力〗改为受到伤害后也可以发动。', - qingjiao:'清剿', - qingjiao_info:'出牌阶段开始时,你可以弃置所有手牌,然后从牌堆或弃牌堆中随机获得八张牌名各不相同且副类别不同的牌。若如此做,结束阶段,你弃置所有牌。', - spjiedao:"截刀", - "spjiedao_info":"当你每回合第一次造成伤害时,你可令此伤害至多+X(X为你损失的体力值)。然后若受到此伤害的角色没有死亡,你弃置等同于此伤害加值的牌。", - biaozhao:"表召", - "biaozhao_info":"结束阶段,你可以将一张牌置于武将牌上,称为“表”。当有一张与“表”花色点数均相同的牌进入弃牌堆时,你将“表”置入弃牌堆并失去1点体力,若此牌是其他角色因弃置而进入弃牌堆的,则改为该角色获得“表”。准备阶段,若你的武将牌上有“表”,则你将“表”置入弃牌堆。然后你选择一名角色,该角色回复1点体力且将手牌摸至与全场手牌数最多的人相同(最多摸五张)。", - "biaozhao2":"表召", - "biaozhao2_info":"", - "biaozhao3":"表召", - "biaozhao3_info":"", - yechou:"业仇", - "yechou_info":"当你死亡时,你可以选择一名已损失体力值大于1的角色。直到其下个回合开始前,每个回合结束时,该角色失去1点体力。", - "yechou2":"业仇", - "yechou2_info":"", - yanjiao:"严教", - "yanjiao_info":"出牌阶段限一次,你可以选择一名其他角色并从牌堆顶亮出四张牌。该角色将这些牌分成点数之和相等的两组,你与其各获得其中一组,然后将剩余未分组的牌置入弃牌堆。若未分组的牌超过一张,则你本回合手牌上限-1。", - "yanjiao2":"严教", - "yanjiao2_info":"", - xingshen:"省身", - "xingshen_info":"当你受到伤害后,你可以摸一张牌且下一次发动〖严教〗亮出的牌数+1。若你的手牌数为全场最少,则改为摸两张牌;若你的体力值为全场最少,则〖严教〗亮出的牌数改为+2(加值总数不能超过4)。", - + weicheng:'伪诚', weicheng_info:'当其他角色获得你的手牌后,若你的手牌数小于体力值,你可以摸一张牌。', daoshu:'盗书', @@ -18689,12 +14286,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){ "new_zhixi_info":"锁定技,出牌阶段,你至多可使用X张牌,你使用了锦囊牌后不能再使用牌(X为你的体力值)。", "new_mumu2":"穆穆", "new_mumu2_info":"锁定技,你不能使用【杀】。", - remeibu:'魅步', - remeibu_info:'其他角色的出牌阶段开始时,若你在其攻击范围内,你可以弃置一张牌,令该角色于本阶段内拥有〖止息〗。', - rezhixi:'止息', - rezhixi_info:'锁定技,当你使用【杀】或普通锦囊牌时,你弃置一张手牌。', - remumu:'穆穆', - remumu_info:'出牌阶段开始时,你可以选择一项:1.弃置一名其他角色装备区里的一张牌,然后你本回合可使用【杀】的次数+1;2.获得一名角色装备区里的一张防具牌,然后你本回合可使用【杀】的次数-1。', "new_xingwu":"星舞", "new_xingwu_info":"弃牌阶段开始时,你可以将一张手牌置于武将牌上,称之为「舞」。然后若你的「舞」中包含三种花色,则你须移去三张花色不同的「舞」并选择一名角色,该角色受到2点伤害(若为女性,则改为1点)并弃置其装备区的所有牌。", "new_luoyan":"落雁", @@ -18757,20 +14348,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){ qingzhongx_info:'出牌阶段开始时,你可以摸两张牌,若如此做,此阶段结束时,你与手牌数最少的角色交换手牌。', weijing:'卫境', weijing_info:'每轮限一次,当你需要使用【杀】或【闪】时,你可以视为使用一张【杀】或【闪】。', - spwenji:'问计', - spwenji_info:'出牌阶段开始时,你可以令一名其他角色交给你一张牌。你于本回合内使用与该牌名称相同的牌时不能被其他角色响应。', - sptunjiang:'屯江', - sptunjiang_info:'结束阶段,若你未跳过本回合的出牌阶段,且你于本回合出牌阶段内未使用牌指定过其他角色为目标,则你可以摸X张牌(X为全场势力数)。', - zongkui:'纵傀', - zongkui_mark:'纵傀', - zongkui_mark_bg:'傀', - zongkui_info:'回合开始时,你可以指定一名未拥有“傀”标记的其他角色,令其获得一枚“傀”标记。每轮游戏开始时,你可以指定一名体力值最少且没有“傀”标记的其他角色,令其获得一枚“傀”标记。', - guju:'骨疽', - guju_info:'锁定技,拥有“傀”标记的角色受到伤害后,你摸一张牌。', - baijia:'拜假', - baijia_info:'觉醒技,准备阶段,若你因〖骨疽〗获得的牌不少于7张,则你增加1点体力上限,回复1点体力,然后令所有未拥有“傀”标记的其他角色获得“傀”标记,最后失去技能〖骨疽〗,并获得技能〖蚕食〗。', - bmcanshi:'蚕食', - bmcanshi_info:'一名角色使用基本牌或普通锦囊牌指定你为唯一目标时,若其有“傀”标记,你可以取消之,然后其失去“傀”标记;你使用牌仅指定一名角色为目标时,你可以额外指定任意名带有“傀”标记的角色为目标(无距离限制),然后这些角色失去“傀”标记。', zishu:'自书', zishu_info:'锁定技,你的回合外,你获得的牌均会在当前回合结束后置入弃牌堆;你的回合内,当你不因〖自书〗而获得牌时,你摸一张牌。', yingyuan:'应援', @@ -19276,94 +14853,34 @@ game.import('character',function(lib,game,ui,get,ai,_status){ spmingjian_info:'一名角色的回合开始时,你可以选择一项:①弃置一张牌,然后其跳过本回合的判定阶段。②将一张手牌置于其武将牌上,然后其本回合内进行判定时不触发「判定结果生效前」的时机,且其回合结束时将此牌置入弃牌堆。', spyinzhi:'隐智', spyinzhi_info:'当你受到1点伤害后,你可以展示牌堆顶的两张牌。若其中有黑桃牌,则你可以进行至多X次「令一名角色获得伤害来源的一张手牌」的步骤,然后获得其余的牌。(X为其中黑桃牌的数量)', - wangshuang:'王双', - spzhuilie:'追猎', - spzhuilie2:'追猎', - spzhuilie_info:'锁定技,你使用【杀】无距离限制;当你使用【杀】指定目标后,若其不在你的攻击范围内,此【杀】不计入使用次数限制且你判定。若判定结果为武器牌或坐骑牌,此【杀】的伤害基数改为X(X为其体力值)。否则你失去1点体力。', sunshao:'孙邵', bizheng:'弼政', bizheng_info:'摸牌阶段结束时,你可以令一名其他角色摸两张牌。然后,若你的手牌数大于体力上限,你弃置两张牌。若其的手牌数大于体力上限,其弃置两张牌。', yidian:'佚典', yidian_info:'当你使用牌选择目标时,若弃牌堆中没有与此牌名称相同的牌,则你可以为此牌增加一个目标(无距离限制)。', - sp_zhanghe:'SP张郃', - yuanlve:'远略', - yuanlve_info:'出牌阶段限一次,你可以将一张非装备牌交给一名角色,然后该角色可以使用该牌并令你摸一张牌。', - xunchen:'荀谌', - fenglve:'锋略', - fenglve2:'锋略', - fenglve_info:'出牌阶段开始时,你可以与一名角色拼点,若你赢,该角色将其区域内的各一张牌交给你;若你没赢,你交给其一张牌。拼点结算后你可以令其获得你拼点的牌。', - mouzhi:'谋识', - mouzhi2:'谋识', - mouzhi_info:'出牌阶段限一次,你可以将一张手牌交给一名角色,若如此做,当其于其下回合的出牌阶段内对一名角色造成伤害后,若是此阶段其第一次对该角色造成伤害,你摸一张牌。', - sp_shenpei:'SP审配', - gangzhi:'刚直', - gangzhi_info:'锁定技,当你即将受到或造成伤害时,你防止此伤害,改为受到伤害的角色失去等量的体力。', - beizhan:'备战', - beizhan2:'备战', - beizhan_info:'结束阶段,你可以令一名角色将手牌摸至体力上限(至多为5)。其下个回合开始时,若其手牌数为全场最多,则其此回合内使用的牌不能指定其他角色为目标。', - gaolan:'高览', - xiying:'袭营', - xiying2:'袭营', - xiying_info:'出牌阶段开始时,你可以弃置一张非基本手牌,然后令所有其他角色依次选择一项:弃置一张牌,或本回合内不能使用或打出手牌。', - re_panfeng:'潘凤', - xinkuangfu:'狂斧', - xinkuangfu_info:'出牌阶段限一次,你可选择:1,弃置装备区里的一张牌,你使用无对应实体牌的普【杀】。若此【杀】造成伤害,你摸两张牌。2,弃置一名其他角色装备区里的一张牌,你使用无对应实体牌的普【杀】。若此【杀】未造成伤害,你弃置两张牌。', - old_liuzan:'手杀留赞', - refenyin:'奋音', - refenyin_info:'锁定技,你的回合内,当一张牌进入弃牌堆后,若本回合内没有过与此牌花色相同的卡牌进入过弃牌堆,则你摸一张牌。', - liji:'力激', - liji_info:'出牌阶段限X次,你可以弃置一张牌并对一名其他角色造成1点伤害。(X为本回合内进入过弃牌堆的卡牌数除以8,若场上人数小于5则改为除以4,向下取整)', xinlianji:'连计', xinlianji_info:'出牌阶段限一次,你可以弃置一张手牌,令其使用牌堆中的一张随机武器牌,然后选择一项:对你指定的一名角色使用【杀】,或令你将其装备区里的武器牌交给任意角色。', xinmoucheng:'谋逞', xinmoucheng_info:'觉醒技,准备阶段,若你已经发动了3次以上的〖连计〗,则你失去〖连计〗并获得〖矜功〗。', xinjingong:'矜功', xinjingong_info:'出牌阶段限一次,你可以将一张【杀】或装备牌当做三张随机锦囊牌中的一张使用。', - xingdaorong:'邢道荣', - xuxie:'虚猲', - xuxie_info:'出牌阶段开始时,你可以减1点体力上限并选择所有与你距离为1的角色,弃置这些角色的各一张牌或令这些角色各摸一张牌。出牌阶段结束时,若你的体力上限为全场最少,则你加1点体力上限。', - lvkuanglvxiang:'吕旷吕翔', - liehou:'列侯', - liehou_info:'出牌阶段限一次,你可以令一名攻击范围内的角色交给你一张手牌,然后你将一张手牌交给攻击范围内的另一名角色。', - qigong:'齐攻', - qigong_info:'当你使用的【杀】被【闪】抵消之后,你可以再对目标角色使用一张【杀】(不可被响应)。', - chunyuqiong:'淳于琼', - sushou:'宿守', - sushou_info:'弃牌阶段开始时,你可以摸X+1张牌(X为“粮”数),然后可以交给任意名友方角色各一张牌。', - cangchu:'仓储', - cangchu_info:'锁定技,游戏开始时,你获得3枚“粮”标记,当你受到1点火焰伤害后,你失去一枚“粮”标记。', - liangying:'粮营', - liangying_info:'锁定技,若你有“粮”标记,则友方角色摸牌阶段摸牌数+1;当你失去所有“粮”标记后,你减1点体力上限,然后令敌方角色各摸两张牌。', - sp_xuyou:'SP许攸', - spshicai:'恃才', - spshicai2:'恃才', - spshicai_info:'出牌阶段,牌堆顶的一张牌对你可见。你可以弃置一张牌,然后获得牌堆顶的一张牌,且不能再发动〖恃才〗直到此牌离开你的手牌区。', - spfushi:'附势', - spfushi_info:'锁定技,若己方存活角色数:大于敌方,你视为拥有〖择主〗;小于敌方,你视为拥有〖逞功〗。', - zezhu:'择主', - zezhu_info:'出牌阶段限一次,你可以获得双方主帅的各一张牌(若无牌则改为你摸一张牌),然后交给双方主帅各一张牌。', - chenggong:'逞功', - chenggong_info:'当有角色使用牌指定目标后,若此牌对目标数大于1,则你可令使用者摸一张牌。', caiyang:'蔡阳', yinka:'印卡', zhangling:'张陵', + zlhuji:'虎骑', + zlhuji_info:'锁定技,你与其他角色的距离-1,你于回合外受到伤害后进行判定,若结果为红色,视为你对伤害来源使用一张【杀】(无视距离)。', + zlshoufu:'授符', + zlshoufu2:'授符', + zlshoufu_info:'出牌阶段限一次,你可摸一张牌,然后将一张手牌置于一名没有【箓】的角色的武将牌上,称为【箓】;其不能使用和打出与【箓】同类型的牌。该角色受伤后,或于弃牌阶段弃置至少2张与【箓】同类型的牌后,将【箓】置入弃牌堆。', sp_default:"常规", - sp_whlw:"文和乱武", - sp_zlzy:"逐鹿中原", - sp_longzhou:"同舟共济", - sp_zizouqi:"自走棋", - sp_sbfm:'上兵伐谋', - sp_shengun:'三国奇人传', sp_zhongdan:"忠胆英杰", sp_star:"桌游志·SP", sp_guozhan:"国战", sp_guozhan2:"国战移植", sp_others:"其他", sp_single:'新1v1', - sp_guansuo:'花关索传', sp_sticker:'桌游志·贴纸', - sp_guandu:'官渡之战', }, }; }); diff --git a/character/sp2.js b/character/sp2.js new file mode 100644 index 000000000..9b3ec67a4 --- /dev/null +++ b/character/sp2.js @@ -0,0 +1,4866 @@ +'use strict'; +game.import('character',function(lib,game,ui,get,ai,_status){ + return { + name:'sp2', + character:{ + re_sunluyu:['female','wu',3,['remeibu','remumu']], + liuzan:['male','wu',4,['refenyin','liji']], + wenyang:['male','wei',5,['xinlvli','choujue']], + wangshuang:['male','wei',8,['spzhuilie']], + huaman:['female','shu',3,['hmmanyi','mansi','souying','zhanyuan']], + re_panfeng:['male','qun',4,['xinkuangfu']], + xingdaorong:['male','qun','4/6',['xuxie']], + lijue:["male","qun","4/6",["xinfu_langxi","xinfu_yisuan"],[]], + zhangji:["male","qun",4,["xinfu_lveming","xinfu_tunjun"],[]], + fanchou:["male","qun",4,["xinfu_xingluan"],[]], + guosi:["male","qun",4,["xinfu_tanbei","xinfu_sidao"],[]], + lvkai:["male","shu",3,["xinfu_tunan","xinfu_bijing"],[]], + zhanggong:["male","wei",3,["xinfu_zhenxing","xinfu_qianxin"],[]], + weiwenzhugezhi:["male","wu",4,["xinfu_fuhai"],[]], + beimihu:['female','qun',3,['zongkui','guju','baijia']], + xurong:["male","qun",4,["xinfu_xionghuo","xinfu_shajue"],[]], + zhangqiying:["female","qun",3,["xinfu_falu","xinfu_dianhua","xinfu_zhenyi"],[]], + sp_liuqi:['male','qun',3,['spwenji','sptunjiang']], + xf_tangzi:["male","wei",4,["xinfu_xingzhao"],[]], + xf_huangquan:["male","shu",3,["xinfu_dianhu","xinfu_jianji"],[]], + xf_sufei:["male","wu",4,["xinfu_lianpian"],[]], + xushao:['male','qun',3,['pingjian']], + puyuan:['male','shu',4,['pytianjiang','pyzhuren']], + xinpi:['male','wei',3,['xpchijie','yinju']], + lisu:['male','qun',2,['lslixun','lskuizhu']], + zhangwen:['male','wu',3,['songshu','sibian']], + guanlu:['male','wei',3,['tuiyan','busuan','mingjie']], + gexuan:['male','wu',3,['gxlianhua','zhafu']], + mangyachang:["male","qun",4,["spjiedao"],[]], + xugong:["male","wu",3,["biaozhao","yechou"],[]], + zhangchangpu:["female","wei",3,["yanjiao","xingshen"],[]], + gaolan:['male','qun',4,['xiying']], + sp_shenpei:['male','qun',3,['gangzhi','beizhan']], + xunchen:['male','qun',3,['fenglve','mouzhi']], + sp_zhanghe:['male','qun',4,['yuanlve']], + sp_xuyou:['male','qun',3,['spshicai','spfushi']], + chunyuqiong:['male','qun',5,['cangchu','sushou','liangying']], + lvkuanglvxiang:['male','qun',4,['liehou','qigong']], + leitong:['male','shu',4,['kuiji']], + wulan:['male','shu',4,['wlcuorui']], + }, + characterSort:{ + sp2:{ + sp_whlw:["xurong","lijue","zhangji","fanchou","guosi"], + sp_zlzy:["zhangqiying","lvkai","zhanggong","weiwenzhugezhi","beimihu"], + sp_longzhou:["xf_tangzi","xf_huangquan","xf_sufei","sp_liuqi"], + sp_zizouqi:["mangyachang","xugong","zhangchangpu"], + sp_sbfm:["lisu","xinpi","zhangwen"], + sp_shengun:["puyuan","guanlu","gexuan","xushao"], + sp_baigei:['re_panfeng','xingdaorong'], + sp_guandu:["sp_zhanghe","xunchen","sp_shenpei","gaolan","lvkuanglvxiang","chunyuqiong","sp_xuyou"], + sp_decade:['wulan','leitong','huaman','wangshuang','wenyang','liuzan','re_sunluyu'], + } + }, + skill:{ + + remeibu:{ + audio:"meibu", + trigger:{ + global:"phaseUseBegin", + }, + filter:function (event,player){ + return event.player!=player&&event.player.isAlive()&&event.player.inRange(player)&&player.countCards('he')>0; + }, + direct:true, + derivation:["rezhixi"], + checkx:function (event,player){ + if(get.attitude(player,event.player)>=0) return false; + var e2=player.getEquip(2); + if(e2){ + if(e2.name=='tengjia') return true; + if(e2.name=='bagua') return true; + } + return event.player.countCards('h')>event.player.hp; + }, + content:function (){ + "step 0" + var check=lib.skill.new_meibu.checkx(trigger,player); + player.chooseToDiscard(get.prompt2('remeibu',trigger.player),'he').set('ai',function(card){ + if(_status.event.check) return 6-get.value(card); + return 0; + }).set('check',check).set('logSkill',['remeibu',trigger.player]); + "step 1" + if(result.bool){ + var target=trigger.player; + var card=result.cards[0]; + player.line(target,'green'); + target.addTempSkill('rezhixi','phaseUseEnd'); + } + }, + ai:{ + expose:0.2, + }, + }, + remumu:{ + audio:"mumu", + trigger:{ + player:"phaseUseBegin", + }, + direct:true, + content:function (){ + 'step 0' + player.chooseTarget(get.prompt('remumu'),'弃置一名角色装备区内的一张牌,或者获得一名角色装备区内的防具牌',function(card,player,target){ + if(target==player) return target.getEquip(2)!=undefined; + return target.countCards('e')>0; + }).set('ai',function(target){ + var player=_status.event.player; + var att=get.attitude(player,target) + if(target.getEquip(2)&&player.isEmpty(2)){ + return -2*att; + } + return -att; + }); + 'step 1' + if(result.bool&&result.targets&&result.targets.length){ + event.target=result.targets[0]; + player.logSkill('remumu',event.target); + player.line(event.target,'green'); + var e=event.target.getEquip(2); + event.e=e; + if(target==player) event.choice='获得一张防具牌'; + else if(e){ + player.chooseControl('弃置一张装备牌','获得一张防具牌').set('ai',function(){ + if(_status.event.player.getEquip(2)){ + return '弃置一张装备牌'; + } + return '获得一张防具牌'; + }); + } + else{ + event.choice='弃置一张装备牌'; + } + }else event.finish(); + 'step 2' + var choice=event.choice||result.control; + if(choice=='弃置一张装备牌'){ + player.discardPlayerCard(event.target,'e',true); + player.addTempSkill('remumu3'); + } + else{ + if(event.e){ + player.gain(event.e,event.target,'give'); + player.addTempSkill('remumu2') + } + } + }, + }, + remumu2:{ + mod:{ + cardUsable:function(card,player,num){ + if(card.name=='sha') return num-1; + }, + }, + }, + remumu3:{ + mod:{ + cardUsable:function(card,player,num){ + if(card.name=='sha') return num+1; + }, + }, + }, + rezhixi:{ + trigger:{ + player:"useCard", + }, + forced:true, + filter:function(event,player){ + return (event.card.name=='sha'||get.type(event.card)=='trick')&&player.countCards('h')>0; + }, + content:function(){ + player.chooseToDiscard('h',true); + }, + }, + //新岩泽(划掉)留赞 + refenyin:{ + audio:'fenyin', + trigger:{global:['loseAfter','cardsDiscardAfter']}, + forced:true, + filter:function(event,player){ + if(player!=_status.currentPhase) return false; + if(event.name=='lose'&&event.position!=ui.discardPile) return false; + var list=[]; + var num=event.cards.length; + for(var i=0;i0; + }, + content:function(){ + var list=[]; + var list2=[]; + for(var i=0;i4?8:4))); + }, + filterCard:true, + position:'he', + check:function(card){ + var val=get.value(card); + if(!_status.event.player.getStorage('fenyin_mark').contains(get.suit(card))) return 12-val; + return 8-val; + }, + filterTarget:lib.filter.notMe, + content:function(){ + target.damage('nocard'); + }, + }, + //文鸯 + xinlvli:{ + audio:'lvli', + trigger:{player:'damageEnd',source:'damageSource'}, + filter:function(event,player,name){ + var stat=player.getStat().skill; + if(!stat.xinlvli) stat.xinlvli=0; + if(name=='damageEnd'&&!player.storage.beishui) return false; + if(stat.xinlvli>1) return false; + if(stat.xinlvli>0&&(player!=_status.currentPhase||!player.storage.choujue)) return false; + if(player.hp==player.countCards('h')) return false; + if(player.hp0) player.draw(num); + else player.recover(-num); + }, + //group:'lvli3', + }, + lvli:{ + audio:2, + init:function(player,skill){ + player.storage[skill]=0; + }, + enable:'chooseToUse', + filter:function(event,player){ + if(player.storage.lvli>1) return false; + if(player.storage.lvli>0&&(player!=_status.currentPhase||!player.storage.choujue)) return false; + return event.type!='wuxie'&&event.type!='respondShan'; + }, + chooseButton:{ + dialog:function(event,player){ + var list=[]; + for(var i=0;i0){ + return 1+Math.random(); + } + return 0; + } + if(button.link[2]=='nanman'||button.link[2]=='wanjian'||button.link[2]=='taoyuan'||button.link[2]=='wugu'){ + var eff=0; + for(var i=0;i0){ + return eff+Math.random(); + } + return 0; + } + return Math.random(); + }, + backup:function(links,player){ + return { + filterCard:function(){return false;}, + audio:'lvli', + selectCard:-1, + check:function(card){ + return 1; + }, + viewAs:{name:links[0][2],nature:links[0][3]}, + } + }, + prompt:function(links,player){ + return '请选择'+(get.translation(links[0][3])||'')+get.translation(links[0][2])+'的目标'; + } + }, + ai:{ + order:4, + result:{ + player:1, + }, + threaten:2.9, + }, + group:['lvli2','lvli3','lvli4','lvli5','lvli6'] + }, + lvli2:{ + trigger:{player:['useCardBefore','respondBefore']}, + forced:true, + popup:false, + priority:35, + filter:function(event,player){ + return event.skill=='lvli_backup'||event.skill=='lvli5'||event.skill=='lvli4'; + }, + content:function(){ + 'step 0' + player.logSkill('lvli'); + player.storage.lvli++; + player.popup(trigger.card.name,trigger.name=='useCard'?'metal':'wood'); + 'step 1' + var random=0.5+player.countCards('e')*0.1; + if(get.isLuckyStar(player)||trigger.card.name=='wuxie') random=1; + if(random>=Math.random()){ + player.popup('洗具'); + } + else{ + player.popup('杯具'); + trigger.cancel(); + if(!trigger.getParent().lvli6){ + trigger.getParent().goto(0); + } + game.broadcastAll(function(str){ + var dialog=ui.create.dialog(str); + dialog.classList.add('center'); + setTimeout(function(){ + dialog.close(); + },1000); + },get.translation(player)+'声明的'+get.translation(trigger.card.name)+'并没有生效'); + game.log('然而什么都没有发生'); + game.delay(2); + } + }, + }, + lvli3:{ + trigger:{global:'phaseBefore'}, + forced:true, + silent:true, + popup:false, + content:function(){ + player.storage.lvli=0; + }, + }, + lvli4:{ + log:false, + enable:'chooseToUse', + filter:function(event,player){ + if(player.storage.lvli>1) return false; + if(player.storage.lvli>0&&(player!=_status.currentPhase||!player.storage.choujue)) return false; + return true; + }, + filterCard:function(){return false}, + selectCard:-1, + viewAs:{name:'shan'}, + ai:{ + skillTagFilter:function(player){ + if(player.storage.lvli>1) return false; + if(player.storage.lvli>0&&(player!=_status.currentPhase||!player.storage.choujue)) return false; + return true; + }, + threaten:1.5, + respondShan:true, + } + }, + lvli5:{ + log:false, + enable:'chooseToUse', + filter:function(event,player){ + if(player.storage.lvli>1) return false; + if(player.storage.lvli>0&&(player!=_status.currentPhase||!player.storage.choujue)) return false; + return true; + }, + filterCard:function(){return false}, + selectCard:-1, + viewAs:{name:'wuxie'}, + }, + lvli6:{ + trigger:{player:'damageEnd'}, + direct:true, + filter:function(event,player){ + if(!player.storage.beishui) return false; + if(player.storage.lvli>1) return false; + if(player.storage.lvli>0&&(player!=_status.currentPhase||!player.storage.choujue)) return false; + return true; + }, + content:function(){ + var next=player.chooseToUse(); + next.set('norestore',true); + next.set('_backupevent','lvli'); + next.backup('lvli'); + next.set('lvli6',true); + }, + }, + choujue:{ + derivation:['beishui','qingjiao'], + trigger:{global:'phaseAfter'}, + audio:2, + skillAnimation:true, + animationColor:'water', + unique:true, + juexingji:true, + forced:true, + init:function(player,skill){ + if(!player.storage[skill]) player.storage[skill]=false; + }, + filter:function(event,player){ + if(player.storage.choujue) return false; + return Math.abs(player.hp-player.countCards('h'))>=3; + }, + content:function(){ + player.awakenSkill('choujue'); + player.storage.choujue=true; + player.loseMaxHp(); + player.addSkill('beishui'); + }, + }, + beishui:{ + trigger:{player:'phaseZhunbeiBegin'}, + audio:2, + skillAnimation:'epic', + animationColor:'thunder', + unique:true, + juexingji:true, + forced:true, + init:function(player,skill){ + if(!player.storage[skill]) player.storage[skill]=false; + }, + filter:function(event,player){ + if(player.storage.beishui) return false; + return Math.min(player.hp,player.countCards('h'))<2; + }, + content:function(){ + player.awakenSkill('beishui'); + player.storage.beishui=true; + player.loseMaxHp(); + player.addSkill('qingjiao'); + }, + }, + qingjiao:{ + trigger:{player:'phaseUseBegin'}, + filter:function(event,player){ + return player.countCards('h')&&(ui.cardPile.hasChildNodes()||ui.discardPile.hasChildNodes()); + }, + //check:function(event,player){ + // return player.countCards('h')<=player.hp; + //}, + content:function(){ + 'step 0' + player.discard(player.getCards('h')); + 'step 1' + var evt=trigger.getParent(); + if(evt&&evt.getParent&&!evt.qingjiao){ + evt.qingjiao=true; + var next=game.createEvent('qingjiao_discard',false,evt.getParent()); + next.player=player; + next.setContent(function(){ + var hs=player.getCards('he'); + if(hs.length) player.discard(hs); + }); + } + 'step 2' + var list=[]; + var typelist=[]; + var getType=function(card){ + var sub=get.subtype(card); + if(sub) return sub; + return card.name; + }; + for(var i=0;i=8) break; + } + } + if(list.length<8){ + for(var i=0;i=8) break; + } + } + } + player.gain(list,'gain2'); + 'step 3' + game.updateRoundNumber(); + }, + }, + //王双 + spzhuilie:{ + mod:{ + targetInRange:function(card){ + if(card.name=='sha') return true; + }, + }, + trigger:{player:'useCardToTargeted'}, + filter:function(event,player){ + return event.card&&event.card.name=='sha'&&!player.inRange(event.target); + }, + forced:true, + logTarget:'target', + content:function(){ + 'step 0' + player.judge(function(card){ + var type=get.subtype(card); + return ['equip1','equip4','equip3','equip6'].contains(type)?6: -6; + switch(type){ + case 'equip': return 4; + case 'trick': return -4; + default: return 0; + } + }); + 'step 1' + if(trigger.getParent().addCount!==false){ + trigger.getParent().addCount=false; + var stat=player.getStat(); + if(stat&&stat.card&&stat.card.sha) stat.card.sha--; + } + if(result.bool===true){ + var map=trigger.customArgs; + var id=trigger.target.playerid; + if(!map[id]) map[id]={}; + if(typeof map[id].extraDamage!='number') map[id].extraDamage=0; + map[id].extraDamage+=trigger.target.hp-1; + } + else if(result.bool===false) player.loseHp(); + }, + }, + spzhuilie2:{ + onremove:true, + intro:{ + content:'使用【杀】的次数上限+#', + }, + mod:{ + cardUsable:function(card,player,num){ + if(card.name=='sha') return num+player.countMark('spzhuilie2'); + }, + }, + }, + //花鬘 + manyi:{audio:2}, + hmmanyi:{ + trigger:{target:'useCardToBefore'}, + forced:true, + audio:'manyi', + filter:function(event,player){ + return event.card.name=='nanman'; + }, + content:function(){ + trigger.cancel(); + }, + }, + mansi:{ + audio:2, + trigger:{global:'useCardAfter'}, + filter:function(event,player){ + return event.card.name=='nanman'&&game.countPlayer2(function(current){ + return current.getHistory('damage',function(evt){ + return evt.getParent(2)==event; + }).length>0; + })>0; + }, + frequent:true, + content:function(){ + var num=game.countPlayer2(function(current){ + return current.getHistory('damage',function(evt){ + return evt.getParent(2)==trigger; + }).length>0; + }); + player.draw(num); + player.addMark('mansi',num,false); + }, + intro:{content:'已因此技能获得了#张牌'}, + }, + souying:{ + audio:2, + trigger:{ + player:'damageBegin3', + source:'damageBegin1', + }, + direct:true, + filter:function(event,player,name){ + if(!player.countCards('h')||player.hasSkill('souying2')) return false; + if(name=='damageBegin1'){ + if(event.player.sex!='male') return false; + return event.player.getHistory('damage',function(evt){ + return evt.source==player; + }).length==1; + } + else{ + if(!event.source||event.source.sex!='male') return false; + return player.getHistory('damage',function(evt){ + return evt.source==event.source; + }).length==1; + } + }, + content:function(){ + 'step 0' + var next=player.chooseToDiscard(); + if(event.triggername=='damageBegin1'){ + event.target=trigger.player; + next.set('goon',get.attitude(player,event.target)<0&&!event.target.hasSkillTag('filterDamage',null,{ + player:player, + card:trigger.card, + })), + next.set('prompt2','弃置一张手牌,令对其造成的伤害+1'); + } + else{ + event.target=trigger.source; + next.set('goon',true); + next.set('prompt2','弃置一张手牌,令即将受到的伤害-1'); + } + next.set('prompt',get.prompt('souying',event.target)); + next.set('ai',function(card){ + if(_status.event.goon) return 6-get.value(card); + return -1; + }); + next.set('logSkill',['souying',event.target]); + 'step 1' + if(result.bool){ + player.addTempSkill('souying2'); + trigger.num+=(event.triggername=='damageBegin1'?1:-1); + } + }, + ai:{ + expose:0.25, + }, + }, + souying2:{}, + zhanyuan:{ + unique:true, + audio:2, + derivation:'hmxili', + skillAnimation:true, + animationColor:'soil', + juexingji:true, + forced:true, + filter:function(event,player){ + return player.countMark('mansi')>7; + }, + trigger:{player:'phaseZhunbeiBegin'}, + content:function(){ + 'step 0' + player.awakenSkill('zhanyuan'); + player.gainMaxHp(); + 'step 1' + player.chooseTarget('是否失去〖蛮嗣〗,令一名其他男性角色和自己一同获得技能〖系力〗?',function(card,player,target){ + return target!=player&&target.sex=='male'; + }).ai=function(target){ + return get.attitude(_status.event.player,target)-5; + }; + 'step 2' + if(result.bool){ + var target=result.targets[0]; + player.line(target,'fire'); + player.addSkill('hmxili'); + target.addSkill('hmxili'); + player.removeSkill('mansi'); + } + }, + }, + hmxili:{ + trigger:{global:'useCardToPlayered'}, + direct:true, + audio:2, + filter:function(event,player){ + return event.player!=player&&event.card.name=='sha'&&event.player.isPhaseUsing()&&event.player.hasSkill('hmxili')&&player.countCards('h')>0; + }, + content:function(){ + 'step 0' + player.chooseToDiscard('是否弃置一张手牌,令'+get.translation(trigger.card)+'对'+get.translation(trigger.target)+'的伤害+1?','h').set('logSkill',['hmxili',trigger.target]).set('goon',function(){ + var target=trigger.target; + if(get.attitude(player,target)>=0) return false; + if(trigger.target.hasSkillTag('filterDamage',null,{ + player:trigger.player, + card:trigger.card, + })||target.mayHaveShan()) return false; + return true; + }()).ai=function(card){ + if(_status.event.goon) return 5-get.value(card); + return -1; + }; + 'step 1' + if(result.bool){ + var id=trigger.target.playerid; + var map=trigger.customArgs; + if(!map[id]) map[id]={}; + if(!map[id].extraDamage) map[id].extraDamage=0; + map[id].extraDamage++; + } + }, + }, + //说出吾名吓汝一跳 + xuxie:{ + audio:2, + trigger:{player:'phaseUseBegin'}, + logTarget:function(event,player){ + return game.filterPlayer(function(current){ + return get.distance(player,current)<=1; + }).sortBySeat(); + }, + check:function(event,player){ + if(player.isHealthy()) return false; + var list=game.filterPlayer(function(current){ + return get.distance(player,current)<=1; + }); + var draw=0; + var discard=0; + var num=2/player.getDamagedHp(); + while(list.length){ + var target=list.shift(); + var att=get.attitude(player,target); + if(att>0){ + draw++; + if(target.countDiscardableCards(player,'he')>0) discard--; + } + if(att==0){ + draw--; + if(target.countDiscardableCards(player,'he')>0) discard--; + } + if(att<0){ + draw--; + if(target.countDiscardableCards(player,'he')>0) discard++; + } + } + return draw>=num||discard>=num; + }, + content:function(){ + 'step 0' + player.loseMaxHp(); + 'step 1' + var targets=game.filterPlayer(function(current){ + return get.distance(player,current)<=1; + }).sortBySeat(); + if(!targets.length) event.finish(); + else{ + event.targets=targets; + player.chooseControl().set('choiceList',[ + '弃置'+get.translation(targets)+'的各一张牌', + '令'+get.translation(targets)+'各摸一张牌', + ]).set('ai',function(){ + var player=_status.event.player; + var list=_status.event.getParent().targets.slice(0); + var draw=0; + var discard=0; + while(list.length){ + var target=list.shift(); + var att=get.attitude(player,target); + if(att>0){ + draw++; + if(target.countDiscardableCards(player,'he')>0) discard--; + } + if(att<0){ + draw--; + if(target.countDiscardableCards(player,'he')>0) discard++; + } + } + if(draw>discard) return 1; + return 0; + }); + } + 'step 2' + event.index=result.index; + if(result.index==1){ + game.asyncDraw(targets); + } + else event.goto(4); + 'step 3' + game.delay(); + event.finish(); + 'step 4' + var target=targets.shift(); + if(target.countDiscardableCards(player,'he')>0) player.discardPlayerCard(target,'he',true); + if(targets.length) event.redo(); + }, + group:'xuxie_add', + }, + xuxie_add:{ + audio:'xuxie', + trigger:{player:'phaseUseEnd'}, + forced:true, + locked:false, + filter:function(event,player){ + return !game.hasPlayer(function(current){ + return current.maxHp0; + return target.countDiscardableCards(player,'e')>0; + }, + filter:function(event,player){ + return game.hasPlayer(function(current){ + return current.countCards('e')>0; + }); + }, + content:function(){ + 'step 0' + if(player==target) player.chooseToDiscard('e',true); + else player.discardPlayerCard(target,'e',true); + 'step 1' + player.chooseUseTarget('sha',true,false,'nodistance'); + 'step 2' + var bool=game.hasPlayer2(function(current){ + return current.getHistory('damage',function(evt){ + return evt.getParent(4)==event; + }).length>0 + }); + if(player==target&&bool) player.draw(2); + else if(player!=target&&!bool) player.chooseToDiscard('he',2,true); + }, + ai:{ + order:function(){ + return get.order({name:'sha'})+0.3; + }, + result:{ + target:function(player,target){ + var att=get.attitude(player,target); + var max=0; + var min=1; + target.countCards('e',function(card){ + var val=get.value(card); + if(val>max) max=val; + if(val0&&min<=0) return target.hasSkillTag('noe')?3:1; + if(att<0&&max>0){ + if(target.hasSkillTag('noe')) return max>6?(-max/3):0; + return -max; + } + return 0; + }, + }, + }, + }, + //吴兰雷铜 + wlcuorui:{ + audio:2, + trigger:{player:'phaseUseBegin'}, + direct:true, + filter:function(event,player){ + return game.hasPlayer(function(current){ + return current.isFriendOf(player)&¤t.countDiscardableCards(player,'hej')>0; + }); + }, + content:function(){ + 'step 0' + player.chooseTarget(function(card,player,target){ + return target.isFriendOf(player)&&target.countDiscardableCards(player,'hej')>0; + },get.prompt2('wlcuorui')).set('ai',function(target){ + if(target.countCards('e',function(card){ + return card.name!='tengjia'&&get.value(card)<=0; + })) return 10; + if(target.countCards('j',function(card){ + return get.effect(target,{name:card.viewAs||card.name},target,target)<0; + })) return 10; + return Math.random()+0.2-1/target.countCards('hej'); + }); + 'step 1' + if(result.bool){ + var target=result.targets[0]; + event.target=target; + player.logSkill('wlcuorui',target); + player.discardPlayerCard(target,'hej',true); + } + else event.finish(); + 'step 2' + if(!result.cards||!result.cards.length){ + event.finish(); + return; + } + var color=get.color(result.cards[0],result.cards[0].original=='j'?false:target); + event.color=color; + var list=[]; + if(game.hasPlayer(function(current){ + return current.isEnemyOf(player)&¤t.countCards('h'); + })) list.push('展示手牌'); + if(game.hasPlayer(function(current){ + return current.isEnemyOf(player)&¤t.countCards('e',{color:color}); + })) list.push('弃置装备'); + if(!list.length){ + event.finish(); + return; + } + if(list.length==1) event._result={control:list[0]}; + else player.chooseControl(list).set('prompt','挫锐:展示对手的至多两张手牌,或弃置对手装备区内至多两张'+get.translation(color)+'牌').set('ai',function(){ + var player=_status.event.player; + var color=_status.event.getParent().color; + if(game.countPlayer(function(current){ + if(!current.isEnemyOf(player)) return false; + return current.countCards('e',function(card){ + return get.color(card)==color&&get.value(card)>0; + }); + })>1) return 1; + return 0; + }); + 'step 3' + if(result.control=='弃置装备') event.goto(5); + else{ + var dialog=['请选择要展示的牌']; + var list=game.filterPlayer(function(current){ + return current.isEnemyOf(player)&¤t.countCards('h'); + }).sortBySeat(); + for(var i of list){ + dialog.push('
    '+get.translation(i)+'
    '); + if(player.hasSkillTag('viewHandcard',null,i,true)) dialog.push(i.getCards('h')); + else dialog.push([i.getCards('h'),'blank']); + } + player.chooseButton([1,2],true).set('createDialog',dialog).set('ai',function(button){ + var color=(get.color(button.link)==_status.event.getParent().color); + return color?Math.random():0.35; + }); + } + 'step 4' + player.showCards(result.links); + var map={}; + var map2={}; + for(var i of result.links){ + var id=get.owner(i).playerid; + if(!map[id]) map[id]=[]; + map[id].push(i); + if(get.color(i)!=event.color) continue; + map2[id]=true; + } + for(var i in map){ + var source=(_status.connectMode?lib.playerOL:game.playerMap)[i]; + if(map2[i]) player.gain(map[i],source,'bySelf','give'); + player.line(source); + game.log(player,'展示了',source,'的',map[i]); + } + event.next.sort(function(a,b){ + return lib.sort.seat(a.source||a.player,b.source||b.player); + }); + event.finish(); + 'step 5' + var dialog=['请选择要弃置的牌']; + var list=game.filterPlayer(function(current){ + return current.isEnemyOf(player)&¤t.countCards('e',function(card){ + return get.color(card)==event.color; + }); + }).sortBySeat(); + for(var i of list){ + dialog.push('
    '+get.translation(i)+'
    '); + dialog.push(i.getCards('e',function(card){ + return get.color(card)==event.color; + })); + } + player.chooseButton([1,2],true).set('createDialog',dialog).set('ai',function(button){ + var owner=get.owner(button.link); + return get.value(button.link,owner) + }); + 'step 6' + var map={}; + for(var i of result.links){ + if(get.color(i)!=event.color) continue; + var id=get.owner(i).playerid; + if(!map[id]) map[id]=[]; + map[id].push(i); + } + for(var i in map){ + (_status.connectMode?lib.playerOL:game.playerMap)[i].discard(map[i],'notBySelf'); + } + event.next.sort(function(a,b){ + return lib.sort.seat(a.player,b.player); + }); + }, + }, + kuiji:{ + audio:2, + enable:"phaseUse", + filter:function(event,player){ + if(player.hasJudge('bingliang')) return false; + return player.countCards('he',function(card){ + return get.color(card)=='black'&&get.type(card)=='basic'; + })>0; + }, + viewAs:{name:'bingliang'}, + position:"he", + filterCard:function(card,player,event){ + return get.color(card)=='black'&&get.type(card)=='basic'&&player.canAddJudge({name:'bingliang',cards:[card]}); + }, + selectTarget:-1, + filterTarget:function(card,player,target){ + return player==target; + }, + check:function(card){ + return 9-get.value(card); + }, + onuse:function(links,player){ + var next=game.createEvent('kuiji_content',false,_status.event.getParent()); + next.player=player; + next.setContent(lib.skill.kuiji.kuiji_content); + }, + kuiji_content:function(){ + 'step 0' + player.draw(); + 'step 1' + player.chooseTarget(function(card,player,target){ + return target.isEnemyOf(player)&&!game.hasPlayer(function(current){ + return current.isEnemyOf(player)&¤t.hp>target.hp; + }); + }).set('ai',function(target){ + var player=_status.event.player; + return get.damageEffect(target,player,player) + }); + 'step 2' + if(result.bool){ + var target=result.targets[0]; + player.line(target); + target.damage(2); + } + }, + ai:{ + result:{ + target:1, + }, + order:12, + }, + group:'kuiji_dying', + subSkill:{ + dying:{ + trigger:{global:'dying'}, + forced:true, + popup:false, + filter:function(event,player){ + var evt=event.getParent(2); + if(!evt||evt.name!='kuiji_content'||evt.player!=player) return false; + var list=game.filterPlayer(function(current){ + return current.isFriendOf(player); + }).sort(function(a,b){ + return a.hp-b.hp; + }); + return (list.length==1||list[0].hp0; + }, + content:function(){ + 'step 0' + var list=game.filterPlayer(function(current){ + return current!=player; + }); + list.sortBySeat(); + event.targets=list; + player.chooseToDiscard(get.prompt2('xiying'),'h',function(card){ + return get.type(card)!='basic'; + }).set('logSkill',['xiying',list]).set('ai',function(card){ + return _status.event.val-get.value(card) + }).set('val',function(){ + return 4*Math.sqrt(game.countPlayer(function(current){ + return get.attitude(player,current)<0&¤t.countCards('he')>0; + })); + }()); + 'step 1' + if(!result.bool) event.finish(); + 'step 2' + var target=targets.shift(); + event.target=target; + if(target.isAlive()) target.chooseToDiscard('he','弃置一张牌,或本回合内不能使用或打出手牌').set('ai',function(card){ + var player=_status.event.player; + var source=_status.event.getTrigger().player; + if(get.attitude(source,player)>0) return -1; + if(_status.event.getRand()>0.5) return 5-get.value(card); + return -1; + }); + 'step 3' + if(target.isAlive()&&!result.bool) target.addTempSkill('xiying2'); + if(targets.length) event.goto(2); + }, + }, + xiying2:{ + mark:true, + intro:{content:'本回合内不能使用或打出牌'}, + mod:{ + cardEnabled2:function (card){ + if(get.position(card)=='h') return false; + }, + }, + }, + gangzhi:{ + audio:2, + trigger:{ + player:'damageBefore', + source:'damageBefore', + }, + forced:true, + content:function(){ + trigger.cancel(); + trigger.player.loseHp(trigger.num); + }, + ai:{ + jueqing:true, + }, + }, + beizhan:{ + trigger:{player:'phaseJieshuBegin'}, + direct:true, + audio:2, + content:function(){ + 'step 0' + player.chooseTarget(get.prompt2('beizhan')).set('ai',function(target){ + var player=_status.event.player; + var att=get.attitude(player,target); + var hs=target.countCards('h'); + var ht=target.maxHp; + if(hs>=ht&&target.isMaxHandcard()) return -att*hs; + if(hsht; + })) return att*2*(ht-hs); + return 0; + }); + 'step 1' + if(result.bool){ + var target=result.targets[0]; + player.logSkill('beizhan',target); + target.drawTo(Math.min(5,target.maxHp)) + target.addSkill('beizhan2'); + } + }, + ai:{ + expose:0.25, + }, + }, + beizhan2:{ + trigger:{player:'phaseBegin'}, + silent:true, + firstDo:true, + content:function(){ + player.removeSkill('beizhan2'); + if(player.isMaxHandcard()) player.addTempSkill('zishou2'); + }, + mark:true, + intro:{content:'回合开始时,若手牌数为全场最多,则回合内不能使用牌指定其他角色为目标'}, + }, + fenglve:{ + audio:2, + trigger:{ + player:"phaseUseBegin", + }, + direct:true, + content:function (){ + 'step 0' + var goon=player.hasCard(function(card){ + if(get.position(card)!="h") return false; + var val=get.value(card); + if(val<0) return true; + if(val<=5){ + return card.number>=12; + } + if(val<=6){ + return card.number>=13; + } + return false; + }); + player.chooseTarget(get.prompt2('fenglve'),function(card,player,target){ + return player.canCompare(target); + }).set('ai',function(target){ + if(!_status.event.goon) return 0; + return -get.attitude(player,target)*(1+target.countCards('e'))/(1+target.countCards('j')); + }).set('goon',goon); + 'step 1' + if(result.bool){ + var target=result.targets[0]; + event.target=target; + player.logSkill('fenglve',target); + player.chooseToCompare(target); + } + else{ + event.finish(); + } + 'step 2' + if(result.bool){ + var num=0; + if(target.countCards('h')) num++; + if(target.countCards('e')) num++; + if(target.countCards('j')) num++; + if(num){ + event.gainner=player; + event.giver=target; + target.choosePlayerCard(target,num,'hej',true).set('filterButton',function(button){ + for(var i=0;i0; + }, + filter:function(event,player){ + return event.getParent().name=='fenglve'&&get.position(event.card1,true)=='o'; + }, + prompt:function(event){ + return '是否令'+get.translation(event.target)+'获得'+get.translation(event.card1)+'?' + }, + logTarget:'target', + content:function(){ + trigger.target.gain(trigger.card1,'gain2','log'); + }, + }, + mouzhi:{ + audio:2, + enable:'phaseUse', + usable:1, + filter:function(event,player){ + return player.countCards('h')>0 + }, + filterCard:true, + filterTarget:function(card,player,target){ + if(target.storage.mouzhi2&&target.storage.mouzhi2.contains(player)) return false; + return target!=player; + }, + delay:0, + lose:false, + discard:false, + check:function(card){ + if(card.name=='du') return 20; + var player=_status.event.player; + var useval=player.getUseValue(card); + var maxval=0; + game.countPlayer(function(current){ + if(current!=player&&!current.hasSkillTag('nogain')&&get.attitude(player,current)>0){ + var temp=current.getUseValue(card); + if(temp>maxval) maxval=temp; + } + }); + if(maxval>0&&get.tag(card,'damage')) return 15; + if(maxval>useval) return 10; + if(player.needsToDiscard()) return 1/Math.max(0.1,get.value(card)); + return -1; + }, + content:function(){ + target.gain(cards,player,'giveAuto'); + target.addTempSkill('mouzhi2',{player:'phaseEnd'}); + target.storage.mouzhi2.add(player); + target.storage.mouzhi2.sortBySeat(target); + target.markSkill('mouzhi2'); + }, + ai:{ + order:10, + result:{ + target:function(player,target){ + if(ui.selected.cards.length){ + var card=ui.selected.cards[0]; + if(card.name=='du') return target.hasSkill('lucia_duqu')?1:-1; + var t=target.getUseValue(card); + var p=player.getUseValue(card); + if(t>p) return 2; + if(t>0) return 1.5 + if(player.needsToDiscard()) return 1; + return 0; + } + return 0; + }, + }, + }, + }, + mouzhi2:{ + init:function(player,skill){ + if(!player.storage[skill]) player.storage[skill]=[]; + }, + onremove:true, + trigger:{source:'damageSource'}, + forced:true, + intro:{ + content:'出牌阶段内第一次对一名其他角色造成伤害时,$摸一张牌', + }, + filter:function(event,player){ + var evt2=event.getParent('phaseUse'); + if(!evt2||evt2.player!=player) return false; + var history=event.player.getHistory('damage',function(evt){ + return evt.source==player&&evt.getParent('phaseUse')==evt2; + }); + return history[0]==event; + }, + content:function(){ + 'step 0' + game.asyncDraw(player.storage.mouzhi2); + 'step 1' + game.delay(); + }, + }, + yuanlve:{ + enable:'phaseUse', + usable:1, + audio:2, + filter:function(event,player){ + return player.countCards('h',function(card){ + return get.type(card)!='equip'; + }) + }, + filterCard:function(card){ + return get.type(card)!='equip'; + }, + filterTarget:lib.filter.notMe, + delay:false, + discard:false, + lose:false, + check:function(card){ + if(card.name=='du') return 20; + var player=_status.event.player; + var useval=player.getUseValue(card); + var maxval=0; + game.countPlayer(function(current){ + if(current!=player&&!current.hasSkillTag('nogain')&&get.attitude(player,current)>0){ + var temp=current.getUseValue(card); + if(temp>maxval) maxval=temp; + } + }); + if(maxval>useval) return 15; + if(maxval>0) return 10; + if(player.needsToDiscard()) return 1/Math.max(0.1,get.value(card)); + return -1; + }, + content:function(){ + 'step 0' + target.gain(cards,player,'giveAuto'); + 'step 1' + target.chooseUseTarget(cards[0]); + 'step 2' + if(result.bool) player.draw(); + }, + ai:{ + order:10, + result:{ + target:function(player,target){ + if(ui.selected.cards.length){ + var card=ui.selected.cards[0]; + if(card.name=='du') return target.hasSkill('lucia_duqu')?1:-1; + var t=target.getUseValue(card); + var p=player.getUseValue(card); + if(t>p) return 2; + if(t>0) return 1.5 + if(player.needsToDiscard()) return 1; + return 0; + } + return 0; + }, + }, + }, + }, + //吕旷吕翔和淳于琼和官渡哔哔机 + spshicai:{ + audio:2, + enable:'phaseUse', + position:'he', + filter:function(event,player){ + return !player.storage.spshicai2||!player.getCards('h').contains(player.storage.spshicai2); + }, + filterCard:true, + prompt:function(){ + var str='弃置一张牌,然后获得'; + if(get.itemtype(_status.pileTop)=='card') str+=get.translation(_status.pileTop); + else str+='牌堆顶的一张牌'; + return str; + }, + check:function(card){ + var player=_status.event.player; + var cardx=_status.pileTop; + if(get.itemtype(cardx)!='card') return 0; + var val=player.getUseValue(cardx,null,true); + if(!val) return 0; + var val2=player.getUseValue(card,null,true); + return (val-val2)/Math.max(0.1,get.value(card)); + }, + content:function(){ + var card=get.cards()[0]; + player.storage.spshicai2=card; + player.gain(card,'draw'); + game.log(player,'获得了牌堆顶的一张牌'); + }, + group:'spshicai_mark', + ai:{ + order:1, + result:{player:1}, + }, + }, + spshicai_mark:{ + trigger:{player:'phaseUseBegin'}, + silent:true, + firstDo:true, + content:function(){ + player.addTempSkill('spshicai2','phaseUseEnd'); + }, + }, + spshicai2:{ + onremove:true, + mark:true, + intro:{ + mark:function(dialog,content,player){ + if(player!=game.me) return get.translation(player)+'观看牌堆中...'; + if(get.itemtype(_status.pileTop)!='card') return '牌堆顶无牌'; + dialog.add([_status.pileTop]); + }, + }, + }, + spfushi:{ + group:['zezhu','chenggong'], + derivation:['zezhu','chenggong'], + locked:true, + }, + zezhu:{ + audio:2, + enable:'phaseUse', + usable:1, + filter:function(event,player){ + var enemy=0; + var friend=0; + var zhu=0; + for(var i of game.players){ + if(i.isEnemyOf(player)) enemy++; + else friend++; + if(i!=player&&i.isZhu) zhu++; + } + return zhu>0&&enemy0) player.gainPlayerCard(target,'he',true); + else player.draw(); + if(event.targets2.length) event.redo(); + 'step 2' + if(player.countCards('he')>=targets.length){ + player.chooseCard('he',true,'依次选择'+get.cnNumber(targets.length)+'张牌,分别交给'+get.translation(targets),targets.length).set('ai',function(card){ + var target=_status.event.getParent().targets[ui.selected.cards.length]; + var player=_status.event.player; + return get.attitude(player,target)*get.value(card,target); + }); + } + else event.finish(); + 'step 3' + for(var i=0;i1&&event.player.isAlive())) return false; + var enemy=0; + var friend=0; + for(var i of game.players){ + if(i.isEnemyOf(player)) enemy++; + else friend++; + } + return enemy>friend; + }, + check:function(event,player){ + return get.attitude(player,event.player)>0; + }, + logTarget:'player', + content:function(){ + trigger.player.draw(); + }, + }, + cangchu:{ + trigger:{ + global:'gameDrawAfter', + player:['damageEnd','enterGame'], + }, + audio:2, + forced:true, + filter:function(event,player){ + if(event.name!='damage') return true; + return event.nature=='fire'&&player.countMark('cangchu')>0; + }, + content:function(){ + if(trigger.name!='damage') player.addMark('cangchu',3); + else{ + player.removeMark('cangchu',Math.min(trigger.num,player.countMark('cangchu'))); + if(!player.hasMark('cangchu')) event.trigger('cangchuAwaken'); + } + }, + marktext:'粮', + intro:{ + name2:'粮', + content:'mark', + }, + ai:{ + threaten:function(player,target){ + return 1+target.countMark('cangchu')/2; + }, + effect:{ + target:function(card,player,target,current){ + if(target.hasMark('cangchu')){ + if(card.name=='sha'){ + if(lib.skill.global.contains('huoshaowuchao')||card.nature=='fire'||player.hasSkill('zhuque_skill')) return 2; + } + if(get.tag(card,'fireDamage')&¤t<0) return 2; + } + } + }, + }, + }, + sushou:{ + trigger:{player:'phaseDiscardBegin'}, + frequent:true, + audio:2, + content:function(){ + 'step 0' + player.draw(1+player.countMark('cangchu')); + 'step 1' + var num=Math.min(player.countCards('h'),game.countPlayer(function(target){ + return target!=player&&target.isFriendOf(player); + })); + if(num){ + player.chooseCardTarget({ + prompt:'是否将任意张手牌交给其他己方角色?', + prompt2:'操作提示:先按顺序选中所有要给出的手牌,然后再按顺序选择等量的目标角色', + selectCard:[1,num], + selectTarget:function(){ + return ui.selected.cards.length; + }, + filterTarget:function(card,player,target){ + return target!=player&&target.isFriendOf(player); + }, + complexSelect:true, + ai1:function(card){ + if(card.name=='shan') return 1; + return Math.random(); + }, + ai2:function(target){ + return 5-Math.max(4,target.countCards('h')); + }, + }); + } + else event.finish(); + 'step 2' + if(result.bool){ + while(result.cards.length){ + var target=result.targets.shift(); + var card=result.cards.shift(); + target.gain(card,player); + player.$giveAuto(card,target); + } + event.next.sort(function(a,b){ + return lib.sort.seat(a.player,b.player); + }); + } + else event.finish(); + 'step 3' + game.delay(); + }, + }, + liangying:{ + trigger:{ + global:'phaseDrawBegin2', + player:'cangchuAwaken', + }, + forced:true, + audio:1, + logTarget:function(event,player){ + if(event.name=='phaseDraw') return event.player; + return game.filterPlayer(function(current){ + return current.isEnemyOf(player); + }); + }, + filter:function(event,player){ + if(event.name=='cangchu') return true; + return player.hasMark('cangchu')&&!event.numFixed&&event.player.isFriendOf(player); + }, + content:function(){ + 'step 0' + if(trigger.name=='cangchu'){ + player.loseMaxHp(); + var list=game.filterPlayer(function(current){ + return current.isEnemyOf(player); + }); + if(list.length){ + game.asyncDraw(list,2); + } + } + else{ + trigger.num++; + event.finish(); + } + 'step 1' + game.delay(); + }, + }, + liehou:{ + enable:'phaseUse', + usable:1, + audio:2, + filterTarget:function(card,player,target){ + return player.inRange(target)&&target.countCards('h'); + }, + content:function(){ + 'step 0' + target.chooseCard('h',true,'交给'+get.translation(player)+'一张牌'); + 'step 1' + if(result.bool){ + player.gain(result.cards,target,'giveAuto'); + } + else event.finish(); + 'step 2' + if(player.countCards('h')&&game.hasPlayer(function(current){ + return current!=target&&player.inRange(current); + })){ + player.chooseCardTarget({ + position:'h', + filterCard:true, + filterTarget:function(card,player,target){ + return target!=_status.event.getParent().target&&player.inRange(target); + }, + forced:true, + prompt:'将一张手牌交给一名攻击范围内的其他角色', + ai1:function(card){ + var player=_status.event.player; + if(get.name(card)=='du') return 20; + if(game.hasPlayer(function(current){ + return current!=_status.event.getParent().target&&player.inRange(current)&&get.attitude(player,current)>0&¤t.getUseValue(card)>player.getUseValue(card)&¤t.getUseValue(card)>player.getUseValue(card); + })) return 12; + if(game.hasPlayer(function(current){ + return current!=player&&get.attitude(player,current)>0; + })){ + if(card.name=='wuxie') return 11; + if(card.name=='shan'&&player.countCards('h','shan')>1) return 9 + } + return 6/Math.max(1,get.value(card)); + }, + ai2:function(target){ + var player=_status.event.player; + var card=ui.selected.cards[0]; + var att=get.attitude(player,target); + if(card.name=='du') return -6*att; + if(att>0){ + if(get.position(card)=='h'&&target.getUseValue(card)>player.getUseValue(card)) return 4*att; + if(get.value(card,target)>get.value(card,player)) return 2*att; + return 1.2*att; + } + return -att*Math.min(4,target.countCards('he'))/6; + }, + }); + } + else event.finish(); + 'step 3' + if(result.bool) result.targets[0].gain(result.cards,player,'giveAuto') + }, + ai:{ + order:6, + result:{ + target:-1, + }, + }, + }, + qigong:{ + trigger:{player:'shaMiss'}, + direct:true, + audio:2, + filter:function(event,player){ + return player.canUse('sha',event.target,false)&&(player.hasSha()||_status.connectMode&&player.countCards('h')); + }, + content:function(){ + "step 0" + player.chooseToUse(get.prompt('qigong'),function(card,player,event){ + if(get.name(card)!='sha') return false; + return lib.filter.filterCard.apply(this,arguments); + },trigger.target,-1).set('addCount',false).logSkill='qigong'; + }, + group:'qigong_hit', + }, + qigong_hit:{ + trigger:{player:'useCard1'}, + firstDo:true, + silent:true, + filter:function(event,player){ + return event.getParent(2).name=='qigong'; + }, + content:function(){ + trigger.directHit.addArray(game.players); + }, + }, + //和沙摩柯一起上线的新服三将 + spjiedao:{ + audio:2, + trigger:{ + source:"damageBegin1", + }, + filter:function(event,player){ + return player.isDamaged()&&!player.getHistory('sourceDamage').length; + }, + logTarget:'player', + direct:true, + check:function(trigger,player){ + if(get.attitude(player,trigger.player)>=-1) return false; + return !trigger.player.hasSkillTag('filterDamage',null,{ + player:player, + card:trigger.card, + }); + }, + content:function (){ + "step 0" + var num=player.getDamagedHp(); + var map={}; + var list=[]; + for(var i=1;i<=num;i++){ + var cn=get.cnNumber(i,true); + map[cn]=i; + list.push(cn); + } + event.map=map; + player.chooseControl(list,'cancel2',function(){ + if(!lib.skill.spjiedao.check(_status.event.getTrigger(),player)) return 'cancel2'; + return get.cnNumber(_status.event.goon,true); + }).set('prompt',get.prompt2('spjiedao',trigger.player)).set('goon',num); + "step 1" + if(result.control=='cancel2') return; + player.logSkill('spjiedao',trigger.player); + var num=event.map[result.control]||1; + trigger.num+=num; + var next=game.createEvent('spjiedao_after',null,trigger.getParent()); + next.player=player; + next.target=trigger.player; + next.num=num; + next.setContent(function(){ + if(target.isAlive()) player.chooseToDiscard(num,true,'he'); + }); + }, + }, + biaozhao:{ + audio:2, + intro:{ + content:"cards", + }, + trigger:{ + player:"phaseJieshuBegin", + }, + direct:true, + filter:function (event,player){ + return player.countCards('he')>0&&!player.storage.biaozhao; + }, + content:function (){ + 'step 0' + player.chooseCard('he',get.prompt2('biaozhao')).ai=function(card){ + return 6-get.value(card); + } + 'step 1' + if(result.bool){ + player.addSkill('biaozhao2'); + player.addSkill('biaozhao3'); + player.logSkill('biaozhao'); + player.lose(result.cards,ui.special,'toStorage','visible'); + player.$give(result.cards,player,false); + player.storage.biaozhao=result.cards; + player.markSkill('biaozhao'); + } + }, + }, + "biaozhao2":{ + trigger:{ + global:["loseAfter","cardsDiscardAfter"], + }, + charlotte:true, + forced:true, + audio:"biaozhao", + filter:function (event,player){ + if(!player.storage.biaozhao) return false; + var evt=event.getParent(); + if(evt&&(evt.name=='useCard'||evt.name=='respond'||evt.name=='biaozhao2')) return false; + var suit=get.suit(player.storage.biaozhao[0]); + var num=get.number(player.storage.biaozhao[0]); + for(var i=0;ievent.num) event.num=current.countCards('h'); + }); + player.chooseTarget('是否令一名角色将手牌摸至'+event.num+'张并回复1点体力?').ai=function(target){ + var num=Math.min(event.num-target.countCards('h'),5); + if(target.isDamaged()) num++; + return num*get.attitude(_status.event.player,target); + }; + "step 1" + if(result.bool){ + var target=result.targets[0]; + player.line(target,'green'); + var draw=Math.min(num-target.countCards('h'),5); + if(draw) target.draw(draw); + target.recover(); + } + }, + }, + yechou:{ + audio:2, + trigger:{ + player:"die", + }, + direct:true, + forceDie:true, + skillAnimation:true, + animationColor:'wood', + content:function (){ + "step 0" + player.chooseTarget(get.prompt2('yechou'),function(card,player,target){ + return player!=target&&target.getDamagedHp()>1 + }).set('forceDie',true).set('ai',function(target){ + var num=get.attitude(_status.event.player,target); + return -num; + }); + "step 1" + if(result.bool){ + var target=result.targets[0]; + player.logSkill('yechou',target); + player.line(target,'green'); + target.addTempSkill('yechou2',{player:'phaseZhunbeiBegin'}); + } + }, + ai:{ + expose:0.5, + }, + }, + "yechou2":{ + mark:true, + marktext:"仇", + intro:{ + content:"每个回合结束时失去1点体力直到回合开始", + }, + trigger:{ + global:"phaseAfter", + }, + forced:true, + content:function (){player.loseHp()}, + }, + yanjiao:{ + audio:2, + ai:{ + order:10, + result:{ + player:1, + target:1.1, + }, + }, + enable:"phaseUse", + usable:1, + filterTarget:function (card,player,target){ + return target!=player; + }, + content:function (){ + "step 0" + var num=4; + if(player.storage.xingshen){ + num+=player.storage.xingshen; + player.storage.xingshen=0; + player.unmarkSkill('xingshen'); + } + event.cards=get.cards(num); + player.showCards(event.cards); + "step 1" + event.getedResult=lib.skill.yanjiao.getResult(cards); + if(!event.getedResult.length){ + game.cardsDiscard(cards); + player.addTempSkill('yanjiao2'); + event.finish(); + } + "step 2" + target.chooseControl("自动分配","手动分配").set("prompt","【严教】:是否让系统自动分配方案?").ai=function(){ + return 0; + }; + "step 3" + if(result.control=="手动分配"){ + event.map=[cards,[],[]]; + _status.noclearcountdown=true; + event.goto(8); + } + else if(!_status.connectMode){ + var choiceList=ui.create.dialog('请选择一种方案','hidden','forcebutton'); + for(var i=0;i1) player.addTempSkill('yanjiao2'); + } + event.finish(); + "step 8" + event.videoId=lib.status.videoId++; + var dialogx=['严教:选择要移动的牌']; + var name=["未分配","第一组","第二组"]; + for(var i=0;i0){ + dialogx.push('
    '+name[i]+'
    '); + dialogx.push(event.map[i]) + } + } + if(target.isOnline2()){ + target.send(function(dialogx,id){ + ui.create.dialog.apply(null,dialogx).videoId=id; + },dialogx,event.videoId); + } + event.dialog=ui.create.dialog.apply(null,dialogx); + event.dialog.videoId=event.videoId; + if(target!=game.me||_status.auto){ + event.dialog.style.display='none'; + } + var next=target.chooseButton(); + next.set('selectButton',function(){ + if(!_status.event.map[1].length||!_status.event.map[2].length) return 1; + var num1=0; + for(var i=0;i<_status.event.map[1].length;i++){ + num1+=_status.event.map[1][i].number; + } + var num2=0; + for(var j=0;j<_status.event.map[2].length;j++){ + num2+=_status.event.map[2][j].number; + } + return (num1==num2?[0,1]:1); + }); + next.set('map',event.map); + next.set('dialog',event.videoId); + next.set('ai',function(){return -1}); + next.set('forceAuto',true); + "step 9" + if(result.bool){ + if(!result.links.length){ + if(target.isOnline2()){ + target.send('closeDialog',event.videoId); + } + event.dialog.close(); + delete _status.noclearcountdown; + if(!_status.noclearcountdown){ + game.stopCountChoose(); + } + event.togain=[event.map[1],event.map[2],event.map[0]]; + target.showCards(event.togain[0],get.translation(target)+'分出的第一份牌'); + event.goto(5); + } + else{ + event.card=result.links[0]; + var controls=["取消分组","移动到第一组","移动到第二组"]; + for(var i=0;i4) player.storage.xingshen=4; + player.markSkill('xingshen'); + }, + }, + pingjian:{ + audio:1, + trigger:{ + player:['damageEnd','phaseJieshuBegin'], + }, + initList:function(){ + var list=[]; + if(_status.connectMode) var list=get.charactersOL(); + else{ + var list=[]; + for(var i in lib.character){ + if(lib.filter.characterDisabled2(i)||lib.filter.characterDisabled(i)) continue; + list.push(i); + } + } + game.countPlayer2(function(current){ + list.remove(current.name); + list.remove(current.name1); + list.remove(current.name2); + if(current.storage.rehuashen&¤t.storage.rehuashen.character) list.removeArray(current.storage.rehuashen.character) + }); + _status.characterlist=list; + }, + frequent:true, + content:function(){ + 'step 0' + if(!player.storage.pingjian) player.storage.pingjian=[]; + event._result={bool:true}; + 'step 1' + if(result.bool){ + if(!_status.characterlist){ + lib.skill.pingjian.initList(); + } + var list=[]; + var skills=[]; + var map=[]; + _status.characterlist.randomSort(); + var name2=event.triggername; + for(var i=0;i<_status.characterlist.length;i++){ + var name=_status.characterlist[i]; + if(name.indexOf('zuoci')!=-1||name.indexOf('xushao')!=-1) continue; + var skills2=lib.character[name][3]; + for(var j=0;j2) break; + } + if(!skills.length){ + player.draw(); + event.finish(); + } + else{ + skills.unshift('摸一张牌'); + player.chooseControl(skills).set('dialog',['请选择要发动的技能,或摸一张牌',[list,'character']]).set('ai',function(){return 0}); + } + } + else event.finish(); + 'step 2' + if(result.control=='摸一张牌'){ + player.draw(); + return; + } + player.storage.pingjian.add(result.control); + player.addTempSkill(result.control,event.triggername=='damageEnd'?'damageAfter':'phaseJieshu'); + }, + group:'pingjian_use', + }, + pingjian_use:{ + audio:'pingjian', + enable:'phaseUse', + usable:1, + position:'he', + content:function(){ + 'step 0' + if(!player.storage.pingjian) player.storage.pingjian=[]; + event._result={bool:true}; + 'step 1' + if(result.bool){ + var list=[]; + var skills=[]; + var map=[]; + if(!_status.characterlist){ + lib.skill.pingjian.initList(); + } + _status.characterlist.randomSort(); + for(var i=0;i<_status.characterlist.length;i++){ + var name=_status.characterlist[i]; + if(name.indexOf('zuoci')!=-1||name.indexOf('xushao')!=-1) continue; + var skills2=lib.character[name][3]; + for(var j=0;j2) break; + } + if(!skills.length){ + player.draw(); + event.finish(); + } + else{ + skills.unshift('摸一张牌'); + player.chooseControl(skills).set('dialog',['请选择要发动的技能,或摸一张牌',[list,'character']]).set('ai',function(){return 0}); + } + } + else event.finish(); + 'step 2' + if(result.control=='摸一张牌'){ + player.draw(); + return; + } + player.storage.pingjian.add(result.control); + player.addTempSkill(result.control,'phaseUseEnd'); + player.addTempSkill('pingjian_temp','phaseUseEnd'); + player.storage.pingjian_temp=result.control; + event.getParent(2).goto(0); + }, + ai:{order:10,result:{player:1}}, + }, + pingjian_temp:{ + onremove:true, + trigger:{player:'useSkillAfter'}, + silent:true, + firstDo:true, + filter:function(event,player){ + return event.skill==player.storage.pingjian_temp; + }, + content:function(){ + player.removeSkill(trigger.skill); + player.removeSkill('pingjian_temp'); + }, + }, + //蒲元 + pytianjiang:{ + audio:2, + trigger:{ + global:'gameDrawAfter', + player:'enterGame', + }, + forced:true, + locked:false, + content:function(){ + 'step 0' + var i=0; + var list=[]; + while(i++<2){ + var card=get.cardPile(function(card){ + if(get.type(card)!='equip') return false; + return list.length==0||get.subtype(card)!=get.subtype(list[0]); + }); + if(card) list.push(card); + } + if(!list.length){event.finish();return;} + event.list=list; + player.gain(event.list,'gain2'); + 'step 1' + game.delay(1); + var card=event.list.shift(); + if(player.getCards('h').contains(card)){ + player.$give(card,player,false) + player.equip(card); + } + if(event.list.length) event.redo(); + }, + group:'pytianjiang_move', + }, + pytianjiang_move:{ + audio:'pytianjiang', + prompt:'将装备区里的一张牌移动至其他角色的装备区', + enable:'phaseUse', + position:'e', + filter:function(event,player){ + return player.countCards('e')>0; + }, + check:function(){return 1}, + filterCard:true, + filterTarget:function(event,player,target){ + return target!=player&&target.canEquip(ui.selected.cards[0],true); + }, + prepare:'give', + discard:false, + lose:false, + content:function(){ + target.equip(cards[0]); + }, + ai:{ + order:11, + result:{ + target:function(player,target){ + if(ui.selected.cards.length){ + var card=ui.selected.cards[0]; + if(target.getEquip(card)||target.countCards('h',{subtype:get.subtype(card)})) return 0; + return get.effect(target,card,player,target); + } + return 0; + }, + }, + }, + }, + pyzhuren:{ + audio:2, + enable:'phaseUse', + usable:1, + filterCard:true, + selectCard:1, + check:function(card){ + var player=_status.event.player; + var name='pyzhuren_'+(card[card.name=='shandian'?'name':'suit']); + if(!lib.card[name]||_status.pyzhuren&&_status.pyzhuren[name]){ + if(!player.countCards('h','sha')) return 4-get.value(card); + return 0; + } + return 2+card.number/2-get.value(card); + }, + content:function(){ + if(!_status.pyzhuren) _status.pyzhuren={}; + var rand=get.number(cards[0])/13; + if(get.isLuckyStar(player)) rand=1; + var name='pyzhuren_'+(cards[0][cards[0].name=='shandian'?'name':'suit']); + if(!lib.card[name]||_status.pyzhuren[name]||Math.random()>rand){ + player.popup('杯具'); + game.log(player,'锻造失败'); + var card=get.cardPile(function(card){ + return card.name=='sha'; + }); + if(card) player.gain(card,'gain2'); + } + else{ + _status.pyzhuren[name]=true; + player.gain(game.createCard(name,cards[0].name=='shandian'?'spade':cards[0].suit,1),'gain2') + } + }, + ai:{ + order:10, + result:{ + player:1, + }, + }, + group:'pyzhuren_destroy', + }, + pyzhuren_destroy:{ + trigger:{global:['loseAfter','cardsDiscardAfter']}, + forced:true, + filter:function(event,player){ + var cs=event.cards; + for(var i=0;i0; + return player.countCards('h',this.filterCard)>0; + }, + filterCard:function(card){ + return get.name(card)=='sha'||get.subtype(card)=='equip1'; + }, + content:function(){ + 'step 0' + var next=player.chooseToDiscard('h',lib.skill.pyzhuren_diamond.filterCard,get.prompt(event.name,trigger.player),'弃置一张【杀】或武器牌,令即将对其造成的伤害+1'); + next.ai=function(card){ + if(_status.event.goon) return 6-get.value(card); + return -1; + }; + next.set('goon',get.attitude(player,trigger.player)<0&&!trigger.player.hasSkillTag('filterDamage',null,{ + player:player, + card:trigger.card, + })); + next.logSkill=[event.name,trigger.player]; + 'step 1' + if(result.bool) trigger.num++; + }, + ai:{ + expose:0.25, + }, + }, + pyzhuren_club:{ + audio:true, + trigger:{player:'useCard2'}, + direct:true, + filter:function(event,player){ + if(player.countUsed(null,true)>1) return false; + if(event.card.name!='sha'&&get.type(event.card)!='trick') return false; + var info=get.info(event.card); + if(info.allowMultiple==false) return false; + if(event.targets&&!info.multitarget){ + if(game.hasPlayer(function(current){ + return lib.filter.targetEnabled2(event.card,player,current)&&!event.targets.contains(current); + })){ + return true; + } + } + return false; + }, + content:function(){ + 'step 0' + var prompt2='为'+get.translation(trigger.card)+'额外指定一个目标'; + player.chooseTarget([1,player.storage.fumian_red],get.prompt(event.name),function(card,player,target){ + var player=_status.event.player; + if(_status.event.targets.contains(target)) return false; + return 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('targets',trigger.targets).set('card',trigger.card); + 'step 1' + if(result.bool){ + if(!_status.connectMode&&!event.isMine()) game.delayx(); + event.targets=result.targets; + } + else{ + event.finish(); + } + 'step 2' + if(event.targets){ + player.logSkill(event.name,event.targets); + trigger.targets.addArray(event.targets); + } + }, + }, + pyzhuren_spade:{ + audio:true, + trigger:{player:'useCardToPlayered'}, + filter:function(event,player){ + return event.card.name=='sha'&&event.targets.length==1&&get.color(event.card)=='black'; + }, + check:function(event,player){ + return get.attitude(player,event.target)<=0; + }, + content:function(){ + trigger.target.gain(trigger.cards.filterInD(),'gain2','log'); + trigger.target.loseHp().set('source',player); + }, + ai:{ + jueqing:true, + unequip_ai:true, + skillTagFilter:function(player,tag,arg){ + if(tag=='unequip_ai'){ + if(arg&&arg.name=='sha'&&get.color(arg.card)=='black') return true; + return false; + } + } + }, + }, + pyzhuren_shandian:{ + audio:true, + trigger:{player:'useCardToPlayered'}, + filter:function(event,player){ + return event.card.name=='sha'&&event.targets.length==1; + }, + check:function(event,player){ + return get.attitude(player,event.player)<=0; + }, + content:function(){ + 'step 0' + player.judge(function(card){ + if(get.suit(card)=='spade'&&card.number>1&&card.number<10) return 10; + return 0; + }); + 'step 1' + if(result.bool){ + trigger.target.damage(3,'thunder'); + trigger.getParent().excluded.add(trigger.target); + } + }, + }, + //上兵伐谋 + //伊籍在标包 不会移动 + songshu:{ + audio:2, + enable:'phaseUse', + filter:function(event,player){ + return !player.hasSkill('songshu_reflectionblue')&&player.countCards('h')>0; + }, + filterTarget:function(card,player,target){ + return target!=player&&player.canCompare(target); + }, + content:function(){ + 'step 0' + player.chooseToCompare(target).set('small',get.attitude(player,target)>0); + 'step 1' + if(!result.bool){ + target.draw(2); + player.addTempSkill('songshu_reflectionblue'); + } + }, + }, + songshu_reflectionblue:{ + }, + sibian:{ + audio:2, + trigger:{player:'phaseDrawBegin1'}, + filter:function(event,player){ + return !event.numFixed; + }, + content:function(){ + 'step 0' + trigger.changeToZero(); + event.cards=get.cards(4); + game.cardsGotoOrdering(event.cards); + player.showCards(event.cards); + 'step 1' + cards.sort(function(a,b){ + return b.number-a.number; + }); + var gains=[]; + var mx=[cards[0].number,cards[3].number]; + for(var i=0;i=game.players.length) event._result={bool:false}; + else player.chooseTarget('是否令一名手牌数最少的角色获得'+get.translation(cards),function(card,player,target){ + return target.isMinHandcard(); + }).ai=function(target){ + return get.attitude(_status.event.player,target); + } + 'step 2' + if(result.bool){ + var target=result.targets[0]; + player.line(target); + player.addExpose(0.2); + target.gain(cards,'gain2'); + } + }, + }, + lslixun:{ + audio:2, + forced:true, + trigger:{player:'damageBegin4'}, + marktext:'珠', + intro:{ + name2:'珠', + content:'共有#个“珠”', + }, + content:function(){ + trigger.cancel(); + player.addMark('lslixun',trigger.num); + }, + group:'lslixun_fate', + }, + lslixun_fate:{ + audio:'lslixun', + trigger:{player:'phaseUseBegin'}, + forced:true, + filter:function(event,player){ + return player.countMark('lslixun')>0; + }, + content:function(){ + 'step 0' + event.forceDie=true; + _status.lslixun=player.countMark('lslixun'); + player.judge(function(card){ + if(get.number(card)<_status.lslixun) return -_status.lslixun; + return 1; + }); + 'step 1' + delete _status.lslixun; + if(!result.bool){ + player.chooseToDiscard([1,player.countMark('lslixun')],'h').ai=lib.skill.qiangxi.check; + } + else event.finish(); + 'step 2' + var num=player.countMark('lslixun'); + if(result.cards&&result.cards.length) num-=result.cards.length; + if(num) player.loseHp(num); + }, + }, + lskuizhu:{ + audio:2, + trigger:{player:'phaseUseEnd'}, + direct:true, + filter:function(event,player){ + return player.isMaxHp(true)==false; + }, + content:function(){ + 'step 0' + player.chooseTarget(get.prompt2('lskuizhu'),function(card,player,target){ + return target!=player&&target.isMaxHp(); + }).ai=function(target){ + var player=_status.event.player; + var ts=Math.min(5,target.countCards('h')); + var delta=ts-player.countCards('h'); + if(delta<=0) return 0; + if(get.attitude(player,target)<1) return false; + return target.countCards('he',function(card){ + return lib.skill.zhiheng.check(card)>0; + })>1?delta:0; + }; + 'step 1' + if(result.bool){ + var target=result.targets[0]; + event.target=target; + player.logSkill('lskuizhu',target); + player.drawTo(Math.min(5,target.countCards('h'))); + } + else event.finish(); + 'step 2' + if(!player.countCards('h')){ + event.finish(); + return; + } + target.viewHandcards(player); + 'step 3' + if(!target.countCards('h')){ + event.finish(); + return; + } + target.chooseToDiscard(true,'h',[1,player.countCards('h')],'弃置至多'+get.cnNumber(player.countCards('h'))+'张手牌,并获得'+get.translation(player)+'等量的手牌').ai=function(card){ + if(ui.selected.cards.length>1) return -1; + return lib.skill.zhiheng.check.apply(this,arguments) + }; + 'step 4' + if(result.bool&&result.cards&&result.cards.length&&player.countGainableCards(target,'h')>0){ + target.gainPlayerCard(player,'h',true,result.cards.length).visible=true; + } + 'step 5' + if(result.bool&&result.cards&&result.cards.length>1){ + var bool=player.storage.lslixun>0!==true; + player.chooseTarget(bool,'令'+get.translation(target)+'对其攻击范围内的一名角色造成1点伤害'+(bool?'':',或点「取消」移去一个“珠”'),function(card,player,target){ + var source=_status.event.source; + return target!=source&&source.inRange(target); + }).set('source',target).set('ai',function(target){ + return get.damageEffect(target,_status.event.source,_status.event.player); + }); + } + else event.finish(); + 'step 6' + if(result.bool&&result.targets&&result.targets.length){ + player.line(result.targets[0]); + result.targets[0].damage(target); + } + else{ + player.removeMark('lslixun',1); + } + }, + ai:{ + expose:0.25, + }, + }, + xpchijie:{ + audio:2, + trigger:{ + player:'damageEnd', + }, + filter:function(event,player){ + if(player.hasSkill('xpchijie4')||!event.card) return false; + var evt=event.getParent('useCard'); + return evt.card==event.card&&evt.player!=player; + }, + check:function(event,player){ + var evt=event.getParent('useCard'); + var targets=evt.targets.slice(evt.num+1); + var num=0; + for(var i=0;i0&&!game.hasPlayer2(function(current){ + return current.getHistory('damage',function(evt){ + return evt.card==event.card; + }).length>0; + }); + }, + check:function(event,player){ + return get.value(event.cards.filterInD(),player,'raw')>0; + }, + content:function(){ + player.addTempSkill('xpchijie4'); + player.gain(trigger.cards.filterInD(),'log','gain2'); + }, + }, + xpchijie4:{}, + yinju:{ + audio:2, + enable:'phaseUse', + limited:true, + filterTarget:lib.filter.notMe, + skillAnimation:true, + animationColor:'water', + content:function(){ + player.awakenSkill('yinju'); + player.storage.yinju2=target; + player.addTempSkill('yinju2'); + }, + }, + yinju2:{ + trigger:{ + player:'useCardToPlayered', + source:'damageBefore', + }, + forced:true, + onremove:true, + filter:function(event,player,name){ + if(name=='useCardToPlayered'){ + if(!event.isFirstTarget) return false; + var type=get.type(event.card); + if(type=='equip') return true; + var bool=event.targets.contains(player.storage.yinju2); + return type=='delay'?!bool:bool; + } + return event.player==player.storage.yinju2; + }, + logTarget:function(event){ + return event[event.name=='damage'?'player':'target']; + }, + content:function(){ + if(trigger.name=='damage'){ + trigger.cancel(); + trigger.player.recover(trigger.num); + } + else player.draw(); + }, + }, + //管辂和葛玄 + gxlianhua:{ + derivation:['reyingzi','reguanxing','zhiyan','gongxin'], + audio:2, + init:function(player,skill){ + if(!player.storage[skill]) player.storage[skill]={ + red:0,black:0, + } + }, + marktext:'丹', + intro:{ + name:'丹血', + markcount:function(storage){ + return storage.red+storage.black; + }, + content:function(storage){ + return '共有'+(storage.red+storage.black)+'个标记'; + }, + }, + trigger:{global:'damage'}, + forced:true, + filter:function(event,player){ + return event.player!=player&&_status.currentPhase!=player; + }, + content:function(){ + player.storage.gxlianhua[player.getFriends().contains(trigger.player)?'red':'black']++; + player.markSkill('gxlianhua'); + }, + group:'gxlianhua_harmonia', + subSkill:{ + harmonia:{ + forced:true, + audio:'gxlianhua', + sub:true, + trigger:{player:'phaseZhunbeiBegin'}, + //filter:function(event,player){ + // return player.storage.gxlianhua&&player.storage.gxlianhua.red+player.storage.gxlianhua.black>0; + //}, + forced:true, + content:function(){ + var cards=[]; + var cards2=[]; + var skill=''; + var red=player.storage.gxlianhua.red; + var black=player.storage.gxlianhua.black; + player.storage.gxlianhua={red:0,black:0}; + player.unmarkSkill('gxlianhua'); + if(red+black<4){ + cards=['tao']; + skill='reyingzi'; + } + else if(red>black){ + cards=['wuzhong']; + skill='reguanxing'; + } + else if(red0) return 1 + return -5/(target.countCards('h')+1); + }, + }, + }, + }, + busuan_angelbeats:{ + mark:true, + intro:{ + mark:function(dialog,content,player){ + if(content&&content.length) dialog.add([content,'vcard']); + }, + }, + trigger:{player:'drawBefore'}, + forced:true, + filter:function(event,player){ + return event.getParent().name=='phaseDraw'; + }, + onremove:true, + content:function(){ + 'step 0' + var list=player.storage['busuan_angelbeats']; + var cards=[]; + for(var i=0;i0) return Math.sqrt(att)/10; + return 5-att; + }); + 'step 1' + if(result.bool){ + var target=result.targets[0]; + event.target=target; + player.logSkill('spwenji',target); + target.chooseCard('he',true,'问计:将一张牌交给'+get.translation(player)); + } + else{ + event.finish(); + } + 'step 2' + if(result.bool){ + player.addTempSkill('spwenji_respond'); + player.storage.spwenji_respond=result.cards[0].name; + event.target.give(result.cards,player,true); + } + }, + subSkill:{ + respond:{ + onremove:true, + trigger:{player:'useCard'}, + forced:true, + charlotte:true, + audio:'spwenji', + filter:function(event,player){ + return event.card.name==player.storage.spwenji_respond; + }, + content:function(){ + trigger.directHit.addArray(game.filterPlayer(function(current){ + return current!=player; + })); + }, + } + } + }, + sptunjiang:{ + audio:2, + trigger:{player:'phaseJieshuBegin'}, + frequent:true, + filter:function(event,player){ + if(player.getHistory('skipped').contains('phaseUse')) return false; + return player.getHistory('useCard',function(evt){ + if(evt.targets&&evt.targets.length&&evt.isPhaseUsing()){ + var targets=evt.targets.slice(0); + while(targets.contains(player)) targets.remove(player); + return targets.length>0; + } + return false; + }).length==0; + }, + content:function(){ + player.draw(game.countGroup()); + }, + }, + bingzhao:{ + audio:2, + unique:true, + zhuSkill:true, + forced:true, + intro:{ + content:function(group){ + return '已选择了'+get.translation(group)+'势力' + }, + }, + trigger:{global:['gameDrawAfter','zhuUpdate']}, + filter:function(event,player){ + return !player.storage.bingzhao&&player.hasZhuSkill('bingzhao'); + }, + content:function(){ + 'step 0' + var list=[]; + for(var i=0;i=7; + }, + content:function(){ + player.awakenSkill('baijia'); + player.gainMaxHp(); + player.recover(); + var list=game.filterPlayer(); + for(var i=0;i1; + }; + } + else event.finish(); + 'step 2' + if(result.bool){ + trigger.player.logSkill('bingzhao',player); + player.draw(); + player.storage.guju++; + player.markSkill('guju'); + } + }, + ai:{ + combo:'zongkui' + } + }, + zongkui:{ + trigger:{player:'phaseBefore',global:'roundStart'}, + direct:true, + audio:2, + audioname:['tw_beimihu'], + filter:function(event,player){ + return game.hasPlayer(function(current){ + if(event.name=='roundStart'&&!current.isMinHp()) return false; + return current!=player&&!current.hasMark('zongkui_mark'); + }); + }, + content:function(){ + 'step 0' + player.chooseTarget(get.prompt2('zongkui'),function(card,player,target){ + if(_status.event.round&&!target.isMinHp()) return false; + return target!=player&&!target.hasMark('zongkui_mark'); + }).set('ai',function(target){ + var num=target.isMinHp()?0.5:(1+Math.random()); + if(get.attitude(_status.event.player,target)<0){ + num+=0.5; + } + return num; + }).set('round',event.triggername=='roundStart'); + 'step 1' + if(result.bool){ + var target=result.targets[0]; + player.logSkill('zongkui',target); + target.addMark('zongkui_mark',1); + } + }, + subSkill:{ + mark:{ + marktext:'傀', + intro:{ + name2:'傀', + content:'mark' + } + } + }, + ai:{ + combo:'guju', + threaten:1.4 + } + }, + "xinfu_langxi":{ + audio:2, + trigger:{ + player:"phaseZhunbeiBegin", + }, + direct:true, + content:function (){ + "step 0" + player.chooseTarget(get.prompt('xinfu_langxi'),'对一名体力值不大于你的其他角色造成0-2点随机伤害',function(card,player,target){ + return target.hp<=player.hp&&target!=player; + }).set('ai',function(target){ + var player=_status.event.player; + return get.damageEffect(target,player,player); + }); + "step 1" + if(result.bool&&result.targets&&result.targets.length){ + player.logSkill('xinfu_langxi',result.targets); + var num=[1,2,0].randomGet(); + if(get.isLuckyStar(player)) num=2; + player.line(result.targets[0],'green'); + result.targets[0].damage(num); + } + }, + ai:{ + expose:0.25, + threaten:1.7, + }, + }, + "xinfu_yisuan":{ + usable:1, + audio:2, + trigger:{ + player:"useCardEnd", + }, + check:function (event,player){ + return get.value(event.cards)+player.maxHp*2-18>0; + }, + filter:function (event,player){ + return player.isPhaseUsing()&&get.type(event.card)=='trick'&&event.cards.filterInD().length>0; + }, + content:function (){ + player.loseMaxHp(); + player.gain(trigger.cards.filterInD(),'gain2','log'); + }, + }, + "xinfu_xingluan":{ + usable:1, + audio:2, + trigger:{ + player:"useCardAfter", + }, + filter:function (event,player){ + if(!player.isPhaseUsing()) return false; + if(get.type(event.card)==undefined) return false; + return (event.targets&&event.targets.length==1); + }, + content:function (){ + var card=get.cardPile2(function(card){ + return card.number==6; + }); + if(!card){ + player.chat('无牌可得了吗'); + game.log('但是牌堆里面已经没有点数为6的牌了!'); + event.finish(); + return; + } + player.gain(card,'gain2'); + }, + }, + "xinfu_lveming":{ + init:function (player){ + player.storage.xinfu_lveming=0; + }, + mark:true, + intro:{ + content:"已发动过#次", + }, + audio:2, + enable:"phaseUse", + usable:1, + filterTarget:function (card,player,target){ + return player!=target&&target.countCards('e')0?6:-6; + return -6-(numj+1)/numhe; + }, + }, + threaten:1.1, + }, + }, + "xinfu_tunjun":{ + skillAnimation:true, + animationColor:'metal', + limited:true, + unique:true, + enable:"phaseUse", + audio:2, + filter:function (event,player){ + if(player.storage.xinfu_tunjun) return false; + return player.storage.xinfu_lveming&&player.storage.xinfu_lveming>0; + }, + filterTarget:true, + selectTarget:1, + content:function (){ + "step 0" + player.awakenSkill('xinfu_tunjun'); + event.num=player.storage.xinfu_lveming; + event.toequip=[]; + "step 1" + var equip=get.cardPile(function(card){ + var bool1=true; + for(var i=0;i0) event.goto(1); + "step 3" + for (var i=0;itarget.getUseValue({name:'sha',cards:cards})?0:1); + } + else if(bool1){ + event.directindex=0; + } + else if(bool2){ + event.directindex=1; + } + else{ + ui.cardPile.insertBefore(card,ui.cardPile.firstChild); + event.finish(); + } + 'step 2' + var card=cards[0]; + if(result&&typeof event.directindex!='number'){ + event.directindex=result.index; + } + if(event.directindex==1){ + target.chooseUseTarget({name:'sha'},cards,true,false).viewAs=true; + } + else{ + target.chooseUseTarget(card,true,false,'nodistance'); + } + }, + ai:{ + order:7, + result:{ + target:1, + }, + }, + }, + "xinfu_bijing":{ + audio:2, + group:["xinfu_bijing_lose","xinfu_bijing_discard"], + subSkill:{ + lose:{ + trigger:{ + global:"phaseDiscardBegin", + }, + audio:'xinfu_bijing', + filter:function (event,player){ + if(!player.storage.xinfu_bijing) return false; + if(event.player==player) return false; + return player.getHistory('lose',function(evt){ + return evt.cards.contains(player.storage.xinfu_bijing); + }).length>0&&event.player.countCards('he')>0; + }, + forced:true, + logTarget:'player', + content:function (){ + trigger.player.chooseToDiscard(2,true,'he'); + }, + sub:true, + }, + discard:{ + trigger:{ + player:"phaseZhunbeiBegin", + }, + forced:true, + filter:function (event,player){ + if(!player.storage.xinfu_bijing)return false; + return player.getCards('h').contains(player.storage.xinfu_bijing); + }, + content:function (){ + player.discard(player.storage.xinfu_bijing); + delete player.storage.xinfu_bijing; + }, + sub:true, + }, + }, + trigger:{ + player:"phaseJieshuBegin", + }, + direct:true, + filter:function (player,event){ + return event.countCards('h')>0; + }, + content:function (){ + 'step 0' + player.chooseCard(get.prompt2('xinfu_bijing'),'h').set('ai',function(card){ + if(card.name=='shan') return 6; + return 6-get.value(card); + }); + 'step 1' + if(result.bool){ + player.logSkill('xinfu_bijing'); + player.showCards(result.cards); + player.storage.xinfu_bijing=result.cards[0]; + } + }, + }, + "xinfu_zhenxing":{ + audio:2, + trigger:{ + player:["damageEnd","phaseJieshuBegin"], + }, + direct:true, + content:function (){ + 'step 0' + player.chooseControl('一张','两张','三张','cancel2').set('prompt',get.prompt2('xinfu_zhenxing')).set('',function(){return 0}); + 'step 1' + if(result.control=='cancel2') event.finish(); + else{ + player.logSkill('xinfu_zhenxing'); + event.num={一张:1,两张:2,三张:3}[result.control]; + }; + 'step 2' + event.cards=get.cards(num); + player.chooseButton(['【镇行】:请选择要获得的牌',event.cards]).set('filterButton',function(button){ + for(var i=0;i=0;i--){ + if(result.bool&&result.links.contains(event.cards[i])){ + player.gain(event.cards[i],'gain2'); + } + else{ + event.cards[i].fix(); + ui.cardPile.insertBefore(event.cards[i],ui.cardPile.childNodes[0]); + } + } + game.updateRoundNumber(); + }, + }, + "xinfu_qianxin":{ + audio:2, + group:["xinfu_qianxin2"], + enable:"phaseUse", + usable:1, + onChooseToUse:function(event){ + if(!game.online){ + var num1=game.players.length-1; + var player=event.player; + var num2=ui.cardPile.childElementCount; + var num3=num2; + if(num1>num2) num3=0; + else if(!player.storage.xinfu_qianxin){} + else{ + for(var i=0;i0; + }, + filterTarget:function (card,player,target){ + return target!=player; + }, + filterCard:true, + selectCard:function (){ + var num1=game.players.length-1; + var num2=_status.event.qianxinNum; + return [1,Math.floor(num2/num1)]; + }, + discard:false, + check:function (){ + return -1; + }, + delay:false, + content:function (){ + 'step 0' + player.$throw(cards.length); + player.storage.xinfu_qianxin=cards.slice(0); + player.storage.xinfu_qianxin2=target; + var num1=game.players.length; + var num2=ui.cardPile.childElementCount; + for(var i=0;i=4){ + event._result={index:1}; + } + else{ + trigger.player.chooseControl().set('choiceList',[ + '令'+get.translation(player)+'将手牌摸至四张', + '令自己本回合的手牌上限-2' + ]).set('ai',function(){ + var player=_status.event.player; + var source=_status.event.getParent().player; + if(get.attitude(player,source)>0) return 0; + if(player.hp-player.countCards('h')>1) return 1; + return [0,1].randomGet(); + }) + } + 'step 1' + if(result.index==0){ + player.drawTo(4); + } + else{ + trigger.player.addTempSkill('xinfu_qianxin2_dis'); + } + }, + }, + "xinfu_fuhai":{ + subSkill:{ + next:{}, + previous:{}, + }, + audio:2, + group:["fuhai_clear"], + intro:{ + content:"已指定过#个目标", + }, + enable:"phaseUse", + filter:function (event,player){ + if(player.hasSkill('xinfu_fuhai_next')&&player.hasSkill('xinfu_fuhai_previous')) return false; + return player.countCards('h')>0; + }, + filterTarget:function (card,player,target){ + if(![player.next,player.previous].contains(target)||target.countCards('h')==0) return false; + if(player.hasSkill('xinfu_fuhai_next')) return target==player.previous; + if(player.hasSkill('xinfu_fuhai_previous')) return target==player.next; + return true; + }, + line:false, + content:function (){ + 'step 0' + event.side=target==player.next?'next':'previous'; + event.current=target; + if(!player.storage.xinfu_fuhai) player.storage.xinfu_fuhai=1; + player.addTempSkill('xinfu_fuhai_'+event.side,'phaseUseAfter'); + 'step 1' + if(player.countCards('h')==0||event.current.countCards('h')==0||event.current==player){ + event.finish(); + return; + } + var next=event.current[event.side]; + if(get.attitude(event.current,player)>0){ + if(get.attitude(next,target)<=0||next.countCards('h')==0||player.countCards('h')==1){ + event.stopm=true; + event.stopt=true + } + else{ + event.stopm=false; + event.stopt=false; + } + } + else{ + if(get.attitude(next,target)>=0){ + event.stopt=true; + event.stopm=false; + } + else{ + event.stopt=false; + event.stopm=false; + } + } + player.markSkill('xinfu_fuhai'); + player.line(event.current,'green'); + player.chooseCard('请选择要展示的牌',true).set('ai',function(card){ + if(_status.event.stop) return 14-get.number(card); + return get.number(card) + }).set('stop',event.stopm); + 'step 2' + event.mes=result.cards[0]; + player.showCards(event.mes); + 'step 3' + event.current.chooseCard('请选择要展示的牌',true).set('ai',function(card){ + if(_status.event.stop) return get.number(card); + return 14-get.number(card); + }).set('stop',event.stopt); + 'step 4' + event.tes=result.cards[0]; + event.current.showCards(event.tes); + 'step 5' + var num1=get.number(event.mes); + var num2=get.number(event.tes); + if(num10&&event.current.countCards('h')>0&&event.current!=player) event.goto(1); + } + }, + ai:{ + order:1, + result:{ + player:function(player,target){ + var hs=player.countCards('h'); + var side=target==player.next?'next':'previous'; + var current=player; + for(var i=0;i0) return 1; + } + return 0; + }, + }, + }, + }, + "fuhai_clear":{ + trigger:{ + player:"phaseAfter", + }, + forced:true, + silent:true, + popup:false, + filter:function (event,player){ + return player.storage.xinfu_fuhai!=undefined; + }, + content:function (){ + player.unmarkSkill('xinfu_fuhai'); + delete player.storage.xinfu_fuhai; + }, + }, + "xz_xunxun":{ + filter:function (event,player){ + var num=game.countPlayer(function(current){ + return current.isDamaged(); + }); + return num>=1&&!player.hasSkill('xunxun'); + }, + audio:2, + trigger:{ + player:"phaseDrawBegin1", + }, + //priority:10, + content:function (){ + "step 0" + event.cards=get.cards(4); + player.chooseCardButton(true,event.cards,2,'选择两张牌置于牌堆顶').set('ai',ai.get.buttonValue); + "step 1" + if(result.bool){ + var choice=[]; + for(var i=0;i=1){ + str='
  • 视为拥有技能“恂恂”'; + } + if(num>=2){ + str+=';使用装备牌时摸一张牌'; + } + if(num>=3){ + str+=';始终跳过弃牌阶段'; + } + return str; + }, + }, + trigger:{ + player:"useCard", + }, + forced:true, + filter:function (event,player){ + if(get.type(event.card)!='equip') return false; + var num=game.countPlayer(function(current){ + return current.isDamaged(); + }); + return num>=2; + }, + content:function (){ + player.draw(); + }, + }, + "xinfu_xingzhao2":{ + audio:true, + trigger:{ + player:"phaseDiscardBefore", + }, + forced:true, + filter:function (event,player){ + var num=game.countPlayer(function(current){ + return current.isDamaged(); + }); + return num>=3; + }, + content:function (){ + trigger.cancel(); + game.log(player,'跳过了弃牌阶段'); + }, + }, + "xinfu_dianhu":{ + audio:2, + trigger:{ + global:"gameDrawAfter", + player:"enterGame", + }, + forced:true, + filter:function (){ + return game.players.length>1; + }, + content:function (){ + 'step 0' + player.chooseTarget('选择【点虎】的目标',lib.translate.xinfu_dianhu_info,true,function(card,player,target){ + return target!=player&&!target.hasSkill('xinfu_dianhu2'); + }).set('ai',function(target){ + var att=get.attitude(_status.event.player,target); + if(att<0) return -att+3; + return Math.random(); + }); + 'step 1' + if(result.bool){ + var target=result.targets[0]; + player.line(target,'green'); + game.log(target,'成为了','【点虎】','的目标'); + target.storage.xinfu_dianhu2=player; + target.addSkill('xinfu_dianhu2'); + } + }, + }, + "xinfu_dianhu2":{ + mark:"character", + intro:{ + content:"当你受到来自$的伤害或回复体力后,$摸一张牌", + }, + nopop:true, + trigger:{ + player:["damageAfter","recoverAfter"], + }, + forced:true, + popup:false, + filter:function (event,player){ + if(player.storage.xinfu_dianhu2&&player.storage.xinfu_dianhu2.isIn()){ + if(event.name=='damage') return event.source==player.storage.xinfu_dianhu2; + return true; + }; + }, + content:function (){ + 'step 0' + var target=player.storage.xinfu_dianhu2; + target.logSkill('xinfu_dianhu'); + target.draw(); + }, + onremove:true, + }, + "xinfu_jianji":{ + audio:2, + enable:"phaseUse", + usable:1, + filterTarget:function (card,player,target){ + return target!=player; + }, + content:function (){ + 'step 0' + target.draw(); + 'step 1' + var card=result[0]; + if(card&&game.hasPlayer(function(current){ + return target.canUse(card,current); + })&&get.owner(card)==target){ + target.chooseToUse({ + prompt:'是否使用'+get.translation(card)+'?', + filterCard:function(cardx,player,target){ + return cardx==_status.event.cardx; + }, + cardx:card, + }); + } + }, + ai:{ + order:7.5, + result:{ + target:1, + }, + }, + }, + "xinfu_lianpian":{ + audio:2, + usable:3, + trigger:{ + player:"useCardToPlayered", + }, + frequent:true, + filter:function (event,player){ + if(!event.targets||!event.targets.length|| + event.getParent().triggeredTargets3.length>1||!event.isPhaseUsing(player)) return false; + var evt=player.getLastUsed(1); + if(!evt||!evt.targets||!evt.targets.length||!evt.isPhaseUsing(player)) return false; + for(var i=0;i0; + })){ + return num+10; + } + } + }, + }, + ai:{ + effect:{ + player:function(card,player,target){ + var evt=player.getLastUsed(); + if(evt&&evt.targets.contains(target)&&(!player.storage.counttrigger||!player.storage.counttrigger.xinfu_lianpian||!player.storage.counttrigger.xinfu_lianpian<3)&&player.isPhaseUsing(player)) return [1.5,0]; + } + }, + }, + }, + }, + card:{ + pyzhuren_heart:{ + fullskin:true, + derivation:'puyuan', + type:'equip', + subtype:'equip1', + distance:{attackFrom:-2}, + skills:['pyzhuren_heart'], + ai:{ + basic:{ + equipValue:2 + } + }, + }, + pyzhuren_diamond:{ + fullskin:true, + derivation:'puyuan', + type:'equip', + subtype:'equip1', + distance:{attackFrom:-1}, + skills:['pyzhuren_diamond'], + ai:{ + basic:{ + equipValue:2 + } + }, + }, + pyzhuren_club:{ + fullskin:true, + derivation:'puyuan', + type:'equip', + subtype:'equip1', + distance:{attackFrom:-1}, + skills:['pyzhuren_club'], + ai:{ + basic:{ + equipValue:2 + } + }, + }, + pyzhuren_spade:{ + fullskin:true, + derivation:'puyuan', + type:'equip', + subtype:'equip1', + skills:['pyzhuren_spade'], + ai:{ + basic:{ + equipValue:2.6 + } + }, + }, + pyzhuren_shandian:{ + fullskin:true, + derivation:'puyuan', + type:'equip', + subtype:'equip1', + distance:{attackFrom:-3}, + skills:['pyzhuren_shandian'], + ai:{ + basic:{ + equipValue:2 + } + }, + }, + }, + characterIntro:{ + lijue:"李傕(jué,一说“傕”读音“què”)(?—198年),字稚然。北地郡泥阳县(今陕西省耀县)人,汉末群雄之一。东汉末年汉献帝时的军阀、权臣,官至大司马、车骑将军、开府、领司隶校尉、假节。
    李傕本为董卓部将,后被董卓的女婿牛辅派遣至中牟与朱儁交战,大破朱儁,进而至陈留、颍川等地劫掠。初平三年(192年)董卓和牛辅被杀后,李傕归无所依,于是采用贾诩之谋,伙同郭汜、张济、樊稠等原董卓部曲将攻向长安。击败吕布,杀死王允等人,占领长安,把持朝廷大权。后诸将不和,李傕在会议上杀死了樊稠,又与郭汜分别劫持了汉献帝和众臣,相互交战,张济率兵赶来和解,于是二人罢兵,李傕出屯池阳黄白城,郭汜、张济等人随汉献帝东归前往弘农。
    后来,李傕、郭汜、张济反悔,联合起来追击汉献帝,与杨奉、董承等人几番交战。汉献帝一路逃亡,狼狈不堪,到达安邑,与李傕等人讲和。不久,汉献帝被曹操迎往许都。建安三年(198年),曹操派谒者仆射裴茂召集关西诸将段煨等人征讨李傕,灭其三族。", + zhangji:"张济(?-196年),武威郡祖厉县(今甘肃靖远东南)人。东汉末年割据军阀之一。 张济原为董卓部将,董卓被诛杀后,张济与李傕一同率军攻破长安,任中郎将。不久,升任镇东将军,封平阳侯,出屯弘农。献帝东迁时,张济升任骠骑将军,率军护卫献帝,后来因与董承等人有矛盾,便与李傕、郭汜一同追赶献帝。 建安元年(196年),张济因军队缺粮而进攻穰城,中流矢而死。死后,部队由侄儿张绣接管。", + guosi:"郭汜(?-197年),又名郭多,凉州张掖(今甘肃张掖西北)人,东汉末年将领、军阀,献帝时权臣。原为董卓部下。董卓被杀后,凉州众将归无所依,于是采用贾诩之谋,联兵将攻向长安,击败吕布,杀死王允等人,占领长安,把持朝廷大权。几年后,郭汜被部将伍习杀死。", + fanchou:"樊稠(?—195年),凉州金城(治今甘肃永靖西北)人。东汉末年军阀、将领。官至右将军,封万年侯。 原为董卓部将,董卓死后,伙同李傕、郭汜、张济等人合众十余万反扑长安,败吕布、杀王允,把持朝政。后马腾因与李傕有隙,于是联合韩遂举兵进攻,李傕派樊稠、郭汜等与其交战,大败马腾、韩遂于长平观下。樊稠追至陈仓,与韩遂友好罢兵,却遭李傕猜疑。兴平二年(195年),李傕让外甥骑都尉胡封在会议上将樊稠刺死(一说趁醉用杖击杀)。", + lvkai:"吕凯(?―225年),字季平,永昌郡不韦县(今云南保山东北)人,三国时期蜀汉官员。初任永昌郡五官掾功曹。章武三年(223年),建宁太守雍闿反叛,投降吴国,吴国任雍闿为永昌太守,吕凯闭境抗拒雍闿。建兴三年(225年),丞相诸葛亮南征,表奏吕凯功劳,任命他为云南太守,封阳迁亭侯。吕凯还未上任,便被叛乱的少数民族杀害。", + zhanggong:"张恭(生卒年不详),三国时期魏国大臣,与子张就一同闻名于西域。官至西域戊己校尉、关内侯,赠执金吾。初为敦煌郡功曹。东汉末河西大乱,太守马艾卒官,他被众人推为代理长史,遂派儿子张就请曹操委任太守,直至新太守到任。魏文帝时拜西域戊己校尉。魏明帝时去世。", + weiwenzhugezhi:"卫温 (?—231年),三国时期东吴将领,曾任将军职。诸葛直(?—231年),三国时期东吴将领。黄龙二年(230年)正月,孙权派卫温、诸葛直带领上万士兵出海寻找夷洲、亶洲,想要俘获那里的民众以充实东吴的人口,陆逊和全琮都谏言反对,孙权不听。230年和卫温一起登上台湾(当时的台湾叫做夷洲),他们是中国历史上记载的最早登陆台湾的人。卫温和诸葛直花费了约一年时间行军,士兵们因为疾病死去了十分之八到十分之九,因为亶洲太过遥远,卫温和诸葛直最终没能到达那里,只带了几千名夷洲的人返回。黄龙三年(231年),孙权认为诸葛直违背诏令,劳财伤民,无功而返,和卫温一同入狱被处死。", + xurong:"徐荣(?-192年),玄菟人(一说为辽东襄平人,《公孙度传》中说公孙度本辽东襄平人,迁居玄菟,为同郡徐荣所举,任辽东太守。同郡当是同“玄菟”郡),东汉末年将领。本为中郎将,曾向董卓推举同郡出身的公孙度出任辽东太守。于汴水之战中击败曹操的独立追击军,以及在梁东之战中击败孙坚的部队。在董卓死后,受司徒王允的命令与李傕、郭汜交战,因部将胡珍投降,寡不敌众,于新丰之战被击败,战死在乱军之中。", + zhangqiying:"张琪瑛(196年-217年),字不详(或琪瑛为字,名不详),祖籍沛国丰县(今江苏省丰县)。她的曾祖父张陵是西汉留侯张良的十一世孙、天师道(五斗米道)教祖,她的父亲是东汉末年割据汉中的军阀张鲁。张琪瑛继承家说,是五斗米教的传人。", + beimihu:'卑弥呼(ひみこ,约159年-约249年,有的史书也写成“俾弥呼”)是日本弥生时代邪马台国(今日本本州近畿地区)的女王,在《三国志·魏书·倭人传》中有关于她的记载。关于她的真实身份一直众说纷纭,是个极具神秘色彩的古代女性统治者。亦是日本古代宗教鬼道教的发源者。', + liuqi:'刘琦(?-209年)。兖州山阳郡高平县(今山东省济宁市微山县两城镇)人。荆州牧刘表的长子、谏议大夫刘琮兄。官至荆州刺史。建安十四年(209年)病逝。', + xf_tangzi:"唐咨(生卒年不详),三国时魏利城(今江苏赣榆西)人。魏文帝黄初中利城郡反,推唐咨为主。后为魏军击破,遂亡至吴,官至左将军,封侯、持节。后助诸葛诞拒魏,兵败被俘。为安抚吴国军民,魏主拜唐咨为安远将军。", + xf_huangquan:"黄权(?-240年),字公衡。巴西郡阆中县(今四川阆中)人。三国时期蜀汉、曹魏将领。
    黄权年轻时为郡吏,后被益州牧刘璋召为主簿。曾劝谏刘璋不要迎接刘备,因而被外放为广汉县长。刘璋败,才降刘备,被拜为偏将军。建计取汉中,拜护军。刘备为汉中王,仍领益州牧,以黄权为治中从事。及刘备称帝,将伐吴,黄权劝谏而不纳。以其为镇北将军,督江北军以防魏师进攻。刘备伐吴败还,而归途隔绝,黄权不得归,无奈之下率部降魏。被魏文帝所赏识,拜镇南将军,封育阳侯,加侍中,使同车陪乘。后领益州刺史,进驻河南。景初三年(239年),迁车骑将军、仪同三司。正始元年(240年),黄权去世,谥号“景”。", + xf_sufei:"苏飞(生卒年不详),东汉末年人物,原为东汉末年荆州牧刘表的部将,任江夏都督。
    苏飞与甘宁交好,但是数次向黄祖推荐都失败。甘宁决定投效孙权时助其逃离。后来甘宁率吴军攻破江夏,苏飞兵败被俘。孙权打算将苏飞处斩,但是因为甘宁用性命担保而赦免了苏飞。降吴后官至军都督。", + + zhangchangpu:"钟会的母亲。《母夫人张氏传》:夫人张氏,字昌蒲,太原兹氏人,太傅定陵成侯之命妇也。", + xugong:"许贡是东汉末官吏。先后任吴郡都尉、太守,欲送密信给曹操,要曹操注意孙策,却被孙策发现而被杀。许贡生前招揽了一些门客,当中有三人不忘故主,千方百计想要手刃仇人。建安五年(公元200年),广陵太守陈登派人秘密联系孙策治下的山贼余党,企图颠覆孙策在江东的统治。孙策决定讨伐陈登,行军到丹徒时,许贡门客终于找到了机会。因为孙策有单骑出猎,在野外思考的习惯,三门客趁孙策轻装外出打猎时,放冷箭射中孙策面颊。这些门客后来在与孙策的搏斗中,被赶到的侍卫杀死。孙策此后因为伤口感染,并且俊美的容貌被毁,终于不治身亡,去世时年仅26岁。", + mangyachang:"南蛮王孟获的部将,使一口截头大刀,骑一匹黄骠马。率军与蜀军交战,战败王平。后被平北将军马岱斩杀。只出现在《三国演义》里,正史中无此人。", + xushao:'许劭(shào)(150年—195年),字子将。汝南平舆(今河南平舆县射桥镇)人。东汉末年著名人物评论家。据说他每月都要对当时人物进行一次品评,人称为“月旦评”。曾任汝南郡功曹,后南渡投靠扬州刺史刘繇。刘繇被孙策击败后,许劭随其逃往豫章郡,并在豫章去世。', + puyuan:'蒲元是三国时蜀汉杰出的工匠。为诸葛亮造刀三千口,并且制作木牛流马。后来姜维为他写过两部传记《蒲元传》《蒲元别传》。', + zhangwen:'张温(193年—230年),字惠恕,吴郡吴县(今江苏苏州)人。少修节操,容貌奇伟。孙权召拜议郎、选曹尚书,徙太子太傅。黄武三年(224),以辅义中郎将身份出使蜀汉,孙权原先害怕诸葛亮会有意留难张温,但张温不担心。在呈上蜀汉朝廷的文书刻意称颂蜀汉,以表明和解的诚意,重建两国关系。他在蜀汉表现出色,得蜀汉朝廷重视。回东吴后不久,被调进豫章的军队,事业上再无进展。孙权一方面介怀他出使蜀汉时称颂蜀汉,又嫌他声名太盛,恐怕张温不会尽忠地由他任用。当时正好碰上暨艳事件,暨艳是张温引荐的臣子,但他滥用职权,升迁评定等只看自己喜恶。事件被揭发后暨艳及同党徐彪都自杀。孙权见此,于是以张温与暨艳、徐彪等人多有来往而下罪张温,后更将张温发还到家乡吴郡。将军骆统曾上书为张温辩解,但孙权不理会。六年后,张温病逝。', + lisu:'李肃(?-192年),五原(治今内蒙古包头西北)人。永汉三年四月,司徒王允、尚书仆射士孙瑞、卓将吕布共谋诛卓。是时,天子有疾新愈,大会未央殿。布使同郡骑都尉肃等、将亲兵十馀人,伪著卫士服守掖门。布怀诏书。卓至,肃等格卓。卓惊呼布所在。布曰“有诏”,遂杀卓,夷三族。后卓女婿中郎将牛辅典兵别屯陕,分遣校尉李傕、郭汜、张济略陈留、颍川诸县。卓死,吕布使李肃至陕,欲以诏命诛辅。辅等逆与肃战,肃败走弘农,布诛肃。', + xinpi:'辛毗(生卒年不详),字佐治,颍川阳翟人。三国时期曹魏大臣。原居陇西(郡治在今甘肃临洮县),东汉光武帝建武年间,其先人东迁。当初,辛毗跟随其兄事袁绍。曹操任司空时,征召辛毗,他不受命。官渡战后,辛毗事袁绍的儿子袁谭。公元204年,曹操攻下邺城,上表推荐辛毗任议郎,后为丞相长史。公元220年,曹丕即皇帝位,以辛毗为侍中,赐爵关内侯,后赐广平亭侯。魏明帝即位,封辛毗颍乡侯,食邑三百户,后为卫尉。公元234年,诸葛亮屯兵渭南,司马懿上表魏明帝。魏明帝任辛毗为大将军军师,加使持节号。诸葛亮病逝后,辛毗返回,仍任卫尉。不久,逝世,谥肃侯。', + zhangchangpu:"钟会的母亲。《母夫人张氏传》:夫人张氏,字昌蒲,太原兹氏人,太傅定陵成侯之命妇也。", + xugong:"许贡是东汉末官吏。先后任吴郡都尉、太守,欲送密信给曹操,要曹操注意孙策,却被孙策发现而被杀。许贡生前招揽了一些门客,当中有三人不忘故主,千方百计想要手刃仇人。建安五年(公元200年),广陵太守陈登派人秘密联系孙策治下的山贼余党,企图颠覆孙策在江东的统治。孙策决定讨伐陈登,行军到丹徒时,许贡门客终于找到了机会。因为孙策有单骑出猎,在野外思考的习惯,三门客趁孙策轻装外出打猎时,放冷箭射中孙策面颊。这些门客后来在与孙策的搏斗中,被赶到的侍卫杀死。孙策此后因为伤口感染,并且俊美的容貌被毁,终于不治身亡,去世时年仅26岁。", + mangyachang:"南蛮王孟获的部将,使一口截头大刀,骑一匹黄骠马。率军与蜀军交战,战败王平。后被平北将军马岱斩杀。只出现在《三国演义》里,正史中无此人。", + + guanlu:"管辂(209年-256年),字公明,平原(今山东德州平原县)人。三国时期曹魏术士。年八九岁,便喜仰观星辰。成人后,精通《周易》,善于卜筮、相术,习鸟语,相传每言辄中,出神入化。体性宽大,常以德报怨。正元初,为少府丞。北宋时被追封为平原子。管辂是历史上著名的术士,被后世奉为卜卦观相的祖师。", + gexuan:"葛玄(164年-244年),汉族,吴丹阳郡句容县都乡吉阳里人(今句容市),祖籍山东琅琊,三国著名高道,道教灵宝派祖师。字孝先,号仙翁,被尊称为“葛天师”。道教尊为葛仙翁,又称太极仙翁,与张道陵、许逊、萨守坚共为四大天师。为汉下邳僮侯葛艾后裔,祖葛矩,安平太守,黄门郎;从祖葛弥,豫章第五郡太守。父葛焉,字德儒,州主簿,山阴令,散骑常侍,大尚书。随左慈学道,得《太清丹经》、《黄帝九鼎神丹经》、《金液丹经》等道经。曾采药海山,吴嘉禾二年(233年),在閤皂山修道建庵,筑坛立炉,修炼九转金丹。喜好遨游山川,去过括苍山、南岳山、罗浮山。编撰《灵宝经诰》,精研上清、灵宝等道家真经,并嘱弟子世世箓传。", + wulan:'吴兰(?~218年),青州(今山东潍坊市)人。东汉末年将领。初为益州牧刘璋部将,后来归降刘备。汉中之战中,与马超、张飞各领一军,驻扎于下辩。建安二十三年,为曹操将领曹洪、张郃所败,退回汉中。途中,为阴平氐族首领强端所杀。', + leitong:'雷铜(?-218年),阴平(今甘肃文县)人,氐族,东汉末年益州名将。本属益州牧刘璋麾下。刘备攻取益州后,归刘备麾下。参加汉中之战,为魏将张郃所杀。', + xingdaorong:'邢道荣是《三国演义》中虚构的人物,为零陵太守刘度手下武将,被评价有万夫不当之勇,于《三国演义》第五十二回登场,被赵云刺死。', + huaman:'花鬘,古典戏曲《龙凤巾》(一名《化外奇缘》)中的人物,身份为三国时期南蛮王孟获与祝融夫人的女儿,关索的夫人之一。在关于关三小姐·关银屏的民间传说中,其名字为“花中秀”,与关索其他几位夫人鲍三娘、王桃、王悦都被关索之姐关银屏编入自己的女兵营中。花鬘在《三国志》,《三国演义》均未有提及,只是戏曲中的虚构人物。其形象并非一般君主家中闺秀,而是与其母祝融相似,是一个可以披甲上阵,善于刀枪作战的女武将。戏曲中在诸葛亮平定南蛮时,花鬘曾与关索作战,失败被俘,两人互生爱意,南蛮王孟获降服后二人成婚。近些年,花鬘接连在各类三国题材的游戏中登场,更广被人知晓。', + wangshuang:'王双(?-228年),三国时期曹魏将领。蜀汉建兴六年(228年)冬,诸葛亮出散关,攻陈仓,后粮尽而退。王双率领骑兵追击蜀军,但在与蜀军的交战中被击败,王双也被蜀军所斩。在《三国演义》中,王双字子全,是陇西郡狄道县(今甘肃临洮县)人,有万夫不当之勇。在诸葛亮北伐期间,被魏延所斩。', + wenyang:"文俶(238年—291年),一作文淑,字次骞,小名阿鸯,世称文鸯,谯郡(今安徽亳州市)人。魏末晋初名将,曹魏扬州刺史文钦之子。骁勇善战,依附大将军曹爽,效忠于王室。司马师废黜皇帝曹芳后,随父联合毌丘俭于淮南起兵勤王。兵败之后,向南投奔吴国。诸葛诞发动淮南叛乱,奉命率军驰援。双方发生内讧,父亲为诸葛诞所害,遂降于司马昭,封关内侯。西晋建立后,任平虏护军。咸宁三年(277年),拜平西将军、都督凉秦雍州三州军事,大破鲜卑首领秃发树机能,名震天下,迁使持节、护东夷校尉、监辽东军事。八王之乱中,为诸葛诞外孙、东安王司马繇所诬杀,惨遭灭族,时年五十四岁。", + liuzan:'字正明,会稽长山人人,曾任左护军,有两子:留略、留平。少为会稽郡吏,曾参与镇压黄巾起义,后被东吴大将凌统所引用,任屯骑校尉。吴五凤二年(公元255年)留赞任左护军,随孙峻征淮南,因病撤军,被魏将蒋班围困于道,力战而死,时年73岁。', + }, + characterTitle:{ + wulan:'#b对决限定武将', + leitong:'#b对决限定武将', + chunyuqiong:'#b对决限定武将', + sp_xuyou:'#g4v4限定武将', + }, + perfectPair:{}, + characterFilter:{ + chunyuqiong:function(mode){ + return mode!='identity'&&mode!='guozhan'; + }, + leitong:function(mode){ + return mode!='identity'&&mode!='guozhan'; + }, + wulan:function(mode){ + return mode!='identity'&&mode!='guozhan'; + }, + sp_xuyou:function(mode){ + return mode=='versus'&&['guandu','4v4','four'].contains(_status.mode); + }, + }, + translate:{ + lijue:"李傕", + zhangji:"张济", + fanchou:"樊稠", + guosi:"郭汜", + lvkai:"吕凯", + zhanggong:"张恭", + weiwenzhugezhi:"卫温诸葛直", + xurong:"徐荣", + zhangqiying:"张琪瑛", + sp_liuqi:'刘琦', + xf_tangzi:"唐咨", + xf_huangquan:"黄权", + xf_sufei:"苏飞", + "xinfu_langxi":"狼袭", + "xinfu_langxi_info":"准备阶段,你可以对一名体力小于或等于你的其他角色造成0~2点随机伤害。", + "xinfu_yisuan":"亦算", + "xinfu_yisuan_info":"每回合限一次。当你于出牌阶段使用的锦囊牌进入弃牌堆时,你可以减1点体力上限,从弃牌堆中获得之。", + "xinfu_xingluan":"兴乱", + "xinfu_xingluan_info":"每回合限一次。当你于出牌阶段使用的仅指定一个目标的牌结算完成后,你可以从牌堆中随机获得一张点数为6的牌。", + "xinfu_lveming":"掠命", + "xinfu_lveming_info":"出牌阶段限一次,你可以选择一名装备区装备比你少的角色,令其选择一个点数,然后你进行判定:
    若点数相同,你对其造成2点伤害;
    若点数不同,则你随机获得其区域内的一张牌。", + "xinfu_tunjun":"屯军", + "xinfu_tunjun_info":"限定技,出牌阶段,你可以选择一名角色,令其随机使用牌堆中的X张装备牌。(X为你发动过“掠命”的次数)", + "xinfu_tanbei":"贪狈", + "xinfu_tanbei_info":"出牌阶段限一次,你可以令一名其他角色选择一项:
    1.令你随机获得其区域内的一张牌,本回合内你不能对其使用牌。
    2.令你此回合内对其使用牌没有次数与距离限制。", + "xinfu_sidao":"伺盗", + xinfu_sidaox:'伺盗', + "xinfu_sidao_info":"出牌阶段限一次,当你对一名其他角色连续使用两张牌后,你可以将一张手牌当做【顺手牵羊】对其使用。", + "tanbei_effect1":"贪狈", + "tanbei_effect1_info":"", + "tanbei_effect2":"贪狈", + "tanbei_effect2_info":"", + + "xinfu_tunan":"图南", + "xinfu_tunan_info":"出牌阶段限一次,你可以展示牌堆顶的一张牌并选择一名其他角色,然后该角色选择一项:使用此牌(无距离限制);或将此牌当普通【杀】使用。", + "xinfu_bijing":"闭境", + "xinfu_bijing_info":"结束阶段,你可以展示一张手牌并标记为“闭境”。若你于回合外失去“闭境”牌,则当前回合角色的弃牌阶段开始时,其需弃置两张牌。你的准备阶段,弃置手牌中的“闭境”牌。", + "xinfu_zhenxing":"镇行", + "xinfu_zhenxing_info":"结束阶段开始时或当你受到伤害后,你可以观看牌堆顶的至多三张牌,然后你获得其中与其余牌花色均不相同的一张牌。", + "xinfu_qianxin":"遣信", + "xinfu_qianxin_info":"出牌阶段限一次,若牌堆中没有“信”,你可以选择一名角色并将任意张手牌放置于牌堆中X倍数的位置(X为存活人数),称为“信”。该角色的弃牌阶段开始时,若其手牌区内有于本回合内获得过的“信”,其选择一项:令你将手牌摸至四张;本回合手牌上限-2。", + "qianxin_effect":"遣信", + "qianxin_effect_info":"", + "xinfu_qianxin2":"遣信", + "xinfu_qianxin2_info":"", + + "xinfu_fuhai":"浮海", + "xinfu_fuhai_info":"出牌阶段每个方向限一次,你可以展示一张手牌并选择上家或下家。该角色展示一张手牌,若你展示的牌点数大于等于其展示的牌点数,你弃置你展示的牌,然后继续对其上家或下家重复此流程;若你展示的牌点数小于该展示角色牌的点数,则该角色弃置其展示的牌,然后你与其各摸X张牌(X为你此回合内发动此技能选择的角色数),且你此阶段内不能再发动〖浮海〗。", + "fuhai_clear":"浮海", + "fuhai_clear_info":"", + + "xz_xunxun":"恂恂", + "xz_xunxun_info":"摸牌阶段,你可以观看牌堆顶的四张牌,然后将其中的两张牌置于牌堆顶,并将其余的牌以任意顺序置于牌堆底。", + "xinfu_xingzhao":"兴棹", + "xinfu_xingzhao_info":"锁定技,若场上的已受伤角色合计为:1个以上,你视为拥有技能〖恂恂〗;2个以上,当你使用装备牌时,摸一张牌;3个以上,弃牌阶段开始时,你跳过此阶段。", + "xinfu_xingzhao2":"兴棹", + "xinfu_xingzhao2_info":"", + "xinfu_dianhu":"点虎", + "xinfu_dianhu_info":"锁定技,游戏开始时,你选择一名其他角色。当其受到来自你的伤害后或回复体力后,你摸一张牌。", + "xinfu_dianhu2":"点虎", + "xinfu_dianhu2_info":"", + "xinfu_jianji":"谏计", + "xinfu_jianji_info":"出牌阶段限一次,你可以令一名其他角色摸一张牌。然后该角色可以使用此牌。", + "xinfu_lianpian":"联翩", + "xinfu_lianpian_info":"出牌阶段限三次。当你对一名角色连续使用牌时,你可以摸一张牌,然后可以将一张牌交给该角色。", + spwenji:'问计', + spwenji_info:'出牌阶段开始时,你可以令一名其他角色交给你一张牌。你于本回合内使用与该牌名称相同的牌时不能被其他角色响应。', + sptunjiang:'屯江', + sptunjiang_info:'结束阶段,若你未跳过本回合的出牌阶段,且你于本回合出牌阶段内未使用牌指定过其他角色为目标,则你可以摸X张牌(X为全场势力数)。', + zongkui:'纵傀', + zongkui_mark:'纵傀', + zongkui_mark_bg:'傀', + zongkui_info:'回合开始时,你可以指定一名未拥有“傀”标记的其他角色,令其获得一枚“傀”标记。每轮游戏开始时,你可以指定一名体力值最少且没有“傀”标记的其他角色,令其获得一枚“傀”标记。', + guju:'骨疽', + guju_info:'锁定技,拥有“傀”标记的角色受到伤害后,你摸一张牌。', + baijia:'拜假', + baijia_info:'觉醒技,准备阶段,若你因〖骨疽〗获得的牌不少于7张,则你增加1点体力上限,回复1点体力,然后令所有未拥有“傀”标记的其他角色获得“傀”标记,最后失去技能〖骨疽〗,并获得技能〖蚕食〗。', + bmcanshi:'蚕食', + bmcanshi_info:'一名角色使用基本牌或普通锦囊牌指定你为唯一目标时,若其有“傀”标记,你可以取消之,然后其失去“傀”标记;你使用牌仅指定一名角色为目标时,你可以额外指定任意名带有“傀”标记的角色为目标(无距离限制),然后这些角色失去“傀”标记。', + + xinpi:'辛毗', + lisu:'李肃', + zhangwen:'张温', + puyuan:'蒲元', + xushao:'许邵', + mangyachang:"忙牙长", + xugong:"许贡", + zhangchangpu:"张昌蒲", + guanlu:'管辂', + gexuan:'葛玄', + + tuiyan:'推演', + tuiyan_info:'出牌阶段开始时,你可以观看牌堆顶的两张牌。', + busuan:'卜算', + busuan_info:'出牌阶段限一次,你可以选择一名其他角色,然后选择至多两张不同的卡牌名称(限基本牌或锦囊牌)。该角色下次摸牌阶段摸牌时,改为从牌堆或弃牌堆中获得你选择的牌。', + busuan_angelbeats:'卜算', + mingjie:'命戒', + mingjie_info:'结束阶段,你可以摸一张牌,若此牌为红色,你可以重复此流程直到摸到黑色牌或摸到第三张牌。当你以此法摸到黑色牌时,你失去1点体力。', + gxlianhua:'炼化', + gxlianhua_info:'你的回合外,每当有其他角色受到伤害后,你获得一个“丹血”标记(该角色与你阵营一致时为红色,不一致为黑色,此颜色对所有玩家均不可见)直到你的准备阶段开始。准备阶段,根据你获得的“丹血”标记的数量和颜色,你从牌堆/弃牌堆中获得相应的牌以及相应技能直到回合结束。3枚或以下:〖英姿〗和【桃】;超过3枚且红色“丹血”较多:〖观星〗和【无中生有】;超过3枚且黑色“丹血”较多:〖直言〗和【顺手牵羊】;超过3枚且红色和黑色一样多:【杀】、【决斗】和〖攻心〗。', + zhafu:'札符', + zhafu_info:' 限定技,出牌阶段,你可以选择一名其他角色,令其获得一枚「札」。有「札」的角色弃牌阶段开始时,若其手牌数大于1,其移去「札」并选择保留一张手牌,然后将其余的手牌交给你。', + pingjian:'评荐', + pingjian_info:'结束阶段开始时/当你受到伤害后/出牌阶段限一次,你可以令系统随机从剩余武将牌堆中检索出三张拥有发动时机为结束阶段开始时/当你受到伤害后/出牌阶段的技能的武将牌。然后你可以选择尝试发动其中一个技能或摸一张牌。每个技能每局只能选择一次。', + pingjian_use:'评荐', + pytianjiang:'天匠', + pytianjiang_info:'游戏开始时,你随机获得两张不同副类别的装备牌,并置入你的装备区。出牌阶段,你可以将装备区内的牌移动到其他角色的装备区(可替换原装备)。', + pytianjiang_move:'天匠', + pyzhuren:'铸刃', + pyzhuren_info:'出牌阶段限一次,你可以弃置一张手牌。根据此牌的花色点数,你有一定概率打造成功并获得一张武器牌(若打造失败或武器已有则改为摸一张【杀】,花色决定武器名称,点数决定成功率)。此武器牌进入弃牌堆时,将其移出游戏。', + pyzhuren_destroy:'铸刃', + pyzhuren_heart:'红缎枪', + pyzhuren_heart_info:'每回合限一次,当你使用【杀】造成伤害后,你可以进行判定,若结果为红色,你回复1点体力。', + pyzhuren_diamond:'烈淬刀', + pyzhuren_diamond_info:'当你使用【杀】对目标角色造成伤害时,你可以弃置一张【杀】或武器牌,令此伤害+1。', + pyzhuren_club:'水波剑', + pyzhuren_club_info:'当你于出牌阶段使用第一张牌时,若此牌是普通锦囊牌或【杀】,则你可以为此牌增加一个目标。', + pyzhuren_spade:'混毒弯匕', + pyzhuren_spade_info:'当你使用的黑色【杀】指定单一目标后,你可令该角色获得此【杀】,然后其失去1点体力。', + pyzhuren_shandian:'天雷刃', + pyzhuren_shandian_info:'当你使用【杀】仅指定一名角色为目标后,可令其进行一次判定,若结果为黑桃2~黑桃9,该角色受到3点雷电伤害,然后此【杀】对其无效。', + + songshu:'颂蜀', + songshu_info:'出牌阶段,你可以和其他角色拼点。若你没赢,其摸两张牌,且你本阶段内不能再发动〖颂蜀〗', + sibian:'思辩', + sibian_info:'摸牌阶段,你可以放弃摸牌,改为亮出牌堆顶的四张牌,然后获得其中所有点数最大与点数最小的牌。若获得的牌是两张且点数之差小于存活人数,则你可以将剩余的牌交给手牌数最少的角色。', + lslixun:'利熏', + lslixun_fate:'利熏', + lslixun_info:'锁定技,当你受到伤害时,你防止此伤害,然后获得等同于伤害值的“珠”标记。出牌阶段开始时,你进行判定,若结果点数小于“珠”的数量,你弃置等同于“珠”数量的手牌(若弃牌的牌数不够,则失去剩余数量的体力值)。', + lskuizhu:'馈珠', + lskuizhu_info:'出牌阶段结束时,你可以选择体力值为全场最多的一名其他角色,将手牌摸至与该角色相同(最多摸至五张),然后该角色观看你的手牌,弃置任意张手牌并从观看的牌中获得等量的牌。若其获得的牌大于一张,则你选择一项:移去一个“珠”;或令其对其攻击范围内的一名角色造成1点伤害。', + xpchijie:'持节', + xpchijie_info:'每回合限一次。①当你受到其他角色使用的牌造成的伤害时,你可以令此牌对所有目标无效。②其他角色使用的牌结算完成时,若你是此牌的目标之一且此牌未造成过伤害,则你可以获得此牌对应的所有实体牌。', + xpchijie2:'持节', + yinju:'引裾', + yinju_info:'限定技,出牌阶段,你可以选择一名其他角色。若如此做,当你于此阶段内使用装备牌指定目标或使用延时锦囊牌指定除其外的其他角色为目标或使用其他牌指定其为目标时,你摸一张牌;当你即将对其造成伤害时,防止此伤害,然后其回复等量的体力。', + yinju2:'引裾', + + spjiedao:"截刀", + "spjiedao_info":"当你每回合第一次造成伤害时,你可令此伤害至多+X(X为你损失的体力值)。然后若受到此伤害的角色没有死亡,你弃置等同于此伤害加值的牌。", + biaozhao:"表召", + "biaozhao_info":"结束阶段,你可以将一张牌置于武将牌上,称为“表”。当有一张与“表”花色点数均相同的牌进入弃牌堆时,你将“表”置入弃牌堆并失去1点体力,若此牌是其他角色因弃置而进入弃牌堆的,则改为该角色获得“表”。准备阶段,若你的武将牌上有“表”,则你将“表”置入弃牌堆。然后你选择一名角色,该角色回复1点体力且将手牌摸至与全场手牌数最多的人相同(最多摸五张)。", + "biaozhao2":"表召", + "biaozhao2_info":"", + "biaozhao3":"表召", + "biaozhao3_info":"", + yechou:"业仇", + "yechou_info":"当你死亡时,你可以选择一名已损失体力值大于1的角色。直到其下个回合开始前,每个回合结束时,该角色失去1点体力。", + "yechou2":"业仇", + "yechou2_info":"", + yanjiao:"严教", + "yanjiao_info":"出牌阶段限一次,你可以选择一名其他角色并从牌堆顶亮出四张牌。该角色将这些牌分成点数之和相等的两组,你与其各获得其中一组,然后将剩余未分组的牌置入弃牌堆。若未分组的牌超过一张,则你本回合手牌上限-1。", + "yanjiao2":"严教", + "yanjiao2_info":"", + xingshen:"省身", + "xingshen_info":"当你受到伤害后,你可以摸一张牌且下一次发动〖严教〗亮出的牌数+1。若你的手牌数为全场最少,则改为摸两张牌;若你的体力值为全场最少,则〖严教〗亮出的牌数改为+2(加值总数不能超过4)。", + + sp_zhanghe:'SP张郃', + yuanlve:'远略', + yuanlve_info:'出牌阶段限一次,你可以将一张非装备牌交给一名角色,然后该角色可以使用该牌并令你摸一张牌。', + xunchen:'荀谌', + fenglve:'锋略', + fenglve2:'锋略', + fenglve_info:'出牌阶段开始时,你可以与一名角色拼点,若你赢,该角色将其区域内的各一张牌交给你;若你没赢,你交给其一张牌。拼点结算后你可以令其获得你拼点的牌。', + mouzhi:'谋识', + mouzhi2:'谋识', + mouzhi_info:'出牌阶段限一次,你可以将一张手牌交给一名角色,若如此做,当其于其下回合的出牌阶段内对一名角色造成伤害后,若是此阶段其第一次对该角色造成伤害,你摸一张牌。', + sp_shenpei:'SP审配', + gangzhi:'刚直', + gangzhi_info:'锁定技,当你即将受到或造成伤害时,你防止此伤害,改为受到伤害的角色失去等量的体力。', + beizhan:'备战', + beizhan2:'备战', + beizhan_info:'结束阶段,你可以令一名角色将手牌摸至体力上限(至多为5)。其下个回合开始时,若其手牌数为全场最多,则其此回合内使用的牌不能指定其他角色为目标。', + gaolan:'高览', + xiying:'袭营', + xiying2:'袭营', + xiying_info:'出牌阶段开始时,你可以弃置一张非基本手牌,然后令所有其他角色依次选择一项:弃置一张牌,或本回合内不能使用或打出手牌。', + lvkuanglvxiang:'吕旷吕翔', + liehou:'列侯', + liehou_info:'出牌阶段限一次,你可以令一名攻击范围内的角色交给你一张手牌,然后你将一张手牌交给攻击范围内的另一名角色。', + qigong:'齐攻', + qigong_info:'当你使用的【杀】被【闪】抵消之后,你可以再对目标角色使用一张【杀】(不可被响应)。', + chunyuqiong:'淳于琼', + sushou:'宿守', + sushou_info:'弃牌阶段开始时,你可以摸X+1张牌(X为“粮”数),然后可以交给任意名友方角色各一张牌。', + cangchu:'仓储', + cangchu_info:'锁定技,游戏开始时,你获得3枚“粮”标记,当你受到1点火焰伤害后,你失去一枚“粮”标记。', + liangying:'粮营', + liangying_info:'锁定技,若你有“粮”标记,则友方角色摸牌阶段摸牌数+1;当你失去所有“粮”标记后,你减1点体力上限,然后令敌方角色各摸两张牌。', + sp_xuyou:'SP许攸', + spshicai:'恃才', + spshicai2:'恃才', + spshicai_info:'出牌阶段,牌堆顶的一张牌对你可见。你可以弃置一张牌,然后获得牌堆顶的一张牌,且不能再发动〖恃才〗直到此牌离开你的手牌区。', + spfushi:'附势', + spfushi_info:'锁定技,若己方存活角色数:大于敌方,你视为拥有〖择主〗;小于敌方,你视为拥有〖逞功〗。', + zezhu:'择主', + zezhu_info:'出牌阶段限一次,你可以获得双方主帅的各一张牌(若无牌则改为你摸一张牌),然后交给双方主帅各一张牌。', + chenggong:'逞功', + chenggong_info:'当有角色使用牌指定目标后,若此牌对目标数大于1,则你可令使用者摸一张牌。', + leitong:'雷铜', + kuiji:'溃击', + kuiji_info:'出牌阶段限一次,你可以将一张黑色基本牌当作【兵粮寸断】置于你的判定区,然后摸一张牌。若如此做,你可以对体力值最多的一名对手造成2点伤害。对手因此进入濒死状态时,你或队友体力值最少的一方回复1点体力。', + wulan:'吴兰', + wlcuorui:'挫锐', + wlcuorui_info:'出牌阶段开始时,你可以弃置你或队友区域里的一张牌。若如此做,你选择一项:1.弃置对手装备区里至多两张与此牌颜色相同的牌;2.展示对手的共计两张手牌,然后获得其中与此牌颜色相同的牌。', + re_panfeng:'潘凤', + xinkuangfu:'狂斧', + xinkuangfu_info:'出牌阶段限一次,你可选择:1,弃置装备区里的一张牌,你使用无对应实体牌的普【杀】。若此【杀】造成伤害,你摸两张牌。2,弃置一名其他角色装备区里的一张牌,你使用无对应实体牌的普【杀】。若此【杀】未造成伤害,你弃置两张牌。', + xingdaorong:'邢道荣', + xuxie:'虚猲', + xuxie_info:'出牌阶段开始时,你可以减1点体力上限并选择所有与你距离为1的角色,弃置这些角色的各一张牌或令这些角色各摸一张牌。出牌阶段结束时,若你的体力上限为全场最少,则你加1点体力上限。', + huaman:'花鬘', + hmmanyi:'蛮裔', + hmmanyi_info:'锁定技,【南蛮入侵】对你无效。', + mansi:'蛮嗣', + mansi_info:'一名角色使用的【南蛮入侵】结算完成后,你可以摸X张牌(X为受到过此牌伤害的角色数)。', + souying:'薮影', + souying_info:'每回合限一次,当你对一名男性角色造成伤害(或一名男性角色对你造成伤害时),若此伤害是你对其(或其对你)本回合内造成的第二次伤害,你可以弃置一张手牌令此伤害+1或(-1)。', + zhanyuan:'战缘', + zhanyuan_info:'觉醒技,准备阶段,若你已因蛮嗣累计获得超过7张牌,你加一点体力上限,并可以选择一名男性角色,你与其获得技能〖系力〗,然后你失去技能〖蛮嗣〗', + hmxili:'系力', + hmxili_info:'你的回合外,当其他拥有〖系力〗技能的角色在其回合内使用【杀】指定目标后,你可以弃置一张手牌,令此【杀】伤害+1。', + wangshuang:'王双', + spzhuilie:'追猎', + spzhuilie2:'追猎', + spzhuilie_info:'锁定技,你使用【杀】无距离限制;当你使用【杀】指定目标后,若其不在你的攻击范围内,此【杀】不计入使用次数限制且你判定。若判定结果为武器牌或坐骑牌,此【杀】的伤害基数改为X(X为其体力值)。否则你失去1点体力。', + wenyang:'文鸯', + xinlvli:'膂力', + xinlvli_info:'每回合限一次,当你造成伤害后,你可选择:1,若你的体力值大于你的手牌数,你摸X张牌;2,若你的手牌数大于你的体力值且你已受伤,你回复X点体力(X为你的手牌数与体力值之差)。', + lvli:'膂力', + lvli4:'膂力', + lvli5:'膂力', + lvli_info:'每名角色的回合限一次,你可以声明一个基本牌或普通锦囊牌的牌名,有随机概率视为使用之(装备区里的牌数越多,成功概率越大)', + choujue:'仇决', + choujue_info:'觉醒技,一名角色的回合结束时,若你的手牌数和体力值相差3或更多,你减1点体力上限并获得技能〖背水〗,然后将〖膂力〗改为“在自己的回合时每回合限两次”。', + beishui:'背水', + beishui_info:'觉醒技,准备阶段,若你的手牌数或体力值小于2,你减1点体力上限并获得技能〖清剿〗,然后将〖膂力〗改为受到伤害后也可以发动。', + qingjiao:'清剿', + qingjiao_info:'出牌阶段开始时,你可以弃置所有手牌,然后从牌堆或弃牌堆中随机获得八张牌名各不相同且副类别不同的牌。若如此做,结束阶段,你弃置所有牌。', + liuzan:'留赞', + refenyin:'奋音', + refenyin_info:'锁定技,你的回合内,当一张牌进入弃牌堆后,若本回合内没有过与此牌花色相同的卡牌进入过弃牌堆,则你摸一张牌。', + liji:'力激', + liji_info:'出牌阶段限X次,你可以弃置一张牌并对一名其他角色造成1点伤害。(X为本回合内进入过弃牌堆的卡牌数除以8,若场上人数小于5则改为除以4,向下取整)', + re_sunluyu:'孙鲁育', + remeibu:'魅步', + remeibu_info:'其他角色的出牌阶段开始时,若你在其攻击范围内,你可以弃置一张牌,令该角色于本阶段内拥有〖止息〗。', + rezhixi:'止息', + rezhixi_info:'锁定技,当你使用【杀】或普通锦囊牌时,你弃置一张手牌。', + remumu:'穆穆', + remumu_info:'出牌阶段开始时,你可以选择一项:1.弃置一名其他角色装备区里的一张牌,然后你本回合可使用【杀】的次数+1;2.获得一名角色装备区里的一张防具牌,然后你本回合可使用【杀】的次数-1。', + + sp_whlw:"文和乱武", + sp_zlzy:"逐鹿中原", + sp_longzhou:"同舟共济", + sp_zizouqi:"自走棋", + sp_sbfm:'上兵伐谋', + sp_shengun:'三国奇人传', + sp_baigei:'无双上将', + sp_guandu:'官渡之战', + sp_decade:'其他新服武将', + }, + }; +}); diff --git a/character/yijiang.js b/character/yijiang.js index 47a0d5bed..b2acfcdd4 100755 --- a/character/yijiang.js +++ b/character/yijiang.js @@ -8179,9 +8179,20 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, check:function(button){ var player=_status.event.player; - if(game.hasPlayer(function(current){ - return current[button.link?'isMaxHp':'isMaxHandcard']()&&get.effect(current,'sanyao',player,player)>0 - })) return 1+button.link; + if(game.hasPlayer([ + function(target){ + var num=target.countCards('h'); + return !game.hasPlayer(function(current){ + return current!=target&¤t.countCards('h')>num; + })&&get.effect(target,'sanyao',player,player)>0; + }, + function(target){ + var num=target.hp; + return !game.hasPlayer(function(current){ + return current!=target&¤t.hp>num; + })&&get.effect(target,'sanyao',player,player)>0; + }, + ][button.link])) return 1+button.link; return 0; }, backup:function(links){ @@ -8189,17 +8200,15 @@ game.import('character',function(lib,game,ui,get,ai,_status){ audio:'sanyao', filterTarget:[ function(card,player,target){ - var num=target.countCards('h',function(card){ - return !ui.selected.cards.contains(card); - }); + var num=target.countCards('h'); return !game.hasPlayer(function(current){ - return current!=target&¤t.countCards('h',function(card){ - return !ui.selected.cards.contains(card); - })>num; + return current!=target&¤t.countCards('h')>num; }); }, function(card,player,target){ - return target.isMaxHp(); + return !game.hasPlayer(function(current){ + return current!=target&¤t.hp>target.hp; + }); } ][links[0]], index:links[0], @@ -8960,7 +8969,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ event.count--; player.draw(); "step 2" - if(player.countCards('he')){ + if(player.countCards('h')){ player.chooseCard('将一张手牌置于武将牌上作为“权”',true); } else{ @@ -12301,7 +12310,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ qianxi_info:'准备阶段,你可以摸一张牌,并弃置一张牌,然后令一名距离为1的角色不能使用或打出与你弃置的牌颜色相同的手牌直到回合结束。', zhiman_info:'当你对一名其他角色造成伤害时,你可以防止此伤害,然后获得其装备区或判定区的一张牌。', sanyao_info:'出牌阶段限一次,你可以弃置一张牌并指定一名体力值最多(或之一)的角色,你对其造成1点伤害。', - olsanyao_info:'出牌阶段每项各限一次,你可以弃置一张牌并指定一名体力值或手牌数最多(或之一)的角色,并对其造成1点伤害。', + olsanyao_info:'出牌阶段每项各限一次,你可以弃置一张牌并指定一名体力值或手牌数最多(或之一)的其他角色,并对其造成1点伤害。', rezhiman_info:'当你对一名其他角色造成伤害时,你可以防止此伤害,然后获得其区域内的一张牌。', resanyao_info:'出牌阶段限一次,你可以弃置任意张牌并指定等量除你外体力值最多(或之一)的其他角色。你对这些角色依次造成1点伤害。', paiyi_info:'出牌阶段限一次,你可以移去一张“权”并选择一名角色,令其摸两张牌,然后若其手牌数大于你,你对其造成1伤害。', diff --git a/game/asset.js b/game/asset.js index 710076990..1b47f1ec2 100644 --- a/game/asset.js +++ b/game/asset.js @@ -1,5 +1,5 @@ window.noname_asset_list=[ - 'v1.9.101', + 'v1.9.102', 'audio/background/aozhan_chaoming.mp3', 'audio/background/aozhan_online.mp3', 'audio/background/aozhan_rewrite.mp3', @@ -584,6 +584,10 @@ window.noname_asset_list=[ 'audio/die/yj_xuhuang.mp3', 'audio/die/yj_zhanghe.mp3', 'audio/die/yj_zhangliao.mp3', + 'audio/die/key_shiki.mp3', + 'audio/die/leitong.mp3', + 'audio/die/sp_sufei.mp3', + 'audio/die/wulan.mp3', 'audio/skill/anguo1.mp3', 'audio/skill/anguo2.mp3', @@ -2588,6 +2592,18 @@ window.noname_asset_list=[ 'audio/skill/xhzhiyan2.mp3', 'audio/skill/zhilve1.mp3', 'audio/skill/zhilve2.mp3', + 'audio/die/gaoyuan1.mp3', + 'audio/die/gaoyuan2.mp3', + 'audio/die/kuiji1.mp3', + 'audio/die/kuiji2.mp3', + 'audio/die/shiki_omusubi1.mp3', + 'audio/die/shiki_omusubi2.mp3', + 'audio/die/wlcuorui1.mp3', + 'audio/die/wlcuorui2.mp3', + 'audio/die/yuri_xingdong1.mp3', + 'audio/die/yuri_xingdong2.mp3', + 'audio/die/zhengjian1.mp3', + 'audio/die/zhengjian2.mp3', 'font/huangcao.ttf', 'font/shousha.ttf', @@ -3192,6 +3208,10 @@ window.noname_asset_list=[ 'image/character/caiyang.jpg', 'image/character/huban.jpg', 'image/character/pujing.jpg', + 'image/character/leitong.jpg', + 'image/character/old_jiakui.jpg', + 'image/character/sp_sufei.jpg', + 'image/character/wulan.jpg', 'image/character/baiwuchang.jpg', 'image/character/baosanniang.jpg', @@ -5023,4 +5043,13 @@ window.noname_skin_list={ zoushi:5, zumao:3, zuoci:8, + + key_hinata:1, + key_iwasawa:2, + key_nao:3, + key_shiki:3, + key_yui:2, + key_yuri:3, + key_yuzuru:2, + sp_key_kanade:6, }; \ No newline at end of file diff --git a/game/config.js b/game/config.js index a30f535ce..8c6a5c765 100644 --- a/game/config.js +++ b/game/config.js @@ -14,7 +14,7 @@ window.config={ forbiddouble:['zhugedan','swd_kangnalishi','dongzhuo','wutugu','hs_siwangzhiyi','hs_ronghejuren','hs_shanlingjuren'], forbidthreecard:['qiankunbiao','shenhuofeiya','gw_ciguhanshuang','gw_birinongwu','gw_qinpendayu','gw_poxiao'], all:{ - sgscharacters:['standard','shenhua','xinghuoliaoyuan','refresh','yijiang','sp','extra','old','mobile','tw'], + sgscharacters:['standard','shenhua','xinghuoliaoyuan','refresh','yijiang','sp','sp2','extra','old','mobile','tw'], sgscards:['standard','extra','sp','guozhan','zhulu'], sgsmodes:['identity','guozhan','versus','doudizhu','single','brawl','connect'], stockmode:['identity','guozhan','versus','boss','doudizhu','single','chess','stone','connect','brawl','tafang'], @@ -126,8 +126,8 @@ window.config={ right_click:'pause', sort:'type_sort', - cards:['standard','ex','extra','sp','classic','basic'], - characters:['standard','shenhua','sp','yijiang','refresh','xinghuoliaoyuan','mobile','extra'], + cards:['standard','ex','extra','sp','classic','basic','zhulu'], + characters:['standard','shenhua','sp','sp2','yijiang','refresh','xinghuoliaoyuan','mobile','extra'], connect_characters:[], connect_cards:[], plays:[], diff --git a/game/game.js b/game/game.js index 7eb5f5422..ad0bda7f4 100644 --- a/game/game.js +++ b/game/game.js @@ -19734,7 +19734,7 @@ } }, canUse:function(card,target,distance,includecard){ - if(typeof card=='string') card={name:card}; + if(typeof card=='string') card={name:card,isCard:true}; var info=get.info(card); if(info.multicheck&&!info.multicheck(card,this)) return false; if(includecard!=false&&!lib.filter.cardEnabled(card,this)) return false; @@ -19753,7 +19753,7 @@ }, getUseValue:function(card,distance,includecard){ if(typeof(card)=='string'){ - card={name:card}; + card={name:card,isCard:true}; } var player=this; var targets=game.filterPlayer(); diff --git a/game/package.js b/game/package.js index 68564c785..f74d9a79f 100644 --- a/game/package.js +++ b/game/package.js @@ -6,6 +6,7 @@ window.noname_package={ xinghuoliaoyuan:'星火燎原', yijiang:'一将成名', sp:'SP', + sp2:'系列专属', extra:'神将', mobile:'移动版', old:'怀旧', diff --git a/game/source.js b/game/source.js index dc16acf8f..3089553b8 100644 --- a/game/source.js +++ b/game/source.js @@ -25,6 +25,7 @@ window.noname_source_list=[ 'character/refresh.js', 'character/shenhua.js', 'character/sp.js', + 'character/sp2.js', 'character/standard.js', 'character/swd.js', 'character/tw.js', diff --git a/game/update.js b/game/update.js index 758b72d69..42f1c31a2 100644 --- a/game/update.js +++ b/game/update.js @@ -1,15 +1,18 @@ window.noname_update={ - version:'1.9.101.1', - update:'1.9.101', + version:'1.9.102', + update:'1.9.101.1', changeLog:[ + '仲村由理、神山识语音', + 'SP武将再分包', + '吴兰、雷铜、群苏飞、削弱版贾逵', 'bug修复', ], files:[ - //'card/extra.js', + 'card/extra.js', //'card/huanlekapai.js', //'card/sp.js', - //'card/standard.js', + 'card/standard.js', //'card/swd.js', //'card/mtg.js', //'card/gujian.js', @@ -18,24 +21,25 @@ window.noname_update={ //'card/yunchou.js', //'card/zhenfa.js', //'card/zhulu.js', - //'character/diy.js', - //'character/extra.js', + 'character/diy.js', + 'character/extra.js', //'character/hearth.js', //'character/gujian.js', //'character/gwent.js', //'character/hearth.js', 'character/mobile.js', //'character/mtg.js', - //'character/old.js', - //'character/refresh.js', + 'character/old.js', + 'character/refresh.js', //'character/shenhua.js', 'character/sp.js', + 'character/sp2.js', //'character/tw.js', //'character/standard.js', //'character/swd.js', //'character/xianjian.js', //'character/xinghuoliaoyuan.js', - //'character/yijiang.js', + 'character/yijiang.js', //'character/yxs.js', //'extension/boss/extension.js', //'layout/default/layout.css', @@ -48,14 +52,14 @@ window.noname_update={ //'mode/single.js', //'mode/stone.js', 'mode/brawl.js', - //'mode/versus.js', + 'mode/versus.js', //'mode/boss.js', 'game/game.js', //'game/NoSleep.js', - //'game/config.js', - //'game/package.js', + 'game/config.js', + 'game/package.js', //'game/asset.js', - //'game/source.js', + 'game/source.js', //'theme/style/hp/xinglass.css', //'theme/style/hp/xinround.css', //'theme/style/hp/image/xinglass1.png', diff --git a/image/character/leitong.jpg b/image/character/leitong.jpg new file mode 100644 index 000000000..bd6dd7e18 Binary files /dev/null and b/image/character/leitong.jpg differ diff --git a/image/character/old_jiakui.jpg b/image/character/old_jiakui.jpg new file mode 100644 index 000000000..b7bfb0e10 Binary files /dev/null and b/image/character/old_jiakui.jpg differ diff --git a/image/character/sp_sufei.jpg b/image/character/sp_sufei.jpg new file mode 100644 index 000000000..097a963cd Binary files /dev/null and b/image/character/sp_sufei.jpg differ diff --git a/image/character/wulan.jpg b/image/character/wulan.jpg new file mode 100644 index 000000000..dbf6a953c Binary files /dev/null and b/image/character/wulan.jpg differ diff --git a/image/skin/key_hinata/1.jpg b/image/skin/key_hinata/1.jpg new file mode 100644 index 000000000..0ea2f1fe8 Binary files /dev/null and b/image/skin/key_hinata/1.jpg differ diff --git a/image/skin/key_iwasawa/1.jpg b/image/skin/key_iwasawa/1.jpg new file mode 100644 index 000000000..1c5996126 Binary files /dev/null and b/image/skin/key_iwasawa/1.jpg differ diff --git a/image/skin/key_iwasawa/2.jpg b/image/skin/key_iwasawa/2.jpg new file mode 100644 index 000000000..5b5cfa226 Binary files /dev/null and b/image/skin/key_iwasawa/2.jpg differ diff --git a/image/skin/key_nao/1.jpg b/image/skin/key_nao/1.jpg new file mode 100644 index 000000000..75b4e7047 Binary files /dev/null and b/image/skin/key_nao/1.jpg differ diff --git a/image/skin/key_nao/2.jpg b/image/skin/key_nao/2.jpg new file mode 100644 index 000000000..059a88a3b Binary files /dev/null and b/image/skin/key_nao/2.jpg differ diff --git a/image/skin/key_nao/3.jpg b/image/skin/key_nao/3.jpg new file mode 100644 index 000000000..3e34784a7 Binary files /dev/null and b/image/skin/key_nao/3.jpg differ diff --git a/image/skin/key_shiki/1.jpg b/image/skin/key_shiki/1.jpg new file mode 100644 index 000000000..fb1a95fbe Binary files /dev/null and b/image/skin/key_shiki/1.jpg differ diff --git a/image/skin/key_shiki/2.jpg b/image/skin/key_shiki/2.jpg new file mode 100644 index 000000000..94a3954ee Binary files /dev/null and b/image/skin/key_shiki/2.jpg differ diff --git a/image/skin/key_shiki/3.jpg b/image/skin/key_shiki/3.jpg new file mode 100644 index 000000000..c2c493b57 Binary files /dev/null and b/image/skin/key_shiki/3.jpg differ diff --git a/image/skin/key_yui/1.jpg b/image/skin/key_yui/1.jpg new file mode 100644 index 000000000..0612ecb1e Binary files /dev/null and b/image/skin/key_yui/1.jpg differ diff --git a/image/skin/key_yui/2.jpg b/image/skin/key_yui/2.jpg new file mode 100644 index 000000000..b6e23d399 Binary files /dev/null and b/image/skin/key_yui/2.jpg differ diff --git a/image/skin/key_yuri/1.jpg b/image/skin/key_yuri/1.jpg new file mode 100644 index 000000000..c8b601dae Binary files /dev/null and b/image/skin/key_yuri/1.jpg differ diff --git a/image/skin/key_yuri/2.jpg b/image/skin/key_yuri/2.jpg new file mode 100644 index 000000000..9da85b608 Binary files /dev/null and b/image/skin/key_yuri/2.jpg differ diff --git a/image/skin/key_yuri/3.jpg b/image/skin/key_yuri/3.jpg new file mode 100644 index 000000000..c69aabfe5 Binary files /dev/null and b/image/skin/key_yuri/3.jpg differ diff --git a/image/skin/key_yuzuru/1.jpg b/image/skin/key_yuzuru/1.jpg new file mode 100644 index 000000000..f9ba97d0c Binary files /dev/null and b/image/skin/key_yuzuru/1.jpg differ diff --git a/image/skin/key_yuzuru/2.jpg b/image/skin/key_yuzuru/2.jpg new file mode 100644 index 000000000..9ed66985b Binary files /dev/null and b/image/skin/key_yuzuru/2.jpg differ diff --git a/image/skin/sp_key_kanade/1.jpg b/image/skin/sp_key_kanade/1.jpg new file mode 100644 index 000000000..0f2a614a9 Binary files /dev/null and b/image/skin/sp_key_kanade/1.jpg differ diff --git a/image/skin/sp_key_kanade/2.jpg b/image/skin/sp_key_kanade/2.jpg new file mode 100644 index 000000000..be53688c0 Binary files /dev/null and b/image/skin/sp_key_kanade/2.jpg differ diff --git a/image/skin/sp_key_kanade/3.jpg b/image/skin/sp_key_kanade/3.jpg new file mode 100644 index 000000000..c445e0fb6 Binary files /dev/null and b/image/skin/sp_key_kanade/3.jpg differ diff --git a/image/skin/sp_key_kanade/4.jpg b/image/skin/sp_key_kanade/4.jpg new file mode 100644 index 000000000..459a7c9e8 Binary files /dev/null and b/image/skin/sp_key_kanade/4.jpg differ diff --git a/image/skin/sp_key_kanade/5.jpg b/image/skin/sp_key_kanade/5.jpg new file mode 100644 index 000000000..ae1953d03 Binary files /dev/null and b/image/skin/sp_key_kanade/5.jpg differ diff --git a/image/skin/sp_key_kanade/6.jpg b/image/skin/sp_key_kanade/6.jpg new file mode 100644 index 000000000..a32387afb Binary files /dev/null and b/image/skin/sp_key_kanade/6.jpg differ diff --git a/mode/brawl.js b/mode/brawl.js index 41d433c92..98be46e7c 100644 --- a/mode/brawl.js +++ b/mode/brawl.js @@ -2934,6 +2934,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){ character:{ pujing:['male','qun',1,[],[]], huban:['male','qun',2,[],[]], + caiyang:['male','qun',1,[],[]], }, translate:{ pujing:'普净', diff --git a/mode/versus.js b/mode/versus.js index 202854b88..860bdd820 100644 --- a/mode/versus.js +++ b/mode/versus.js @@ -591,7 +591,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){ }, getVideoName:function(){ if(_status.mode=='three'){ - var zhu=game.findPlayer(function(current){ + var zhu=game.findPlayer2(function(current){ return current.side==game.me.side&¤t.identity=='zhu'; }); var str=(game.me.side?'暖/':'冷/')+get.translation(zhu.previousSeat.name)+'/'+get.translation(zhu.name)+'/'+get.translation(zhu.nextSeat.name);