diff --git a/audio/die/cheliji.mp3 b/audio/die/cheliji.mp3
new file mode 100644
index 000000000..d96626ce5
Binary files /dev/null and b/audio/die/cheliji.mp3 differ
diff --git a/audio/die/jin_yanghuiyu.mp3 b/audio/die/jin_yanghuiyu.mp3
new file mode 100644
index 000000000..7f87a1c91
Binary files /dev/null and b/audio/die/jin_yanghuiyu.mp3 differ
diff --git a/audio/die/panshu.mp3 b/audio/die/panshu.mp3
new file mode 100644
index 000000000..7789aaa32
Binary files /dev/null and b/audio/die/panshu.mp3 differ
diff --git a/audio/die/shibao.mp3 b/audio/die/shibao.mp3
new file mode 100644
index 000000000..c5b13b676
Binary files /dev/null and b/audio/die/shibao.mp3 differ
diff --git a/audio/die/weiguan.mp3 b/audio/die/weiguan.mp3
new file mode 100644
index 000000000..da8994f5f
Binary files /dev/null and b/audio/die/weiguan.mp3 differ
diff --git a/audio/skill/caiyuan1.mp3 b/audio/skill/caiyuan1.mp3
new file mode 100644
index 000000000..fdb780c5e
Binary files /dev/null and b/audio/skill/caiyuan1.mp3 differ
diff --git a/audio/skill/caiyuan2.mp3 b/audio/skill/caiyuan2.mp3
new file mode 100644
index 000000000..5aca0c3a6
Binary files /dev/null and b/audio/skill/caiyuan2.mp3 differ
diff --git a/audio/skill/chexuan1.mp3 b/audio/skill/chexuan1.mp3
new file mode 100644
index 000000000..e17a9b2a9
Binary files /dev/null and b/audio/skill/chexuan1.mp3 differ
diff --git a/audio/skill/chexuan2.mp3 b/audio/skill/chexuan2.mp3
new file mode 100644
index 000000000..1118711d1
Binary files /dev/null and b/audio/skill/chexuan2.mp3 differ
diff --git a/audio/skill/ciwei1.mp3 b/audio/skill/ciwei1.mp3
new file mode 100644
index 000000000..32e525fc1
Binary files /dev/null and b/audio/skill/ciwei1.mp3 differ
diff --git a/audio/skill/ciwei2.mp3 b/audio/skill/ciwei2.mp3
new file mode 100644
index 000000000..6467b8bad
Binary files /dev/null and b/audio/skill/ciwei2.mp3 differ
diff --git a/audio/skill/huirong1.mp3 b/audio/skill/huirong1.mp3
new file mode 100644
index 000000000..732f7c4ca
Binary files /dev/null and b/audio/skill/huirong1.mp3 differ
diff --git a/audio/skill/huirong2.mp3 b/audio/skill/huirong2.mp3
new file mode 100644
index 000000000..6037548cc
Binary files /dev/null and b/audio/skill/huirong2.mp3 differ
diff --git a/audio/skill/jinzhi1.mp3 b/audio/skill/jinzhi1.mp3
new file mode 100644
index 000000000..013ee6733
Binary files /dev/null and b/audio/skill/jinzhi1.mp3 differ
diff --git a/audio/skill/jinzhi2.mp3 b/audio/skill/jinzhi2.mp3
new file mode 100644
index 000000000..8cd075222
Binary files /dev/null and b/audio/skill/jinzhi2.mp3 differ
diff --git a/audio/skill/shenpin1.mp3 b/audio/skill/shenpin1.mp3
new file mode 100644
index 000000000..5fe1090af
Binary files /dev/null and b/audio/skill/shenpin1.mp3 differ
diff --git a/audio/skill/shenpin2.mp3 b/audio/skill/shenpin2.mp3
new file mode 100644
index 000000000..78ac7e3cc
Binary files /dev/null and b/audio/skill/shenpin2.mp3 differ
diff --git a/audio/skill/weiyi1.mp3 b/audio/skill/weiyi1.mp3
new file mode 100644
index 000000000..b67729c58
Binary files /dev/null and b/audio/skill/weiyi1.mp3 differ
diff --git a/audio/skill/weiyi2.mp3 b/audio/skill/weiyi2.mp3
new file mode 100644
index 000000000..a95ebf168
Binary files /dev/null and b/audio/skill/weiyi2.mp3 differ
diff --git a/audio/skill/zhongyun1.mp3 b/audio/skill/zhongyun1.mp3
new file mode 100644
index 000000000..b1add55f1
Binary files /dev/null and b/audio/skill/zhongyun1.mp3 differ
diff --git a/audio/skill/zhongyun2.mp3 b/audio/skill/zhongyun2.mp3
new file mode 100644
index 000000000..f026b9f80
Binary files /dev/null and b/audio/skill/zhongyun2.mp3 differ
diff --git a/audio/skill/zhuosheng1.mp3 b/audio/skill/zhuosheng1.mp3
new file mode 100644
index 000000000..f1adcfdc7
Binary files /dev/null and b/audio/skill/zhuosheng1.mp3 differ
diff --git a/audio/skill/zhuosheng2.mp3 b/audio/skill/zhuosheng2.mp3
new file mode 100644
index 000000000..2cfce37d9
Binary files /dev/null and b/audio/skill/zhuosheng2.mp3 differ
diff --git a/card/extra.js b/card/extra.js
index 819015906..b647923b0 100644
--- a/card/extra.js
+++ b/card/extra.js
@@ -20,7 +20,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){
player.unmarkSkill('muniu_skill');
delete player.getStat('skill').muniu_skill;
if(!card||!card.cards||!card.cards.length) return;
- if((event.getParent(2)&&event.getParent(2).name!='swapEquip')&&event.parent.type!='equip'){
+ if((event.getParent(2)&&event.getParent(2).name!='swapEquip')&&(event.parent.type!='equip'||event.parent.swapEquip)){
player.lose(card.cards,ui.discardPile);
player.$throw(card.cards,1000);
player.popup('muniu');
diff --git a/card/yingbian.js b/card/yingbian.js
index a96c8959f..2ca8e741c 100644
--- a/card/yingbian.js
+++ b/card/yingbian.js
@@ -393,7 +393,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){
'step 1'
if(result.bool){
player.logSkill('taigongyinfu_skill');
- player.lose(result.cards,ui.discardPile);
+ player.lose(result.cards,ui.discardPile,'visible');
player.$throw(result.cards,1000);
game.log(player,'将',result.cards,'置入了弃牌堆');
player.draw();
diff --git a/character/diy.js b/character/diy.js
index 718be1cdc..addf1a49b 100755
--- a/character/diy.js
+++ b/character/diy.js
@@ -2175,7 +2175,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
forced:true,
charlotte:true,
content:function(){
- var list=['wei','shu','wu','qun'];
+ var list=['wei','shu','wu','qun','jin'];
for(var i of list){
if(!player.hasMark('kotori_yumo_'+i)){
player.addMark('kotori_yumo_'+i,1,false);
@@ -2205,7 +2205,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
trigger:{player:'phaseBegin'},
direct:true,
filter:function(event,player){
- var list=['wei','shu','wu','qun','key'];
+ var list=['wei','shu','wu','qun','key','jin'];
for(var i in list){
if(player.hasMark('kotori_yumo_'+list[i])) return true;
}
@@ -2213,7 +2213,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
content:function(){
'step 0'
- var list=['wei','shu','wu','qun','key'];
+ var list=['wei','shu','wu','qun','key','jin'];
var list2=[];
for(var i of list){
if(player.hasMark('kotori_yumo_'+i)) list2.push('kotori_skill_'+i);
@@ -2334,6 +2334,46 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
},
},
+ kotori_skill_jin:{
+ trigger:{player:'phaseDrawEnd'},
+ filter:function(event,player){
+ var hs=player.getCards('h');
+ return hs.length>0&&player.getHistory('gain',function(evt){
+ if(evt.getParent().name!='draw'||evt.getParent('phaseDraw')!=event) return false;
+ for(var i of evt.cards){
+ if(hs.contains(i)) return true;
+ }
+ return false;
+ }).length>0;
+ },
+ check:function(event,player){
+ var hs=player.getCards('h'),cards=[],suits=[];
+ player.getHistory('gain',function(evt){
+ if(evt.getParent().name!='draw'||evt.getParent('phaseDraw')!=event) return false;
+ for(var i of evt.cards){
+ if(hs.contains(i)){
+ cards.add(i);
+ suits.add(get.suit(i,player));
+ }
+ }
+ });
+ return cards.length==suits.length;
+ },
+ content:function(){
+ var hs=player.getCards('h'),cards=[],suits=[];
+ player.getHistory('gain',function(evt){
+ if(evt.getParent().name!='draw'||evt.getParent('phaseDraw')!=trigger) return false;
+ for(var i of evt.cards){
+ if(hs.contains(i)){
+ cards.add(i);
+ suits.add(get.suit(i,player));
+ }
+ }
+ });
+ player.showCards(cards,get.translation(player)+'发动了【晋势】');
+ if(cards.length==suits.length) player.draw();
+ },
+ },
kotori_qunxin_temp:{
onremove:true,
mod:{
@@ -2362,12 +2402,16 @@ game.import('character',function(lib,game,ui,get,ai,_status){
marktext:'魔',
intro:{name:'魔物',content:'mark'},
},
+ kotori_yumo_jin:{
+ marktext:'魔',
+ intro:{name:'魔物',content:'mark'},
+ },
kotori_huazhan:{
charlotte:true,
enable:'chooseToUse',
filter:function(event,player){
var bool=false;
- var list=['wei','shu','wu','qun','key'];
+ var list=['wei','shu','wu','qun','key','jin'];
for(var i of list){
if(player.hasMark('kotori_yumo_'+i)&&!player.getStorage('kotori_huazhan2').contains('kotori_yumo_'+i)){
bool=true;break;
@@ -2380,7 +2424,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
return ui.create.dialog('###花绽###'+lib.translate.kotori_huazhan_info);
},
chooseControl:function(event,player){
- var list=['wei','shu','wu','qun','key'];
+ var list=['wei','shu','wu','qun','key','jin'];
var list2=[];
for(var i of list){
if(player.hasMark('kotori_yumo_'+i)&&!player.getStorage('kotori_huazhan2').contains('kotori_yumo_'+i)) list2.push('kotori_yumo_'+i);
@@ -2390,7 +2434,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
check:function(){
var player=_status.event.player;
- var list=['wei','shu','wu','qun','key'];
+ var list=['wei','shu','wu','qun','key','jin'];
var list2=[];
for(var i of list){
if(player.hasMark('kotori_yumo_'+i)&&!player.getStorage('kotori_huazhan2').contains('kotori_yumo_'+i)) list2.push('kotori_yumo_'+i);
@@ -13572,7 +13616,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
kotori_yumo:'驭魔',
kotori_yumo_damage:'驭魔',
kotori_yumo_gain:'驭魔',
- kotori_yumo_info:'锁定技,游戏开始时,你获得蓝色、红色、绿色、黄色魔物各一个。当有角色受到伤害后,若你没有对应的标记,你根据其势力获得一个对应魔物:魏:蓝、蜀:红、吴:绿、群:黄、键:紫。回合开始时,你可以弃置一个对应的魔物并获得以下技能之一直到回合结束:蓝:魏业、红:蜀义、绿:吴耀、黄:群心、紫:键魂。',
+ kotori_yumo_info:'锁定技,游戏开始时,你获得蓝色、红色、绿色、黄色、灰色魔物各一个。当有角色受到伤害后,若你没有对应的标记,你根据其势力获得一个对应魔物:魏:蓝、蜀:红、吴:绿、群:黄、灰:晋、键:紫。回合开始时,你可以弃置一个对应的魔物并获得以下技能之一直到回合结束:蓝:魏业、红:蜀义、绿:吴耀、黄:群心、灰:晋势、紫:键魂。',
kotori_skill_wei:'魏业',
kotori_skill_wei_info:'回合开始时,你可以弃置一张牌并指定一名其他角色,该角色须弃置一张牌,否则你摸一张牌。',
kotori_skill_shu:'蜀义',
@@ -13583,13 +13627,16 @@ game.import('character',function(lib,game,ui,get,ai,_status){
kotori_skill_qun_info:'锁定技,弃牌阶段开始时,若你的手牌数比体力值多2或更多,你本回合手牌上限+1;若你已损失体力值大于1,你手牌上限+1',
kotori_skill_key:'键魂',
kotori_skill_key_info:'出牌阶段限一次,你可以摸一张牌并获得1点护甲。若如此做,你于当前回合结束时失去1点体力。',
+ kotori_skill_jin:'晋势',
+ kotori_skill_jin_info:'摸牌阶段结束时,你可以展示你于此阶段内因摸牌而获得的牌。若这些牌的花色均不同,则你摸一张牌。',
kotori_yumo_wei:'魔物',
kotori_yumo_shu:'魔物',
kotori_yumo_wu:'魔物',
kotori_yumo_qun:'魔物',
kotori_yumo_key:'魔物',
+ kotori_yumo_jin:'魔物',
kotori_huazhan:'花绽',
- kotori_huazhan_info:'每回合每种魔物限一次,你可将一个蓝色/红色/绿色/黄色/紫色魔物当做【树上开花】使用。',
+ kotori_huazhan_info:'每回合每种魔物限一次,你可将一个蓝色/红色/绿色/黄色/紫色/灰色魔物当做【树上开花】使用。',
jojiro_shensu:'神速',
jojiro_shensu_info:'你可以选择一至三项:1. 跳过判定阶段和摸牌阶段;2. 跳过出牌阶段并弃置一张装备牌;3. 跳过弃牌阶段并将你的武将牌翻面。你每选择一项,视为你对一名其他角色使用一张没有距离限制的【杀】',
jojiro_shensu1:'神速',
diff --git a/character/mobile.js b/character/mobile.js
index 5ba1c8d99..09af1dfad 100644
--- a/character/mobile.js
+++ b/character/mobile.js
@@ -343,7 +343,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
skill:{
//狗剩
reduoji:{
- audio:2,
+ audio:'duoji',
enable:'phaseUse',
usable:1,
filter:function(event,player){
@@ -995,7 +995,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
group:'refubi_buff',
subSkill:{
buff:{
- trigger:{global:'phaseUseBegin'},
+ trigger:{global:'phaseZhunbeiBegin'},
direct:true,
filter:function(event,player){
return event.player!=player&&event.player.hasMark('refubi');
@@ -1009,7 +1009,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
]).set('ai',function(){
var player=_status.event.player,target=_status.event.getTrigger().player;
if(get.attitude(player,target)<=0) return 'cancel2';
- if(target.countCards('h',function(card){
+ if(!target.hasJudge('lebu')&&target.countCards('h',function(card){
return get.name(card,target)=='sha'&&target.hasValueTarget(card);
})>target.getCardUsable('sha')) return 0;
return 1;
diff --git a/character/rank.js b/character/rank.js
index e2b3feea5..ab3d0e0ff 100644
--- a/character/rank.js
+++ b/character/rank.js
@@ -249,7 +249,7 @@ window.noname_character_rank={
'wolongfengchu',
'yanghuiyu',
'liubian',
- 'nanhualaoxian',
+ 'panshu',
'key_misuzu',
'key_sunohara',
'key_umi',
@@ -666,6 +666,7 @@ window.noname_character_rank={
're_zhoucang',
'ruanyu',
'wujing',
+ 'nanhualaoxian',
],
b:[
'diy_feishi',
@@ -843,6 +844,9 @@ window.noname_character_rank={
'jin_yanghuiyu',
'sp_mifuren',
'sp_xinpi',
+ 'cheliji',
+ 'shibao',
+ 'zhangmiao',
],
bm:[
'diy_xizhenxihong',
@@ -1135,6 +1139,7 @@ window.noname_character_rank={
'boss_zhaoyun',
'yanghuiyu',
'nanhualaoxian',
+ 'panshu',
'key_yuri',
'key_yuzuru',
'sp_key_kanade',
@@ -1635,6 +1640,7 @@ window.noname_character_rank={
'ns_chengpu',
're_zhoucang',
'sp_mifuren',
+ 'cheliji',
],
junk:[
'sunshao',
diff --git a/character/shenhua.js b/character/shenhua.js
index 8db7584be..2ae452301 100755
--- a/character/shenhua.js
+++ b/character/shenhua.js
@@ -5603,7 +5603,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
shuangxiong2:{
audio:true,
audioname:['re_yanwen'],
- enable:'phaseUse',
+ enable:'chooseToUse',
prompt:function(){
var player=_status.event.player;
var str='将一张'+(player.storage.shuangxiong!='red'?'红':'黑')+'色手牌当做【决斗】使用';
@@ -7666,7 +7666,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
qiangxi_info:'出牌阶段限一次,你可以失去一点体力或弃置一张武器牌,然后对你攻击范围内的一名其他角色造成一点伤害。',
qiangxix_info:'出牌阶段限两次,你可以失去一点体力或弃置一张武器牌,然后一名本阶段内未成为过〖强袭〗的目标的其他角色造成一点伤害。',
tianyi_info:'出牌阶段限一次,你可以和一名其他角色拼点。若你赢,你获得以下技能效果直到回合结束:你使用【杀】没有距离限制;可额外使用一张【杀】;使用【杀】时可额外指定一个目标。若你没赢,你不能使用【杀】直到回合结束。',
- shuangxiong_info:'摸牌阶段,你可以改为进行一次判定:你获得此判定牌,且于此回合的出牌阶段,你可以将任意一张与此判定牌不同颜色的手牌当做【决斗】使用。',
+ shuangxiong_info:'摸牌阶段,你可以改为进行一次判定:你获得此判定牌,且你可以于此回合内将任意一张与此判定牌不同颜色的手牌当做【决斗】使用。',
luanji_info:'出牌阶段,你可以将任意两张相同花色的手牌当做【万箭齐发】使用。',
xueyi_info:'主公技,锁定技,场上每有一名其他群雄角色存活,你的手牌上限便+2。',
mengjin_info:'当你使用的【杀】被【闪】抵消时,你可以弃置目标角色的一张牌。',
diff --git a/character/sp.js b/character/sp.js
index 83b031ed8..a277b113c 100755
--- a/character/sp.js
+++ b/character/sp.js
@@ -18,7 +18,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
characterFilter:{},
character:{
- panshu:['female','wu',3,['weiyi','jinzhi'],['unseen']],
+ panshu:['female','wu',3,['weiyi','jinzhi']],
sp_jiben:['male','qun',3,['spduanzhi','spduyi']],
sp_fuhuanghou:['female','qun',3,['spcangni','spmixin']],
sp_fuwan:['male','qun',3,['spfengyin','spchizhong']],
diff --git a/character/sp2.js b/character/sp2.js
index c8ea9db66..6201c6329 100644
--- a/character/sp2.js
+++ b/character/sp2.js
@@ -4,27 +4,14 @@ game.import('character',function(lib,game,ui,get,ai,_status){
name:'sp2',
connect:true,
character:{
- weiguan:['male','jin',3,['zhongyun','shenpin'],['unseen']],
+ zhangmiao:['male','qun',4,['mouni','zongfan']],
+ liangxing:['male','qun',4,['lulve','lxzhuixi'],['unseen']],
ruanyu:['male','wei',3,['xingzuo','miaoxian']],
xiahoujie:['male','wei',5,['liedan','zhuangdan']],
- cheliji:['male','qun',4,['chexuan','qiangshou'],['unseen']],
- simazhou:['male','jin',4,['caiwang','naxiang']],
- huangzu:['male','qun',4,['wangong'],['unseen']],
caosong:['male','wei',4,['cslilu','csyizheng']],
re_taoqian:['male','qun',3,['zhaohuo','reyixiang','reyirang']],
zhaozhong:['male','qun',6,['yangzhong','huangkong']],
fanyufeng:['female','qun',3,['bazhan','jiaoying']],
- ol_lisu:['male','qun',3,['qiaoyan','xianzhu']],
- jin_yanghuiyu:['female','jin',3,['huirong','ciwei','caiyuan'],['hiddenSkill']],
- shibao:['male','jin',4,['shibao_skill'],['unseen']],
- jin_zhangchunhua:['female','jin',3,['huishi','qingleng','xuanmu'],['hiddenSkill']],
- jin_simayi:['male','jin',3,['buchen','smyyingshi','xiongzhi','quanbian'],['hiddenSkill']],
- jin_wangyuanji:['female','jin',3,['shiren','yanxi'],['hiddenSkill']],
- jin_simazhao:['male','jin',3,['tuishi','choufa','zhaoran','chengwu'],['zhu','hiddenSkill']],
- jin_xiahouhui:['female','jin',3,['baoqie','jyishi','shiduo'],['hiddenSkill']],
- jin_simashi:['male','jin','3/4',['taoyin','yimie','ruilve','tairan'],['hiddenSkill','zhu']],
- zhanghuyuechen:['male','jin',4,['xijue']],
- duyu:['male','jin',4,['sanchen','zhaotao']],
re_chunyuqiong:['male','qun',4,['recangchu','reliangying','reshishou']],
guozhao:['female','wei',3,['pianchong','zunwei']],
hanfu:['male','qun',4,['hfjieying','weipo']],
@@ -98,7 +85,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
characterSort:{
sp2:{
- sp_yingbian:['jin_zhangchunhua','jin_simayi','jin_wangyuanji','jin_simazhao','jin_xiahouhui','jin_yanghuiyu','jin_simashi','duyu','zhanghuyuechen','shibao','ol_lisu','huangzu','simazhou','weiguan'],
sp_whlw:["xurong","lijue","zhangji","fanchou","guosi"],
sp_zlzy:["zhangqiying","lvkai","zhanggong","weiwenzhugezhi","beimihu"],
sp_longzhou:["xf_tangzi","xf_huangquan","xf_sufei","sp_liuqi"],
@@ -110,7 +96,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
sp_huangjin:['liuhong','zhujun','re_hejin','re_hansui','liubian'],
sp_fadong:['ol_dingyuan','wangrong','re_quyi','hanfu'],
sp_xuzhou:['re_taoqian','caosong'],
- sp_decade:['wulan','leitong','huaman','wangshuang','wenyang','re_liuzan','re_sunluyu','caobuxing','ol_yujin','re_maliang','xin_baosanniang','re_xinxianying','dongxie','guozhao','fanyufeng','zhaozhong','ruanyu'],
+ sp_decade:['wulan','leitong','huaman','wangshuang','wenyang','re_liuzan','re_sunluyu','caobuxing','ol_yujin','re_maliang','xin_baosanniang','re_xinxianying','dongxie','guozhao','fanyufeng','zhaozhong','ruanyu','liangxing','zhangmiao'],
sp_mini:["mini_sunquan","mini_zuoci","mini_jiangwei","mini_diaochan","mini_zhangchunhua"],
sp_luanwu:["ns_lijue","ns_zhangji","ns_fanchou"],
sp_yongjian:["ns_chendao","yj_caoang"],
@@ -118,142 +104,203 @@ game.import('character',function(lib,game,ui,get,ai,_status){
}
},
skill:{
- //卫瓘
- zhongyun:{
- audio:2,
- trigger:{player:['damageEnd','recoverEnd']},
- forced:true,
+ //张邈
+ mouni:{
+ trigger:{player:'phaseZhunbeiBegin'},
+ direct:true,
filter:function(event,player){
- return player.hp==player.countCards('h')&&(player.isDamaged()||game.hasPlayer(function(current){
- return player.inRange(current);
- }));
+ return player.countCards('h','sha')>0;
},
content:function(){
'step 0'
- var filterTarget=function(card,player,target){
- return player.inRange(target);
- };
- if(game.hasPlayer((current)=>filterTarget('L∞pers',player,current))){
- var bool=player.isHealthy();
- player.chooseTarget('忠允:对攻击范围内的一名角色造成1点伤害'+(bool?'':',或点取消回复1点体力'),filterTarget,bool);
- }
- else event._result={bool:false};
+ player.addSkill('mouni2');
+ player.chooseTarget(get.prompt2('mouni'),lib.filter.notMe).set('ai',function(target){
+ var player=_status.event.player,cards=player.getCards('h','sha');
+ if(get.attitude(player,target)>=0||!player.canUse(cards[0],target,false)||(!player.hasJudge('lebu')&&target.mayHaveShan()&&!player.hasSkillTag('directHit_ai',true,{
+ target:target,
+ card:cards[0],
+ },true))) return 0;
+ return get.effect(target,cards[0],player,player);
+ });
'step 1'
if(result.bool){
var target=result.targets[0];
- player.line(target,'green');
- target.damage();
+ event.target=target;
+ player.logSkill('mouni',target);
+ event.cards=player.getCards('h','sha');
}
- else player.recover();
+ else event.finish();
+ 'step 2'
+ if(event.mouni_dying) return;
+ var hs=player.getCards('h');
+ cards=cards.filter(function(card){
+ return hs.contains(card)&&get.name(card,player)=='sha'&&player.canUse({
+ name:'sha',
+ nature:get.nature(card,player),
+ isCard:true,
+ cards:[card],
+ },target,false);
+ });
+ if(cards.length){
+ var card=cards.randomRemove(1)[0];
+ player.useCard(target,false,card);
+ event.redo();
+ }
+ 'step 3'
+ if(player.getHistory('useCard',function(evt){
+ return evt.getParent()==event&&!player.getHistory('sourceDamage',function(evt2){
+ return evt.card==evt2.card;
+ }).length;
+ }).length) player.skip('phaseUse');
+ player.removeSkill('mouni2');
},
- group:'zhongyun2',
},
- zhongyun2:{
- audio:'zhongyun',
- trigger:{
- player:['loseAfter','gainAfter'],
- global:['equipAfter','addJudgeAfter','gainAfter','loseAsyncAfter'],
- },
+ mouni2:{
+ charlotte:true,
+ trigger:{global:'dying'},
forced:true,
+ firstDo:true,
+ popup:false,
filter:function(event,player){
- if(event.name!='gain'||player!=event.player){
- var evt=event.getl(player);
- if(!evt||!evt.hs||!evt.hs.length) return false;
- }
- return player.countCards('h')==player.hp;
+ var evt=event.getParent('mouni');
+ return evt&&evt.player==player&&evt.target==event.player;
+ },
+ content:function(){
+ trigger.getParent('mouni').mouni_dying=true;
+ },
+ },
+ zongfan:{
+ derivation:'zhangu',
+ trigger:{player:'phaseJieshuBegin'},
+ juexingji:true,
+ forced:true,
+ skillAnimation:true,
+ animationColor:'gray',
+ filter:function(event,player){
+ return !player.getHistory('skipped').contains('phaseUse')&&player.getHistory('useCard',function(evt){
+ return evt.getParent().name=='mouni';
+ });
},
- usable:1,
content:function(){
'step 0'
- var filterTarget=function(card,player,target){
- return target!=player&&target.countDiscardableCards(player,'he')>0;
+ player.awakenSkill('zongfan');
+ var num=player.countCards('he');
+ if(num>0){
+ player.chooseCardTarget({
+ prompt:'是否将任意张牌交给一名其他角色?',
+ selectCard:[1,num],
+ filterCard:true,
+ filterTarget:lib.filter.notMe,
+ position:'he',
+ ai1:function(card){
+ if(card.name=='du') return 10;
+ else if(ui.selected.cards.length&&ui.selected.cards[0].name=='du') return 0;
+ var player=_status.event.player;
+ if(ui.selected.cards.length>4||!game.hasPlayer(function(current){
+ return get.attitude(player,current)>0&&!current.hasSkillTag('nogain');
+ })) return 0;
+ return 1/Math.max(0.1,get.value(card));
+ },
+ ai2:function(target){
+ var player=_status.event.player,att=get.attitude(player,target);
+ if(ui.selected.cards[0].name=='du') return -att;
+ if(target.hasSkillTag('nogain')) att/=6;
+ return att;
+ },
+ });
}
- if(!game.hasPlayer((current)=>filterTarget('L∞pers',player,current))) event._result={bool:false};
- else player.chooseTarget(filterTarget,'忠允:弃置一名其他角色的一张牌,或点取消摸一张牌').set('ai',function(target){
- var att=get.attitude(player,target);
- if(att>=0) return 0;
- if(target.countCards('he',function(card){
- return get.value(card)>5;
- })) return -att;
- return 0;
- });
+ else event.goto(2);
'step 1'
- if(!result.bool) player.draw();
- else{
- var target=result.targets[0];
- player.line(target,'green');
- player.discardPlayerCard(target,true,'he');
+ if(result.bool){
+ var cards=result.cards,target=result.targets[0],num=Math.min(5,cards.length);
+ target.gain(cards,player,'giveAuto');
+ player.gainMaxHp(num);
+ player.recover(num);
}
+ 'step 2'
+ player.removeSkill('mouni');
+ player.addSkill('zhangu');
},
},
- shenpin:{
- audio:2,
- trigger:{global:'judge'},
+ zhangu:{
+ trigger:{player:'phaseZhunbeiBegin'},
+ forced:true,
filter:function(event,player){
- var color=get.color(event.player.judging[0],event.player);
- return player.countCards('hes',function(card){
- if(_status.connectMode&&get.position(card)!='e') return true;
- return get.color(card)!=color;
- })>0;
+ return player.maxHp>1&&(player.countCards('h')==0||player.countCards('e')==0)
+ },
+ content:function(){
+ var cards=[],types=[];
+ for(var i=0;i<3;i++){
+ var card=get.cardPile2(function(card){
+ return !cards.contains(card)&&!types.contains(get.type2(card,false));
+ });
+ if(card){
+ cards.push(card);
+ types.push(get.type2(card,false));
+ }
+ else break;
+ }
+ if(cards.length) player.gain(cards,'gain2');
+ player.loseMaxHp();
+ },
+ },
+ //梁兴
+ lulve:{
+ audio:2,
+ trigger:{player:'phaseUseBegin'},
+ filter:function(event,player){
+ var hs=player.countCards('h');
+ return hs>1&&game.hasPlayer(function(target){
+ var ts=target.countCards('h');
+ return target!=player&&ts>0&&hs>ts;
+ });
},
direct:true,
content:function(){
- "step 0"
- var color=get.color(trigger.player.judging[0],trigger.player);
- player.chooseCard(get.translation(trigger.player)+'的'+(trigger.judgestr||'')+'判定为'+
- get.translation(trigger.player.judging[0])+','+get.prompt('shenpin'),'hes',function(card){
- if(get.color(card)==_status.event.color) return false;
- var player=_status.event.player;
- var mod2=game.checkMod(card,player,'unchanged','cardEnabled2',player);
- if(mod2!='unchanged') return mod2;
- var mod=game.checkMod(card,player,'unchanged','cardRespondable',player);
- if(mod!='unchanged') return mod;
- return true;
- }).set('ai',function(card){
- var trigger=_status.event.getTrigger();
- var player=_status.event.player;
- var judging=_status.event.judging;
- var result=trigger.judge(card)-trigger.judge(judging);
- var attitude=get.attitude(player,trigger.player);
- if(attitude==0||result==0) return 0;
- if(attitude>0){
- return result;
- }
- else{
- return -result;
- }
- }).set('judging',trigger.player.judging[0]).set('color',color);
- "step 1"
+ 'step 0'
+ player.chooseTarget(get.prompt2('lulve'),function(card,player,target){
+ var hs=player.countCards('h'),ts=target.countCards('h');
+ return target!=player&&ts>0&&hs>ts;
+ });
+ 'step 1'
if(result.bool){
- player.respond(result.cards,'highlight','guidao','noOrdering');
+ var target=result.targets[0];
+ event.target=target;
+ player.logSkill('lulve',target);
+ var str=get.translation(player);
+ target.chooseControl().set('choiceList',[
+ '将所有手牌交给'+str+',然后其将武将牌翻面',
+ '将武将牌翻面,然后视为对'+str+'使用【杀】',
+ ]).set('ai',function(){
+ return Math.random()<0.5?0:1;
+ });
}
- else{
+ else event.finish();
+ 'step 2'
+ if(result.index==0){
+ player.gain(target.getCards('h'),target,'giveAuto');
+ player.turnOver();
event.finish();
}
- "step 2"
- if(result.bool){
- if(trigger.player.judging[0].clone){
- trigger.player.judging[0].clone.classList.remove('thrownhighlight');
- game.broadcast(function(card){
- if(card.clone){
- card.clone.classList.remove('thrownhighlight');
- }
- },trigger.player.judging[0]);
- game.addVideo('deletenode',player,get.cardsInfo([trigger.player.judging[0].clone]));
- }
- game.cardsDiscard(trigger.player.judging[0]);
- trigger.player.judging[0]=result.cards[0];
- trigger.orderingCards.addArray(result.cards);
- game.log(trigger.player,'的判定牌改为',result.cards[0]);
- game.delay(2);
- }
+ else target.turnOver();
+ 'step 3'
+ if(target.canUse({name:'sha',isCard:true},player,false)) target.useCard({name:'sha',isCard:true},player,false);
+ },
+ },
+ lxzhuixi:{
+ audio:2,
+ trigger:{
+ player:'damageBegin3',
+ source:'damageBegin1',
+ },
+ forced:true,
+ logTarget:'player',
+ filter:function(event,player){
+ return event.source&&event.player.isTurnedOver()!=event.source.isTurnedOver();
+ },
+ content:function(){
+ trigger.num++;
},
- ai:{
- rejudge:true,
- tag:{
- rejudge:1
- }
- }
},
//阮瑀
xingzuo:{
@@ -483,226 +530,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){
marktext:'胆',
intro:{content:'我超勇的'},
},
- //彻里吉
- chexuan:{
- audio:2,
- enable:'phaseUse',
- derivation:['cheliji_sichengliangyu','cheliji_tiejixuanyu','cheliji_feilunzhanyu'],
- filter:function(event,player){
- return !player.getEquip(5)&&player.countCards('he',{color:'black'})>0;
- },
- filterCard:{color:'black'},
- position:'he',
- check:function(card){
- return 5-get.value(card);
- },
- content:function(){
- 'step 0'
- player.chooseButton(['请选择要装备的宝物',[lib.skill.chexuan.derivation.map(function(i){
- return ['宝物','',i];
- }),'vcard']],true).set('ai',function(button){
- if(button.link[2]=='cheliji_sichengliangyu'&&player.countCards('h')0&&player.getEquip('cheliji_tiejixuanyu');
- },
- logTarget:'player',
- check:function(event,player){
- return get.attitude(player,event.player)<0;
- },
- content:function(){
- 'step 0'
- trigger.player.chooseToDiscard('he',2,true);
- 'step 1'
- var card=player.getEquip('cheliji_tiejixuanyu');
- if(card) player.discard(card);
- },
- },
- cheliji_feilunzhanyu:{
- trigger:{global:'phaseJieshuBegin'},
- equipSkill:true,
- filter:function(event,player){
- return player!=event.player&&event.player.getHistory('useCard',function(card){
- return get.type(card)!='basic';
- }).length>0&&event.player.countCards('he')>0&&player.getEquip('cheliji_feilunzhanyu');
- },
- logTarget:'player',
- check:function(event,player){
- return get.attitude(player,event.player)<=0;
- },
- content:function(){
- 'step 0'
- trigger.player.chooseCard('he',true,'将一张牌交给'+get.translation(player));
- 'step 1'
- if(result.bool) player.gain(result.cards,trigger.player,'giveAuto');
- 'step 2'
- var card=player.getEquip('cheliji_feilunzhanyu');
- if(card) player.discard(card);
- },
- },
- //司马伷和黄祖
- caiwang:{
- audio:2,
- trigger:{global:['useCard','respond']},
- filter:function(event,player){
- if(!Array.isArray(event.respondTo)||event.respondTo[0]==event.player||![event.respondTo[0],event.player].contains(player)) return false;
- var color=get.color(event.card);
- if(color=='none'||get.color(event.respondTo[1])!=color) return false;
- var target=lib.skill.caiwang.logTarget(event,player);
- return target[player.getStorage('naxiang2').contains(target)?'countGainableCards':'countDiscardableCards'](player,'he')>0
- },
- logTarget:function(event,player){
- return (player==event.respondTo[0]?event.player:event.respondTo[0]);
- },
- prompt2:function(event,player){
- var target=lib.skill.caiwang.logTarget(event,player);
- return (player.getStorage('naxiang2').contains(target)?'获得':'弃置')+'该角色的一张牌';
- },
- check:function(event,player){
- return get.attitude(player,lib.skill.caiwang.logTarget(event,player))<=0;
- },
- content:function(){
- var target=lib.skill.caiwang.logTarget(trigger,player);
- player[player.getStorage('naxiang2').contains(target)?'gainPlayerCard':'discardPlayerCard'](target,'he',true);
- },
- },
- naxiang:{
- audio:2,
- trigger:{
- player:'damageEnd',
- source:'damageSource',
- },
- forced:true,
- filter:function(event,player){
- var target=lib.skill.naxiang.logTarget(event,player);
- return target&&target!=player&&target.isAlive();
- },
- logTarget:function(event,player){
- return player==event.player?event.source:event.player;
- },
- content:function(){
- player.addTempSkill('naxiang2',{player:'phaseBegin'});
- if(!player.storage.naxiang2) player.storage.naxiang2=[];
- player.storage.naxiang2.add(lib.skill.naxiang.logTarget(trigger,player));
- player.markSkill('naxiang2');
- },
- ai:{
- combo:'caiwang',
- },
- },
- naxiang2:{
- onremove:true,
- intro:{
- content:'已接受$的投降;对这些角色发动【才望】时将“弃置”改为“获得”',
- },
- },
- wangong:{
- audio:2,
- trigger:{player:'useCard'},
- forced:true,
- filter:function(event,player){
- return get.type(event.card,false)=='basic';
- },
- content:function(){
- player.addSkill('wangong2');
- },
- },
- wangong2:{
- trigger:{player:'useCard1'},
- forced:true,
- popup:false,
- firstDo:true,
- charlotte:true,
- content:function(){
- player.removeSkill('wangong2');
- if(trigger.card.name=='sha') trigger.baseDamage++;
- },
- mod:{
- cardUsable:function(card){
- if(card.name=='sha') return Infinity;
- },
- targetInRange:function(card){
- if(card.name=='sha') return true;
- },
- },
- mark:true,
- intro:{
- content:'使用【杀】无距离和次数限制且伤害+1',
- },
- },
//陶谦和曹嵩
reyirang:{
audio:'yirang',
@@ -1147,108 +974,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){
}
},
},
- //李肃
- qiaoyan:{
- trigger:{player:'damageBegin2'},
- forced:true,
- filter:function(event,player){
- return player!=_status.currentPhase&&event.source&&event.source!=player;
- },
- logTarget:'source',
- content:function(){
- 'step 0'
- var cards=player.getStorage('qiaoyan');
- if(cards.length){
- var source=trigger.source;
- player.$give(cards,source,false);
- source.gain(cards,'log');
- player.unmarkAuto('qiaoyan',cards);
- event.goto(3);
- }
- else{
- trigger.cancel();
- player.draw();
- }
- 'step 1'
- var hs=player.getCards('he');
- if(!hs.length) event.finish();
- else if(hs.length==1) event._result={bool:true,cards:hs};
- else player.chooseCard('he',true,'将一张牌作为“珠”置于武将牌上');
- 'step 2'
- if(result.bool&&result.cards&&result.cards.length){
- var cards=result.cards;
- player.lose(cards,ui.special,'visible','toStorage');
- player.$give(cards,player,false);
- player.markAuto('qiaoyan',cards);
- game.log(player,'将',cards,'放在了武将牌上');
- }
- event.finish();
- 'step 3'
- game.delayx();
- },
- marktext:'珠',
- intro:{content:'cards',onunmark:'throw'},
- ai:{
- filterDamage:true,
- skillTagFilter:function(player,tag,arg){
- if(!player.getStorage('qiaoyan').length) return false;
- if(arg&&arg.player){
- if(arg.player.hasSkillTag('jueqing',false,player)) return false;
- }
- },
- combo:'xianzhu',
- },
- },
- xianzhu:{
- trigger:{player:'phaseUseBegin'},
- direct:true,
- locked:true,
- filter:function(event,player){
- return player.storage.qiaoyan&&player.storage.qiaoyan.length>0;
- },
- content:function(){
- 'step 0'
- event.cards=player.storage.qiaoyan;
- player.chooseTarget(true,'请选择【献珠】的目标','令一名角色获得'+get.translation(event.cards)+'。若该角色不为你自己,则你令其视为对其攻击范围内的另一名角色使用【杀】').set('ai',function(target){
- var player=_status.event.player;
- var eff=get.sgn(get.attitude(player,target))*get.value(_status.event.getParent().cards[0],target);
- if(player!=target) eff+=Math.max.apply(null,game.filterPlayer(function(current){
- if(current!=target&&target.inRange(current)&&target.canUse('sha',current)) return true;
- }).map(function(current){
- return get.effect(current,{name:'sha'},target,player);
- }));
- return eff;
- });
- 'step 1'
- if(result.bool){
- var target=result.targets[0];
- event.target=target;
- player.logSkill('xianzhu',target);
- player.$give(cards,target,false);
- target.gain(cards,'log');
- player.unmarkAuto('qiaoyan',cards);
- }
- else event.finish();
- 'step 2'
- game.delayx();
- if(player!=target&&target.isIn()&&player.isIn()&&game.hasPlayer(function(current){
- return current!=target&&target.inRange(current)&&target.canUse('sha',current);
- })){
- var str=get.translation(target);
- player.chooseTarget(true,'选择'+str+'攻击范围内的一名角色,视为'+str+'对其使用【杀】',function(card,player,target){
- var source=_status.event.target;
- return source.inRange(target)&&source.canUse('sha',target);
- }).set('target',target).set('ai',function(target){
- var evt=_status.event;
- return get.effect(target,{name:'sha'},evt.target,evt.player)
- });
- }
- else event.finish();
- 'step 3'
- if(result.bool) target.useCard({name:'sha',isCard:true},result.targets[0],false);
- },
- ai:{combo:'qiaoyan'},
- },
recangchu:{
audio:2,
trigger:{
@@ -1459,243 +1184,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
},
},
- huirong:{
- trigger:{player:'showCharacterAfter'},
- forced:true,
- filter:function(event,player){
- return event.toShow&&event.toShow.contains('jin_yanghuiyu')&&game.hasPlayer(function(target){
- var num=target.countCards('h');
- return num>target.hp||numtarget.hp||numtarget.hp) return -att*(num-target.hp);
- return att*Math.max(0,Math.min(5,target.hp)-target.countCards('h'));
- });
- 'step 1'
- if(result.bool){
- var target=result.targets[0];
- player.line(target,'green');
- if(target.countCards('h')1||!game.hasPlayer(function(current){
- return current!=player&&(get.realAttitude||get.attitude)(current,player)<0&¤t.hasSkill('ciwei')&¤t.countCards('he')>0;
- })) return;
- if(player.getHistory('useCard').length==0){
- if(['basic','trick'].contains(get.type(card))) return num+10;
- return;
- }
- if(!['basic','trick'].contains(get.type(card))) return num+10;
- if(!player._ciwei_temp){
- player._ciwei_temp=true;
- num/=Math.max(1,player.getUseValue(card));
- }
- delete player._ciwei_temp;
- return num;
- },
- },
- },
- caiyuan:{
- trigger:{player:'phaseJieshuBegin'},
- forced:true,
- filter:function(event,player){
- return !player.hasSkill('caiyuan_mark')&&player.phaseNumber>1;
- },
- content:function(){
- player.draw(2);
- },
- group:'caiyuan_count',
- subSkill:{
- mark:{
- //mark:true,
- marktext:'媛',
- charlotte:true,
- intro:{content:'已扣减过体力'},
- },
- count:{
- trigger:{player:'changeHp'},
- silent:true,
- charlotte:true,
- filter:function(event,player){
- return event.num<0&&!player.hasSkill('caiyuan_mark');
- },
- content:function(){
- player.addTempSkill('caiyuan_mark',{player:'phaseAfter'});
- if(player.hasSkill('caiyuan')) player.markSkill('caiyuan_mark');
- },
- },
- },
- },
- shibao_skill:{
- locked:false,
- onremove:function(player){
- player.removeSkill('shibao_skill_count');
- player.removeGaintag('shibao_skill');
- },
- mod:{
- targetInRange:function(card,player,target){
- if(!card.cards||get.type(card)!='basic') return;
- for(var i of card.cards){
- if(i.hasGaintag('shibao_skill')) return (game.online?player==_status.currentPhase:player.isPhaseUsing());
- }
- },
- cardUsable:function(card,player,target){
- if(!card.cards||get.type(card)!='basic'||!(game.online?player==_status.currentPhase:player.isPhaseUsing())) return;
- for(var i of card.cards){
- if(i.hasGaintag('shibao_skill')) return Infinity;
- }
- },
- aiOrder:function(player,card,num){
- if(get.itemtype(card)=='card'&&card.hasGaintag('shibao_skill')&&get.type(card)=='basic') return num-0.1;
- },
- },
- trigger:{player:'useCard2'},
- direct:true,
- filterx:function(event,player){
- if(!player.isPhaseUsing()) return false;
- return player.getHistory('lose',function(evt){
- if(evt.getParent()!=event) return false;
- for(var i in evt.gaintag_map){
- if(evt.gaintag_map[i].contains('shibao_skill')) return true;
- }
- return false;
- }).length>0;
- },
- filter:function(event,player){
- if(!lib.skill.shibao_skill.filterx(event,player)) return false;
- if(get.type(event.card)!='trick') return false;
- if(event.targets&&event.targets.length>0) return true;
- var info=get.info(event.card);
- if(info.allowMultiple==false) return false;
- if(event.targets&&!info.multitarget){
- if(game.hasPlayer(function(current){
- return !event.targets.contains(current)&&lib.filter.targetEnabled2(event.card,player,current)&&lib.filter.targetInRange(event.card,player,current);
- })){
- return true;
- }
- }
- return false;
- },
- content:function(){
- 'step 0'
- var prompt2='为'+get.translation(trigger.card)+'增加或减少一个目标'
- player.chooseTarget(get.prompt('shibao_skill'),function(card,player,target){
- var player=_status.event.player;
- if(_status.event.targets.contains(target)) return true;
- return lib.filter.targetEnabled2(_status.event.card,player,target)&&lib.filter.targetInRange(_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)*(_status.event.targets.contains(target)?-1:1);
- }).set('targets',trigger.targets).set('card',trigger.card);
- 'step 1'
- if(result.bool){
- if(!event.isMine()&&!event.isOnline()) game.delayx();
- event.targets=result.targets;
- }
- else{
- event.finish();
- }
- 'step 2'
- if(event.targets){
- player.logSkill('shibao_skill',event.targets);
- if(trigger.targets.contains(event.targets[0])) trigger.targets.removeArray(event.targets);
- else trigger.targets.addArray(event.targets);
- }
- },
- group:['shibao_skill_equip','shibao_skill_silent'],
- subSkill:{
- equip:{
- trigger:{player:'useCard'},
- filter:function(event,player){
- return get.type(event.card)=='equip'&&lib.skill.shibao_skill.filterx(event,player);
- },
- forced:true,
- locked:false,
- content:function(){
- player.draw();
- },
- },
- silent:{
- trigger:{
- player:['enterGame','useCard1'],
- global:'gameDrawAfter',
- },
- silent:true,
- firstDo:true,
- filter:function(event,player){
- if(event.name=='useCard') return get.type(event.card)=='basic'&&lib.skill.shibao_skill.filterx(event,player)&&event.addCount!==false;
- return true;
- },
- content:function(){
- if(trigger.name=='useCard'){
- trigger.addCount=false;
- var stat=player.getStat();
- if(stat&&stat.card&&stat.card[trigger.card.name]) stat.card[trigger.card.name]--;
- }
- else{
- player.addSkill('shibao_skill_count');
- player.addGaintag(player.getCards('h'),'shibao_skill');
- }
- },
- },
- },
- },
- shibao_skill_count:{
- trigger:{
- player:'gainBegin',
- global:'roundStart',
- },
- silent:true,
- filter:function(event,player){
- if(event.name=='gain') return event.getParent(2).name!='shibao_skill_equip';
- return game.roundNumber>1;
- },
- content:function(){
- if(trigger.name=='gain') trigger.gaintag.add('shibao_skill');
- else player.removeGaintag('shibao_skill');
- },
- },
pianchong:{
audio:2,
trigger:{player:'phaseDrawBegin1'},
@@ -1935,866 +1423,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
},
},
- xinquanbian:{
- audio:'quanbian',
- trigger:{player:['useCard','respond']},
- filter:function(event,player){
- var phase=event.getParent('phaseUse');
- if(!phase||phase.player!=player) return false;
- var suit=get.suit(event.card);
- if(!lib.suit.contains(suit)||!lib.skill.quanbian.hasHand(event)) return false;
- return player.getHistory('useCard',function(evt){
- return evt!=event&&get.suit(evt.card)==suit&&lib.skill.quanbian.hasHand(evt)&&evt.getParent('phaseUse')==phase;
- }).length+player.getHistory('respond',function(evt){
- return evt!=event&&get.suit(evt.card)==suit&&lib.skill.quanbian.hasHand(evt)&&evt.getParent('phaseUse')==phase;
- }).length==0;
- },
- content:function(){
- 'step 0'
- var cards=get.cards(Math.min(5,player.maxHp));
- event.cards=cards;
- var suit=get.suit(trigger.card);
- player.chooseButton(['权变:获得一张不为'+get.translation(suit)+'花色的牌',cards]).set('suit',suit).set('filterButton',function(button){
- return get.suit(button)!=_status.event.suit;
- });
- 'step 1'
- if(result.bool){
- var card=result.links[0];
- cards.remove(card);
- player.gain(card,'gain2','log');
- if(!cards.length) event.finish();
- }
- 'step 2'
- player.chooseCardButton(cards.length,true,cards,'按顺序将卡牌置于牌堆顶(先选择的在上)');
- 'step 3'
- if(result.bool){
- var list=result.links.slice(0);
- while(list.length){
- ui.cardPile.insertBefore(list.pop(),ui.cardPile.firstChild);
- }
- game.updateRoundNumber();
- }
- },
- group:'xinquanbian_count',
- },
- xinquanbian_count:{
- trigger:{player:'useCard1'},
- silent:true,
- firstDo:true,
- filter:function(event,player){
- return player.isPhaseUsing()&&lib.skill.quanbian.hasHand(event)&&get.type(event.card)!='equip';
- },
- content:function(){
- var stat=player.getStat('skill');
- if(!stat.quanbian) stat.quanbian=0;
- stat.quanbian++;
- },
- mod:{
- cardEnabled2:function(card,player){
- var stat=player.getStat('skill');
- if(stat.quanbian&&stat.quanbian>=player.maxHp&&get.position(card)=='h'&&get.type(card,player)!='equip') return false;
- },
- },
- },
- taoyin:{
- audio:2,
- trigger:{player:'showCharacterAfter'},
- logTarget:function(){
- return _status.currentPhase;
- },
- filter:function(event,player){
- var target=_status.currentPhase;
- return target&&target!=player&&target.isAlive();
- },
- check:function(event,player){
- return get.attitude(player,_status.currentPhase)<0;
- },
- content:function(){
- _status.currentPhase.addTempSkill('taoyin2');
- _status.currentPhase.addMark('taoyin2',2,false);
- },
- ai:{
- expose:0.2,
- },
- },
- taoyin2:{
- onremove:true,
- charlotte:true,
- intro:{
- content:'手牌上限-#',
- },
- mod:{
- maxHandcard:function(player,num){
- return num-player.countMark('taoyin2');
- },
- },
- },
- yimie:{
- audio:2,
- usable:1,
- trigger:{source:'damageBegin1'},
- filter:function(event,player){
- return player!=event.player&&event.num-2) return false;
- if(player.hp>2) return true;
- if(player.hp==2&&event.player.hp<3) return false;
- return player.hp>1;
- },
- logTarget:'player',
- content:function(){
- player.loseHp();
- trigger.player.addTempSkill('yimie2');
- trigger.yimie_num=trigger.player.hp-trigger.num;
- trigger.num=trigger.player.hp;
- },
- },
- yimie2:{
- trigger:{player:'damageEnd'},
- forced:true,
- popup:false,
- charlotte:true,
- filter:function(event,player){
- return typeof event.yimie_num=='number';
- },
- content:function(){
- player.recover(trigger.yimie_num);
- },
- },
- ruilve:{
- unique:true,
- audio:2,
- global:'ruilve2',
- zhuSkill:true,
- },
- ruilve2:{
- enable:'phaseUse',
- discard:false,
- lose:false,
- delay:false,
- line:true,
- direct:true,
- clearTime:true,
- prepare:function(cards,player,targets){
- targets[0].logSkill('ruilve');
- },
- prompt:function(){
- var player=_status.event.player;
- var list=game.filterPlayer(function(target){
- return target!=player&&target.hasZhuSkill('ruilve',player);
- });
- var str='将一张具有伤害标签的基本牌或锦囊牌交给'+get.translation(list);
- if(list.length>1) str+='中的一人';
- return str;
- },
- filter:function(event,player){
- if(player.group!='jin') return false;
- if(player.countCards('h',lib.skill.ruilve2.filterCard)==0) return false;
- return game.hasPlayer(function(target){
- return target!=player&&target.hasZhuSkill('ruilve',player)&&!target.hasSkill('ruilve3');
- });
- },
- filterCard:function(card){
- if(!get.tag(card,'damage')) return false;
- var type=get.type(card);
- return (type=='basic'||type=='trick');
- },
- log:false,
- visible:true,
- filterTarget:function(card,player,target){
- return target!=player&&target.hasZhuSkill('ruilve',player)&&!target.hasSkill('ruilve3');
- },
- content:function(){
- target.gain(cards,player,'giveAuto');
- target.addTempSkill('ruilve3','phaseUseEnd');
- },
- ai:{
- expose:0.3,
- order:1,
- result:{
- target:5
- }
- }
- },
- ruilve3:{},
- tairan:{
- audio:2,
- trigger:{player:'phaseEnd'},
- forced:true,
- filter:function(event,player){
- return player.hp0){
- player.storage.tairan2+=num;
- player.recover(num);
- }
- 'step 1'
- if(player.countCards('h')0) player.loseHp(map);
- var hs=player.getCards('h',function(card){
- return card.hasGaintag('tairan');
- });
- if(hs.length) player.discard(hs);
- player.removeSkill('tairan2');
- },
- },
- baoqie:{
- audio:2,
- trigger:{player:'showCharacterAfter'},
- forced:true,
- filter:function(event,player){
- return event.toShow&&event.toShow.contains('jin_xiahouhui');
- },
- content:function(){
- 'step 0'
- var card=get.cardPile(function(card){
- return get.subtype(card,false)=='equip5'&&!get.cardtag(card,'gifts');
- });
- if(!card){
- event.finish();
- return;
- }
- event.card=card;
- player.gain(card,'gain2');
- 'step 1'
- if(player.getCards('h').contains(card)&&get.subtype(card)=='equip5') player.chooseUseTarget(card).nopopup=true;
- },
- },
- jyishi:{
- audio:2,
- trigger:{global:'loseAfter'},
- direct:true,
- filter:function(event,player){
- return (event.type=='discard'&&event.hs&&event.hs.filterInD('d').length&&event.player.isAlive()&&
- event.player!=player&&event.player.isPhaseUsing()&&!player.hasSkill('jyishi2'));
- },
- content:function(){
- 'step 0'
- event.cards=trigger.hs.filterInD('d');
- var str='是否发动【宜室】令'+get.translation(trigger.player)+'获得一张牌';
- if(event.cards.length>1) str+=',然后获得其余的牌';
- str+='?';
- player.chooseButton([str,event.cards]).set('ai',function(button){
- var card=button.link;
- var source=_status.event.source;
- if(get.attitude(player,source)>0) return Math.max(1,source.getUseValue(card,null,true));
- var cards=_status.event.getParent().cards.slice(0);
- if(cards.length==1) return -get.value(card);
- cards.remove(card);
- return (get.value(cards)-get.value(card)-2);
- }).set('source',trigger.player);
- 'step 1'
- if(result.bool){
- player.addTempSkill('jyishi2');
- player.logSkill('jyishi',trigger.player);
- if(cards.length>1){
- trigger.player.$gain2(result.links[0]);
- trigger.player.gain(result.links[0],'log');
- }
- else trigger.player.gain(result.links[0],'gain2');
- cards.remove(result.links[0]);
- if(cards.length) player.gain(cards,'gain2');
- }
- },
- },
- jyishi2:{},
- shiduo:{
- audio:2,
- enable:'phaseUse',
- usable:1,
- filter:function(event,player){
- return game.hasPlayer(function(target){
- return player!=target&&player.canCompare(target);
- })
- },
- filterTarget:function(card,player,target){
- return player!=target&&player.canCompare(target);
- },
- content:function(){
- 'step 0'
- player.chooseToCompare(target);
- 'step 1'
- if(result.bool&&target.isAlive()){
- var cards=target.getCards('h');
- if(cards.length) player.gain(cards,target,'giveAuto');
- }
- else event.finish();
- 'step 2'
- var num=Math.floor(player.countCards('h')/2);
- if(num&&target.isAlive()) player.chooseCard('h',num,true,'交给'+get.translation(target)+get.cnNumber(num)+'张牌')
- else event.finish();
- 'step 3'
- if(result.bool&&result.cards&&result.cards.length) target.gain(result.cards,player,'giveAuto');
- },
- ai:{
- order:1,
- result:{
- target:function(player,target){
- var delta=(target.countCards('h')-player.countCards('h'));
- if(delta<0) return 0;
- return -1-delta;
- },
- },
- },
- },
- tuishi:{
- audio:2,
- trigger:{player:'showCharacterAfter'},
- forced:true,
- filter:function(event,player){
- var target=_status.currentPhase;
- return player!=target&&target&&target.isAlive()&&event.toShow&&event.toShow.contains('jin_simazhao');
- },
- content:function(){
- player.addTempSkill('tuishi2');
- },
- },
- tuishi2:{
- trigger:{global:'phaseEnd'},
- direct:true,
- filter:function(event,player){
- var target=_status.currentPhase;
- return target!=player&&target&&target.isAlive()&&game.hasPlayer(function(current){
- return current!=target&&target.inRange(current);
- });
- },
- content:function(){
- 'step 0'
- var target=_status.currentPhase;
- event.target=target;
- player.chooseTarget(get.prompt2('tuishi',event.target),function(card,player,target){
- var source=_status.event.source;
- return source!=target&&source.inRange(target);
- }).set('source',target).set('goon',get.damageEffect(target,player,player)>0).set('ai',function(target){
- if(!_status.event.goon) return 0;
- var evt=_status.event;
- return get.effect(target,{name:'sha'},evt.source,evt.player)
- });
- 'step 1'
- if(result.bool){
- event.target2=result.targets[0];
- player.logSkill('tuishi');
- player.line2([target,event.target2]);
- game.delayx();
- }
- else event.finish();
- 'step 2'
- target.chooseToUse({
- preTarget:event.target2,
- prompt:'请对'+get.translation(event.target2)+'使用一张【杀】,或受到来自'+get.translation(player)+'的一点伤害',
- filterCard:function(card,player){
- return get.name(card)=='sha'&&lib.filter.filterCard.apply(this,arguments);
- },
- filterTarget:function(card,player,target){
- return target==_status.event.preTarget&&lib.filter.filterTarget.apply(this,arguments);
- },
- addCount:false,
- });
- 'step 3'
- if(!result.bool) target.damage();
- },
- },
- choufa:{
- enable:'phaseUse',
- audio:2,
- usable:1,
- filter:function(event,player){
- return game.hasPlayer(function(current){
- return lib.skill.choufa.filterTarget(null,player,current);
- });
- },
- filterTarget:function(card,player,target){
- return target!=player&&!target.hasSkill('choufa2')&&target.countCards('h')>0;
- },
- content:function(){
- 'step 0'
- player.choosePlayerCard(target,'h',true);
- 'step 1'
- player.showCards(result.cards);
- var type=get.type2(result.cards[0],target);
- target.storage.choufa2=type;
- target.addTempSkill('choufa2',{player:'phaseAfter'});
- },
- ai:{
- order:9,
- result:{
- target:function(player,target){
- return -target.countCards('h');
- },
- },
- },
- },
- choufa2:{
- onremove:true,
- charlotte:true,
- mark:true,
- intro:{content:'手牌中的非$牌均视为杀'},
- mod:{
- cardname:function(card,player){
- if(get.type2(card,false)!=player.storage.choufa2) return 'sha';
- },
- cardnature:function(card,player){
- if(get.type2(card,false)!=player.storage.choufa2) return false;
- },
- },
- },
- zhaoran:{
- audio:2,
- trigger:{player:'phaseUseBegin'},
- content:function(){
- player.addTempSkill('zhaoran2','phaseUseEnd');
- },
- },
- zhaoran2:{
- audio:'zhaoran',
- global:'zhaoran3',
- trigger:{
- player:'loseAfter',
- global:['equipAfter','addJudgeAfter','gainAfter','loseAsyncAfter'],
- },
- forced:true,
- charlotte:true,
- init:function(player,skill){
- if(!player.storage[skill]) player.storage[skill]=[];
- },
- onremove:true,
- filter:function(event,player){
- var evt=event.getl(player);
- if(!evt||!evt.hs||!evt.hs.length) return false;
- var list=player.getStorage('zhaoran2');
- for(var i of evt.hs){
- var suit=get.suit(i,player);
- if(!list.contains(suit)&&!player.countCards('h',{suit:suit})) return true;
- }
- return false;
- },
- content:function(){
- 'step 0'
- var list=[];
- var suits=get.copy(player.storage.zhaoran2);
- suits.addArray(player.getCards('h').map(function(card){
- return get.suit(card);
- }));
- var evt=trigger.getl(player);
- for(var i of evt.hs){
- var suit=get.suit(i,player);
- if(!suits.contains(suit)) list.add(suit);
- }
- event.count=list.length;
- player.markAuto('zhaoran2',list);
- 'step 1'
- event.count--;
- var filterTarget=function(card,player,target){
- return target!=player&&target.countDiscardableCards(player,'he')>0;
- }
- if(!game.hasPlayer(function(current){
- return filterTarget(null,player,current);
- })) event._result={bool:false};
- else player.chooseTarget(filterTarget,'弃置一名其他角色的一张牌或摸一张牌').set('ai',function(target){
- var att=get.attitude(player,target);
- if(att>=0) return 0;
- if(target.countCards('he',function(card){
- return get.value(card)>5;
- })) return -att;
- return 0;
- });
- 'step 2'
- if(!result.bool) player.draw();
- else{
- var target=result.targets[0];
- player.line(target,'green');
- player.discardPlayerCard(target,true,'he');
- }
- if(event.count>0) event.goto(1);
- },
- intro:{
- content:'已因$牌触发过效果',
- },
- },
- zhaoran3:{
- ai:{
- viewHandcard:true,
- skillTagFilter:function(player,arg,target){
- return target!=player&&target.hasSkill('zhaoran2');
- }
- },
- },
- chengwu:{
- zhuSkill:true,
- mod:{
- inRange:function(from,to){
- if(!from.hasZhuSkill('chengwu')||from._chengwu) return;
- from._chengwu=true;
- var bool=game.hasPlayer(function(current){
- return current!=from&¤t!=to&¤t.group=='jin'&&from.hasZhuSkill('chengwu',current)&¤t.inRange(to);
- });
- delete from._chengwu;
- if(bool) return true;
- },
- },
- },
- shiren:{
- trigger:{player:'showCharacterAfter'},
- hiddenSkill:true,
- logTarget:function(){
- return _status.currentPhase;
- },
- filter:function(event,player){
- if(!event.toShow||!event.toShow.contains('jin_wangyuanji')) return false;
- var target=_status.currentPhase;
- return target&&target!=player&&target.isAlive()&&target.countCards('h')>0;
- },
- content:function(){
- var next=game.createEvent('yanxi',false);
- next.player=player;
- next.target=_status.currentPhase;
- next.setContent(lib.skill.yanxi.content);
- },
- },
- yanxi:{
- enable:'phaseUse',
- usable:1,
- filterTarget:function(card,player,target){
- return target!=player&&target.countCards('h')>0;
- },
- filter:function(event,player){
- return game.hasPlayer(function(current){
- return current!=player&¤t.countCards('h')>0;
- });
- },
- content:function(){
- 'step 0'
- event.card=target.getCards('h').randomGet();
- var cards;
- cards=get.cards(2);
- event.cards=cards.concat([event.card]);
- while(cards.length){
- ui.cardPile.insertBefore(cards.pop().fix(),ui.cardPile.firstChild);
- }
- if(get.mode()=='guozhan'){
- var num=ui.cardPile.childElementCount;
- var num1=get.rand(1,num-1),num2=get.rand(1,num-1);
- if(num1==num2){
- if(num1==0) num2++;
- else num1--;
- }
- event.cards=[event.card,ui.cardPile.childNodes[num1],ui.cardPile.childNodes[num2]];
- }
- game.updateRoundNumber();
- event.cards.randomSort();
- game.log(player,'展示了',event.cards);
- event.videoId=lib.status.videoId++;
- var str=get.translation(player)+'对'+get.translation(target)+'发动了【宴戏】';
- game.broadcastAll(function(str,id,cards){
- var dialog=ui.create.dialog(str,cards);
- dialog.videoId=id;
- },str,event.videoId,event.cards);
- game.addVideo('showCards',player,[str,get.cardsInfo(event.cards)]);
- game.delay(2);
- 'step 1'
- var func=function(id,target){
- var dialog=get.idDialog(id);
- if(dialog) dialog.content.firstChild.innerHTML='猜猜哪张是'+get.translation(target)+'的手牌?';
- };
- if(player==game.me) func(event.videoId,target);
- else if(player.isOnline()) player.send(func,event.videoId,target);
- 'step 2'
- var next=player.chooseButton(true);
- next.set('dialog',event.videoId);
- next.set('ai',function(button){
- if(_status.event.answer) return button.link==_status.event.answer?1:0;
- return get.value(button.link,_status.event.player);
- });
- if(player.hasSkillTag('viewHandcard',null,target,true)) next.set('answer',card);
- 'step 3'
- game.broadcastAll('closeDialog',event.videoId);
- player.addTempSkill('yanxi2');
- var card2=result.links[0];
- if(card2==card){
- player.popup('洗具');
- cards.remove(card2);
- player.$gain2(cards);
- player.gain(cards,'log').gaintag.add('yanxi');
- player.gain(card,target,'bySelf','give').gaintag.add('yanxi');
- }
- else{
- player.popup('杯具');
- player.gain(card2,'gain2').gaintag.add('yanxi');
- }
- },
- ai:{
- order:6,
- result:{
- player:1,
- target:-0.6,
- },
- },
- },
- yanxi2:{
- mod:{
- ignoredHandcard:function(card,player){
- if(card.hasGaintag('yanxi')) return true;
- },
- cardDiscardable:function(card,player,name){
- if(name=='phaseDiscard'&&card.hasGaintag('yanxi')) return false;
- },
- },
- onremove:function(player){
- player.removeGaintag('yanxi');
- },
- },
- sanchen:{
- enable:'phaseUse',
- usable:1,
- filter:function(event,player){
- var stat=player.getStat('sanchen');
- return game.hasPlayer(function(current){
- return (!stat||!stat.contains(current));
- });
- },
- filterTarget:function(card,player,target){
- var stat=player.getStat('sanchen');
- return (!stat||!stat.contains(target));
- },
- content:function(){
- 'step 0'
- var stat=player.getStat();
- if(!stat.sanchen) stat.sanchen=[];
- stat.sanchen.push(target);
- if(get.mode()!='guozhan') player.addMark('sanchen',1,false);
- target.draw(3);
- 'step 1'
- if(!target.countCards('he')) event.finish();
- else target.chooseToDiscard('he',true,3).set('ai',function(card){
- var list=ui.selected.cards.map(function(i){
- return get.type2(i);
- });
- if(!list.contains(get.type2(card))) return 7-get.value(card);
- return -get.value(card);
- });
- 'step 2'
- if(result.bool&&result.cards&&result.cards.length){
- var list=[];
- for(var i of result.cards) list.add(get.type2(i));
- if(list.length==result.cards.length){
- target.draw();
- player.getStat('skill').sanchen--;
- if(get.mode()=='guozhan') player.addTempSkill('pozhu');
- }
- }
- else{
- target.draw();
- player.getStat('skill').sanchen--;
- if(get.mode()=='guozhan') player.addTempSkill('pozhu');
- }
- },
- ai:{
- order:9,
- threaten:1.7,
- result:{
- target:function(player,target){
- if(target.hasSkillTag('nogain')) return 0.1;
- return Math.sqrt(target.countCards('he'));
- },
- },
- },
- intro:{
- content:'已发动过#次技能',
- },
- marktext:'陈',
- },
- zhaotao:{
- forbid:['guozhan'],
- trigger:{player:'phaseZhunbeiBegin'},
- forced:true,
- juexingji:true,
- skillAnimation:true,
- animationColor:'thunder',
- filter:function(event,player){
- return player.countMark('sanchen')>2;
- },
- content:function(){
- player.awakenSkill('zhaotao');
- player.loseMaxHp();
- player.addSkillLog('pozhu');
- },
- derivation:'pozhu',
- },
- pozhu:{
- enable:'phaseUse',
- viewAsFilter:function(player){
- return !player.hasSkill('pozhu3')&&player.countCards('hs')>0;
- },
- viewAs:{name:'chuqibuyi'},
- filterCard:true,
- position:'hs',
- check:function(card){
- return 7-get.value(card);
- },
- group:'pozhu2',
- },
- pozhu2:{
- trigger:{player:'useCardAfter'},
- silent:true,
- filter:function(event,player){
- return event.skill=='pozhu'&&(get.mode()=='guozhan'||!player.getHistory('sourceDamage',function(evt){
- return evt.card==event.card;
- }).length);
- },
- content:function(){
- player.addTempSkill('pozhu3');
- },
- },
- pozhu3:{},
- xijue:{
- audio:2,
- trigger:{
- global:'gameDrawAfter',
- player:['enterGame','showCharacterAfter'],
- },
- forced:true,
- filter:function(event,player){
- if(player._xijue) return false;
- if(get.mode()=='guozhan') return event.name=='showCharacter'&&event.toShow&&event.toShow.contains('gz_zhanghuyuechen');
- return event.name!='showCharacter';
- },
- content:function(){
- player.addMark('xijue',4);
- player._xijue=true;
- },
- intro:{
- name2:'爵',
- content:'mark',
- },
- derivation:['xijue_tuxi','xijue_xiaoguo'],
- group:['xijue_gain','xijue_tuxi','xijue_xiaoguo'],
- },
- xijue_gain:{
- audio:'xijue',
- trigger:{player:'phaseEnd'},
- forced:true,
- filter:function(event,player){
- var stat=player.getStat();
- return stat.damage&&stat.damage>0;
- },
- content:function(){
- player.addMark('xijue',player.getStat().damage);
- },
- },
- xijue_tuxi:{
- audio:2,
- trigger:{
- player:"phaseDrawBegin2",
- },
- direct:true,
- filter:function(event,player){
- return event.num>0&&!event.numFixed&&player.hasMark('xijue')&&game.hasPlayer(function(target){
- return player!=target&&target.countCards('h')>0;
- });
- },
- content:function (){
- "step 0"
- var num=trigger.num;
- if(get.mode()=='guozhan'&&num>2) num=2;
- player.chooseTarget('是否弃置一枚“爵”发动【突袭】?','获得至多'+get.translation(num)+'名角色的各一张手牌,然后少摸等量的牌',[1,num],function(card,player,target){
- return target.countCards('h')>0&&player!=target;
- },function(target){
- var att=get.attitude(_status.event.player,target);
- if(target.hasSkill('tuntian')) return att/10;
- return 1-att;
- });
- "step 1"
- if(result.bool){
- result.targets.sortBySeat();
- player.logSkill('xijue_tuxi',result.targets);
- player.removeMark('xijue',1);
- player.gainMultiple(result.targets);
- trigger.num-=result.targets.length;
- }
- else{
- event.finish();
- }
- "step 2"
- if(trigger.num<=0) game.delay();
- },
- ai:{
- expose:0.2,
- },
- },
- xijue_xiaoguo:{
- audio:2,
- trigger:{global:'phaseJieshuBegin'},
- filter:function(event,player){
- return player.hasMark('xijue')&&event.player.isAlive()&&event.player!=player&&player.countCards('h',function(card){
- if(_status.connectMode) return true;
- return get.type(card)=='basic';
- });
- },
- direct:true,
- content:function(){
- "step 0"
- var nono=(Math.abs(get.attitude(player,trigger.player))<3||trigger.player.hp>(player.countMark('xijue')*1.5)||trigger.player.countCards('e',function(card){
- return get.value(card,trigger.player)<=0;
- }));
- if(get.damageEffect(trigger.player,player,player)<=0){
- nono=true;
- }
- var next=player.chooseToDiscard('是否弃置一枚“爵”和一张基本牌,对'+get.translation(trigger.player)+'发动【骁果】?',{type:'basic'});
- next.set('ai',function(card){
- if(_status.event.nono) return 0;
- return 8-get.useful(card);
- });
- next.set('logSkill',['xijue_xiaoguo',trigger.player]);
- next.set('nono',nono);
- "step 1"
- if(result.bool){
- player.removeMark('xijue',1);
- var nono=(get.damageEffect(trigger.player,player,trigger.player)>=0);
- trigger.player.chooseToDiscard('he','弃置一张装备牌并令'+get.translation(player)+'摸一张牌,或受到一点伤害',{type:'equip'}).set('ai',function(card){
- if(_status.event.nono){
- return 0;
- }
- if(_status.event.player.hp==1) return 10-get.value(card);
- return 9-get.value(card);
- }).set('nono',nono);
- }
- else{
- event.finish();
- }
- "step 2"
- if(result.bool){
- if(get.mode()!='guozhan') player.draw();
- }
- else{
- trigger.player.damage();
- }
- },
- ai:{
- expose:0.3,
- threaten:1.3
- }
- },
hfjieying:{
audio:2,
trigger:{player:'phaseJieshuBegin'},
@@ -2991,173 +1619,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){
}
},
},
- buchen:{
- audio:2,
- trigger:{player:'showCharacterAfter'},
- filter:function(event,player){
- var target=_status.currentPhase;
- return target&&target!=player&&target.countGainableCards(player,'he')>0;
- },
- direct:true,
- content:function(){
- var target=_status.currentPhase;
- player.gainPlayerCard(target,'he',get.prompt('buchen',target)).set('logSkill',['buchen',target]);
- },
- },
- smyyingshi:{
- audio:2,
- enable:'phaseUse',
- locked:true,
- filter:function(event,player){
- return Array.isArray(event.smyyingshi);
- },
- onChooseToUse:function(event){
- if(game.online||!event.player.hasSkill('smyyingshi')) return;
- var cards=[];
- for(var i=0;i0;
- },
- filter:function(event,player){
- var phase=event.getParent('phaseUse');
- if(!phase||phase.player!=player) return false;
- var suit=get.suit(event.card);
- if(!lib.suit.contains(suit)||!lib.skill.quanbian.hasHand(event)) return false;
- return player.getHistory('useCard',function(evt){
- return evt!=event&&get.suit(evt.card)==suit&&lib.skill.quanbian.hasHand(evt)&&evt.getParent('phaseUse')==phase;
- }).length+player.getHistory('respond',function(evt){
- return evt!=event&&get.suit(evt.card)==suit&&lib.skill.quanbian.hasHand(evt)&&evt.getParent('phaseUse')==phase;
- }).length==0;
- },
- direct:true,
- content:function(){
- 'step 0'
- player.chooseControl('cancel2').set('prompt',get.prompt('quanbian')).set('choiceList',[
- '摸一张牌',
- '观看牌堆顶的'+get.cnNumber(player.maxHp)+'张牌并将其中一张置于牌堆底',
- ]).set('ai',function(){
- var player=_status.event.player;
- var suit=get.suit(_status.event.getTrigger().card);
- if(player.countCards('h',function(card){
- return get.suit(card)==suit&&player.hasValueTarget(card,null,true);
- })) return 'cancel2';
- return 0;
- });
- 'step 1'
- if(result.control=='cancel2'){
- event.finish();
- return;
- }
- player.addTempSkill('quanbian2');
- player.storage.quanbian2.add(get.suit(trigger.card));
- player.markSkill('quanbian2');
- if(result.index==0){
- player.draw();
- event.finish();
- return;
- }
- event.cards=get.cards(player.maxHp);
- player.chooseButton(['将一张牌置于牌堆底',event.cards],true);
- 'step 2'
- while(cards.length){
- var card=cards.pop();
- card.fix();
- if(card==result.links[0]) ui.cardPile.appendChild(card);
- else ui.cardPile.insertBefore(card,ui.cardPile.firstChild);
- }
- game.updateRoundNumber();
- },
- },
- quanbian2:{
- init:function(player,skill){
- if(!player.storage[skill]) player.storage[skill]=[];
- },
- onremove:true,
- mod:{
- cardEnabled2:function(card,player){
- if(get.position(card)=='h'&&player.storage.quanbian2.contains(get.suit(card))) return false;
- },
- },
- intro:{
- content:'本回合内不能使用$花色的手牌',
- },
- },
juntun:{
audio:2,
trigger:{player:'phaseZhunbeiBegin'},
@@ -3191,95 +1652,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
},
},
- huishi:{
- audio:2,
- trigger:{player:'phaseDrawBegin1'},
- filter:function(event,player){
- return ui.cardPile.childElementCount%10>0&&!event.numFixed;
- },
- prompt:function(){
- return get.prompt('huishi')+'(当前牌堆尾数:'+ui.cardPile.childElementCount%10+')';
- },
- check:function(event,player){
- return ui.cardPile.childElementCount%10>3;
- },
- content:function(){
- 'step 0'
- trigger.changeToZero();
- event.cards=game.cardsGotoOrdering(get.cards(ui.cardPile.childElementCount%10)).cards;
- var num=Math.ceil(event.cards.length/2);
- var str='按顺序将卡牌置于牌堆底';
- if(event.cards.length>num) str='按顺序将'+get.cnNumber(num)+'张牌置于牌堆底,然后获得其余的牌';
- player.chooseButton([str,'(先选择的在上)
',event.cards],true,num).set('ai',function(card){
- return -get.value(card);
- });
- 'step 1'
- for(var i of result.links){
- cards.remove(i);
- i.fix();
- ui.cardPile.appendChild(i);
- }
- game.updateRoundNumber();
- if(cards.length) player.gain(cards,'gain2','log');
- },
- },
- qingleng:{
- audio:2,
- trigger:{global:'phaseEnd'},
- direct:true,
- filter:function(event,player){
- var target=event.player;
- return target!=player&&!target.storage.nohp&&(target.hp+target.countCards('h'))>=(ui.cardPile.childElementCount%10)&&player.countCards('he')>0&&player.canUse({name:'sha',nature:'ice'},target,false);
- },
- content:function(){
- 'step 0'
- player.chooseCard('he',get.prompt('qingleng',trigger.player),'将一张牌当做冰【杀】对其使用',function(card,player){
- return player.canUse(get.autoViewAs({name:'sha',nature:'ice'},[card]),_status.event.target,false);
- }).set('target',trigger.player).set('ai',function(card){
- if(get.effect(_status.event.target,get.autoViewAs({name:'sha',nature:'ice'},[card]),player)<=0) return false;
- return 6-get.value(card);
- });
- 'step 1'
- if(result.bool){
- player.useCard(get.autoViewAs({name:'sha',nature:'ice'},result.cards),result.cards,false,trigger.player,'qingleng');
- if(!player.storage.qingleng||!player.storage.qingleng.contains(trigger.player)){
- player.draw();
- player.markAuto('qingleng',[trigger.player]);
- player.storage.qingleng.sortBySeat();
- }
- }
- },
- intro:{
- content:'已对$发动过此技能',
- },
- },
- xuanmu:{
- audio:2,
- trigger:{player:'showCharacterAfter'},
- forced:true,
- hiddenSkill:true,
- filter:function(event,player){
- return event.toShow.contains('jin_zhangchunhua')&&player!=_status.currentPhase;
- },
- content:function(){
- player.addTempSkill('xuanmu2');
- },
- },
- xuanmu2:{
- trigger:{player:'damageBegin4'},
- forced:true,
- popup:false,
- content:function(){
- trigger.cancel();
- },
- ai:{
- effect:{
- target:function(card,player,target){
- if(get.tag(card,'damage')&&!player.hasSkillTag('jueqing',false,target)) return 'zerotarget';
- },
- },
- },
- },
decadewuniang:{
trigger:{
player:["useCard","respond"],
@@ -9911,33 +8283,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
},
card:{
- cheliji_sichengliangyu:{
- fullskin:true,
- vanish:true,
- //derivation:'cheliji',
- destroy:'chexuan',
- type:'equip',
- subtype:'equip5',
- skills:['cheliji_sichengliangyu'],
- },
- cheliji_tiejixuanyu:{
- fullskin:true,
- vanish:true,
- //derivation:'cheliji',
- destroy:'chexuan',
- type:'equip',
- subtype:'equip5',
- skills:['cheliji_tiejixuanyu'],
- },
- cheliji_feilunzhanyu:{
- fullskin:true,
- vanish:true,
- //derivation:'cheliji',
- destroy:'chexuan',
- type:'equip',
- subtype:'equip5',
- skills:['cheliji_feilunzhanyu'],
- },
pyzhuren_heart:{
fullskin:true,
derivation:'puyuan',
@@ -10060,21 +8405,15 @@ game.import('character',function(lib,game,ui,get,ai,_status){
liubian:'刘辩(176年-190年3月6日),是汉灵帝刘宏与何皇后的嫡长子。刘辩在灵帝驾崩后继位为帝,史称少帝,由于年幼,实权掌握在临朝称制的母亲何太后和母舅大将军何进手中。少帝在位时期,东汉政权已经名存实亡,他即位后不久即遭遇以何进为首的外戚集团和以十常侍为首的内廷宦官集团这两大敌对政治集团的火并,被迫出宫,回宫后又受制于以“勤王”为名进京的凉州军阀董卓,终于被废为弘农王,成为东汉唯一被废黜的皇帝,其同父异母弟陈留王刘协继位为帝,是为汉献帝。被废黜一年之后,刘辩在董卓胁迫下自尽,时年仅十五岁(一说十八岁),其弟献帝追谥他为怀王。中国古代的史书中称刘辩为皇子辩、少帝和弘农王等。因为在位不逾年,传统上称东汉共十二帝,刘辩与东汉另一位少帝刘懿都不在其中,亦皆无本纪;不过,现代史学界也有观点承认两位少帝均是汉朝皇帝,则刘辩为东汉第十三位皇帝。',
wangrong:'汉灵怀皇后王荣(?~181年),赵国邯郸(今河北邯郸市)人。五官中郎将王苞孙女,汉灵帝刘宏妃子,汉献帝刘协生母。初以良家子选入掖庭,封为美人,服侍汉灵帝。光和四年(181年),生下陈留王刘协,惨遭灵思皇后毒杀。王荣死后,汉灵帝曾作《追德赋》、《令仪颂》。永汉元年(189年),其子刘协即位,是为汉献帝,追谥灵怀皇后,葬于文昭陵。',
hanfu:'韩馥(?—191年),字文节,颍川郡(今河南禹州)人。东汉末年的诸侯,冀州牧。韩馥担任过东汉的御史中丞,之后被董卓举荐为冀州牧;在各诸侯起兵讨伐董卓时,韩馥也是其中之一的参与者。韩馥与袁绍也曾经有意立刘虞为皇帝。当时冀州民殷人盛,兵粮优足,于是袁绍便用计夺取冀州,韩馥被迫投靠张邈;之后张邈与袁绍的使者见面,韩馥以为是要来杀害自己的,于是在厕所中以刻书用的小刀自杀。',
- zhanghuyuechen:'张虎,生卒年不详,雁门马邑(今山西朔城区大夫庄)人。三国时期曹魏将领。名将张辽之子。官至偏将军,袭封晋阳侯,有一子张统。乐綝(195~257年),字号不详,阳平郡卫国县(今河南省清丰县)人。三国时期曹魏将领,右将军乐进的儿子。果毅坚毅,袭封广昌亭侯,累迁扬州刺史。甘露二年,为叛乱的征东大将军诸葛诞所杀,追赠卫尉。',
- duyu:'杜预(222年-285年),字元凯,京兆郡杜陵县(今陕西西安)人,中国魏晋时期军事家、经学家、律学家,曹魏散骑常侍杜恕之子。杜预初仕曹魏,任尚书郎,后成为权臣司马昭的幕僚,封丰乐亭侯。西晋建立后,历任河南尹、安西军司、秦州刺史、度支尚书等职。咸宁四年(278年)接替羊祜出任镇南大将军,镇守荆州。他积极备战,支持晋武帝司马炎对孙吴作战,并在咸宁五年(279年)成为晋灭吴之战的统帅之一。战后因功进封当阳县侯,仍镇荆州。太康五年(285年),杜预被征入朝,拜司隶校尉,途中于邓县逝世,终年六十三岁。获赠征南大将军、开府仪同三司,谥号为成。杜预耽思经籍,博学多通,多有建树,时誉为“杜武库”。著有《春秋左氏传集解》及《春秋释例》等。为明朝之前唯一一个同时进入文庙和武庙之人。',
- xiahouhui:'夏侯徽(211年-234年),字媛容,沛国谯县(今安徽亳州)人,司马师第一任妻子。征南大将军夏侯尚之女,母德阳乡主为大司马曹真之妹。夏侯徽与司马师之间,生有五个女儿。夏侯徽很有见识器度,每当司马师有什么想法时,都由她从旁策划协助。当时司马师之父司马懿位居上将重位,而他的儿子们都有雄才大略。夏侯徽深知司马师绝非曹魏忠臣,而司马师对出身曹魏家族的夏侯徽也非常顾忌。青龙二年(234年),正逢“大疫”、“大病”之年,夏侯徽被司马师毒杀,时年二十四岁,死后葬于峻平陵。西晋建国后,追谥夏侯徽为景怀皇后。',
guozhao:'郭照,电视剧《军师联盟》中的女主角之一,由唐艺昕饰演。原型为文德皇后郭氏(字女王),魏国皇后,张春华的义妹,深爱曹丕,替甄宓抚育曹叡,因甄宓之死被曹叡记恨,曹丕死后,成为皇太后,被曹叡逼上死路。自尽身亡。',
- shibao:'石苞(?~273年),字仲容,渤海南皮(今河北省南皮县)人。三国时曹魏至西晋重要将领,西晋开国功臣。西晋建立后,历任大司马、侍中、司徒等职,封乐陵郡公,卒后谥号为“武”。',
caoanmin:'曹安民(?-197年),沛国谯县(今安徽亳州)人,字安民。东汉时期人物,曹德之子,曹操之侄,曹昂的堂兄弟,曹丕的堂兄,死于宛城之战。按曹丕《典论》记载的“亡兄孝廉子脩、从兄安民遇害。”等情况来看,安民应该是曹操侄子错不了,曹丕是他们属于兄弟关系肯定不会弄错。另外从典论的记载来看安民是和子脩并提的,子脩是曹昂的字,安民则肯定也是字不是名,至于三国志中记载则应取自曹丕之《典论》但陈寿又不知曹安民其名,故写为“长子昂、弟子安民”。',
fanyufeng:'樊夫人,东汉末年人物,昔桂阳太守赵范寡嫂。赵云随刘备平定江南四郡后,刘备以赵云为桂阳太守。赵范居心叵测,要将自己的嫂嫂樊氏嫁给赵云,但遭到赵云的拒绝。后来,赵范逃走,樊氏也下落不明。2001年,应日本日中青少年文化中心成立50周年之邀,北京京剧院赴日进行40场巡回演出,这次访日的剧目都不同程度地进行了加工改编,以符合日本观众的需求。《取桂阳》是根据老本重新排演的,叶金援饰赵云,王怡饰樊玉凤。剧中的樊玉凤成为文武双全的巾帼英雄,被赵云收降,后来在《龙凤呈祥》中也参与堵截东吴的追兵。',
zhaozhong:'赵忠(?—189年),安平人,东汉末年宦官,赵延之兄。桓帝、灵帝时,历为小黄门、中常侍、大长秋、车骑将军等职,封都乡侯。在职时以搜刮暴敛、骄纵贪婪见称,灵帝极为宠信,常谓“赵常侍是我母”。中平六年(189年),何进谋诛宦官,事泄,他和其余几个常侍设计伏杀何进,袁绍、袁术等人闻何进被杀,入宫杀尽宦官,后捕杀赵忠。',
caosong:'曹嵩(?—194年),字巨高,沛郡谯县(今安徽省亳州市)人。东汉大臣,大长秋曹腾的养子,曹操之父亲。门荫入仕,历任司隶校尉、鸿胪卿、大司农,位列九卿,位高权重。中平四年(187年),靠着贿赂中官,出任太尉,位列三公。中平五年(188年),受累于黄巾之乱,坐罪免官。兴平元年(194年),投奔兖州牧曹操,遇害于徐州。延康元年(220年),追尊魏国太王。曹魏建立后,追尊皇帝,谥号为太。',
- simazhou:'司马伷(zhòu)(227年~283年6月12日),字子将,河内郡温县(今河南省温县)人。西晋宗室、将领,晋宣帝司马懿第三子,伏太妃所生。晋景帝司马师、文帝司马昭的同父异母弟,晋武帝司马炎的叔父。司马伷少有才气,在曹魏历任宁朔将军、散骑常侍、征虏将军等职,先后受封南安亭侯、东武乡侯,五等爵制建立后,改封南皮伯。西晋建立后,获封东莞郡王,入朝任尚书右仆射、抚军将军,出外拜镇东大将军。后改封琅邪王,加开府仪同三司。西晋伐吴时,率军出涂中,孙皓向他投降并奉上玉玺。战后因功拜大将军,增邑三千户。太康四年(283年),司马伷去世,享年五十七岁。谥号为武,世称“琅邪武王”。著有《周官宁朔新书》八卷,今已亡佚。',
- huangzu:'黄祖(?-208年),东汉末年将领。刘表任荆州牧时,黄祖出任江夏太守。初平二年(191年),黄祖在与长沙太守孙坚交战时,其部下将孙坚射死,因此与孙家结下仇怨。之后,黄祖多次率部与东吴军队交战,射杀凌操、徐琨等人。建安十三年(208年),在与孙权的交战中,兵败被杀。',
- cheliji:'彻里吉是历史小说《三国演义》中的虚构人物,西羌国王。蜀相诸葛亮伐魏,魏都督曹真驰书赴羌,国王彻里吉即命雅丹丞相与越吉元帅起羌兵一十五万、并战车直扣西平关。后军大败,越吉亡,雅丹被俘,亮将所获羌兵及车马器械,尽给还雅丹,俱放回国。彻里吉感蜀恩义,与之结盟。正史中没有关于彻里吉的记载。',
xiahoujie:'夏侯杰(?—208年),是罗贯中的小说《三国演义》中曹操的部将,征战时常常带在身边。在第42回长坂坡之战中,张飞大吼,从马儿受惊跌下马来而死。',
ruanyu:'阮瑀(约165—212年),字元瑜,陈留尉氏(今河南开封市尉氏县)人,是东汉末年文学家,建安七子之一。阮瑀所作章表书记很出色,当时军国书檄文字,多为阮瑀与陈琳所拟。名作有《为曹公作书与孙权》。诗有《驾出北郭门行》,描写孤儿受后母虐待的苦难遭遇,比较生动形象。年轻时曾受学于蔡邕,蔡邕称他为“奇才”。后徙为丞相仓曹掾属。诗歌语言朴素,往往能反映出一般的社会问题。阮瑀的音乐修养颇高,他的儿子阮籍,孙子阮咸皆当时名人,位列“竹林七贤”,妙于音律。明人辑有《阮元瑜集》。',
- weiguan:'卫瓘(220年-291年),字伯玉。河东郡安邑县(今山西省夏县)人。三国曹魏后期至西晋初年重臣、书法家,曹魏尚书卫觊之子。卫瓘出身官宦世家,年轻时仕官于曹魏,历任尚书郎、散骑常侍、侍中、廷尉等职。后以镇西军司、监军身份参与伐蜀战争。蜀汉亡后,与钟会一道逮捕邓艾;钟会谋反时,又成功平息叛乱,命田续杀邓艾父子。回师后转任督徐州诸军事、镇东将军,封菑阳侯。西晋建立后,历任青州、幽州刺史、征东大将军等职,成功化解北方边境威胁,因功进爵菑阳公。后入朝为尚书令、侍中,又升任司空,领太子少傅。后逊位,拜太保。晋惠帝即位后,与贾皇后对立,终在政变中满门遇害,享年七十二岁。卫瓘善隶书及章草。不仅兼工各体,还能学古人之长,是颇有创意的书法家。唐朝张怀瓘《书断》中评其章草为“神品”。',
+ liangxing:'梁兴(?-212年),武威郡姑臧人也,东汉末年凉州军阀之一。与张横、贾诩、段煨是同乡,曾斩杀李傕。建安十六年,同韩遂、马超联合,起兵反抗曹操。梁兴率步骑五千夜袭曹军先头部队徐晃,被击退。联军战败后,梁兴逃到蓝田,劫掠周围郡县。夏侯渊进攻蓝田联合郑浑征讨梁兴,梁兴战败,不知所终。',
+ zhangmiao:'张邈(?-195年),字孟卓,东平寿张(今山东东平县)人。东汉大臣、名士,“八厨”之一。举孝廉出身,授骑都尉,出任陈留太守。参与讨伐董卓,参加汴水之战,归附于曹操。兴平元年(194年),趁着曹操讨伐徐州牧陶谦,联合陈宫发动叛乱,迎立吕布为兖州牧。受到曹操讨伐,兵败投奔徐州牧刘备。兴平二年,张邈向袁术借兵途中,被部下所杀。',
},
characterTitle:{
wulan:'#b对决限定武将',
@@ -10126,9 +8465,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
},
perfectPair:{
- jin_simayi:['jin_zhangchunhua'],
- jin_simazhao:['jin_wangyuanji'],
- jin_simashi:['jin_xiahouhui','jin_yanghuiyu'],
},
characterReplace:{
lijue:['lijue','ns_lijue'],
@@ -10281,7 +8617,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
xpchijie_info:'每回合限一次。①当你受到其他角色使用的牌造成的伤害时,你可以令此牌对所有目标无效。②其他角色使用的牌结算完成时,若你是此牌的目标之一且此牌未造成过伤害,则你可以获得此牌对应的所有实体牌。',
xpchijie2:'持节',
yinju:'引裾',
- yinju_info:'限定技,出牌阶段,你可以选择一名其他角色。若如此做,当你于此阶段内使用装备牌指定目标或使用延时锦囊牌指定除其外的其他角色为目标或使用其他牌指定其为目标时,你摸一张牌;当你即将对其造成伤害时,防止此伤害,然后其回复等量的体力。',
+ yinju_info:'限定技,出牌阶段,你可以选择一名其他角色。若如此做,当你于此阶段内使用牌指定其为目标后,你摸一张牌;当你即将对其造成伤害时,防止此伤害,然后其回复等量的体力。',
yinju2:'引裾',
spjiedao:"截刀",
@@ -10517,17 +8853,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){
recaishi_info:'摸牌阶段结束时,若你于本阶段内因摸牌而获得的所有的牌:花色均相同,你将〖忠鉴〗于本回合内改为“出牌阶段限两次”。不均相同,你可回复1点体力。若如此做,你本回合内不能对自己使用牌。',
decadewuniang:'武娘',
decadewuniang_info:'当你使用或打出【杀】时,你可以获得一名其他角色的一张牌。若如此做,其摸一张牌。(若你已发动许身,则关索也摸一张牌)',
- jin_zhangchunhua:'晋张春华',
- jin_zhangchunhua_ab:'张春华',
- huishi:'慧识',
- huishi_info:'摸牌阶段,你可以放弃摸牌,改为观看牌堆顶的X张牌,获得其中的一半(向下取整),然后将其余牌置入牌堆底。(X为牌堆数量的个位数)',
- qingleng:'清冷',
- qingleng_info:'一名角色的回合结束时,若其体力值与手牌数之和不小于X,则你可将一张牌当无距离限制的冰属性【杀】对其使用(X为牌堆数量的个位数)。若你本局游戏内未对其发动过此技能,则你摸一张牌。',
- xuanmu:'宣穆',
- xuanmu2:'宣穆',
- xuanmu_info:'锁定技,隐匿技。你于其他角色的回合登场时,防止你受到的伤害直到回合结束。',
- jin_simayi:'晋司马懿',
- jin_simayi_ab:'司马懿',
dongxie:'董翓',
juntun:'军屯',
juntun_info:'锁定技,准备阶段,若X大于1,则你减1点体力上限并摸X张牌(X为你的体力上限)。',
@@ -10553,76 +8878,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){
hfjieying_info:'结束阶段,你可以选择一名其他角色,该角色下回合使用【杀】或普通锦囊牌无距离限制且可多指定一个目标,且当其造成伤害后,其无法再使用牌直到回合结束。 ',
weipo:'危迫',
weipo_info:'锁定技,其他角色使用【杀】或普通锦囊牌指定你为目标后,若你的手牌数小于X,则你将手牌摸至X张,并记录摸牌事件结算后的手牌数Y。此牌结算结束后,若你的手牌数小于Y,则你将一张手牌交给此牌的使用者,且此技能失效直到你的下回合开始。(X为你的体力上限且至多为5) ',
- zhanghuyuechen:'张虎乐綝',
- xijue:'袭爵',
- xijue_gain:'袭爵',
- xijue_info:'锁定技,游戏开始时,你获得4枚“爵”。回合结束时,你获得X枚“爵”(X为你本回合内造成的伤害数)。你可弃置一枚“爵”并在合适的时机发动〖突袭〗和〖骁果〗。',
- xijue_info_guozhan:'锁定技,当你首次明置此武将牌时,你获得4枚“爵”。回合结束时,你获得X枚“爵”(X为你本回合内造成的伤害数)。你可弃置一枚“爵”并在合适的时机发动〖突袭〗和〖骁果〗。',
- xijue_tuxi:'突袭',
- xijue_tuxi_info:'摸牌阶段摸牌时,你可以少摸任意张牌,然后获得等量的角色的各一张手牌。',
- xijue_tuxi_info_guozhan:'摸牌阶段摸牌时,你可以少摸至多两张牌,然后获得等量的角色的各一张手牌。',
- xijue_xiaoguo:'骁果',
- xijue_xiaoguo_info:'其他角色的结束阶段开始时,你可以弃置一张基本牌,令该角色选择一项:1.弃置一张装备牌,然后你摸一张牌;2.受到你对其造成的1点伤害。',
- xijue_xiaoguo_info_guozhan:'其他角色的结束阶段开始时,你可以弃置一张基本牌,令该角色选择一项:1.弃置一张装备牌;2.受到你对其造成的1点伤害。',
- duyu:'杜预',
- sanchen:'三陈',
- sanchen_info:'出牌阶段,你可选择一名本回合内未选择过的角色。其摸三张牌,然后弃置三张牌。若其未以此法弃置牌或以此法弃置的牌的类别均不相同,则其摸一张牌。否则你本阶段内不能再发动〖三陈〗。',
- sanchen_info_guozhan:'出牌阶段,你可选择一名本回合内未选择过的角色。其摸三张牌,然后弃置三张牌。若其未以此法弃置牌或以此法弃置的牌的类别均不相同,则其摸一张牌且你获得技能〖破竹〗直到回合结束。否则你本阶段内不能再发动〖三陈〗。',
- zhaotao:'诏讨',
- zhaotao_info:'觉醒技,准备阶段,若你本局游戏内发动〖三陈〗的次数大于2,则你减1点体力上限并获得〖破竹〗。',
- pozhu:'破竹',
- pozhu_info:'出牌阶段,你可以将一张手牌当做【出其不意】使用。若你未因此牌造成过伤害,则你不能再发动〖破竹〗直到回合结束。',
- pozhu_info_guozhan:'出牌阶段限一次,你可以将一张手牌当做【出其不意】使用。',
- jin_wangyuanji:'晋王元姬',
- jin_wangyuanji_ab:'王元姬',
- shiren:'识人',
- shiren_info:'隐匿技。你于其他角色的回合内登场时,若其有手牌,则你可对其发动〖宴戏〗。',
- yanxi:'宴戏',
- yanxi2:'宴戏',
- yanxi_info:'出牌阶段,你可选择一名有手牌的角色。你将该角色的一张随机手牌与牌堆顶的两张牌混合后展示,并选择其中一张。若你以此法选择的是该角色的手牌,则你获得这三张牌。否则你获得选择的牌。你通过〖宴戏〗获得的牌,不计入当前回合的手牌上限。',
- yanxi_info_guozhan:'出牌阶段,你可选择一名有手牌的角色。你将该角色的一张随机手牌与牌堆中的两张随机牌混合后展示,并选择其中一张。若你以此法选择的是该角色的手牌,则你获得这三张牌。否则你获得选择的牌。你通过〖宴戏〗获得的牌,不计入当前回合的手牌上限。',
- jin_simazhao:'晋司马昭',
- jin_simazhao_ab:'司马昭',
- tuishi:'推弑',
- tuishi_info:'隐匿技,你于其他角色A的回合内登场时,可于此回合结束时选择其攻击范围内的一名角色B。A选择一项:①对B使用一张【杀】。②你对A造成1点伤害。',
- choufa:'筹伐',
- choufa2:'筹伐',
- choufa_info:'出牌阶段限一次,你可展示一名其他角色的一张手牌并记录其类型A。你令其原类型不为A的手牌的牌名均视为【杀】且均视为无属性,直到其回合结束。',
- zhaoran:'昭然',
- zhaoran2:'昭然',
- zhaoran_info:'出牌阶段开始时,你可令你的手牌对其他角色可见直到出牌阶段结束。若如此做,当你于此阶段内失去一张手牌后,若你的手牌里没有与此牌花色相同的牌且你本回合内未因该花色的牌触发过此效果,则你选择一项:①摸一张牌。②弃置一名其他角色的一张牌。',
- chengwu:'成务',
- chengwu_info:'主公技,锁定技,其他晋势力角色攻击范围内的角色视为在你的攻击范围内。',
- jin_xiahouhui:'晋夏侯徽',
- jin_xiahouhui_ab:'夏侯徽',
- baoqie:'宝箧',
- baoqie_info:'隐匿技,锁定技。你登场后,从牌堆中获得一张不为赠物的宝物牌。若此牌在你的手牌区内为宝物牌,则你可以使用此牌。',
- jyishi:'宜室',
- jyishi_info:'每回合限一次,当有其他角色于其出牌阶段内因弃置而失去手牌后,你可令其获得这些牌中位于弃牌堆的一张,然后你获得其余位于弃牌堆的牌。',
- shiduo:'识度',
- shiduo_info:'出牌阶段限一次,你可以与一名其他角色拼点。若你赢,你获得其所有手牌。然后你交给其X张手牌(X为你手牌数的一半,向下取整)。',
- jin_simashi:'晋司马师',
- jin_simashi_ab:'司马师',
- taoyin:'韬隐',
- taoyin2:'韬隐',
- taoyin_info:'隐匿技,当你登场后,若当前回合角色存在且不是你,则你可令该角色本回合的手牌上限-2。',
- yimie:'夷灭',
- yimie2:'夷灭',
- yimie_info:'每回合限一次,当你对其他角色造成伤害时,若伤害值X小于Y,则你可失去1点体力,将伤害值改为Y。此伤害结算结束后,其回复(Y-X)点体力。(Y为其体力值)’',
- ruilve:'睿略',
- ruilve2:'睿略',
- ruilve_info:'主公技,其他晋势力角色的出牌阶段限一次,该角色可以将一张带有伤害标签的基本牌或锦囊牌交给你。',
- tairan:'泰然',
- tairan2:'泰然',
- tairan_info:'锁定技,回合结束时,你回复Y点体力,并将手牌摸至X张。出牌阶段开始时,你失去Y点体力,弃置上次以此法获得的牌。(X为你的体力上限,且至多为5;Y=X-你的体力值)',
- gz_jin_simayi:'司马懿',
- gz_jin_zhangchunhua:'张春华',
- gz_jin_simazhao:'司马昭',
- gz_jin_wangyuanji:'王元姬',
- gz_jin_simashi:'司马师',
- gz_jin_xiahouhui:'夏侯徽',
- xinquanbian:'权变',
- xinquanbian_info:'出牌阶段,每当你首次使用/打出一种花色的手牌时,你可以从牌堆顶的X张牌中获得一张与此牌花色不同的牌,并将其余牌以任意顺序置于牌堆顶。出牌阶段,你至多可使用X张非装备手牌。(X为你的体力上限)',
guozhao:'郭照',
pianchong:'偏宠',
pianchong2:'偏宠',
@@ -10630,18 +8885,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){
zunwei:'尊位',
zunwei_backup:'尊位',
zunwei_info:"出牌阶段限一次,你可选择本局游戏内未选择过的一项:①若你已受伤,则你可以选择一名体力值大于你的其他角色,你将体力值回复至X(X为你的体力上限与其体力值中的较小值)②选择一名手牌数大于你的其他角色,你将手牌数摸至与其相同(至多摸五张)③选择一名装备区内牌数大于你的其他角色。你令X=1。若你装备区内的('equip'+X)栏为空,则你使用牌堆中的一张副类别为('equip'+X),且能对自己使用的装备牌。你令X+1。若X不大于5,且你装备区内的牌数仍小于目标角色,则你重复此流程。",
- shibao:'石苞',
- shibao_skill:'石苞1',
- shibao_skill_info:'出牌阶段,你使用本轮获得的牌时(以此技能获得的牌除外),根据类型执行以下效果:1.基本牌,不计入次数且无距离限制;2.锦囊牌,此牌目标+1或-1;3.装备牌,摸1张牌。',
- jin_yanghuiyu:'晋羊徽瑜',
- jin_yanghuiyu_ab:'羊徽瑜',
- gz_jin_yanghuiyu:'羊徽瑜',
- huirong:'慧容',
- huirong_info:'隐匿技,锁定技。当你登场后,你令一名角色将手牌数摸至/弃至与体力值相同(至多摸至五张)。',
- ciwei:'慈威',
- ciwei_info:'一名角色于其回合内使用第二张牌时,若此牌为基本牌或普通锦囊牌,则你可以弃置一张牌,取消此牌的所有目标。',
- caiyuan:'才媛',
- caiyuan_info:'锁定技,当你扣减体力时,你获得一枚“才媛”标记直到你的下回合结束。结束阶段开始时,若你没有“才媛”标记且此回合不是你的第一个回合 ,则你摸两张牌。',
ns_caoanmin:'曹安民',
nskuishe:'窥舍',
nskuishe_info:'出牌阶段限一次,你可以选择一名其他角色A的一张牌,并将此牌交给不为A的一名角色。然后A可以对你使用一张【杀】。',
@@ -10684,27 +8927,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){
csyizheng_info:'结束阶段开始时,你可以选择一名其他角色。你的下回合开始前,当该角色造成伤害或回复体力时,若其体力上限小于你,则你减1点体力上限,且令此伤害值/回复值+1。',
reyirang:'揖让',
reyirang_info:'出牌阶段开始时,你可以将所有非基本牌交给一名体力上限大于你的其他角色,然后调整体力上限至与该角色相同并回复X点体力(X为你以此法交给其的牌数)。',
- huangzu:'黄祖',
- wangong:'挽弓',
- wangong2:'挽弓',
- wangong_info:'锁定技,当你使用基本牌时,你获得如下效果:当你使用下一张牌时,若此牌为【杀】,则此牌无次数和距离限制且伤害+1。',
- simazhou:'司马伷',
- caiwang:'才望',
- caiwang_info:'当你使用或打出牌响应其他角色使用的牌,或其他角色使用或打出牌响应你使用的牌后,若这两张牌颜色相同,则你可以弃置对方的一张牌。',
- naxiang:'纳降',
- naxiang2:'纳降',
- naxiang_info:'锁定技,当你受到其他角色造成的伤害后,或你对其他角色造成伤害后,你对其发动〖才望〗时的“弃置”改为“获得”直到你的下回合开始。',
- cheliji:'彻里吉',
- chexuan:'车悬',
- chexuan_info:'出牌阶段,若你的装备区里没有宝物牌,你可弃置一张黑色牌,选择一张【舆】置入你的装备区;当你失去装备区里的宝物牌后,你可进行判定,若结果为黑色,将一张随机的【舆】置入你的装备区。',
- qiangshou:'羌首',
- qiangshou_info:'锁定技,若你的装备区内有宝物牌,你与其他角色的距离-1',
- cheliji_sichengliangyu:'四乘粮舆',
- cheliji_sichengliangyu_info:'一名角色的回合结束时,若你的手牌数小于体力值,你可以摸两张牌,然后弃置此牌。',
- cheliji_tiejixuanyu:'铁蒺玄舆',
- cheliji_tiejixuanyu_info:'其他角色的回合结束时,若其本回合未造成过伤害,你可以令其弃置两张牌,然后弃置此牌。',
- cheliji_feilunzhanyu:'飞轮战舆',
- cheliji_feilunzhanyu_info:'其他角色的回合结束时,若其本回合使用过非基本牌,你可以令其交给你一张牌,然后弃置此牌。',
xiahoujie:'夏侯杰',
liedan:'裂胆',
liedan_info:'锁定技,其他角色的准备阶段开始时,若X大于0,则你摸X张牌。若X等于3,则你加1点体力上限。若X为0,则你失去1点体力并获得一枚“裂”(X为你的手牌数,体力值,装备区牌数中大于其的数量)。准备阶段,若“裂”数大于4,则你死亡。',
@@ -10717,14 +8939,19 @@ game.import('character',function(lib,game,ui,get,ai,_status){
xingzuo_info:'出牌阶段开始时,你可观看牌堆底的三张牌并用任意张手牌替换其中等量的牌。若如此做,结束阶段,你可令一名有手牌的角色用所有手牌替换牌堆底的三张牌。若其因此法失去的牌多于三张,则你失去1点体力。',
miaoxian:'妙弦',
miaoxian_info:'若你的手牌中仅有一张黑色牌,你可将此牌当作任意一张普通锦囊牌使用(每种牌名每回合限一次);若你的手牌中仅有一张红色牌,你使用此牌时摸一张牌。',
- weiguan:'卫瓘',
- zhongyun:'忠允',
- zhongyun2:'忠允',
- zhongyun_info:'锁定技。每名角色的回合限一次,你受伤/回复体力后,若你的体力值与手牌数相等,你回复一点体力或对你攻击范围内的一名角色造成1点伤害;每名角色的回合限一次,你获得手牌或失去手牌后,若你的体力值与手牌数相等,你摸一张牌或弃置一名其他角色一张牌。',
- shenpin:'神品',
- shenpin_info:'当一名角色的判定牌生效前,你可以打出一张与判定牌颜色不同的牌代替之。',
+ liangxing:'梁兴',
+ lulve:'掳掠',
+ lulve_info:'出牌阶段开始时,你可选择一名有手牌且手牌数少于你的角色。其选择一项:①将所有手牌交给你,然后你将武将牌翻面。②将武将牌翻面,然后其视为对你使用一张【杀】。',
+ lxzhuixi:'追袭',
+ lxzhuixi_info:'锁定技,当你造成伤害或受到伤害时,若受伤角色的翻面状态和伤害来源的翻面状态不同,则此伤害+1。',
+ zhangmiao:'张邈',
+ mouni:'谋逆',
+ mouni_info:'准备阶段,你可对一名其他角色依次使用你手牌中所有的【杀】(若其进入了濒死状态,则终止此流程)。然后若这些【杀】中有未造成伤害的【杀】,则你跳过本回合的出牌阶段。',
+ zongfan:'纵反',
+ zongfan_info:'觉醒技,结束阶段,若你本回合内因〖谋逆〗使用过【杀】且未跳过本回合的出牌阶段,则你将任意张牌交给一名其他角色,然后加X点体力上限并回复X点体力(X为你以此法给出的牌数)。最后失去〖谋逆〗并获得〖战孤〗。',
+ zhangu:'战孤',
+ zhangu_info:'锁定技,准备阶段,若你的体力上限大于1且没有手牌/装备区内没有牌,则你减1点体力上限,然后从牌堆中获得三张类型不同的牌。',
- sp_yingbian:'文德武备',
sp_whlw:"文和乱武",
sp_zlzy:"逐鹿中原",
sp_longzhou:"同舟共济",
diff --git a/character/yingbian.js b/character/yingbian.js
new file mode 100644
index 000000000..eeeaf8395
--- /dev/null
+++ b/character/yingbian.js
@@ -0,0 +1,2027 @@
+'use strict';
+game.import('character',function(lib,game,ui,get,ai,_status){
+ return {
+ name:'yingbian',
+ connect:true,
+ character:{
+ weiguan:['male','jin',3,['zhongyun','shenpin']],
+ cheliji:['male','qun',4,['chexuan','qiangshou']],
+ simazhou:['male','jin',4,['caiwang','naxiang']],
+ huangzu:['male','qun',4,['wangong'],['unseen']],
+ ol_lisu:['male','qun',3,['qiaoyan','xianzhu']],
+ jin_yanghuiyu:['female','jin',3,['huirong','ciwei','caiyuan'],['hiddenSkill']],
+ shibao:['male','jin',4,['zhuosheng']],
+ jin_zhangchunhua:['female','jin',3,['huishi','qingleng','xuanmu'],['hiddenSkill']],
+ jin_simayi:['male','jin',3,['buchen','smyyingshi','xiongzhi','quanbian'],['hiddenSkill']],
+ jin_wangyuanji:['female','jin',3,['shiren','yanxi'],['hiddenSkill']],
+ jin_simazhao:['male','jin',3,['tuishi','choufa','zhaoran','chengwu'],['zhu','hiddenSkill']],
+ jin_xiahouhui:['female','jin',3,['baoqie','jyishi','shiduo'],['hiddenSkill']],
+ jin_simashi:['male','jin','3/4',['taoyin','yimie','ruilve','tairan'],['hiddenSkill','zhu']],
+ zhanghuyuechen:['male','jin',4,['xijue']],
+ duyu:['male','jin',4,['sanchen','zhaotao']],
+ },
+ characterSort:{
+ yingbian:{
+ yingbian_pack1:['jin_simayi','jin_zhangchunhua','ol_lisu','simazhou','cheliji'],
+ yingbian_pack2:['jin_simashi','jin_xiahouhui','zhanghuyuechen','shibao','jin_yanghuiyu'],
+ yingbian_pack3:['jin_simazhao','jin_wangyuanji','duyu','weiguan'],
+ },
+ },
+ skill:{
+ buchen:{
+ audio:2,
+ trigger:{player:'showCharacterAfter'},
+ hiddenSkill:true,
+ filter:function(event,player){
+ var target=_status.currentPhase;
+ return target&&target!=player&&target.countGainableCards(player,'he')>0;
+ },
+ direct:true,
+ content:function(){
+ var target=_status.currentPhase;
+ player.gainPlayerCard(target,'he',get.prompt('buchen',target)).set('logSkill',['buchen',target]);
+ },
+ },
+ smyyingshi:{
+ audio:2,
+ enable:'phaseUse',
+ locked:true,
+ filter:function(event,player){
+ return Array.isArray(event.smyyingshi);
+ },
+ onChooseToUse:function(event){
+ if(game.online||!event.player.hasSkill('smyyingshi')) return;
+ var cards=[];
+ for(var i=0;i0;
+ },
+ filter:function(event,player){
+ var phase=event.getParent('phaseUse');
+ if(!phase||phase.player!=player) return false;
+ var suit=get.suit(event.card);
+ if(!lib.suit.contains(suit)||!lib.skill.quanbian.hasHand(event)) return false;
+ return player.getHistory('useCard',function(evt){
+ return evt!=event&&get.suit(evt.card)==suit&&lib.skill.quanbian.hasHand(evt)&&evt.getParent('phaseUse')==phase;
+ }).length+player.getHistory('respond',function(evt){
+ return evt!=event&&get.suit(evt.card)==suit&&lib.skill.quanbian.hasHand(evt)&&evt.getParent('phaseUse')==phase;
+ }).length==0;
+ },
+ direct:true,
+ content:function(){
+ 'step 0'
+ player.chooseControl('cancel2').set('prompt',get.prompt('quanbian')).set('choiceList',[
+ '摸一张牌',
+ '观看牌堆顶的'+get.cnNumber(player.maxHp)+'张牌并将其中一张置于牌堆底',
+ ]).set('ai',function(){
+ var player=_status.event.player;
+ var suit=get.suit(_status.event.getTrigger().card);
+ if(player.countCards('h',function(card){
+ return get.suit(card)==suit&&player.hasValueTarget(card,null,true);
+ })) return 'cancel2';
+ return 0;
+ });
+ 'step 1'
+ if(result.control=='cancel2'){
+ event.finish();
+ return;
+ }
+ player.addTempSkill('quanbian2');
+ player.storage.quanbian2.add(get.suit(trigger.card));
+ player.markSkill('quanbian2');
+ if(result.index==0){
+ player.draw();
+ event.finish();
+ return;
+ }
+ event.cards=get.cards(player.maxHp);
+ player.chooseButton(['将一张牌置于牌堆底',event.cards],true);
+ 'step 2'
+ while(cards.length){
+ var card=cards.pop();
+ card.fix();
+ if(card==result.links[0]) ui.cardPile.appendChild(card);
+ else ui.cardPile.insertBefore(card,ui.cardPile.firstChild);
+ }
+ game.updateRoundNumber();
+ },
+ },
+ quanbian2:{
+ init:function(player,skill){
+ if(!player.storage[skill]) player.storage[skill]=[];
+ },
+ onremove:true,
+ mod:{
+ cardEnabled2:function(card,player){
+ if(get.position(card)=='h'&&player.storage.quanbian2.contains(get.suit(card))) return false;
+ },
+ },
+ intro:{
+ content:'本回合内不能使用$花色的手牌',
+ },
+ },
+ //卫瓘
+ zhongyun:{
+ audio:2,
+ trigger:{player:['damageEnd','recoverEnd']},
+ forced:true,
+ filter:function(event,player){
+ return player.hp==player.countCards('h')&&(player.isDamaged()||game.hasPlayer(function(current){
+ return player.inRange(current);
+ }));
+ },
+ content:function(){
+ 'step 0'
+ var filterTarget=function(card,player,target){
+ return player.inRange(target);
+ };
+ if(game.hasPlayer((current)=>filterTarget('L∞pers',player,current))){
+ var bool=player.isHealthy();
+ player.chooseTarget('忠允:对攻击范围内的一名角色造成1点伤害'+(bool?'':',或点取消回复1点体力'),filterTarget,bool);
+ }
+ else event._result={bool:false};
+ 'step 1'
+ if(result.bool){
+ var target=result.targets[0];
+ player.line(target,'green');
+ target.damage();
+ }
+ else player.recover();
+ },
+ group:'zhongyun2',
+ },
+ zhongyun2:{
+ audio:'zhongyun',
+ trigger:{
+ player:['loseAfter','gainAfter'],
+ global:['equipAfter','addJudgeAfter','gainAfter','loseAsyncAfter'],
+ },
+ forced:true,
+ filter:function(event,player){
+ if(event.name!='gain'||player!=event.player){
+ var evt=event.getl(player);
+ if(!evt||!evt.hs||!evt.hs.length) return false;
+ }
+ return player.countCards('h')==player.hp;
+ },
+ usable:1,
+ content:function(){
+ 'step 0'
+ var filterTarget=function(card,player,target){
+ return target!=player&&target.countDiscardableCards(player,'he')>0;
+ }
+ if(!game.hasPlayer((current)=>filterTarget('L∞pers',player,current))) event._result={bool:false};
+ else player.chooseTarget(filterTarget,'忠允:弃置一名其他角色的一张牌,或点取消摸一张牌').set('ai',function(target){
+ var att=get.attitude(player,target);
+ if(att>=0) return 0;
+ if(target.countCards('he',function(card){
+ return get.value(card)>5;
+ })) return -att;
+ return 0;
+ });
+ 'step 1'
+ if(!result.bool) player.draw();
+ else{
+ var target=result.targets[0];
+ player.line(target,'green');
+ player.discardPlayerCard(target,true,'he');
+ }
+ },
+ },
+ shenpin:{
+ audio:2,
+ trigger:{global:'judge'},
+ filter:function(event,player){
+ var color=get.color(event.player.judging[0],event.player);
+ return player.countCards('hes',function(card){
+ if(_status.connectMode&&get.position(card)!='e') return true;
+ return get.color(card)!=color;
+ })>0;
+ },
+ direct:true,
+ content:function(){
+ "step 0"
+ var color=get.color(trigger.player.judging[0],trigger.player);
+ player.chooseCard(get.translation(trigger.player)+'的'+(trigger.judgestr||'')+'判定为'+
+ get.translation(trigger.player.judging[0])+','+get.prompt('shenpin'),'hes',function(card){
+ if(get.color(card)==_status.event.color) return false;
+ var player=_status.event.player;
+ var mod2=game.checkMod(card,player,'unchanged','cardEnabled2',player);
+ if(mod2!='unchanged') return mod2;
+ var mod=game.checkMod(card,player,'unchanged','cardRespondable',player);
+ if(mod!='unchanged') return mod;
+ return true;
+ }).set('ai',function(card){
+ var trigger=_status.event.getTrigger();
+ var player=_status.event.player;
+ var judging=_status.event.judging;
+ var result=trigger.judge(card)-trigger.judge(judging);
+ var attitude=get.attitude(player,trigger.player);
+ if(attitude==0||result==0) return 0;
+ if(attitude>0){
+ return result;
+ }
+ else{
+ return -result;
+ }
+ }).set('judging',trigger.player.judging[0]).set('color',color);
+ "step 1"
+ if(result.bool){
+ player.respond(result.cards,'highlight','shenpin','noOrdering');
+ }
+ else{
+ event.finish();
+ }
+ "step 2"
+ if(result.bool){
+ if(trigger.player.judging[0].clone){
+ trigger.player.judging[0].clone.classList.remove('thrownhighlight');
+ game.broadcast(function(card){
+ if(card.clone){
+ card.clone.classList.remove('thrownhighlight');
+ }
+ },trigger.player.judging[0]);
+ game.addVideo('deletenode',player,get.cardsInfo([trigger.player.judging[0].clone]));
+ }
+ game.cardsDiscard(trigger.player.judging[0]);
+ trigger.player.judging[0]=result.cards[0];
+ trigger.orderingCards.addArray(result.cards);
+ game.log(trigger.player,'的判定牌改为',result.cards[0]);
+ game.delay(2);
+ }
+ },
+ ai:{
+ rejudge:true,
+ tag:{
+ rejudge:1
+ }
+ }
+ },
+ //彻里吉
+ chexuan:{
+ audio:2,
+ enable:'phaseUse',
+ derivation:['cheliji_sichengliangyu','cheliji_tiejixuanyu','cheliji_feilunzhanyu'],
+ filter:function(event,player){
+ return !player.getEquip(5)&&player.countCards('he',{color:'black'})>0;
+ },
+ filterCard:{color:'black'},
+ position:'he',
+ check:function(card){
+ return 5-get.value(card);
+ },
+ content:function(){
+ 'step 0'
+ player.chooseButton(['请选择要装备的宝物',[lib.skill.chexuan.derivation.map(function(i){
+ return ['宝物','',i];
+ }),'vcard']],true).set('ai',function(button){
+ if(button.link[2]=='cheliji_sichengliangyu'&&player.countCards('h')0&&player.getEquip('cheliji_tiejixuanyu');
+ },
+ logTarget:'player',
+ check:function(event,player){
+ return get.attitude(player,event.player)<0;
+ },
+ content:function(){
+ 'step 0'
+ trigger.player.chooseToDiscard('he',2,true);
+ 'step 1'
+ var card=player.getEquip('cheliji_tiejixuanyu');
+ if(card) player.discard(card);
+ },
+ },
+ cheliji_feilunzhanyu:{
+ trigger:{global:'phaseJieshuBegin'},
+ equipSkill:true,
+ filter:function(event,player){
+ return player!=event.player&&event.player.getHistory('useCard',function(card){
+ return get.type(card)!='basic';
+ }).length>0&&event.player.countCards('he')>0&&player.getEquip('cheliji_feilunzhanyu');
+ },
+ logTarget:'player',
+ check:function(event,player){
+ return get.attitude(player,event.player)<=0;
+ },
+ content:function(){
+ 'step 0'
+ trigger.player.chooseCard('he',true,'将一张牌交给'+get.translation(player));
+ 'step 1'
+ if(result.bool) player.gain(result.cards,trigger.player,'giveAuto');
+ 'step 2'
+ var card=player.getEquip('cheliji_feilunzhanyu');
+ if(card) player.discard(card);
+ },
+ },
+ //司马伷和黄祖
+ caiwang:{
+ audio:2,
+ trigger:{global:['useCard','respond']},
+ filter:function(event,player){
+ if(!Array.isArray(event.respondTo)||event.respondTo[0]==event.player||![event.respondTo[0],event.player].contains(player)) return false;
+ var color=get.color(event.card);
+ if(color=='none'||get.color(event.respondTo[1])!=color) return false;
+ var target=lib.skill.caiwang.logTarget(event,player);
+ return target[player.getStorage('naxiang2').contains(target)?'countGainableCards':'countDiscardableCards'](player,'he')>0
+ },
+ logTarget:function(event,player){
+ return (player==event.respondTo[0]?event.player:event.respondTo[0]);
+ },
+ prompt2:function(event,player){
+ var target=lib.skill.caiwang.logTarget(event,player);
+ return (player.getStorage('naxiang2').contains(target)?'获得':'弃置')+'该角色的一张牌';
+ },
+ check:function(event,player){
+ return get.attitude(player,lib.skill.caiwang.logTarget(event,player))<=0;
+ },
+ content:function(){
+ var target=lib.skill.caiwang.logTarget(trigger,player);
+ player[player.getStorage('naxiang2').contains(target)?'gainPlayerCard':'discardPlayerCard'](target,'he',true);
+ },
+ },
+ naxiang:{
+ audio:2,
+ trigger:{
+ player:'damageEnd',
+ source:'damageSource',
+ },
+ forced:true,
+ filter:function(event,player){
+ var target=lib.skill.naxiang.logTarget(event,player);
+ return target&&target!=player&&target.isAlive();
+ },
+ logTarget:function(event,player){
+ return player==event.player?event.source:event.player;
+ },
+ content:function(){
+ player.addTempSkill('naxiang2',{player:'phaseBegin'});
+ if(!player.storage.naxiang2) player.storage.naxiang2=[];
+ player.storage.naxiang2.add(lib.skill.naxiang.logTarget(trigger,player));
+ player.markSkill('naxiang2');
+ },
+ ai:{
+ combo:'caiwang',
+ },
+ },
+ naxiang2:{
+ onremove:true,
+ intro:{
+ content:'已接受$的投降;对这些角色发动【才望】时将“弃置”改为“获得”',
+ },
+ },
+ wangong:{
+ audio:2,
+ trigger:{player:'useCard'},
+ forced:true,
+ filter:function(event,player){
+ return get.type(event.card,false)=='basic';
+ },
+ content:function(){
+ player.addSkill('wangong2');
+ },
+ },
+ wangong2:{
+ trigger:{player:'useCard1'},
+ forced:true,
+ popup:false,
+ firstDo:true,
+ charlotte:true,
+ content:function(){
+ player.removeSkill('wangong2');
+ if(trigger.card.name=='sha') trigger.baseDamage++;
+ },
+ mod:{
+ cardUsable:function(card){
+ if(card.name=='sha') return Infinity;
+ },
+ targetInRange:function(card){
+ if(card.name=='sha') return true;
+ },
+ },
+ mark:true,
+ intro:{
+ content:'使用【杀】无距离和次数限制且伤害+1',
+ },
+ },
+ //李肃
+ qiaoyan:{
+ trigger:{player:'damageBegin2'},
+ forced:true,
+ filter:function(event,player){
+ return player!=_status.currentPhase&&event.source&&event.source!=player;
+ },
+ logTarget:'source',
+ content:function(){
+ 'step 0'
+ var cards=player.getStorage('qiaoyan');
+ if(cards.length){
+ var source=trigger.source;
+ player.$give(cards,source,false);
+ source.gain(cards,'log');
+ player.unmarkAuto('qiaoyan',cards);
+ event.goto(3);
+ }
+ else{
+ trigger.cancel();
+ player.draw();
+ }
+ 'step 1'
+ var hs=player.getCards('he');
+ if(!hs.length) event.finish();
+ else if(hs.length==1) event._result={bool:true,cards:hs};
+ else player.chooseCard('he',true,'将一张牌作为“珠”置于武将牌上');
+ 'step 2'
+ if(result.bool&&result.cards&&result.cards.length){
+ var cards=result.cards;
+ player.lose(cards,ui.special,'visible','toStorage');
+ player.$give(cards,player,false);
+ player.markAuto('qiaoyan',cards);
+ game.log(player,'将',cards,'放在了武将牌上');
+ }
+ event.finish();
+ 'step 3'
+ game.delayx();
+ },
+ marktext:'珠',
+ intro:{content:'cards',onunmark:'throw'},
+ ai:{
+ filterDamage:true,
+ skillTagFilter:function(player,tag,arg){
+ if(!player.getStorage('qiaoyan').length) return false;
+ if(arg&&arg.player){
+ if(arg.player.hasSkillTag('jueqing',false,player)) return false;
+ }
+ },
+ combo:'xianzhu',
+ },
+ },
+ xianzhu:{
+ trigger:{player:'phaseUseBegin'},
+ direct:true,
+ locked:true,
+ filter:function(event,player){
+ return player.storage.qiaoyan&&player.storage.qiaoyan.length>0;
+ },
+ content:function(){
+ 'step 0'
+ event.cards=player.storage.qiaoyan;
+ player.chooseTarget(true,'请选择【献珠】的目标','令一名角色获得'+get.translation(event.cards)+'。若该角色不为你自己,则你令其视为对其攻击范围内的另一名角色使用【杀】').set('ai',function(target){
+ var player=_status.event.player;
+ var eff=get.sgn(get.attitude(player,target))*get.value(_status.event.getParent().cards[0],target);
+ if(player!=target) eff+=Math.max.apply(null,game.filterPlayer(function(current){
+ if(current!=target&&target.inRange(current)&&target.canUse('sha',current)) return true;
+ }).map(function(current){
+ return get.effect(current,{name:'sha'},target,player);
+ }));
+ return eff;
+ });
+ 'step 1'
+ if(result.bool){
+ var target=result.targets[0];
+ event.target=target;
+ player.logSkill('xianzhu',target);
+ player.$give(cards,target,false);
+ target.gain(cards,'log');
+ player.unmarkAuto('qiaoyan',cards);
+ }
+ else event.finish();
+ 'step 2'
+ game.delayx();
+ if(player!=target&&target.isIn()&&player.isIn()&&game.hasPlayer(function(current){
+ return current!=target&&target.inRange(current)&&target.canUse('sha',current);
+ })){
+ var str=get.translation(target);
+ player.chooseTarget(true,'选择'+str+'攻击范围内的一名角色,视为'+str+'对其使用【杀】',function(card,player,target){
+ var source=_status.event.target;
+ return source.inRange(target)&&source.canUse('sha',target);
+ }).set('target',target).set('ai',function(target){
+ var evt=_status.event;
+ return get.effect(target,{name:'sha'},evt.target,evt.player)
+ });
+ }
+ else event.finish();
+ 'step 3'
+ if(result.bool) target.useCard({name:'sha',isCard:true},result.targets[0],false);
+ },
+ ai:{combo:'qiaoyan'},
+ },
+ huirong:{
+ trigger:{player:'showCharacterAfter'},
+ forced:true,
+ filter:function(event,player){
+ return event.toShow&&event.toShow.contains('jin_yanghuiyu')&&game.hasPlayer(function(target){
+ var num=target.countCards('h');
+ return num>target.hp||numtarget.hp||numtarget.hp) return -att*(num-target.hp);
+ return att*Math.max(0,Math.min(5,target.hp)-target.countCards('h'));
+ });
+ 'step 1'
+ if(result.bool){
+ var target=result.targets[0];
+ player.line(target,'green');
+ if(target.countCards('h')1||!game.hasPlayer(function(current){
+ return current!=player&&(get.realAttitude||get.attitude)(current,player)<0&¤t.hasSkill('ciwei')&¤t.countCards('he')>0;
+ })) return;
+ if(player.getHistory('useCard').length==0){
+ if(['basic','trick'].contains(get.type(card))) return num+10;
+ return;
+ }
+ if(!['basic','trick'].contains(get.type(card))) return num+10;
+ if(!player._ciwei_temp){
+ player._ciwei_temp=true;
+ num/=Math.max(1,player.getUseValue(card));
+ }
+ delete player._ciwei_temp;
+ return num;
+ },
+ },
+ },
+ caiyuan:{
+ trigger:{player:'phaseJieshuBegin'},
+ forced:true,
+ filter:function(event,player){
+ return !player.hasSkill('caiyuan_mark')&&player.phaseNumber>1;
+ },
+ content:function(){
+ player.draw(2);
+ },
+ group:'caiyuan_count',
+ subSkill:{
+ mark:{
+ //mark:true,
+ marktext:'媛',
+ charlotte:true,
+ intro:{content:'已扣减过体力'},
+ },
+ count:{
+ trigger:{player:'changeHp'},
+ silent:true,
+ charlotte:true,
+ filter:function(event,player){
+ return event.num<0&&!player.hasSkill('caiyuan_mark');
+ },
+ content:function(){
+ player.addTempSkill('caiyuan_mark',{player:'phaseAfter'});
+ if(player.hasSkill('caiyuan')) player.markSkill('caiyuan_mark');
+ },
+ },
+ },
+ },
+ zhuosheng:{
+ audio:2,
+ locked:false,
+ onremove:function(player){
+ player.removeSkill('zhuosheng_count');
+ player.removeGaintag('zhuosheng');
+ },
+ mod:{
+ targetInRange:function(card,player,target){
+ if(!card.cards||get.type(card)!='basic') return;
+ for(var i of card.cards){
+ if(i.hasGaintag('zhuosheng')) return (game.online?player==_status.currentPhase:player.isPhaseUsing());
+ }
+ },
+ cardUsable:function(card,player,target){
+ if(!card.cards||get.type(card)!='basic'||!(game.online?player==_status.currentPhase:player.isPhaseUsing())) return;
+ for(var i of card.cards){
+ if(i.hasGaintag('zhuosheng')) return Infinity;
+ }
+ },
+ aiOrder:function(player,card,num){
+ if(get.itemtype(card)=='card'&&card.hasGaintag('zhuosheng')&&get.type(card)=='basic') return num-0.1;
+ },
+ },
+ trigger:{player:'useCard2'},
+ direct:true,
+ filterx:function(event,player){
+ if(!player.isPhaseUsing()) return false;
+ return player.getHistory('lose',function(evt){
+ if(evt.getParent()!=event) return false;
+ for(var i in evt.gaintag_map){
+ if(evt.gaintag_map[i].contains('zhuosheng')) return true;
+ }
+ return false;
+ }).length>0;
+ },
+ filter:function(event,player){
+ if(!lib.skill.zhuosheng.filterx(event,player)) return false;
+ if(get.type(event.card)!='trick') return false;
+ if(event.targets&&event.targets.length>0) return true;
+ var info=get.info(event.card);
+ if(info.allowMultiple==false) return false;
+ if(event.targets&&!info.multitarget){
+ if(game.hasPlayer(function(current){
+ return !event.targets.contains(current)&&lib.filter.targetEnabled2(event.card,player,current)&&lib.filter.targetInRange(event.card,player,current);
+ })){
+ return true;
+ }
+ }
+ return false;
+ },
+ content:function(){
+ 'step 0'
+ var prompt2='为'+get.translation(trigger.card)+'增加或减少一个目标'
+ player.chooseTarget(get.prompt('zhuosheng'),function(card,player,target){
+ var player=_status.event.player;
+ if(_status.event.targets.contains(target)) return true;
+ return lib.filter.targetEnabled2(_status.event.card,player,target)&&lib.filter.targetInRange(_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)*(_status.event.targets.contains(target)?-1:1);
+ }).set('targets',trigger.targets).set('card',trigger.card);
+ 'step 1'
+ if(result.bool){
+ if(!event.isMine()&&!event.isOnline()) game.delayx();
+ event.targets=result.targets;
+ }
+ else{
+ event.finish();
+ }
+ 'step 2'
+ if(event.targets){
+ player.logSkill('zhuosheng',event.targets);
+ if(trigger.targets.contains(event.targets[0])) trigger.targets.removeArray(event.targets);
+ else trigger.targets.addArray(event.targets);
+ }
+ },
+ group:['zhuosheng_equip','zhuosheng_silent'],
+ subfrequent:['equip'],
+ subSkill:{
+ equip:{
+ audio:'zhuosheng',
+ trigger:{player:'useCard'},
+ filter:function(event,player){
+ return get.type(event.card)=='equip'&&lib.skill.zhuosheng.filterx(event,player);
+ },
+ frequent:true,
+ prompt:'是否发动【擢升】摸一张牌?',
+ content:function(){
+ player.draw();
+ },
+ },
+ silent:{
+ trigger:{
+ player:['enterGame','useCard1'],
+ global:'gameDrawAfter',
+ },
+ silent:true,
+ firstDo:true,
+ filter:function(event,player){
+ if(event.name=='useCard') return get.type(event.card)=='basic'&&lib.skill.zhuosheng.filterx(event,player)&&event.addCount!==false;
+ return true;
+ },
+ content:function(){
+ if(trigger.name=='useCard'){
+ trigger.addCount=false;
+ var stat=player.getStat();
+ if(stat&&stat.card&&stat.card[trigger.card.name]) stat.card[trigger.card.name]--;
+ }
+ else{
+ player.addSkill('zhuosheng_count');
+ player.addGaintag(player.getCards('h'),'zhuosheng');
+ }
+ },
+ },
+ },
+ },
+ zhuosheng_count:{
+ trigger:{
+ player:'gainBegin',
+ global:'roundStart',
+ },
+ silent:true,
+ filter:function(event,player){
+ if(event.name=='gain') return event.getParent(2).name!='zhuosheng_equip';
+ return game.roundNumber>1;
+ },
+ content:function(){
+ if(trigger.name=='gain') trigger.gaintag.add('zhuosheng');
+ else player.removeGaintag('zhuosheng');
+ },
+ },
+ xinquanbian:{
+ audio:'quanbian',
+ trigger:{player:['useCard','respond']},
+ filter:function(event,player){
+ var phase=event.getParent('phaseUse');
+ if(!phase||phase.player!=player) return false;
+ var suit=get.suit(event.card);
+ if(!lib.suit.contains(suit)||!lib.skill.quanbian.hasHand(event)) return false;
+ return player.getHistory('useCard',function(evt){
+ return evt!=event&&get.suit(evt.card)==suit&&lib.skill.quanbian.hasHand(evt)&&evt.getParent('phaseUse')==phase;
+ }).length+player.getHistory('respond',function(evt){
+ return evt!=event&&get.suit(evt.card)==suit&&lib.skill.quanbian.hasHand(evt)&&evt.getParent('phaseUse')==phase;
+ }).length==0;
+ },
+ content:function(){
+ 'step 0'
+ var cards=get.cards(Math.min(5,player.maxHp));
+ event.cards=cards;
+ var suit=get.suit(trigger.card);
+ player.chooseButton(['权变:获得一张不为'+get.translation(suit)+'花色的牌',cards]).set('suit',suit).set('filterButton',function(button){
+ return get.suit(button)!=_status.event.suit;
+ });
+ 'step 1'
+ if(result.bool){
+ var card=result.links[0];
+ cards.remove(card);
+ player.gain(card,'gain2','log');
+ if(!cards.length) event.finish();
+ }
+ 'step 2'
+ player.chooseCardButton(cards.length,true,cards,'按顺序将卡牌置于牌堆顶(先选择的在上)');
+ 'step 3'
+ if(result.bool){
+ var list=result.links.slice(0);
+ while(list.length){
+ ui.cardPile.insertBefore(list.pop(),ui.cardPile.firstChild);
+ }
+ game.updateRoundNumber();
+ }
+ },
+ group:'xinquanbian_count',
+ },
+ xinquanbian_count:{
+ trigger:{player:'useCard1'},
+ silent:true,
+ firstDo:true,
+ filter:function(event,player){
+ return player.isPhaseUsing()&&lib.skill.quanbian.hasHand(event)&&get.type(event.card)!='equip';
+ },
+ content:function(){
+ var stat=player.getStat('skill');
+ if(!stat.quanbian) stat.quanbian=0;
+ stat.quanbian++;
+ },
+ mod:{
+ cardEnabled2:function(card,player){
+ var stat=player.getStat('skill');
+ if(stat.quanbian&&stat.quanbian>=player.maxHp&&get.position(card)=='h'&&get.type(card,player)!='equip') return false;
+ },
+ },
+ },
+ taoyin:{
+ audio:2,
+ trigger:{player:'showCharacterAfter'},
+ logTarget:function(){
+ return _status.currentPhase;
+ },
+ filter:function(event,player){
+ var target=_status.currentPhase;
+ return target&&target!=player&&target.isAlive();
+ },
+ check:function(event,player){
+ return get.attitude(player,_status.currentPhase)<0;
+ },
+ content:function(){
+ _status.currentPhase.addTempSkill('taoyin2');
+ _status.currentPhase.addMark('taoyin2',2,false);
+ },
+ ai:{
+ expose:0.2,
+ },
+ },
+ taoyin2:{
+ onremove:true,
+ charlotte:true,
+ intro:{
+ content:'手牌上限-#',
+ },
+ mod:{
+ maxHandcard:function(player,num){
+ return num-player.countMark('taoyin2');
+ },
+ },
+ },
+ yimie:{
+ audio:2,
+ usable:1,
+ trigger:{source:'damageBegin1'},
+ filter:function(event,player){
+ return player!=event.player&&event.num-2) return false;
+ if(player.hp>2) return true;
+ if(player.hp==2&&event.player.hp<3) return false;
+ return player.hp>1;
+ },
+ logTarget:'player',
+ content:function(){
+ player.loseHp();
+ trigger.player.addTempSkill('yimie2');
+ trigger.yimie_num=trigger.player.hp-trigger.num;
+ trigger.num=trigger.player.hp;
+ },
+ },
+ yimie2:{
+ trigger:{player:'damageEnd'},
+ forced:true,
+ popup:false,
+ charlotte:true,
+ filter:function(event,player){
+ return typeof event.yimie_num=='number';
+ },
+ content:function(){
+ player.recover(trigger.yimie_num);
+ },
+ },
+ ruilve:{
+ unique:true,
+ audio:2,
+ global:'ruilve2',
+ zhuSkill:true,
+ },
+ ruilve2:{
+ enable:'phaseUse',
+ discard:false,
+ lose:false,
+ delay:false,
+ line:true,
+ direct:true,
+ clearTime:true,
+ prepare:function(cards,player,targets){
+ targets[0].logSkill('ruilve');
+ },
+ prompt:function(){
+ var player=_status.event.player;
+ var list=game.filterPlayer(function(target){
+ return target!=player&&target.hasZhuSkill('ruilve',player);
+ });
+ var str='将一张具有伤害标签的基本牌或锦囊牌交给'+get.translation(list);
+ if(list.length>1) str+='中的一人';
+ return str;
+ },
+ filter:function(event,player){
+ if(player.group!='jin') return false;
+ if(player.countCards('h',lib.skill.ruilve2.filterCard)==0) return false;
+ return game.hasPlayer(function(target){
+ return target!=player&&target.hasZhuSkill('ruilve',player)&&!target.hasSkill('ruilve3');
+ });
+ },
+ filterCard:function(card){
+ if(!get.tag(card,'damage')) return false;
+ var type=get.type(card);
+ return (type=='basic'||type=='trick');
+ },
+ log:false,
+ visible:true,
+ filterTarget:function(card,player,target){
+ return target!=player&&target.hasZhuSkill('ruilve',player)&&!target.hasSkill('ruilve3');
+ },
+ content:function(){
+ target.gain(cards,player,'giveAuto');
+ target.addTempSkill('ruilve3','phaseUseEnd');
+ },
+ ai:{
+ expose:0.3,
+ order:1,
+ result:{
+ target:5
+ }
+ }
+ },
+ ruilve3:{},
+ tairan:{
+ audio:2,
+ trigger:{player:'phaseEnd'},
+ forced:true,
+ filter:function(event,player){
+ return player.hp0){
+ player.storage.tairan2+=num;
+ player.recover(num);
+ }
+ 'step 1'
+ if(player.countCards('h')0) player.loseHp(map);
+ var hs=player.getCards('h',function(card){
+ return card.hasGaintag('tairan');
+ });
+ if(hs.length) player.discard(hs);
+ player.removeSkill('tairan2');
+ },
+ },
+ baoqie:{
+ audio:2,
+ trigger:{player:'showCharacterAfter'},
+ forced:true,
+ filter:function(event,player){
+ return event.toShow&&event.toShow.contains('jin_xiahouhui');
+ },
+ content:function(){
+ 'step 0'
+ var card=get.cardPile(function(card){
+ return get.subtype(card,false)=='equip5'&&!get.cardtag(card,'gifts');
+ });
+ if(!card){
+ event.finish();
+ return;
+ }
+ event.card=card;
+ player.gain(card,'gain2');
+ 'step 1'
+ if(player.getCards('h').contains(card)&&get.subtype(card)=='equip5') player.chooseUseTarget(card).nopopup=true;
+ },
+ },
+ jyishi:{
+ audio:2,
+ trigger:{global:'loseAfter'},
+ direct:true,
+ filter:function(event,player){
+ return (event.type=='discard'&&event.hs&&event.hs.filterInD('d').length&&event.player.isAlive()&&
+ event.player!=player&&event.player.isPhaseUsing()&&!player.hasSkill('jyishi2'));
+ },
+ content:function(){
+ 'step 0'
+ event.cards=trigger.hs.filterInD('d');
+ var str='是否发动【宜室】令'+get.translation(trigger.player)+'获得一张牌';
+ if(event.cards.length>1) str+=',然后获得其余的牌';
+ str+='?';
+ player.chooseButton([str,event.cards]).set('ai',function(button){
+ var card=button.link;
+ var source=_status.event.source;
+ if(get.attitude(player,source)>0) return Math.max(1,source.getUseValue(card,null,true));
+ var cards=_status.event.getParent().cards.slice(0);
+ if(cards.length==1) return -get.value(card);
+ cards.remove(card);
+ return (get.value(cards)-get.value(card)-2);
+ }).set('source',trigger.player);
+ 'step 1'
+ if(result.bool){
+ player.addTempSkill('jyishi2');
+ player.logSkill('jyishi',trigger.player);
+ if(cards.length>1){
+ trigger.player.$gain2(result.links[0]);
+ trigger.player.gain(result.links[0],'log');
+ }
+ else trigger.player.gain(result.links[0],'gain2');
+ cards.remove(result.links[0]);
+ if(cards.length) player.gain(cards,'gain2');
+ }
+ },
+ },
+ jyishi2:{},
+ shiduo:{
+ audio:2,
+ enable:'phaseUse',
+ usable:1,
+ filter:function(event,player){
+ return game.hasPlayer(function(target){
+ return player!=target&&player.canCompare(target);
+ })
+ },
+ filterTarget:function(card,player,target){
+ return player!=target&&player.canCompare(target);
+ },
+ content:function(){
+ 'step 0'
+ player.chooseToCompare(target);
+ 'step 1'
+ if(result.bool&&target.isAlive()){
+ var cards=target.getCards('h');
+ if(cards.length) player.gain(cards,target,'giveAuto');
+ }
+ else event.finish();
+ 'step 2'
+ var num=Math.floor(player.countCards('h')/2);
+ if(num&&target.isAlive()) player.chooseCard('h',num,true,'交给'+get.translation(target)+get.cnNumber(num)+'张牌')
+ else event.finish();
+ 'step 3'
+ if(result.bool&&result.cards&&result.cards.length) target.gain(result.cards,player,'giveAuto');
+ },
+ ai:{
+ order:1,
+ result:{
+ target:function(player,target){
+ var delta=(target.countCards('h')-player.countCards('h'));
+ if(delta<0) return 0;
+ return -1-delta;
+ },
+ },
+ },
+ },
+ tuishi:{
+ audio:2,
+ trigger:{player:'showCharacterAfter'},
+ forced:true,
+ filter:function(event,player){
+ var target=_status.currentPhase;
+ return player!=target&&target&&target.isAlive()&&event.toShow&&event.toShow.contains('jin_simazhao');
+ },
+ content:function(){
+ player.addTempSkill('tuishi2');
+ },
+ },
+ tuishi2:{
+ trigger:{global:'phaseEnd'},
+ direct:true,
+ filter:function(event,player){
+ var target=_status.currentPhase;
+ return target!=player&&target&&target.isAlive()&&game.hasPlayer(function(current){
+ return current!=target&&target.inRange(current);
+ });
+ },
+ content:function(){
+ 'step 0'
+ var target=_status.currentPhase;
+ event.target=target;
+ player.chooseTarget(get.prompt2('tuishi',event.target),function(card,player,target){
+ var source=_status.event.source;
+ return source!=target&&source.inRange(target);
+ }).set('source',target).set('goon',get.damageEffect(target,player,player)>0).set('ai',function(target){
+ if(!_status.event.goon) return 0;
+ var evt=_status.event;
+ return get.effect(target,{name:'sha'},evt.source,evt.player)
+ });
+ 'step 1'
+ if(result.bool){
+ event.target2=result.targets[0];
+ player.logSkill('tuishi');
+ player.line2([target,event.target2]);
+ game.delayx();
+ }
+ else event.finish();
+ 'step 2'
+ target.chooseToUse({
+ preTarget:event.target2,
+ prompt:'请对'+get.translation(event.target2)+'使用一张【杀】,或受到来自'+get.translation(player)+'的一点伤害',
+ filterCard:function(card,player){
+ return get.name(card)=='sha'&&lib.filter.filterCard.apply(this,arguments);
+ },
+ filterTarget:function(card,player,target){
+ return target==_status.event.preTarget&&lib.filter.filterTarget.apply(this,arguments);
+ },
+ addCount:false,
+ });
+ 'step 3'
+ if(!result.bool) target.damage();
+ },
+ },
+ choufa:{
+ enable:'phaseUse',
+ audio:2,
+ usable:1,
+ filter:function(event,player){
+ return game.hasPlayer(function(current){
+ return lib.skill.choufa.filterTarget(null,player,current);
+ });
+ },
+ filterTarget:function(card,player,target){
+ return target!=player&&!target.hasSkill('choufa2')&&target.countCards('h')>0;
+ },
+ content:function(){
+ 'step 0'
+ player.choosePlayerCard(target,'h',true);
+ 'step 1'
+ player.showCards(result.cards);
+ var type=get.type2(result.cards[0],target);
+ target.storage.choufa2=type;
+ target.addTempSkill('choufa2',{player:'phaseAfter'});
+ },
+ ai:{
+ order:9,
+ result:{
+ target:function(player,target){
+ return -target.countCards('h');
+ },
+ },
+ },
+ },
+ choufa2:{
+ onremove:true,
+ charlotte:true,
+ mark:true,
+ intro:{content:'手牌中的非$牌均视为杀'},
+ mod:{
+ cardname:function(card,player){
+ if(get.type2(card,false)!=player.storage.choufa2) return 'sha';
+ },
+ cardnature:function(card,player){
+ if(get.type2(card,false)!=player.storage.choufa2) return false;
+ },
+ },
+ },
+ zhaoran:{
+ audio:2,
+ trigger:{player:'phaseUseBegin'},
+ content:function(){
+ player.addTempSkill('zhaoran2','phaseUseEnd');
+ },
+ },
+ zhaoran2:{
+ audio:'zhaoran',
+ global:'zhaoran3',
+ trigger:{
+ player:'loseAfter',
+ global:['equipAfter','addJudgeAfter','gainAfter','loseAsyncAfter'],
+ },
+ forced:true,
+ charlotte:true,
+ init:function(player,skill){
+ if(!player.storage[skill]) player.storage[skill]=[];
+ },
+ onremove:true,
+ filter:function(event,player){
+ var evt=event.getl(player);
+ if(!evt||!evt.hs||!evt.hs.length) return false;
+ var list=player.getStorage('zhaoran2');
+ for(var i of evt.hs){
+ var suit=get.suit(i,player);
+ if(!list.contains(suit)&&!player.countCards('h',{suit:suit})) return true;
+ }
+ return false;
+ },
+ content:function(){
+ 'step 0'
+ var list=[];
+ var suits=get.copy(player.storage.zhaoran2);
+ suits.addArray(player.getCards('h').map(function(card){
+ return get.suit(card);
+ }));
+ var evt=trigger.getl(player);
+ for(var i of evt.hs){
+ var suit=get.suit(i,player);
+ if(!suits.contains(suit)) list.add(suit);
+ }
+ event.count=list.length;
+ player.markAuto('zhaoran2',list);
+ 'step 1'
+ event.count--;
+ var filterTarget=function(card,player,target){
+ return target!=player&&target.countDiscardableCards(player,'he')>0;
+ }
+ if(!game.hasPlayer(function(current){
+ return filterTarget(null,player,current);
+ })) event._result={bool:false};
+ else player.chooseTarget(filterTarget,'弃置一名其他角色的一张牌或摸一张牌').set('ai',function(target){
+ var att=get.attitude(player,target);
+ if(att>=0) return 0;
+ if(target.countCards('he',function(card){
+ return get.value(card)>5;
+ })) return -att;
+ return 0;
+ });
+ 'step 2'
+ if(!result.bool) player.draw();
+ else{
+ var target=result.targets[0];
+ player.line(target,'green');
+ player.discardPlayerCard(target,true,'he');
+ }
+ if(event.count>0) event.goto(1);
+ },
+ intro:{
+ content:'已因$牌触发过效果',
+ },
+ },
+ zhaoran3:{
+ ai:{
+ viewHandcard:true,
+ skillTagFilter:function(player,arg,target){
+ return target!=player&&target.hasSkill('zhaoran2');
+ }
+ },
+ },
+ chengwu:{
+ zhuSkill:true,
+ mod:{
+ inRange:function(from,to){
+ if(!from.hasZhuSkill('chengwu')||from._chengwu) return;
+ from._chengwu=true;
+ var bool=game.hasPlayer(function(current){
+ return current!=from&¤t!=to&¤t.group=='jin'&&from.hasZhuSkill('chengwu',current)&¤t.inRange(to);
+ });
+ delete from._chengwu;
+ if(bool) return true;
+ },
+ },
+ },
+ shiren:{
+ trigger:{player:'showCharacterAfter'},
+ hiddenSkill:true,
+ logTarget:function(){
+ return _status.currentPhase;
+ },
+ filter:function(event,player){
+ if(!event.toShow||!event.toShow.contains('jin_wangyuanji')) return false;
+ var target=_status.currentPhase;
+ return target&&target!=player&&target.isAlive()&&target.countCards('h')>0;
+ },
+ content:function(){
+ var next=game.createEvent('yanxi',false);
+ next.player=player;
+ next.target=_status.currentPhase;
+ next.setContent(lib.skill.yanxi.content);
+ },
+ },
+ yanxi:{
+ enable:'phaseUse',
+ usable:1,
+ filterTarget:function(card,player,target){
+ return target!=player&&target.countCards('h')>0;
+ },
+ filter:function(event,player){
+ return game.hasPlayer(function(current){
+ return current!=player&¤t.countCards('h')>0;
+ });
+ },
+ content:function(){
+ 'step 0'
+ event.card=target.getCards('h').randomGet();
+ var cards;
+ cards=get.cards(2);
+ event.cards=cards.concat([event.card]);
+ while(cards.length){
+ ui.cardPile.insertBefore(cards.pop().fix(),ui.cardPile.firstChild);
+ }
+ if(get.mode()=='guozhan'){
+ var num=ui.cardPile.childElementCount;
+ var num1=get.rand(1,num-1),num2=get.rand(1,num-1);
+ if(num1==num2){
+ if(num1==0) num2++;
+ else num1--;
+ }
+ event.cards=[event.card,ui.cardPile.childNodes[num1],ui.cardPile.childNodes[num2]];
+ }
+ game.updateRoundNumber();
+ event.cards.randomSort();
+ game.log(player,'展示了',event.cards);
+ event.videoId=lib.status.videoId++;
+ var str=get.translation(player)+'对'+get.translation(target)+'发动了【宴戏】';
+ game.broadcastAll(function(str,id,cards){
+ var dialog=ui.create.dialog(str,cards);
+ dialog.videoId=id;
+ },str,event.videoId,event.cards);
+ game.addVideo('showCards',player,[str,get.cardsInfo(event.cards)]);
+ game.delay(2);
+ 'step 1'
+ var func=function(id,target){
+ var dialog=get.idDialog(id);
+ if(dialog) dialog.content.firstChild.innerHTML='猜猜哪张是'+get.translation(target)+'的手牌?';
+ };
+ if(player==game.me) func(event.videoId,target);
+ else if(player.isOnline()) player.send(func,event.videoId,target);
+ 'step 2'
+ var next=player.chooseButton(true);
+ next.set('dialog',event.videoId);
+ next.set('ai',function(button){
+ if(_status.event.answer) return button.link==_status.event.answer?1:0;
+ return get.value(button.link,_status.event.player);
+ });
+ if(player.hasSkillTag('viewHandcard',null,target,true)) next.set('answer',card);
+ 'step 3'
+ game.broadcastAll('closeDialog',event.videoId);
+ player.addTempSkill('yanxi2');
+ var card2=result.links[0];
+ if(card2==card){
+ player.popup('洗具');
+ cards.remove(card2);
+ player.$gain2(cards);
+ player.gain(cards,'log').gaintag.add('yanxi');
+ player.gain(card,target,'bySelf','give').gaintag.add('yanxi');
+ }
+ else{
+ player.popup('杯具');
+ player.gain(card2,'gain2').gaintag.add('yanxi');
+ }
+ },
+ ai:{
+ order:6,
+ result:{
+ player:1,
+ target:-0.6,
+ },
+ },
+ },
+ yanxi2:{
+ mod:{
+ ignoredHandcard:function(card,player){
+ if(card.hasGaintag('yanxi')) return true;
+ },
+ cardDiscardable:function(card,player,name){
+ if(name=='phaseDiscard'&&card.hasGaintag('yanxi')) return false;
+ },
+ },
+ onremove:function(player){
+ player.removeGaintag('yanxi');
+ },
+ },
+ sanchen:{
+ enable:'phaseUse',
+ usable:1,
+ filter:function(event,player){
+ var stat=player.getStat('sanchen');
+ return game.hasPlayer(function(current){
+ return (!stat||!stat.contains(current));
+ });
+ },
+ filterTarget:function(card,player,target){
+ var stat=player.getStat('sanchen');
+ return (!stat||!stat.contains(target));
+ },
+ content:function(){
+ 'step 0'
+ var stat=player.getStat();
+ if(!stat.sanchen) stat.sanchen=[];
+ stat.sanchen.push(target);
+ if(get.mode()!='guozhan') player.addMark('sanchen',1,false);
+ target.draw(3);
+ 'step 1'
+ if(!target.countCards('he')) event.finish();
+ else target.chooseToDiscard('he',true,3).set('ai',function(card){
+ var list=ui.selected.cards.map(function(i){
+ return get.type2(i);
+ });
+ if(!list.contains(get.type2(card))) return 7-get.value(card);
+ return -get.value(card);
+ });
+ 'step 2'
+ if(result.bool&&result.cards&&result.cards.length){
+ var list=[];
+ for(var i of result.cards) list.add(get.type2(i));
+ if(list.length==result.cards.length){
+ target.draw();
+ player.getStat('skill').sanchen--;
+ if(get.mode()=='guozhan') player.addTempSkill('pozhu');
+ }
+ }
+ else{
+ target.draw();
+ player.getStat('skill').sanchen--;
+ if(get.mode()=='guozhan') player.addTempSkill('pozhu');
+ }
+ },
+ ai:{
+ order:9,
+ threaten:1.7,
+ result:{
+ target:function(player,target){
+ if(target.hasSkillTag('nogain')) return 0.1;
+ return Math.sqrt(target.countCards('he'));
+ },
+ },
+ },
+ intro:{
+ content:'已发动过#次技能',
+ },
+ marktext:'陈',
+ },
+ zhaotao:{
+ forbid:['guozhan'],
+ trigger:{player:'phaseZhunbeiBegin'},
+ forced:true,
+ juexingji:true,
+ skillAnimation:true,
+ animationColor:'thunder',
+ filter:function(event,player){
+ return player.countMark('sanchen')>2;
+ },
+ content:function(){
+ player.awakenSkill('zhaotao');
+ player.loseMaxHp();
+ player.addSkillLog('pozhu');
+ },
+ derivation:'pozhu',
+ },
+ pozhu:{
+ enable:'phaseUse',
+ viewAsFilter:function(player){
+ return !player.hasSkill('pozhu3')&&player.countCards('hs')>0;
+ },
+ viewAs:{name:'chuqibuyi'},
+ filterCard:true,
+ position:'hs',
+ check:function(card){
+ return 7-get.value(card);
+ },
+ group:'pozhu2',
+ },
+ pozhu2:{
+ trigger:{player:'useCardAfter'},
+ silent:true,
+ filter:function(event,player){
+ return event.skill=='pozhu'&&(get.mode()=='guozhan'||!player.getHistory('sourceDamage',function(evt){
+ return evt.card==event.card;
+ }).length);
+ },
+ content:function(){
+ player.addTempSkill('pozhu3');
+ },
+ },
+ pozhu3:{},
+ xijue:{
+ audio:2,
+ trigger:{
+ global:'gameDrawAfter',
+ player:['enterGame','showCharacterAfter'],
+ },
+ forced:true,
+ filter:function(event,player){
+ if(player._xijue) return false;
+ if(get.mode()=='guozhan') return event.name=='showCharacter'&&event.toShow&&event.toShow.contains('gz_zhanghuyuechen');
+ return event.name!='showCharacter';
+ },
+ content:function(){
+ player.addMark('xijue',4);
+ player._xijue=true;
+ },
+ intro:{
+ name2:'爵',
+ content:'mark',
+ },
+ derivation:['xijue_tuxi','xijue_xiaoguo'],
+ group:['xijue_gain','xijue_tuxi','xijue_xiaoguo'],
+ },
+ xijue_gain:{
+ audio:'xijue',
+ trigger:{player:'phaseEnd'},
+ forced:true,
+ filter:function(event,player){
+ var stat=player.getStat();
+ return stat.damage&&stat.damage>0;
+ },
+ content:function(){
+ player.addMark('xijue',player.getStat().damage);
+ },
+ },
+ xijue_tuxi:{
+ audio:2,
+ trigger:{
+ player:"phaseDrawBegin2",
+ },
+ direct:true,
+ filter:function(event,player){
+ return event.num>0&&!event.numFixed&&player.hasMark('xijue')&&game.hasPlayer(function(target){
+ return player!=target&&target.countCards('h')>0;
+ });
+ },
+ content:function (){
+ "step 0"
+ var num=trigger.num;
+ if(get.mode()=='guozhan'&&num>2) num=2;
+ player.chooseTarget('是否弃置一枚“爵”发动【突袭】?','获得至多'+get.translation(num)+'名角色的各一张手牌,然后少摸等量的牌',[1,num],function(card,player,target){
+ return target.countCards('h')>0&&player!=target;
+ },function(target){
+ var att=get.attitude(_status.event.player,target);
+ if(target.hasSkill('tuntian')) return att/10;
+ return 1-att;
+ });
+ "step 1"
+ if(result.bool){
+ result.targets.sortBySeat();
+ player.logSkill('xijue_tuxi',result.targets);
+ player.removeMark('xijue',1);
+ player.gainMultiple(result.targets);
+ trigger.num-=result.targets.length;
+ }
+ else{
+ event.finish();
+ }
+ "step 2"
+ if(trigger.num<=0) game.delay();
+ },
+ ai:{
+ expose:0.2,
+ },
+ },
+ xijue_xiaoguo:{
+ audio:2,
+ trigger:{global:'phaseJieshuBegin'},
+ filter:function(event,player){
+ return player.hasMark('xijue')&&event.player.isAlive()&&event.player!=player&&player.countCards('h',function(card){
+ if(_status.connectMode) return true;
+ return get.type(card)=='basic';
+ });
+ },
+ direct:true,
+ content:function(){
+ "step 0"
+ var nono=(Math.abs(get.attitude(player,trigger.player))<3||trigger.player.hp>(player.countMark('xijue')*1.5)||trigger.player.countCards('e',function(card){
+ return get.value(card,trigger.player)<=0;
+ }));
+ if(get.damageEffect(trigger.player,player,player)<=0){
+ nono=true;
+ }
+ var next=player.chooseToDiscard('是否弃置一枚“爵”和一张基本牌,对'+get.translation(trigger.player)+'发动【骁果】?',{type:'basic'});
+ next.set('ai',function(card){
+ if(_status.event.nono) return 0;
+ return 8-get.useful(card);
+ });
+ next.set('logSkill',['xijue_xiaoguo',trigger.player]);
+ next.set('nono',nono);
+ "step 1"
+ if(result.bool){
+ player.removeMark('xijue',1);
+ var nono=(get.damageEffect(trigger.player,player,trigger.player)>=0);
+ trigger.player.chooseToDiscard('he','弃置一张装备牌并令'+get.translation(player)+'摸一张牌,或受到一点伤害',{type:'equip'}).set('ai',function(card){
+ if(_status.event.nono){
+ return 0;
+ }
+ if(_status.event.player.hp==1) return 10-get.value(card);
+ return 9-get.value(card);
+ }).set('nono',nono);
+ }
+ else{
+ event.finish();
+ }
+ "step 2"
+ if(result.bool){
+ if(get.mode()!='guozhan') player.draw();
+ }
+ else{
+ trigger.player.damage();
+ }
+ },
+ ai:{
+ expose:0.3,
+ threaten:1.3
+ }
+ },
+ huishi:{
+ audio:2,
+ trigger:{player:'phaseDrawBegin1'},
+ filter:function(event,player){
+ return ui.cardPile.childElementCount%10>0&&!event.numFixed;
+ },
+ prompt:function(){
+ return get.prompt('huishi')+'(当前牌堆尾数:'+ui.cardPile.childElementCount%10+')';
+ },
+ check:function(event,player){
+ return ui.cardPile.childElementCount%10>3;
+ },
+ content:function(){
+ 'step 0'
+ trigger.changeToZero();
+ event.cards=game.cardsGotoOrdering(get.cards(ui.cardPile.childElementCount%10)).cards;
+ var num=Math.ceil(event.cards.length/2);
+ var str='按顺序将卡牌置于牌堆底';
+ if(event.cards.length>num) str='按顺序将'+get.cnNumber(num)+'张牌置于牌堆底,然后获得其余的牌';
+ player.chooseButton([str,'(先选择的在上)
',event.cards],true,num).set('ai',function(card){
+ return -get.value(card);
+ });
+ 'step 1'
+ for(var i of result.links){
+ cards.remove(i);
+ i.fix();
+ ui.cardPile.appendChild(i);
+ }
+ game.updateRoundNumber();
+ if(cards.length) player.gain(cards,'gain2','log');
+ },
+ },
+ qingleng:{
+ audio:2,
+ trigger:{global:'phaseEnd'},
+ direct:true,
+ filter:function(event,player){
+ var target=event.player;
+ return target!=player&&!target.storage.nohp&&(target.hp+target.countCards('h'))>=(ui.cardPile.childElementCount%10)&&player.countCards('he')>0&&player.canUse({name:'sha',nature:'ice'},target,false);
+ },
+ content:function(){
+ 'step 0'
+ player.chooseCard('he',get.prompt('qingleng',trigger.player),'将一张牌当做冰【杀】对其使用',function(card,player){
+ return player.canUse(get.autoViewAs({name:'sha',nature:'ice'},[card]),_status.event.target,false);
+ }).set('target',trigger.player).set('ai',function(card){
+ if(get.effect(_status.event.target,get.autoViewAs({name:'sha',nature:'ice'},[card]),player)<=0) return false;
+ return 6-get.value(card);
+ });
+ 'step 1'
+ if(result.bool){
+ player.useCard(get.autoViewAs({name:'sha',nature:'ice'},result.cards),result.cards,false,trigger.player,'qingleng');
+ if(!player.storage.qingleng||!player.storage.qingleng.contains(trigger.player)){
+ player.draw();
+ player.markAuto('qingleng',[trigger.player]);
+ player.storage.qingleng.sortBySeat();
+ }
+ }
+ },
+ intro:{
+ content:'已对$发动过此技能',
+ },
+ },
+ xuanmu:{
+ audio:2,
+ trigger:{player:'showCharacterAfter'},
+ forced:true,
+ hiddenSkill:true,
+ filter:function(event,player){
+ return event.toShow.contains('jin_zhangchunhua')&&player!=_status.currentPhase;
+ },
+ content:function(){
+ player.addTempSkill('xuanmu2');
+ },
+ },
+ xuanmu2:{
+ trigger:{player:'damageBegin4'},
+ forced:true,
+ popup:false,
+ content:function(){
+ trigger.cancel();
+ },
+ ai:{
+ effect:{
+ target:function(card,player,target){
+ if(get.tag(card,'damage')&&!player.hasSkillTag('jueqing',false,target)) return 'zerotarget';
+ },
+ },
+ },
+ },
+ },
+ card:{
+ cheliji_sichengliangyu:{
+ fullskin:true,
+ vanish:true,
+ derivation:'cheliji',
+ destroy:'chexuan',
+ type:'equip',
+ subtype:'equip5',
+ skills:['cheliji_sichengliangyu'],
+ },
+ cheliji_tiejixuanyu:{
+ fullskin:true,
+ vanish:true,
+ derivation:'cheliji',
+ destroy:'chexuan',
+ type:'equip',
+ subtype:'equip5',
+ skills:['cheliji_tiejixuanyu'],
+ },
+ cheliji_feilunzhanyu:{
+ fullskin:true,
+ vanish:true,
+ derivation:'cheliji',
+ destroy:'chexuan',
+ type:'equip',
+ subtype:'equip5',
+ skills:['cheliji_feilunzhanyu'],
+ },
+ },
+ characterIntro:{
+ zhanghuyuechen:'张虎,生卒年不详,雁门马邑(今山西朔城区大夫庄)人。三国时期曹魏将领。名将张辽之子。官至偏将军,袭封晋阳侯,有一子张统。乐綝(195~257年),字号不详,阳平郡卫国县(今河南省清丰县)人。三国时期曹魏将领,右将军乐进的儿子。果毅坚毅,袭封广昌亭侯,累迁扬州刺史。甘露二年,为叛乱的征东大将军诸葛诞所杀,追赠卫尉。',
+ duyu:'杜预(222年-285年),字元凯,京兆郡杜陵县(今陕西西安)人,中国魏晋时期军事家、经学家、律学家,曹魏散骑常侍杜恕之子。杜预初仕曹魏,任尚书郎,后成为权臣司马昭的幕僚,封丰乐亭侯。西晋建立后,历任河南尹、安西军司、秦州刺史、度支尚书等职。咸宁四年(278年)接替羊祜出任镇南大将军,镇守荆州。他积极备战,支持晋武帝司马炎对孙吴作战,并在咸宁五年(279年)成为晋灭吴之战的统帅之一。战后因功进封当阳县侯,仍镇荆州。太康五年(285年),杜预被征入朝,拜司隶校尉,途中于邓县逝世,终年六十三岁。获赠征南大将军、开府仪同三司,谥号为成。杜预耽思经籍,博学多通,多有建树,时誉为“杜武库”。著有《春秋左氏传集解》及《春秋释例》等。为明朝之前唯一一个同时进入文庙和武庙之人。',
+ xiahouhui:'夏侯徽(211年-234年),字媛容,沛国谯县(今安徽亳州)人,司马师第一任妻子。征南大将军夏侯尚之女,母德阳乡主为大司马曹真之妹。夏侯徽与司马师之间,生有五个女儿。夏侯徽很有见识器度,每当司马师有什么想法时,都由她从旁策划协助。当时司马师之父司马懿位居上将重位,而他的儿子们都有雄才大略。夏侯徽深知司马师绝非曹魏忠臣,而司马师对出身曹魏家族的夏侯徽也非常顾忌。青龙二年(234年),正逢“大疫”、“大病”之年,夏侯徽被司马师毒杀,时年二十四岁,死后葬于峻平陵。西晋建国后,追谥夏侯徽为景怀皇后。',
+ shibao:'石苞(?~273年),字仲容,渤海南皮(今河北省南皮县)人。三国时曹魏至西晋重要将领,西晋开国功臣。西晋建立后,历任大司马、侍中、司徒等职,封乐陵郡公,卒后谥号为“武”。',
+ simazhou:'司马伷(zhòu)(227年~283年6月12日),字子将,河内郡温县(今河南省温县)人。西晋宗室、将领,晋宣帝司马懿第三子,伏太妃所生。晋景帝司马师、文帝司马昭的同父异母弟,晋武帝司马炎的叔父。司马伷少有才气,在曹魏历任宁朔将军、散骑常侍、征虏将军等职,先后受封南安亭侯、东武乡侯,五等爵制建立后,改封南皮伯。西晋建立后,获封东莞郡王,入朝任尚书右仆射、抚军将军,出外拜镇东大将军。后改封琅邪王,加开府仪同三司。西晋伐吴时,率军出涂中,孙皓向他投降并奉上玉玺。战后因功拜大将军,增邑三千户。太康四年(283年),司马伷去世,享年五十七岁。谥号为武,世称“琅邪武王”。著有《周官宁朔新书》八卷,今已亡佚。',
+ huangzu:'黄祖(?-208年),东汉末年将领。刘表任荆州牧时,黄祖出任江夏太守。初平二年(191年),黄祖在与长沙太守孙坚交战时,其部下将孙坚射死,因此与孙家结下仇怨。之后,黄祖多次率部与东吴军队交战,射杀凌操、徐琨等人。建安十三年(208年),在与孙权的交战中,兵败被杀。',
+ cheliji:'彻里吉是历史小说《三国演义》中的虚构人物,西羌国王。蜀相诸葛亮伐魏,魏都督曹真驰书赴羌,国王彻里吉即命雅丹丞相与越吉元帅起羌兵一十五万、并战车直扣西平关。后军大败,越吉亡,雅丹被俘,亮将所获羌兵及车马器械,尽给还雅丹,俱放回国。彻里吉感蜀恩义,与之结盟。正史中没有关于彻里吉的记载。',
+ weiguan:'卫瓘(220年-291年),字伯玉。河东郡安邑县(今山西省夏县)人。三国曹魏后期至西晋初年重臣、书法家,曹魏尚书卫觊之子。卫瓘出身官宦世家,年轻时仕官于曹魏,历任尚书郎、散骑常侍、侍中、廷尉等职。后以镇西军司、监军身份参与伐蜀战争。蜀汉亡后,与钟会一道逮捕邓艾;钟会谋反时,又成功平息叛乱,命田续杀邓艾父子。回师后转任督徐州诸军事、镇东将军,封菑阳侯。西晋建立后,历任青州、幽州刺史、征东大将军等职,成功化解北方边境威胁,因功进爵菑阳公。后入朝为尚书令、侍中,又升任司空,领太子少傅。后逊位,拜太保。晋惠帝即位后,与贾皇后对立,终在政变中满门遇害,享年七十二岁。卫瓘善隶书及章草。不仅兼工各体,还能学古人之长,是颇有创意的书法家。唐朝张怀瓘《书断》中评其章草为“神品”。',
+ },
+ characterTitle:{},
+ perfectPair:{},
+ characterFilter:{},
+ dynamicTranslate:{},
+ perfectPair:{
+ jin_simayi:['jin_zhangchunhua'],
+ jin_simazhao:['jin_wangyuanji'],
+ jin_simashi:['jin_xiahouhui','jin_yanghuiyu'],
+ },
+ characterReplace:{},
+ translate:{
+ jin_zhangchunhua:'晋张春华',
+ jin_zhangchunhua_ab:'张春华',
+ huishi:'慧识',
+ huishi_info:'摸牌阶段,你可以放弃摸牌,改为观看牌堆顶的X张牌,获得其中的一半(向下取整),然后将其余牌置入牌堆底。(X为牌堆数量的个位数)',
+ qingleng:'清冷',
+ qingleng_info:'一名角色的回合结束时,若其体力值与手牌数之和不小于X,则你可将一张牌当无距离限制的冰属性【杀】对其使用(X为牌堆数量的个位数)。若你本局游戏内未对其发动过此技能,则你摸一张牌。',
+ xuanmu:'宣穆',
+ xuanmu2:'宣穆',
+ xuanmu_info:'锁定技,隐匿技。你于其他角色的回合登场时,防止你受到的伤害直到回合结束。',
+ jin_simayi:'晋司马懿',
+ jin_simayi_ab:'司马懿',
+ zhanghuyuechen:'张虎乐綝',
+ xijue:'袭爵',
+ xijue_gain:'袭爵',
+ xijue_info:'锁定技,游戏开始时,你获得4枚“爵”。回合结束时,你获得X枚“爵”(X为你本回合内造成的伤害数)。你可弃置一枚“爵”并在合适的时机发动〖突袭〗和〖骁果〗。',
+ xijue_info_guozhan:'锁定技,当你首次明置此武将牌时,你获得4枚“爵”。回合结束时,你获得X枚“爵”(X为你本回合内造成的伤害数)。你可弃置一枚“爵”并在合适的时机发动〖突袭〗和〖骁果〗。',
+ xijue_tuxi:'突袭',
+ xijue_tuxi_info:'摸牌阶段摸牌时,你可以少摸任意张牌,然后获得等量的角色的各一张手牌。',
+ xijue_tuxi_info_guozhan:'摸牌阶段摸牌时,你可以少摸至多两张牌,然后获得等量的角色的各一张手牌。',
+ xijue_xiaoguo:'骁果',
+ xijue_xiaoguo_info:'其他角色的结束阶段开始时,你可以弃置一张基本牌,令该角色选择一项:1.弃置一张装备牌,然后你摸一张牌;2.受到你对其造成的1点伤害。',
+ xijue_xiaoguo_info_guozhan:'其他角色的结束阶段开始时,你可以弃置一张基本牌,令该角色选择一项:1.弃置一张装备牌;2.受到你对其造成的1点伤害。',
+ duyu:'杜预',
+ sanchen:'三陈',
+ sanchen_info:'出牌阶段,你可选择一名本回合内未选择过的角色。其摸三张牌,然后弃置三张牌。若其未以此法弃置牌或以此法弃置的牌的类别均不相同,则其摸一张牌。否则你本阶段内不能再发动〖三陈〗。',
+ sanchen_info_guozhan:'出牌阶段,你可选择一名本回合内未选择过的角色。其摸三张牌,然后弃置三张牌。若其未以此法弃置牌或以此法弃置的牌的类别均不相同,则其摸一张牌且你获得技能〖破竹〗直到回合结束。否则你本阶段内不能再发动〖三陈〗。',
+ zhaotao:'诏讨',
+ zhaotao_info:'觉醒技,准备阶段,若你本局游戏内发动〖三陈〗的次数大于2,则你减1点体力上限并获得〖破竹〗。',
+ pozhu:'破竹',
+ pozhu_info:'出牌阶段,你可以将一张手牌当做【出其不意】使用。若你未因此牌造成过伤害,则你不能再发动〖破竹〗直到回合结束。',
+ pozhu_info_guozhan:'出牌阶段限一次,你可以将一张手牌当做【出其不意】使用。',
+ jin_wangyuanji:'晋王元姬',
+ jin_wangyuanji_ab:'王元姬',
+ shiren:'识人',
+ shiren_info:'隐匿技。你于其他角色的回合内登场时,若其有手牌,则你可对其发动〖宴戏〗。',
+ yanxi:'宴戏',
+ yanxi2:'宴戏',
+ yanxi_info:'出牌阶段,你可选择一名有手牌的角色。你将该角色的一张随机手牌与牌堆顶的两张牌混合后展示,并选择其中一张。若你以此法选择的是该角色的手牌,则你获得这三张牌。否则你获得选择的牌。你通过〖宴戏〗获得的牌,不计入当前回合的手牌上限。',
+ yanxi_info_guozhan:'出牌阶段,你可选择一名有手牌的角色。你将该角色的一张随机手牌与牌堆中的两张随机牌混合后展示,并选择其中一张。若你以此法选择的是该角色的手牌,则你获得这三张牌。否则你获得选择的牌。你通过〖宴戏〗获得的牌,不计入当前回合的手牌上限。',
+ jin_simazhao:'晋司马昭',
+ jin_simazhao_ab:'司马昭',
+ tuishi:'推弑',
+ tuishi_info:'隐匿技,你于其他角色A的回合内登场时,可于此回合结束时选择其攻击范围内的一名角色B。A选择一项:①对B使用一张【杀】。②你对A造成1点伤害。',
+ choufa:'筹伐',
+ choufa2:'筹伐',
+ choufa_info:'出牌阶段限一次,你可展示一名其他角色的一张手牌并记录其类型A。你令其原类型不为A的手牌的牌名均视为【杀】且均视为无属性,直到其回合结束。',
+ zhaoran:'昭然',
+ zhaoran2:'昭然',
+ zhaoran_info:'出牌阶段开始时,你可令你的手牌对其他角色可见直到出牌阶段结束。若如此做,当你于此阶段内失去一张手牌后,若你的手牌里没有与此牌花色相同的牌且你本回合内未因该花色的牌触发过此效果,则你选择一项:①摸一张牌。②弃置一名其他角色的一张牌。',
+ chengwu:'成务',
+ chengwu_info:'主公技,锁定技,其他晋势力角色攻击范围内的角色视为在你的攻击范围内。',
+ jin_xiahouhui:'晋夏侯徽',
+ jin_xiahouhui_ab:'夏侯徽',
+ baoqie:'宝箧',
+ baoqie_info:'隐匿技,锁定技。你登场后,从牌堆中获得一张不为赠物的宝物牌。若此牌在你的手牌区内为宝物牌,则你可以使用此牌。',
+ jyishi:'宜室',
+ jyishi_info:'每回合限一次,当有其他角色于其出牌阶段内因弃置而失去手牌后,你可令其获得这些牌中位于弃牌堆的一张,然后你获得其余位于弃牌堆的牌。',
+ shiduo:'识度',
+ shiduo_info:'出牌阶段限一次,你可以与一名其他角色拼点。若你赢,你获得其所有手牌。然后你交给其X张手牌(X为你手牌数的一半,向下取整)。',
+ jin_simashi:'晋司马师',
+ jin_simashi_ab:'司马师',
+ taoyin:'韬隐',
+ taoyin2:'韬隐',
+ taoyin_info:'隐匿技,当你登场后,若当前回合角色存在且不是你,则你可令该角色本回合的手牌上限-2。',
+ yimie:'夷灭',
+ yimie2:'夷灭',
+ yimie_info:'每回合限一次,当你对其他角色造成伤害时,若伤害值X小于Y,则你可失去1点体力,将伤害值改为Y。此伤害结算结束后,其回复(Y-X)点体力。(Y为其体力值)’',
+ ruilve:'睿略',
+ ruilve2:'睿略',
+ ruilve_info:'主公技,其他晋势力角色的出牌阶段限一次,该角色可以将一张带有伤害标签的基本牌或锦囊牌交给你。',
+ tairan:'泰然',
+ tairan2:'泰然',
+ tairan_info:'锁定技,回合结束时,你回复Y点体力,并将手牌摸至X张。出牌阶段开始时,你失去Y点体力,弃置上次以此法获得的牌。(X为你的体力上限;Y=(X-你的体力值)且至多为5);摸牌至多摸五张',
+ gz_jin_simayi:'司马懿',
+ gz_jin_zhangchunhua:'张春华',
+ gz_jin_simazhao:'司马昭',
+ gz_jin_wangyuanji:'王元姬',
+ gz_jin_simashi:'司马师',
+ gz_jin_xiahouhui:'夏侯徽',
+ xinquanbian:'权变',
+ xinquanbian_info:'出牌阶段,每当你首次使用/打出一种花色的手牌时,你可以从牌堆顶的X张牌中获得一张与此牌花色不同的牌,并将其余牌以任意顺序置于牌堆顶。出牌阶段,你至多可使用X张非装备手牌。(X为你的体力上限)',
+ shibao:'石苞',
+ zhuosheng:'擢升',
+ zhuosheng_info:'出牌阶段,①你使用本轮内获得的基本牌时无次数和距离限制。②你使用本轮内获得的普通锦囊牌选择目标后,可令此牌的目标数+1或-1。③你使用本轮内获得的装备牌时可以摸一张牌(以此法获得的牌不能触发〖擢升〗)。',
+ jin_yanghuiyu:'晋羊徽瑜',
+ jin_yanghuiyu_ab:'羊徽瑜',
+ gz_jin_yanghuiyu:'羊徽瑜',
+ huirong:'慧容',
+ huirong_info:'隐匿技,锁定技。当你登场后,你令一名角色将手牌数摸至/弃至与体力值相同(至多摸至五张)。',
+ ciwei:'慈威',
+ ciwei_info:'一名角色于其回合内使用第二张牌时,若此牌为基本牌或普通锦囊牌,则你可以弃置一张牌,取消此牌的所有目标。',
+ caiyuan:'才媛',
+ caiyuan_info:'锁定技,当你扣减体力时,你获得一枚“才媛”标记直到你的下回合结束。结束阶段开始时,若你没有“才媛”标记且此回合不是你的第一个回合 ,则你摸两张牌。',
+ huangzu:'黄祖',
+ wangong:'挽弓',
+ wangong2:'挽弓',
+ wangong_info:'锁定技,当你使用基本牌时,你获得如下效果:当你使用下一张牌时,若此牌为【杀】,则此牌无次数和距离限制且伤害+1。',
+ simazhou:'司马伷',
+ caiwang:'才望',
+ caiwang_info:'当你使用或打出牌响应其他角色使用的牌,或其他角色使用或打出牌响应你使用的牌后,若这两张牌颜色相同,则你可以弃置对方的一张牌。',
+ naxiang:'纳降',
+ naxiang2:'纳降',
+ naxiang_info:'锁定技,当你受到其他角色造成的伤害后,或你对其他角色造成伤害后,你对其发动〖才望〗时的“弃置”改为“获得”直到你的下回合开始。',
+ cheliji:'彻里吉',
+ chexuan:'车悬',
+ chexuan_info:'出牌阶段,若你的装备区里没有宝物牌,你可弃置一张黑色牌,选择一张【舆】置入你的装备区;当你失去装备区里的宝物牌后,你可进行判定,若结果为黑色,将一张随机的【舆】置入你的装备区。',
+ qiangshou:'羌首',
+ qiangshou_info:'锁定技,若你的装备区内有宝物牌,你与其他角色的距离-1。',
+ cheliji_sichengliangyu:'四乘粮舆',
+ cheliji_sichengliangyu_bg:'粮',
+ cheliji_sichengliangyu_info:'一名角色的回合结束时,若你的手牌数小于体力值,你可以摸两张牌,然后弃置此牌。',
+ cheliji_tiejixuanyu:'铁蒺玄舆',
+ cheliji_tiejixuanyu_bg:'蒺',
+ cheliji_tiejixuanyu_info:'其他角色的回合结束时,若其本回合未造成过伤害,你可以令其弃置两张牌,然后弃置此牌。',
+ cheliji_feilunzhanyu:'飞轮战舆',
+ cheliji_feilunzhanyu_bg:'轮',
+ cheliji_feilunzhanyu_info:'其他角色的回合结束时,若其本回合使用过非基本牌,你可以令其交给你一张牌,然后弃置此牌。',
+ weiguan:'卫瓘',
+ zhongyun:'忠允',
+ zhongyun2:'忠允',
+ zhongyun_info:'锁定技。每名角色的回合限一次,你受伤/回复体力后,若你的体力值与手牌数相等,你回复一点体力或对你攻击范围内的一名角色造成1点伤害;每名角色的回合限一次,你获得手牌或失去手牌后,若你的体力值与手牌数相等,你摸一张牌或弃置一名其他角色一张牌。',
+ shenpin:'神品',
+ shenpin_info:'当一名角色的判定牌生效前,你可以打出一张与判定牌颜色不同的牌代替之。',
+
+ yingbian_pack1:'文德武备·理',
+ yingbian_pack2:'文德武备·备',
+ yingbian_pack3:'文德武备·果',
+ },
+ };
+});
diff --git a/game/asset.js b/game/asset.js
index 97e885ddf..ef07756b4 100644
--- a/game/asset.js
+++ b/game/asset.js
@@ -1,5 +1,5 @@
window.noname_asset_list=[
- 'v1.9.110.4',
+ 'v1.9.110.5',
'audio/background/aozhan_chaoming.mp3',
'audio/background/aozhan_online.mp3',
'audio/background/aozhan_rewrite.mp3',
@@ -719,6 +719,11 @@ window.noname_asset_list=[
'audio/die/sp_mifuren.mp3',
'audio/die/sp_xinpi.mp3',
'audio/die/wujing.mp3',
+ 'audio/die/cheliji.mp3',
+ 'audio/die/jin_yanghuiyu.mp3',
+ 'audio/die/panshu.mp3',
+ 'audio/die/shibao.mp3',
+ 'audio/die/weiguan.mp3',
'audio/skill/decadezishou1.mp3',
'audio/skill/decadezishou2.mp3',
@@ -3171,6 +3176,24 @@ window.noname_asset_list=[
'audio/skill/zaoyun2.mp3',
'audio/skill/zhuhai_gz_re_xushu1.mp3',
'audio/skill/zhuhai_gz_re_xushu2.mp3',
+ 'audio/skill/caiyuan1.mp3',
+ 'audio/skill/caiyuan2.mp3',
+ 'audio/skill/chexuan1.mp3',
+ 'audio/skill/chexuan2.mp3',
+ 'audio/skill/ciwei1.mp3',
+ 'audio/skill/ciwei2.mp3',
+ 'audio/skill/huirong1.mp3',
+ 'audio/skill/huirong2.mp3',
+ 'audio/skill/jinzhi1.mp3',
+ 'audio/skill/jinzhi2.mp3',
+ 'audio/skill/shenpin1.mp3',
+ 'audio/skill/shenpin2.mp3',
+ 'audio/skill/weiyi1.mp3',
+ 'audio/skill/weiyi2.mp3',
+ 'audio/skill/zhongyun1.mp3',
+ 'audio/skill/zhongyun2.mp3',
+ 'audio/skill/zhuosheng1.mp3',
+ 'audio/skill/zhuosheng2.mp3',
'audio/voice/male/0.mp3',
'audio/voice/male/1.mp3',
@@ -3645,6 +3668,9 @@ window.noname_asset_list=[
'image/card/jintuiziru.png',
'image/card/jiwangkailai.png',
'image/card/zhadan.png',
+ 'image/card/cheliji_feilunzhanyu.png',
+ 'image/card/cheliji_sichengliangyu.png',
+ 'image/card/cheliji_tiejixuanyu.png',
'image/character/shenpei.jpg',
'image/character/re_menghuo.jpg',
@@ -3999,6 +4025,11 @@ window.noname_asset_list=[
'image/character/sp_mifuren.jpg',
'image/character/sp_xinpi.jpg',
'image/character/wujing.jpg',
+ 'image/character/cheliji.jpg',
+ 'image/character/panshu.jpg',
+ 'image/character/shibao.jpg',
+ 'image/character/weiguan.jpg',
+ 'image/character/zhangmiao.jpg',
'image/character/baiwuchang.jpg',
'image/character/baosanniang.jpg',
diff --git a/game/config.js b/game/config.js
index 912e3349c..84f102979 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','sp2','extra','old','mobile','tw'],
+ sgscharacters:['standard','shenhua','xinghuoliaoyuan','refresh','yijiang','sp','sp2','extra','old','mobile','tw','yingbian'],
sgscards:['standard','extra','sp','guozhan','zhulu','yingbian'],
sgsmodes:['identity','guozhan','versus','doudizhu','single','brawl','connect'],
stockmode:['identity','guozhan','versus','boss','doudizhu','single','chess','stone','connect','brawl','tafang'],
@@ -127,7 +127,7 @@ window.config={
sort:'type_sort',
cards:['standard','ex','extra','sp','classic','basic'],
- characters:['standard','shenhua','sp','sp2','yijiang','refresh','xinghuoliaoyuan','mobile','extra'],
+ characters:['standard','shenhua','sp','sp2','yijiang','refresh','xinghuoliaoyuan','mobile','extra','yingbian'],
connect_characters:['diy'],
connect_cards:['huanlekapai','guozhan','sp','zhulu','yingbian'],
plays:[],
diff --git a/game/game.js b/game/game.js
index 07289ce5a..ee0b5ebe9 100644
--- a/game/game.js
+++ b/game/game.js
@@ -15563,6 +15563,16 @@
if(event.popup!==false){
player.$damagepop(num,'water');
}
+ if(_status.dying.contains(player)&&player.hp>0){
+ _status.dying.remove(player);
+ game.broadcast(function(list){
+ _status.dying=list;
+ },_status.dying);
+ var evt=event.getParent('_save');
+ if(evt&&evt.finish) evt.finish();
+ evt=event.getParent('dying');
+ if(evt&&evt.finish) evt.finish()
+ }
event.trigger('changeHp');
},
changeHujia:function(){
@@ -16805,7 +16815,7 @@
if(this.classList.contains('minskin')&&this.node.name.querySelectorAll('br').length>=4){
this.node.name.classList.add('long');
}
- if(info[4].contains('hiddenSkill')){
+ if(info[4].contains('hiddenSkill')&&!this.noclick){
if(!this.hiddenSkills) this.hiddenSkills=[];
this.hiddenSkills.addArray(skills);
skills=[];
@@ -16869,7 +16879,7 @@
};
}
this.node.count.classList.add('p2');
- if(info2[4].contains('hiddenSkill')){
+ if(info2[4].contains('hiddenSkill')&&!this.noclick){
if(!this.hiddenSkills) this.hiddenSkills=[];
this.hiddenSkills.addArray(info2[3]);
this.classList.add(_status.video?'unseen2_v':'unseen2');
@@ -35041,7 +35051,7 @@
func=lib.filter.all;
}
var players=game.players.slice(0).concat(game.dead);
- for(var i=0;i0&&player.getHistory('gain',function(evt){
+ if(evt.getParent().name!='draw'||evt.getParent('phaseDraw')!=event) return false;
+ for(var i of evt.cards){
+ if(hs.contains(i)) return true;
+ }
+ return false;
+ }).length>0;
+ },
+ check:function(event,player){
+ var hs=player.getCards('h'),cards=[],suits=[];
+ player.getHistory('gain',function(evt){
+ if(evt.getParent().name!='draw'||evt.getParent('phaseDraw')!=event) return false;
+ for(var i of evt.cards){
+ if(hs.contains(i)){
+ cards.add(i);
+ suits.add(get.suit(i,player));
+ }
+ }
+ });
+ return cards.length==suits.length;
+ },
+ content:function(){
+ var hs=player.getCards('h'),cards=[],suits=[];
+ player.getHistory('gain',function(evt){
+ if(evt.getParent().name!='draw'||evt.getParent('phaseDraw')!=trigger) return false;
+ for(var i of evt.cards){
+ if(hs.contains(i)){
+ cards.add(i);
+ suits.add(get.suit(i,player));
+ }
+ }
+ });
+ player.showCards(cards,get.translation(player)+'发动了【晋势】');
+ if(cards.length==suits.length) player.draw();
+ },
+ },
_jiazu_key:{
enable:'phaseUse',
usable:1,
@@ -2513,6 +2557,27 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
player.draw();
},
},
+ _jiazu_awaken_jin:{
+ popup:'洛阳',
+ intro:{
+ content:'锁定技,结束阶段,若你手牌中的花色数小于3,则你摸一张牌。',
+ },
+ trigger:{player:'phaseJieshuBegin'},
+ forced:true,
+ filter:function(event,player){
+ if(!player._jiazuAwaken||player.group!='jin') return false;
+ var hs=player.getCards('h'),suits=[];
+ if(hs.length<3) return true;
+ for(var i of hs){
+ suits.add(get.suit(i,player));
+ if(suits.length>2) return false;
+ }
+ return true;
+ },
+ content:function(){
+ player.draw();
+ },
+ },
_jiazu_awaken:{
trigger:{global:'die'},
forced:true,
@@ -2557,6 +2622,10 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
popup:'群心',
prompt2:'锁定技,弃牌阶段开始时,若你的手牌数比体力值多2或更多,你本回合手牌上限+1;若你已损失体力值大于1,你手牌上限+1',
},
+ _jiazu_jin:{
+ popup:'晋势',
+ prompt2:'摸牌阶段结束时,你可以展示你于此阶段内因摸牌而获得的牌。若这些牌的花色均不同,则你摸一张牌。',
+ },
_jiazu_key:{
popup:'键魂',
prompt2:'出牌阶段限一次,你可以摸一张牌并获得1点护甲。若如此做,你于当前回合结束时失去1点体力。',
@@ -2585,6 +2654,12 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
content:'锁定技,当你使用锦囊牌指定其他角色为目标后,你摸一张牌。',
},
},
+ _jiazu_awaken_jin:{
+ popup:'洛阳',
+ intro:{
+ content:'锁定技,结束阶段,若你手牌中的花色数小于3,则你摸一张牌。',
+ },
+ },
_jiazu_awaken_key:{
popup:'光坂',
intro:{
diff --git a/mode/guozhan.js b/mode/guozhan.js
index 9bb406d47..8340d1b12 100644
--- a/mode/guozhan.js
+++ b/mode/guozhan.js
@@ -264,7 +264,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
'4':[
'gz_re_lidian','gz_yuejin','gz_huangzhong',
'gz_menghuo','gz_sunshangxiang','gz_lvmeng',
- 'gz_lvbu',
+ 'gz_lvbu','gz_shibao',
],
'3':[
'gz_simayi','gz_luxun','gz_wuguotai',
@@ -296,6 +296,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
'gz_lingtong','gz_sunshangxiang','gz_sunce',
'gz_re_yuanshao','gz_yuanshu','gz_hetaihou',
'gz_jin_simashi','gz_sp_duyu','gz_miheng',
+ 'gz_shibao',
],
'6':[
'gz_zhenji','gz_guojia','gz_yujin',
@@ -310,7 +311,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
'gz_re_lusu','gz_sunquan','gz_ganning',
'gz_zhangxiu','gz_liqueguosi','gz_huatuo',
'gz_zhanghuyuechen','gz_re_xushu','gz_mifangfushiren',
- 'gz_wujing',
+ 'gz_wujing','gz_weiguan',
],
'4':[
'gz_dianwei','gz_dengai','gz_xunyu',
@@ -349,7 +350,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
guozhan_bian:["gz_liqueguosi","gz_zuoci","gz_bianfuren","gz_xunyou","gz_lingtong","gz_lvfan","gz_masu","gz_shamoke",],
guozhan_quan:["gz_cuimao","gz_yujin","gz_wangping","gz_fazheng","gz_wuguotai","gz_lukang","gz_yuanshu","gz_zhangxiu"],
guozhan_jun:["gz_jun_caocao","gz_jun_sunquan","gz_jun_liubei","gz_jun_zhangjiao"],
- guozhan_jin:['gz_jin_simayi','gz_jin_simazhao','gz_jin_simashi','gz_jin_zhangchunhua','gz_jin_wangyuanji','gz_jin_xiahouhui','gz_duyu','gz_zhanghuyuechen','gz_jin_yanghuiyu','gz_simazhou'],
+ guozhan_jin:['gz_jin_simayi','gz_jin_simazhao','gz_jin_simashi','gz_jin_zhangchunhua','gz_jin_wangyuanji','gz_jin_xiahouhui','gz_duyu','gz_zhanghuyuechen','gz_jin_yanghuiyu','gz_simazhou','gz_shibao','gz_weiguan'],
guozhan_single:['gz_re_xushu','gz_yanbaihu','gz_wujing','gz_dongzhao'],
guozhan_double:['gz_tangzi','gz_liuqi','gz_mengda','gz_mifangfushiren','gz_zhanglu','gz_shixie'],
guozhan_yexinjia:['gz_zhonghui'],
@@ -511,6 +512,8 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
gz_zhanghuyuechen:['male','jin',4,['xijue']],
gz_jin_yanghuiyu:['female','jin',3,['ciwei','caiyuan']],
gz_simazhou:['male','jin',4,['caiwang','naxiang']],
+ gz_shibao:['male','jin',4,['zhuosheng']],
+ gz_weiguan:['male','jin',3,['zhongyun','shenpin']],
gz_key_ushio:['female','key',3,['ushio_huanxin','ushio_xilv'],['doublegroup:key:wei:shu:wu:qun:jin']],
}
@@ -1093,7 +1096,8 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
return num+(lib.skill.gzxingzhao.getNum()>2?4:0);
},
},
- group:['gzxingzhao_xunxun','gzxingzhao_draw','gzxingzhao_lose'],
+ group:['gzxingzhao_xunxun','gzxingzhao_use','gzxingzhao_lose'],
+ subfrequent:['use'],
subSkill:{
xunxun:{
audio:2,
@@ -1123,6 +1127,20 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
}
},
},
+ use:{
+ audio:'gzxingzhao',
+ trigger:{
+ player:['useCard','damageEnd'],
+ },
+ forced:true,
+ filter:function(event,player){
+ return (event.name=='damage'||get.type(event.card)=='equip')&&lib.skill.gzxingzhao.getNum()>1&&!player.isMaxHandcard();
+ },
+ frequent:true,
+ content:function(){
+ player.draw();
+ },
+ },
draw:{
audio:'gzxingzhao',
trigger:{player:'damageEnd'},
@@ -1297,8 +1315,14 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
else if(target.isIn()&&player.countCards('he',function(card){
return !card.hasGaintag('gzwenji');
})){
- player.chooseCard('he',true,'交给'+get.translation(target)+'一张其他牌',function(card){
+ player.chooseCard('he','交给'+get.translation(target)+'一张其他牌,或弃置“问计”牌',function(card){
return !card.hasGaintag('gzwenji');
+ }).set('ai',function(card){
+ var player=_status.event.player,target=_status.event.getParent().target,val=get.value(card,target),hs=player.getCards('h',function(card){
+ return card.hasGaintag('gzwenji');
+ })[0];
+ if(get.attitude(player,target)>0||(hs&&get.value(hs)>val)) return 1/Math.min(0.1,val);
+ return 0;
});
}
else event.finish();
@@ -1307,6 +1331,12 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
target.gain(result.cards,player,'give');
player.removeGaintag('gzwenji');
}
+ else{
+ var cards=player.getCards('h',function(card){
+ return card.hasGaintag('gzwenji');
+ });
+ if(cards.length) player.discard(cards);
+ }
},
subSkill:{
respond:{
@@ -1381,6 +1411,48 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
},
},
gzbushi:{
+ audio:2,
+ trigger:{player:'damageEnd'},
+ frequent:true,
+ content:function(){
+ 'step 0'
+ event.count=trigger.num;
+ 'step 1'
+ event.count--;
+ player.draw();
+ 'step 2'
+ if(event.count>0){
+ player.chooseBool(get.prompt2('gzbushi')).set('frequentSkill','gzbushi');
+ }
+ else event.finish();
+ 'step 3'
+ if(result.bool) event.goto(1);
+ },
+ group:'gzbushi_draw',
+ subSkill:{
+ draw:{
+ trigger:{source:'damageSource'},
+ direct:true,
+ noHidden:true,
+ filter:function(event,player){
+ return event.player.isEnemyOf(player)&&event.player.isIn();
+ },
+ content:function(){
+ 'step 0'
+ trigger.player.chooseBool('是否对'+get.translation(player)+'发动【米道】?','你摸一张牌,然后其摸一张牌');
+ 'step 1'
+ if(result.bool){
+ player.logSkill('gzmidao',trigger.player);
+ game.asyncDraw([trigger.player,player]);
+ }
+ else event.finish();
+ 'step 2'
+ game.delayx();
+ },
+ },
+ },
+ },
+ gzbushi_old:{
audio:2,
trigger:{
player:'damageEnd',
@@ -1426,24 +1498,26 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
audio:2,
trigger:{global:'useCardToPlayered'},
direct:true,
- noHidden:true,
+ //noHidden:true,
filter:function(event,player){
var target=event.player;
return event.isFirstTarget&&target.isFriendOf(player)&&
+ target.isPhaseUsing()&&(target==player||player.hasSkill('gzmidao'))&&
(['basic','trick'].contains(get.type(event.card))&&get.tag(event.card,'damage')>0)&&
- event.cards&&event.cards.length&&!target.hasSkill('gzmidao2')&&target.countCards('h')>0;
+ event.cards&&event.cards.length&&!target.hasSkill('gzmidao2');
},
content:function(){
'step 0'
- if(player==trigger.player) player.chooseBool(get.prompt('gzmidao'),'修改'+get.translation(trigger.card)+'的花色和伤害属性').ai=(()=>false);
- else trigger.player.chooseCard('h','是否对'+get.translation(player)+'发动【米道】?','将一张手牌交给该角色,然后该角色可以修改'+get.translation(trigger.card)+'的花色和伤害属性').ai=(()=>-1);
+ //if(player==trigger.player) player.chooseBool(get.prompt('gzmidao'),'修改'+get.translation(trigger.card)+'的花色和伤害属性').ai=(()=>false);
+ //else
+ trigger.player.chooseBool('是否对'+get.translation(player)+'发动【米道】?','令该角色修改'+get.translation(trigger.card)+'的花色和伤害属性');//.ai=(()=>-1);
'step 1'
if(result.bool){
player.logSkill('gzmidao');
trigger.player.addTempSkill('gzmidao2');
if(player!=trigger.player){
trigger.player.line(player,'green');
- player.gain(result.cards,trigger.player,'giveAuto');
+ //player.gain(result.cards,trigger.player,'giveAuto');
}
}
else event.finish();
@@ -1643,7 +1717,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
'step 2'
var list=['失去一点体力','令'+get.translation(player)+'摸两张牌'];
event.addIndex=0;
- if(target.countCards('he',function(card){
+ if(target.countCards('h',function(card){
return lib.filter.cardDiscardable(card,target,'gzlixia');
})>1) list.unshift('弃置两张牌');
else event.addIndex++;
@@ -1661,7 +1735,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
'step 3'
switch(result.index+event.addIndex){
case 0:
- target.chooseToDiscard(2,'he',true);
+ target.chooseToDiscard(2,'h',true);
break;
case 1:
target.loseHp();
@@ -5117,7 +5191,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
for(var i=0;i