diff --git a/audio/die/chentai.mp3 b/audio/die/chentai.mp3
new file mode 100644
index 000000000..9874794c3
Binary files /dev/null and b/audio/die/chentai.mp3 differ
diff --git a/audio/die/dc_sunhanhua.mp3 b/audio/die/dc_sunhanhua.mp3
new file mode 100644
index 000000000..ad72580e6
Binary files /dev/null and b/audio/die/dc_sunhanhua.mp3 differ
diff --git a/audio/die/huanfan.mp3 b/audio/die/huanfan.mp3
new file mode 100644
index 000000000..334b2c8ee
Binary files /dev/null and b/audio/die/huanfan.mp3 differ
diff --git a/audio/die/qianzhao.mp3 b/audio/die/qianzhao.mp3
new file mode 100644
index 000000000..25d7f7090
Binary files /dev/null and b/audio/die/qianzhao.mp3 differ
diff --git a/audio/die/re_caochong.mp3 b/audio/die/re_caochong.mp3
new file mode 100644
index 000000000..4f8aba1bf
Binary files /dev/null and b/audio/die/re_caochong.mp3 differ
diff --git a/audio/die/sb_menghuo.mp3 b/audio/die/sb_menghuo.mp3
new file mode 100644
index 000000000..a953dbec6
Binary files /dev/null and b/audio/die/sb_menghuo.mp3 differ
diff --git a/audio/die/sb_zhurong.mp3 b/audio/die/sb_zhurong.mp3
new file mode 100644
index 000000000..a9a86df5a
Binary files /dev/null and b/audio/die/sb_zhurong.mp3 differ
diff --git a/audio/die/shichangshi.mp3 b/audio/die/shichangshi.mp3
new file mode 100644
index 000000000..3319bf3b9
Binary files /dev/null and b/audio/die/shichangshi.mp3 differ
diff --git a/audio/die/shichangshiRest.mp3 b/audio/die/shichangshiRest.mp3
new file mode 100644
index 000000000..0f2c92143
Binary files /dev/null and b/audio/die/shichangshiRest.mp3 differ
diff --git a/audio/skill/chengye3.mp3 b/audio/skill/chengye3.mp3
new file mode 100644
index 000000000..965cc2763
Binary files /dev/null and b/audio/skill/chengye3.mp3 differ
diff --git a/audio/skill/dcchenyong1.mp3 b/audio/skill/dcchenyong1.mp3
new file mode 100644
index 000000000..b1a7da31f
Binary files /dev/null and b/audio/skill/dcchenyong1.mp3 differ
diff --git a/audio/skill/dcchenyong2.mp3 b/audio/skill/dcchenyong2.mp3
new file mode 100644
index 000000000..1b2e9ba27
Binary files /dev/null and b/audio/skill/dcchenyong2.mp3 differ
diff --git a/audio/skill/dcchongxu1.mp3 b/audio/skill/dcchongxu1.mp3
new file mode 100644
index 000000000..59f30e424
Binary files /dev/null and b/audio/skill/dcchongxu1.mp3 differ
diff --git a/audio/skill/dcchongxu2.mp3 b/audio/skill/dcchongxu2.mp3
new file mode 100644
index 000000000..81638d12e
Binary files /dev/null and b/audio/skill/dcchongxu2.mp3 differ
diff --git a/audio/skill/dcctjiuxian1.mp3 b/audio/skill/dcctjiuxian1.mp3
new file mode 100644
index 000000000..1bc0bb07a
Binary files /dev/null and b/audio/skill/dcctjiuxian1.mp3 differ
diff --git a/audio/skill/dcctjiuxian2.mp3 b/audio/skill/dcctjiuxian2.mp3
new file mode 100644
index 000000000..e2f71573e
Binary files /dev/null and b/audio/skill/dcctjiuxian2.mp3 differ
diff --git a/audio/skill/dcfumou1.mp3 b/audio/skill/dcfumou1.mp3
new file mode 100644
index 000000000..77ac1e963
Binary files /dev/null and b/audio/skill/dcfumou1.mp3 differ
diff --git a/audio/skill/dcfumou2.mp3 b/audio/skill/dcfumou2.mp3
new file mode 100644
index 000000000..f711903bb
Binary files /dev/null and b/audio/skill/dcfumou2.mp3 differ
diff --git a/audio/skill/dchuiling1.mp3 b/audio/skill/dchuiling1.mp3
new file mode 100644
index 000000000..d4651821f
Binary files /dev/null and b/audio/skill/dchuiling1.mp3 differ
diff --git a/audio/skill/dchuiling2.mp3 b/audio/skill/dchuiling2.mp3
new file mode 100644
index 000000000..23b0078b6
Binary files /dev/null and b/audio/skill/dchuiling2.mp3 differ
diff --git a/audio/skill/dcjianzheng1.mp3 b/audio/skill/dcjianzheng1.mp3
new file mode 100644
index 000000000..e9682a692
Binary files /dev/null and b/audio/skill/dcjianzheng1.mp3 differ
diff --git a/audio/skill/dcjianzheng2.mp3 b/audio/skill/dcjianzheng2.mp3
new file mode 100644
index 000000000..9754d658f
Binary files /dev/null and b/audio/skill/dcjianzheng2.mp3 differ
diff --git a/audio/skill/dcjiuxian1.mp3 b/audio/skill/dcjiuxian1.mp3
deleted file mode 100644
index e34d6b8c3..000000000
Binary files a/audio/skill/dcjiuxian1.mp3 and /dev/null differ
diff --git a/audio/skill/dcjiuxian2.mp3 b/audio/skill/dcjiuxian2.mp3
deleted file mode 100644
index c99cee594..000000000
Binary files a/audio/skill/dcjiuxian2.mp3 and /dev/null differ
diff --git a/audio/skill/dcqinghuang1.mp3 b/audio/skill/dcqinghuang1.mp3
new file mode 100644
index 000000000..a48657990
Binary files /dev/null and b/audio/skill/dcqinghuang1.mp3 differ
diff --git a/audio/skill/dcqinghuang2.mp3 b/audio/skill/dcqinghuang2.mp3
new file mode 100644
index 000000000..93ddda8fd
Binary files /dev/null and b/audio/skill/dcqinghuang2.mp3 differ
diff --git a/audio/skill/dctaji1.mp3 b/audio/skill/dctaji1.mp3
new file mode 100644
index 000000000..9979332c0
Binary files /dev/null and b/audio/skill/dctaji1.mp3 differ
diff --git a/audio/skill/dctaji2.mp3 b/audio/skill/dctaji2.mp3
new file mode 100644
index 000000000..bc22e3896
Binary files /dev/null and b/audio/skill/dctaji2.mp3 differ
diff --git a/audio/skill/mbshihe1.mp3 b/audio/skill/mbshihe1.mp3
new file mode 100644
index 000000000..454f94d9f
Binary files /dev/null and b/audio/skill/mbshihe1.mp3 differ
diff --git a/audio/skill/mbshihe2.mp3 b/audio/skill/mbshihe2.mp3
new file mode 100644
index 000000000..2e610b044
Binary files /dev/null and b/audio/skill/mbshihe2.mp3 differ
diff --git a/audio/skill/mbzhenfu1.mp3 b/audio/skill/mbzhenfu1.mp3
new file mode 100644
index 000000000..2855ec2eb
Binary files /dev/null and b/audio/skill/mbzhenfu1.mp3 differ
diff --git a/audio/skill/mbzhenfu2.mp3 b/audio/skill/mbzhenfu2.mp3
new file mode 100644
index 000000000..a5e34cc33
Binary files /dev/null and b/audio/skill/mbzhenfu2.mp3 differ
diff --git a/audio/skill/rechengxiang1.mp3 b/audio/skill/rechengxiang1.mp3
new file mode 100644
index 000000000..906b6c486
Binary files /dev/null and b/audio/skill/rechengxiang1.mp3 differ
diff --git a/audio/skill/rechengxiang2.mp3 b/audio/skill/rechengxiang2.mp3
new file mode 100644
index 000000000..7bdb33289
Binary files /dev/null and b/audio/skill/rechengxiang2.mp3 differ
diff --git a/audio/skill/renxin_re_caochong1.mp3 b/audio/skill/renxin_re_caochong1.mp3
new file mode 100644
index 000000000..e46fc16ae
Binary files /dev/null and b/audio/skill/renxin_re_caochong1.mp3 differ
diff --git a/audio/skill/renxin_re_caochong2.mp3 b/audio/skill/renxin_re_caochong2.mp3
new file mode 100644
index 000000000..677881e09
Binary files /dev/null and b/audio/skill/renxin_re_caochong2.mp3 differ
diff --git a/audio/skill/sbhuoshou1.mp3 b/audio/skill/sbhuoshou1.mp3
new file mode 100644
index 000000000..183b9c729
Binary files /dev/null and b/audio/skill/sbhuoshou1.mp3 differ
diff --git a/audio/skill/sbhuoshou2.mp3 b/audio/skill/sbhuoshou2.mp3
new file mode 100644
index 000000000..8306fd597
Binary files /dev/null and b/audio/skill/sbhuoshou2.mp3 differ
diff --git a/audio/skill/sbjuxiang1.mp3 b/audio/skill/sbjuxiang1.mp3
new file mode 100644
index 000000000..d82f489d5
Binary files /dev/null and b/audio/skill/sbjuxiang1.mp3 differ
diff --git a/audio/skill/sbjuxiang2.mp3 b/audio/skill/sbjuxiang2.mp3
new file mode 100644
index 000000000..de8e969c5
Binary files /dev/null and b/audio/skill/sbjuxiang2.mp3 differ
diff --git a/audio/skill/sblieren1.mp3 b/audio/skill/sblieren1.mp3
new file mode 100644
index 000000000..611562fc0
Binary files /dev/null and b/audio/skill/sblieren1.mp3 differ
diff --git a/audio/skill/sblieren2.mp3 b/audio/skill/sblieren2.mp3
new file mode 100644
index 000000000..357557904
Binary files /dev/null and b/audio/skill/sblieren2.mp3 differ
diff --git a/audio/skill/sbzaiqi1.mp3 b/audio/skill/sbzaiqi1.mp3
new file mode 100644
index 000000000..3cc4f28e8
Binary files /dev/null and b/audio/skill/sbzaiqi1.mp3 differ
diff --git a/audio/skill/sbzaiqi2.mp3 b/audio/skill/sbzaiqi2.mp3
new file mode 100644
index 000000000..4b9bf0f32
Binary files /dev/null and b/audio/skill/sbzaiqi2.mp3 differ
diff --git a/audio/skill/scs_bilan_enter.mp3 b/audio/skill/scs_bilan_enter.mp3
new file mode 100644
index 000000000..a6780c190
Binary files /dev/null and b/audio/skill/scs_bilan_enter.mp3 differ
diff --git a/audio/skill/scs_duangui_enter.mp3 b/audio/skill/scs_duangui_enter.mp3
new file mode 100644
index 000000000..3e367b46a
Binary files /dev/null and b/audio/skill/scs_duangui_enter.mp3 differ
diff --git a/audio/skill/scs_gaowang_enter.mp3 b/audio/skill/scs_gaowang_enter.mp3
new file mode 100644
index 000000000..63305aaa8
Binary files /dev/null and b/audio/skill/scs_gaowang_enter.mp3 differ
diff --git a/audio/skill/scs_guosheng_enter.mp3 b/audio/skill/scs_guosheng_enter.mp3
new file mode 100644
index 000000000..dafc14882
Binary files /dev/null and b/audio/skill/scs_guosheng_enter.mp3 differ
diff --git a/audio/skill/scs_hankui_enter.mp3 b/audio/skill/scs_hankui_enter.mp3
new file mode 100644
index 000000000..c32a4720e
Binary files /dev/null and b/audio/skill/scs_hankui_enter.mp3 differ
diff --git a/audio/skill/scs_lisong_enter.mp3 b/audio/skill/scs_lisong_enter.mp3
new file mode 100644
index 000000000..4b898197b
Binary files /dev/null and b/audio/skill/scs_lisong_enter.mp3 differ
diff --git a/audio/skill/scs_sunzhang_enter.mp3 b/audio/skill/scs_sunzhang_enter.mp3
new file mode 100644
index 000000000..18216db5a
Binary files /dev/null and b/audio/skill/scs_sunzhang_enter.mp3 differ
diff --git a/audio/skill/scs_xiayun_enter.mp3 b/audio/skill/scs_xiayun_enter.mp3
new file mode 100644
index 000000000..47c963c19
Binary files /dev/null and b/audio/skill/scs_xiayun_enter.mp3 differ
diff --git a/audio/skill/scs_zhangrang_enter.mp3 b/audio/skill/scs_zhangrang_enter.mp3
new file mode 100644
index 000000000..194265dcd
Binary files /dev/null and b/audio/skill/scs_zhangrang_enter.mp3 differ
diff --git a/audio/skill/scs_zhaozhong_enter.mp3 b/audio/skill/scs_zhaozhong_enter.mp3
new file mode 100644
index 000000000..6618d1dde
Binary files /dev/null and b/audio/skill/scs_zhaozhong_enter.mp3 differ
diff --git a/audio/skill/scsanruo1.mp3 b/audio/skill/scsanruo1.mp3
new file mode 100644
index 000000000..8ce9aab5e
Binary files /dev/null and b/audio/skill/scsanruo1.mp3 differ
diff --git a/audio/skill/scschihe1.mp3 b/audio/skill/scschihe1.mp3
new file mode 100644
index 000000000..b62a338fe
Binary files /dev/null and b/audio/skill/scschihe1.mp3 differ
diff --git a/audio/skill/scschiyan1.mp3 b/audio/skill/scschiyan1.mp3
new file mode 100644
index 000000000..82aa75c5d
Binary files /dev/null and b/audio/skill/scschiyan1.mp3 differ
diff --git a/audio/skill/scskuiji1.mp3 b/audio/skill/scskuiji1.mp3
new file mode 100644
index 000000000..baea0ce32
Binary files /dev/null and b/audio/skill/scskuiji1.mp3 differ
diff --git a/audio/skill/scsniqu1.mp3 b/audio/skill/scsniqu1.mp3
new file mode 100644
index 000000000..7fc8c30ca
Binary files /dev/null and b/audio/skill/scsniqu1.mp3 differ
diff --git a/audio/skill/scspicai1.mp3 b/audio/skill/scspicai1.mp3
new file mode 100644
index 000000000..f42c6dfc7
Binary files /dev/null and b/audio/skill/scspicai1.mp3 differ
diff --git a/audio/skill/scstaoluan1.mp3 b/audio/skill/scstaoluan1.mp3
new file mode 100644
index 000000000..8a8891445
Binary files /dev/null and b/audio/skill/scstaoluan1.mp3 differ
diff --git a/audio/skill/scsxiaolu1.mp3 b/audio/skill/scsxiaolu1.mp3
new file mode 100644
index 000000000..2d09465e6
Binary files /dev/null and b/audio/skill/scsxiaolu1.mp3 differ
diff --git a/audio/skill/scsyaozhuo1.mp3 b/audio/skill/scsyaozhuo1.mp3
new file mode 100644
index 000000000..3cc793b40
Binary files /dev/null and b/audio/skill/scsyaozhuo1.mp3 differ
diff --git a/audio/skill/scszimou1.mp3 b/audio/skill/scszimou1.mp3
new file mode 100644
index 000000000..8a60df2f5
Binary files /dev/null and b/audio/skill/scszimou1.mp3 differ
diff --git a/card/standard.js b/card/standard.js
index 2d36baeb9..f96e24c39 100644
--- a/card/standard.js
+++ b/card/standard.js
@@ -2158,8 +2158,10 @@ game.import('card',function(lib,game,ui,get,ai,_status){
player.chooseToUse(get.prompt('qinglong',trigger.target),function(card,player,event){
if(get.name(card)!='sha') return false;
if(player.getEquip('qinglong')==card) return false;
+ var target=_status.event.targetx;
+ if(!lib.filter.targetEnabled(card,player,target)) return false;
return lib.filter.filterCard.apply(this,arguments);
- },trigger.target,-1).set('addCount',false).logSkill='qinglong_skill';
+ },trigger.target,-1).set('targetx',trigger.target).set('addCount',false).logSkill='qinglong_skill';
}
},
zhangba_skill:{
diff --git a/character/clan.js b/character/clan.js
index e0867c25b..5bbf5af8f 100644
--- a/character/clan.js
+++ b/character/clan.js
@@ -15,6 +15,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
clan_hanrong:['male','qun',3,['clanlianhe','clanhuanjia','clanxumin'],['clan:颍川韩氏']],
clan_wukuang:['male','qun',4,['clanlianzhu','clanmuyin'],['clan:陈留吴氏']],
clan_wangling:['male','wei',4,['clanbolong','clanzhongliu'],['clan:太原王氏']],
+ clan_zhongyan:['female','jin',3,['clanguangu','clanxiaoyong','clanbaozu'],['clan:颍川钟氏']],
},
characterSort:{
clan:{
@@ -25,6 +26,257 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
},
skill:{
+ //钟琰族钟琰
+ clanguangu:{
+ audio:2,
+ enable:'phaseUse',
+ usable:1,
+ zhuanhuanji:true,
+ mark:true,
+ marktext:'☯',
+ intro:{
+ content:function(storage){
+ return '转换技。出牌阶段限一次,你可以观看'+(storage?'一名角色的至多四张手':'牌堆顶的至多四张')+'牌,然后可以使用其中的一张牌';
+ },
+ },
+ filter:function(event,player){
+ if(player.storage.clanguangu) return game.hasPlayer(current=>{
+ return current.countCards('h');
+ });
+ return true;
+ },
+ chooseButton:{
+ dialog:function(event,player){
+ var dialog=ui.create.dialog('观骨:选择观看牌堆的牌数','hidden');
+ if(player.storage.clanguangu) dialog.forceDirect=true;
+ return dialog;
+ },
+ chooseControl:function(event,player){
+ var list=[1,2,3,4].map(i=>{
+ return get.cnNumber(i,true);
+ });
+ list.push('cancel2');
+ return list;
+ },
+ check:function(button,player){
+ var ret;
+ if(!player.hasSkill('clanxiaoyong')) ret=4;
+ else{
+ var list=[4,3,2,1];
+ player.getHistory('useCard',evt=>{
+ var len=lib.skill.dcweidang.getLength(evt.card);
+ list.remove(len);
+ });
+ if(list.length) ret=list[0];
+ else ret=4;
+ }
+ return get.cnNumber(ret,true);
+ },
+ backup:function(result,player){
+ return {
+ audio:'clanguangu',
+ filterCard:()=>false,
+ selectCard:-1,
+ filterTarget:function(card,player,target){
+ if(player.storage.clanguangu) return true;
+ return false;
+ },
+ selectTarget:function(){
+ var player=_status.event.player;
+ if(player.storage.clanguangu) return 1;
+ return -1;
+ },
+ num:result.index+1,
+ content:function(){
+ 'step 0'
+ player.changeZhuanhuanji('clanguangu');
+ if(!targets.length){
+ var num=lib.skill.clanguangu_backup.num;
+ var cards=get.cards(num);
+ game.cardsGotoOrdering(cards);
+ event.cards=cards;
+ event.goto(2);
+ }
+ else{
+ var ret;
+ if(!player.hasSkill('clanxiaoyong')) ret=4;
+ else{
+ var list=[4,3,2,1];
+ player.getHistory('useCard',evt=>{
+ var len=lib.skill.dcweidang.getLength(evt.card);
+ list.remove(len);
+ });
+ if(list.length) ret=list[0];
+ else ret=4;
+ }
+ player.choosePlayerCard(target,'h',true,[1,4]).set('prompt','观骨:观看'+get.translation(target)+'的至多四张牌').set('ai',button=>{
+ if(ui.selected.buttons.length>=_status.event.num) return 0;
+ return Math.random();
+ }).set('num',ret);
+ }
+ 'step 1'
+ if(result.bool){
+ event.cards=result.links;
+ }
+ else{
+ event.finish();
+ }
+ 'step 2'
+ var count=cards.length;
+ event.getParent().viewedCount=count;
+ player.chooseButton(['观骨:是否使用其中一张牌?',cards]).set('filterButton',button=>{
+ var player=_status.event.player;
+ var card=button.link;
+ var cardx={
+ name:get.name(card,get.owner(card)),
+ nature:get.nature(card,get.owner(card)),
+ cards:[card],
+ }
+ return player.hasUseTarget(cardx);
+ }).set('ai',button=>{
+ var len=_status.event.len;
+ var card=button.link;
+ var fix=1;
+ if(lib.skill.dcweidang.getLength(card)==len) fix=2;
+ return fix*_status.event.player.getUseValue(card);
+ }).set('len',function(){
+ if(!player.hasSkill('clanxiaoyong')) return 0;
+ var list=[];
+ player.getHistory('useCard',evt=>{
+ var len=lib.skill.dcweidang.getLength(evt.card);
+ list.add(len);
+ });
+ if(!list.contains(count)) return count;
+ if(list.length) return list.randomGet();
+ return 4;
+ }());
+ 'step 3'
+ if(result.bool){
+ var card=result.links[0];
+ cards.remove(card);
+ var cardx={
+ name:get.name(card,get.owner(card)),
+ nature:get.nature(card,get.owner(card)),
+ cards:[card],
+ }
+ var next=player.chooseUseTarget(cardx,[card],true).set('oncard',(card)=>{
+ var owner=_status.event.getParent().owner;
+ if(owner) owner.$throw(card.cards);
+ });
+ if(card.name!=cardx.name||card.nature!=cardx.nature) next.viewAs=true;
+ var owner=get.owner(card);
+ if(owner!=player&&get.position(card)=='h'){
+ next.throw=false;
+ next.set('owner',owner);
+ }
+ }
+ 'step 4'
+ if(!targets.length){
+ while(cards.length) ui.cardPile.insertBefore(cards.pop().fix(),ui.cardPile.firstChild);
+ game.updateRoundNumber();
+ }
+ },
+ ai:{
+ order:10,
+ result:{
+ target:function(player,target){
+ return -Math.min(target.countCards('h'),4)/2;
+ },
+ },
+ }
+ }
+ },
+ prompt:function(result){
+ if(result.index) return '点击“确定”以观看牌堆顶牌';
+ return '观骨:选择观看牌的目标';
+ },
+ },
+ subSkill:{
+ backup:{},
+ },
+ ai:{
+ order:10,
+ result:{
+ player:1,
+ }
+ },
+ },
+ clanxiaoyong:{
+ audio:2,
+ trigger:{
+ player:'useCard',
+ },
+ filter:function(event,player){
+ if(!player.getStat().skill.clanguangu) return false;
+ var history=player.getAllHistory('useSkill',evt=>{
+ return evt.skill=='clanguangu_backup';
+ }).map(evt=>evt.event);
+ if(!history.length) return false;
+ var num=0;
+ for(var i=history.length-1;i>=0;i--){
+ var evt=history[i];
+ if(evt.viewedCount){
+ num=evt.viewedCount;
+ break;
+ }
+ }
+ if(num&&lib.skill.dcweidang.getLength(event.card)==num) return true;
+ return false;
+ },
+ forced:true,
+ content:function(){
+ 'step 0'
+ delete player.getStat().skill.clanguangu;
+ game.log(player,'重置了','#g【观骨】');
+ },
+ mod:{
+ aiOrder:function(player,card,num){
+ if(!player.hasSkill('clanguangu')||!player.getStat().skill.clanguangu) return;
+ var history=player.getAllHistory('useSkill',evt=>{
+ return evt.skill=='clanguangu_backup';
+ }).map(evt=>evt.event);
+ if(!history.length) return;
+ var numx=0;
+ for(var i=history.length-1;i>=0;i--){
+ var evt=history[i];
+ if(evt.viewedCount){
+ numx=evt.viewedCount;
+ break;
+ }
+ }
+ if(numx==lib.skill.dcweidang.getLength(card)){
+ if(!player.hasHistory('useCard',evt=>{
+ return numx==lib.skill.dcweidang.getLength(evt.card);
+ })){
+ return num+9;
+ }
+ }
+ },
+ }
+ },
+ clanbaozu:{
+ audio:2,
+ audioname:['clan_zhongyan'],
+ trigger:{
+ gloabl:'dying',
+ },
+ clanSkill:true,
+ limited:true,
+ skillAnimation:true,
+ animationColor:'water',
+ filter:function(event,player){
+ return event.player.hasClan('颍川钟氏')&&event.player.hp<=0&&!event.player.isLinked();
+ },
+ logTarget:'player',
+ check:function(event,player){
+ return get.recoverEffect(event.player,player,player)>10;
+ },
+ content:function(){
+ 'step 0'
+ trigger.player.link(true);
+ trigger.player.recover();
+ }
+ },
//族王凌
clanbolong:{
audio:2,
@@ -1548,6 +1800,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){
if(player.storage.clanlianzhu) return '转换技。每名角色A的出牌阶段限一次。阴:A可以重铸一张牌,然后你可以重铸一张牌。若这两张牌颜色不同,则你的手牌上限-1;阳:A可以令你选择一名在你或A攻击范围内的另一名其他角色B,然后A和你可依次选择是否对B使用一张【杀】。若这两张【杀】颜色相同,则你的手牌上限+1。';
return '转换技。每名角色A的出牌阶段限一次。阴:A可以重铸一张牌,然后你可以重铸一张牌。若这两张牌颜色不同,则你的手牌上限-1;阳:A可以令你选择一名在你或A攻击范围内的另一名其他角色B,然后A和你可依次选择是否对B使用一张【杀】。若这两张【杀】颜色相同,则你的手牌上限+1。';
},
+ clanguangu:function(player){
+ if(player.storage.clanguangu) return '转换技,出牌阶段限一次。阴:你可以观看牌堆顶的至多四张牌;阳:你可以观看一名角色的至多四张手牌。然后你可以使用其中的一张牌。';
+ return '转换技,出牌阶段限一次。阴:你可以观看牌堆顶的至多四张牌;阳:你可以观看一名角色的至多四张手牌。然后你可以使用其中的一张牌。';
+ },
},
translate:{
clan_wuxian:'族吴苋',
@@ -1607,11 +1863,19 @@ game.import('character',function(lib,game,ui,get,ai,_status){
clanbolong_info:'出牌阶段限一次。你可以令一名其他角色选择一项:1.你交给其一张牌,然后视为对其使用一张雷【杀】;2.交给你等同于你手牌数的牌,然后视为对你使用一张【酒】。',
clanzhongliu:'中流',
clanzhongliu_info:'宗族技,锁定技。当你使用牌时,若此牌对应的实体牌不全为同族角色的手牌,你重置武将牌上的技能。',
+ clan_zhongyan:'族钟琰',
+ clanguangu:'观骨',
+ clanguangu_info:'转换技,出牌阶段限一次。阴:你可以观看牌堆顶的至多四张牌;阳:你可以观看一名角色的至多四张手牌。然后你可以使用其中的一张牌。',
+ clanxiaoyong:'啸咏',
+ clanxiaoyong_info:'锁定技。当你于回合内首次使用字数为X的牌时,你重置〖观骨〗(X为你上次发动〖观骨〗观看的牌数)。',
+ clanbaozu:'保族',
+ clanbaozu_info:'宗族技,限定技。当一名同族角色进入濒死状态时,你可以令其横置并回复1点体力。',
clan_wu:'陈留·吴氏',
clan_xun:'颍川·荀氏',
clan_han:'颍川·韩氏',
clan_wang:'太原·王氏',
+ clan_zhong:'颍川·钟氏',
},
};
});
diff --git a/character/mobile.js b/character/mobile.js
index 3f8ef8bac..421648885 100644
--- a/character/mobile.js
+++ b/character/mobile.js
@@ -6,7 +6,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
connect:true,
characterSort:{
mobile:{
- mobile_default:["miheng","taoqian","lingcao","sunru","lifeng","zhuling","liuye","zhaotongzhaoguang","majun","simazhao","wangyuanji","pangdegong","shenpei","hujinding","zhangyì","jiakui","yangbiao","chendeng","dongcheng","yangyi","dengzhi","zhengxuan","sp_sufei","furong","dingyuan","simashi","yanghuiyu","hucheer","gongsunkang","nanhualaoxian","zhouqun","qiaozhou","fuqian","simafu","mayuanyi","yanpu","sunhanhua","sp_maojie","peixiu","sp_jianggan","ruanhui","xin_mamidi","sp_caosong","yangfu","wangjun","sp_pengyang","qianzhao","old_wanglang"],
+ mobile_default:["miheng","taoqian","lingcao","sunru","lifeng","zhuling","liuye","zhaotongzhaoguang","majun","simazhao","wangyuanji","pangdegong","shenpei","hujinding","zhangyì","jiakui","yangbiao","chendeng","dongcheng","yangyi","dengzhi","zhengxuan","sp_sufei","furong","dingyuan","simashi","yanghuiyu","hucheer","gongsunkang","nanhualaoxian","zhouqun","qiaozhou","fuqian","simafu","mayuanyi","yanpu","sunhanhua","sp_maojie","peixiu","sp_jianggan","ruanhui","xin_mamidi","sp_caosong","yangfu","wangjun","sp_pengyang","qianzhao","old_wanglang",'shichangshi'],
mobile_yijiang:["yj_zhanghe","yj_zhangliao","yj_xuhuang","yj_ganning",'yj_huangzhong','yj_weiyan'],
mobile_shijizhi:["sp_wangcan","sp_chenzhen","sp_sunshao","sp_xunchen","luotong","sp_duyu","sp_bianfuren","feiyi"],
mobile_shijixin:['wujing','sp_mifuren','sp_xinpi','wangling','wangfuzhaolei','zhouchu','sp_kongrong','sp_yanghu'],
@@ -22,12 +22,14 @@ game.import('character',function(lib,game,ui,get,ai,_status){
mobile_yijiang4:["xin_zhoucang","xin_caifuren","xin_guyong","xin_sunluban","xin_caozhen","xin_jushou","xin_wuyi","xin_zhuhuan","re_chenqun"],
mobile_yijiang5:['xin_sunxiu','xin_quancong','xin_zhuzhi','xin_caoxiu'],
mobile_yijiang67:["re_jikang"],
+ mobile_changshi:['scs_zhangrang','scs_zhaozhong','scs_sunzhang','scs_bilan','scs_xiayun','scs_hankui','scs_lisong','scs_duangui','scs_guosheng','scs_gaowang'],
mobile_sp:["old_yuanshu","re_wangyun","re_baosanniang","re_weiwenzhugezhi","re_zhanggong","re_xugong","re_heqi","liuzan","xin_hansui"],
},
},
character:{
+ shichangshi:['male','qun',1,['mbdanggu','mbmowang']],
re_zhangzhang:['male','wu',3,['rezhijian','guzheng']],
- qianzhao:['male','wei',4,['mbshihe','mbzhenfu'],['unseen']],
+ qianzhao:['male','wei',4,['mbshihe','mbzhenfu']],
old_wanglang:['male','wei',3,['gushe','jici']],
re_yanwen:["male","qun",4,["reshuangxiong"]],
xin_zhoutai:['male','wu',4,['buqu','new_fenji']],
@@ -84,7 +86,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
qiaozhou:['male','shu',3,['zhiming','xingbu']],
db_wenyang:['male','wei',4,['dbquedi','dbzhuifeng','dbchongjian','dbchoujue'],['doublegroup:wei:wu']],
xin_guyong:['male','wu',3,['xinshenxing','xinbingyi']],
- re_zhonghui:['male','wei',4,['requanji','zili']],
+ re_zhonghui:['male','wei',4,['requanji','zili'],['clan:颍川钟氏']],
xin_caifuren:['female','qun',3,['xinqieting','xianzhou']],
sp_yanghu:['male','qun',3,['mingfa','rongbei']],
qiaogong:['male','wu',3,['yizhu','luanchou']],
@@ -188,8 +190,28 @@ game.import('character',function(lib,game,ui,get,ai,_status){
xin_yuanshao:['male','qun',4,['reluanji','xueyi'],['zhu']],
re_liushan:['male','shu',3,['xiangle','refangquan','ruoyu'],['zhu']],
re_sunben:['male','wu',4,['jiang','rehunzi','zhiba'],['zhu']],
+
+ scs_zhangrang:['male','qun','',['scstaoluan'],['unseen']],
+ scs_zhaozhong:['male','qun','',['scschiyan'],['unseen']],
+ scs_sunzhang:['male','qun','',['scszimou'],['unseen']],
+ scs_bilan:['male','qun','',['scspicai'],['unseen']],
+ scs_xiayun:['male','qun','',['scsyaozhuo'],['unseen']],
+ scs_hankui:['male','qun','',['scsxiaolu'],['unseen']],
+ scs_lisong:['male','qun','',['scskuiji'],['unseen']],
+ scs_duangui:['male','qun','',['scschihe'],['unseen']],
+ scs_guosheng:['male','qun','',['scsniqu'],['unseen']],
+ scs_gaowang:['male','qun','',['scsanruo'],['unseen']],
},
characterIntro:{
+ shichangshi:'十常侍,指中国东汉(公元25年—220年)灵帝时期(168年-189年)操纵政权的十二个宦官:张让、赵忠、夏恽、郭胜、孙璋、毕岚、栗嵩、段珪、高望、张恭、韩悝、宋典(在小说《三国演义》里,十常侍指的是指张让、赵忠、封谞、段珪、曹节、侯览、蹇硕、程旷、夏恽、郭胜十人),他们都任职中常侍。玩弄小皇帝于股掌之中,以至灵帝称“张常侍是我父,赵常侍是我母”。十常侍自己横征暴敛,卖官鬻爵,他们的父兄子弟遍布天下,横行乡里,祸害百姓,无官敢管。人民不堪剥削、压迫,纷纷起来反抗。当时一些比较清醒的官吏,已看出宦官集团的黑暗腐败,导致大规模农民起义的形势。郎中张钧在给皇帝的奏章中明确指出,黄巾起义是外戚宦官专权逼出来的,他说:“张角所以能兴兵作乱,万人所以乐附之者,其源皆由十常侍多放父兄、子弟、婚宗、宾客典据州郡,辜确财利,侵略百姓,百姓之怨无所告诉,故谋议不轨,聚为‘盗贼’。”后被曹操、袁绍所歼。',
+ sunzhang:'孙璋(?-189年?)东汉末期汉灵帝的宦官,官居中常侍,为十常侍之一,在张让、赵忠之下位居第三。光熹元年(189年),张让、赵忠、段珪等诛杀何进,袁绍率军入宫,诛杀孙璋。',
+ bilan:'毕岚(?—189),东汉宦官,十常侍之一。十常侍朋比为奸,祸乱朝纲,制造出党锢之祸,后被袁绍诛杀。另外,毕岚曾制造翻车,用于取河水洒路。',
+ xiayun:'夏恽(?—189),东汉宦官,十常侍之一。后被袁绍、曹操诛于翠花楼前。',
+ hankui:'韩悝[kuī](?—189),东汉宦官,十常侍之一。后被袁绍所诛。',
+ lisong:'栗嵩,东汉宦官,十常侍之一,与张让等人均一同任职中常侍。',
+ duangui:'段珪(?—189),东汉宦官,十常侍之一。段珪与张让、赵忠等人朋比为奸,党同伐异,横征暴敛,卖官鬻爵,引起了以何进为首的外戚集团的不满。何进谋诛宦官,却不纳曹操、陈琳之谏,多结外镇军阀,翘首京师,与袁绍等谋诛宦竖。终于事泄,被宦官集团查知。张让、段珪等人先下手为强,斩杀何进于嘉德殿前,却也引起了京师的变乱。袁绍等人趁机带兵冲入皇宫,大肆诛杀太监。洛阳卫军变乱后,段珪与张让等人劫持少帝刘辩、陈留王刘协出逃,后被杀。',
+ guosheng:'郭胜,南阳宛(今河南南阳)人。汉灵帝时为中常侍,与张让、赵忠等狼狈为奸,并皆封侯。曾助同乡何进、何太后贵幸。后被袁绍等人率兵诛灭。',
+ gaowang:'高望(?~189年),京兆人,东汉宦官,十常侍之一,为小黄门兼任尚药监,颇得皇子刘辩的信任。中平六年(189年),张让等人杀害大将军何进,袁绍与王匡等人率兵杀入雒阳端门,在承明堂上斩杀中常侍高望。',
qianzhao:'牵招(?—231年),字子经,安平郡观津县(今河北省武邑县)人。三国时期曹魏名将。牵招早年师从乐隐,与刘备成为刎颈之交。投靠冀州牧袁绍,担任冀州从事,统领乌丸突骑。袁绍死后,跟随冀州刺史袁尚,受到并州牧高干加害,投奔丞相曹操,授军谋掾。从平乌丸,出任护乌丸校尉。举茂才出身,从平汉中,授中护军。拜平虏校尉,平定东莱郡叛乱。魏文帝曹丕时期,授护鲜卑校尉,驻扎昌平,迁右中郎将、雁门太守,遏制鲜卑轲比能发展壮大。魏明帝即位,赐爵关内侯,营救护乌丸校尉田豫。太和五年,去世。',
fuqian:'傅佥[qiān] ( ? ~263年),义阳(治今湖北省枣阳市)人,蜀汉将领傅彤之子,三国时期蜀汉名将。金长于谋略,并颇有胆勇,姜维甚爱之。傅佥官至关中都督。魏国攻伐蜀汉时,傅佥和蒋舒防守阳安关,兵败战死。',
wangjun:'王濬(207年~286年),字士治,小名阿童,弘农郡湖县(今河南省灵宝市阌乡)人。西晋时期名将。王濬出身世家,博学多闻,容颜英俊,多谋善战。举秀才出身,起家河东郡从事。泰始八年(272年),担任广汉太守,平定益州叛乱,迁益州刺史。利用长江上游地势之利,修造战船,组建强大的水军。上书晋武帝,促成晋灭吴之战。咸宁六年(280年),率兵顺流而下,熔毁横江铁链,攻克丹阳郡,率先攻取石头城,接受吴末帝孙皓投降,完成西晋统一大业。凭借功勋,拜辅国将军、步兵校尉,册封襄阳侯。为避猜忌,纵情享受,累迁特进、抚军大将军、开府仪同三司、散骑常侍、后军将军等。太康六年十二月(286年1月18日),王濬去世,享年八十岁,谥号为“武”,安葬于柏谷山。',
@@ -626,6 +648,1110 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
},
skill:{
+ //十常侍
+ mbdanggu:{
+ audio:2,
+ trigger:{
+ player:'enterGame',
+ global:'phaseBefore',
+ },
+ filter:function(event,player){
+ return event.name!='phase'||game.phaseNumber==0;
+ },
+ derivation:'mbdanggu_faq',
+ forced:true,
+ unique:true,
+ onremove:function(player){
+ delete player.storage.mbdanggu;
+ delete player.storage.mbdanggu_current;
+ },
+ changshi:[
+ ['scs_zhangrang','scstaoluan'],
+ ['scs_zhaozhong','scschiyan'],
+ ['scs_sunzhang','scszimou'],
+ ['scs_bilan','scspicai'],
+ ['scs_xiayun','scsyaozhuo'],
+ ['scs_hankui','scsxiaolu'],
+ ['scs_lisong','scskuiji'],
+ ['scs_duangui','scschihe'],
+ ['scs_guosheng','scsniqu'],
+ ['scs_gaowang','scsanruo']
+ ],
+ conflictMap:{
+ scs_zhangrang:[],
+ scs_zhaozhong:[],
+ scs_sunzhang:[],
+ scs_bilan:['scs_hankui'],
+ scs_xiayun:[],
+ scs_hankui:['scs_bilan'],
+ scs_lisong:[],
+ scs_duangui:['scs_guosheng'],
+ scs_guosheng:['scs_duangui'],
+ scs_gaowang:['scs_hankui','scs_duangui','scs_guosheng','scs_bilan'],
+ },
+ group:'mbdanggu_back',
+ content:function(){
+ 'step 0'
+ var list=lib.skill.mbdanggu.changshi.map(i=>i[0]);
+ player.markAuto('mbdanggu',list);
+ game.broadcastAll(function(player,list){
+ var cards=[];
+ for(var i=0;i{
+ return changshi!='scs_gaowang';
+ }).randomGets(3);
+ others.push('scs_gaowang');
+ others.randomSort();
+ }
+ else{
+ var others=list.randomGets(4);
+ }
+ var next=player.chooseButton([
+ '党锢:请选择结党对象',
+ [[first],'character'],
+ '可选常侍
',
+ [others,'character']
+ ],true);
+ next.set('filterButton',button=>{
+ if(_status.event.canChoose.contains(button.link)) return true;
+ return false;
+ })
+ next.set('canChoose',function(){
+ var list=others.filter(changshi=>{
+ var map=lib.skill.mbdanggu.conflictMap;
+ var names=map[first];
+ return !names.contains(changshi);
+ });
+ if(list.length==0) return others.randomGets(1);
+ return list;
+ }());
+ next.set('ai',button=>{
+ if(button.link=='scs_gaowang') return 10;
+ return Math.random()*10;
+ })
+ 'step 1'
+ if(result.bool){
+ var first=event.first;
+ var chosen=result.links[0];
+ var skills=[];
+ var list=lib.skill.mbdanggu.changshi;
+ var changshis=[event.first,chosen];
+ player.unmarkAuto('mbdanggu',[chosen]);
+ player.storage.mbdanggu_current=changshis;
+ for(var changshi of changshis){
+ for(var cs of list){
+ if(changshi==cs[0]) skills.push(cs[1]);
+ }
+ }
+ if(lib.skill.mbdanggu.isSingleShichangshi(player)){
+ game.broadcastAll(function(player,chosen){
+ player.name2=chosen;
+ player.classList.add('fullskin2');
+ player.node.avatar2.classList.remove('hidden');
+ player.node.avatar2.setBackground(chosen,'character');
+ player.node.name2.innerHTML=get.slimName(chosen);
+ if(player==game.me&&ui.fakeme){
+ ui.fakeme.style.backgroundImage=player.node.avatar.style.backgroundImage;
+ }
+ },player,chosen);
+ }
+ game.log(player,'选择了常侍','#y'+get.translation(changshis));
+ game.broadcastAll(function(changshi){
+ if(lib.config.background_speak) game.playAudio('skill',changshi+'_enter');
+ },chosen);
+ if(skills.length){
+ player.addAdditionalSkill('mbdanggu',skills);
+ game.log(player,'获得了技能','#g'+get.translation(skills));
+ player.popup(skills);
+ }
+ }
+ },
+ isSingleShichangshi:function(player){
+ var map=lib.skill.mbdanggu.conflictMap;
+ return player.name=='shichangshi'&&(map[player.name1]&&map[player.name2]||map[player.name1]&&!player.name2||!player.name1&&!player.name2||player.name==player.name1&&!player.name2);
+ },
+ mod:{
+ aiValue:function(player,card,num){
+ if(['shan','tao','wuxie','caochuan'].contains(card.name)) return num/10;
+ },
+ aiUseful:function(){
+ return lib.skill.mbdanggu.mod.aiValue.apply(this,arguments);
+ },
+ },
+ intro:{
+ mark:function(dialog,storage,player){
+ dialog.addText('剩余常侍');
+ dialog.addSmall([storage,'character']);
+ if(player.storage.mbdanggu_current){
+ dialog.addText('当前常侍');
+ dialog.addSmall([player.storage.mbdanggu_current,'character']);
+ }
+ }
+ },
+ subSkill:{
+ back:{
+ audio:'mbdanggu',
+ trigger:{global:'restEnd'},
+ filter:function(event,player){
+ return event.getTrigger().player==player;
+ },
+ forced:true,
+ content:function(){
+ var next=game.createEvent('mbdanggu_clique');
+ next.player=player;
+ next.setContent(lib.skill.mbdanggu.contentx);
+ player.draw(2);
+ }
+ }
+ }
+ },
+ mbmowang:{
+ audio:2,
+ trigger:{player:'dieBefore'},
+ filter:function(event,player){
+ return player.getStorage('mbdanggu').length&&event.getParent().name!='giveup'&&player.maxHp>0;
+ },
+ derivation:'mbmowang_faq',
+ forced:true,
+ direct:true,
+ priority:15,
+ group:'mbmowang_die',
+ content:function(){
+ if(_status.mbmowang_return&&_status.mbmowang_return[player.playerid]){
+ trigger.cancel();
+ }
+ else{
+ player.logSkill('mbmowang');
+ game.broadcastAll(function(){
+ if(lib.config.background_speak) game.playAudio('die','shichangshiRest');
+ });
+ trigger.setContent(lib.skill.mbmowang.dieContent);
+ }
+ },
+ dieContent:function(){
+ 'step 0'
+ event.forceDie=true;
+ if(source){
+ game.log(player,'被',source,'杀害');
+ if(source.stat[source.stat.length-1].kill==undefined){
+ source.stat[source.stat.length-1].kill=1;
+ }
+ else{
+ source.stat[source.stat.length-1].kill++;
+ }
+ }
+ else{
+ game.log(player,'阵亡');
+ }
+ if(player.isIn()&&(!_status.mbmowang_return||!_status.mbmowang_return[player.playerid])){
+ event.reserveOut=true;
+ game.log(player,'进入了修整状态');
+ game.log(player,'移出了游戏');
+ game.addGlobalSkill('mbmowang_return');
+ if(!_status.mbmowang_return) _status.mbmowang_return={};
+ _status.mbmowang_return[player.playerid]=1;
+ }
+ else event.finish();
+ if(!game.countPlayer()) game.over();
+ else if(player.hp!=0){
+ player.changeHp(0-player.hp,false).forceDie=true;
+ }
+ game.broadcastAll(function(player){
+ if(player.isLinked()){
+ if(get.is.linked2(player)){
+ player.classList.toggle('linked2');
+ }
+ else{
+ player.classList.toggle('linked');
+ }
+ }
+ if(player.isTurnedOver()){
+ player.classList.toggle('turnedover');
+ }
+ },player);
+ game.addVideo('link',player,player.isLinked());
+ game.addVideo('turnOver',player,player.classList.contains('turnedover'));
+ 'step 1'
+ event.trigger('die');
+ 'step 2'
+ if(event.reserveOut){
+ if(!game.reserveDead){
+ for(var mark in player.marks){
+ if(mark=='mbdanggu') continue;
+ player.unmarkSkill(mark);
+ }
+ var count=1;
+ var list=Array.from(player.node.marks.childNodes);
+ if(list.some(i=>i.name=='mbdanggu')) count++;
+ while(player.node.marks.childNodes.length>count){
+ var node=player.node.marks.lastChild;
+ if(node.name=='mbdanggu'){
+ node=node.previousSibling;
+ }
+ node.remove();
+ }
+ game.broadcast(function(player,count){
+ while(player.node.marks.childNodes.length>count){
+ var node=player.node.marks.lastChild;
+ if(node.name=='mbdanggu'){
+ node=node.previousSibling;
+ }
+ node.remove();
+ }
+ },player,count);
+ }
+ for(var i in player.tempSkills){
+ player.removeSkill(i);
+ }
+ var skills=player.getSkills();
+ for(var i=0;ii[0]));
+ }
+ if(source&&lib.config.border_style=='auto'&&(lib.config.autoborder_count=='kill'||lib.config.autoborder_count=='mix')){
+ switch(source.node.framebg.dataset.auto){
+ case 'gold':case 'silver':source.node.framebg.dataset.auto='gold';break;
+ case 'bronze':source.node.framebg.dataset.auto='silver';break;
+ default:source.node.framebg.dataset.auto=lib.config.autoborder_start||'bronze';
+ }
+ if(lib.config.autoborder_count=='kill'){
+ source.node.framebg.dataset.decoration=source.node.framebg.dataset.auto;
+ }
+ else{
+ var dnum=0;
+ for(var j=0;j=4) source.node.framebg.dataset.decoration='bronze';break;
+ case 'silver':if(dnum>=8) source.node.framebg.dataset.decoration='silver';break;
+ case 'gold':if(dnum>=12) source.node.framebg.dataset.decoration='gold';break;
+ }
+ }
+ source.classList.add('topcount');
+ }
+ },
+ subSkill:{
+ die:{
+ audio:'mbmowang',
+ trigger:{player:'phaseAfter'},
+ forced:true,
+ forceDie:true,
+ content:function(){
+ 'step 0'
+ if(lib.skill.mbdanggu.isSingleShichangshi(player)){
+ if(!player.getStorage('mbdanggu').length){
+ game.broadcastAll(function(player){
+ player.name1=player.name;
+ player.smoothAvatar(false);
+ player.node.avatar.setBackground(player.name+'_dead','character');
+ player.node.name.innerHTML=get.slimName(player.name);
+ delete player.name2;
+ player.classList.remove('fullskin2');
+ player.node.avatar2.classList.add('hidden');
+ player.node.name2.innerHTML='';
+ if(player==game.me&&ui.fakeme){
+ ui.fakeme.style.backgroundImage=player.node.avatar.style.backgroundImage;
+ }
+ },player);
+ }
+ }
+ if(!player.getStorage('mbdanggu').length){
+ game.delay();
+ }
+ 'step 1'
+ player.die();
+ },
+ },
+ return:{
+ trigger:{global:'phaseBefore'},
+ forced:true,
+ charlotte:true,
+ silent:true,
+ filter:function(event,player){
+ return !event._mbmowang_return&&event.player.isOut()&&_status.mbmowang_return[event.player.playerid];
+ },
+ content:function(){
+ 'step 0'
+ trigger._mbmowang_return=true;
+ game.broadcastAll(function(player){
+ player.classList.remove('out');
+ },trigger.player);
+ game.log(trigger.player,'移回了游戏');
+ delete _status.mbmowang_return[trigger.player.playerid];
+ trigger.player.recover(trigger.player.maxHp-trigger.player.hp);
+ 'step 1'
+ event.trigger('restEnd');
+ }
+ }
+ }
+ },
+ //张让
+ scstaoluan:{
+ audio:1,
+ enable:'phaseUse',
+ usable:1,
+ filter:function(event,player){
+ return player.countCards('hes')>0;
+ },
+ chooseButton:{
+ dialog:function(event,player){
+ var list=[];
+ for(var i=0;i0) return 0;
+ if(button.link[2]=='wugu') return;
+ var effect=player.getUseValue(button.link[2]);
+ if(effect>0) return effect;
+ return 0;
+ },
+ backup:function(links,player){
+ return {
+ filterCard:true,
+ audio:'scstaoluan',
+ selectCard:1,
+ popname:true,
+ check:function(card){
+ return 6-get.value(card);
+ },
+ position:'hes',
+ viewAs:{name:links[0][2],nature:links[0][3]}
+ }
+ },
+ prompt:function(links,player){
+ return '将一张牌当做'+(get.translation(links[0][3])||'')+get.translation(links[0][2])+'使用';
+ }
+ },
+ ai:{
+ order:4,
+ result:{
+ player:1
+ },
+ threaten:1.9,
+ },
+ },
+ //赵忠
+ scschiyan:{
+ audio:1,
+ shaRelated:true,
+ trigger:{player:'useCardToPlayered'},
+ direct:true,
+ filter:function(event,player){
+ return event.card.name=='sha'&&event.target.hp>0&&event.target.countCards('he')>0;
+ },
+ content:function(){
+ 'step 0'
+ var next=player.choosePlayerCard(trigger.target,'he',[1,2],get.prompt('scschiyan',trigger.target));
+ next.set('ai',function(button){
+ if(!_status.event.goon) return 0;
+ var val=get.value(button.link);
+ if(button.link==_status.event.target.getEquip(2)) return 2*(val+3);
+ return val;
+ });
+ next.set('goon',get.attitude(player,trigger.target)<=0);
+ next.set('forceAuto',true);
+ 'step 1'
+ if(result.bool){
+ var target=trigger.target;
+ player.logSkill('scschiyan',target);
+ target.addSkill('scschiyan_get');
+ target.addToExpansion('giveAuto',result.cards,target).gaintag.add('scschiyan_get');
+ }
+ },
+ ai:{
+ unequip_ai:true,
+ directHit_ai:true,
+ skillTagFilter:function(player,tag,arg){
+ if(get.attitude(player,arg.target)>0) return false;
+ if(tag=='directHit_ai') return arg.target.hp>=Math.max(1,arg.target.countCards('h')-1);
+ if(arg&&arg.name=='sha'&&arg.target.getEquip(2)) return true;
+ return false;
+ }
+ },
+ group:'scschiyan_damage',
+ subSkill:{
+ get:{
+ trigger:{global:'phaseEnd'},
+ forced:true,
+ popup:false,
+ charlotte:true,
+ filter:function(event,player){
+ return player.getExpansions('scschiyan_get').length>0;
+ },
+ content:function(){
+ 'step 0'
+ var cards=player.getExpansions('scschiyan_get');
+ player.gain(cards,'draw');
+ game.log(player,'收回了'+get.cnNumber(cards.length)+'张“鸱咽”牌');
+ 'step 1'
+ player.removeSkill('scschiyan_get');
+ },
+ intro:{
+ markcount:'expansion',
+ mark:function(dialog,storage,player){
+ var cards=player.getExpansions('scschiyan_get');
+ if(player.isUnderControl(true)) dialog.addAuto(cards);
+ else return '共有'+get.cnNumber(cards.length)+'张牌';
+ },
+ },
+ },
+ damage:{
+ audio:'scschiyan',
+ trigger:{source:'damageBegin1'},
+ forced:true,
+ locked:false,
+ logTarget:'player',
+ filter:function(event,player){
+ var target=event.player;
+ return event.getParent().name=='sha'&&player.countCards('h')>=target.countCards('h')&&player.countCards('e')>=target.countCards('e');
+ },
+ content:function(){
+ trigger.num++;
+ },
+ }
+ }
+ },
+ //孙璋
+ scszimou:{
+ audio:1,
+ trigger:{player:'useCard'},
+ forced:true,
+ filter:function(event,player){
+ var evt=event.getParent('phaseUse');
+ if(!evt||evt.player!=player) return false;
+ var num=player.getHistory('useCard',evtx=>evtx.getParent('phaseUse')==evt).length;
+ return num==2||num==4||num==6;
+ },
+ content:function(){
+ var evt=trigger.getParent('phaseUse');
+ var num=player.getHistory('useCard',evtx=>evtx.getParent('phaseUse')==evt).length;
+ var cards=[];
+ if(num==2){
+ var card=get.cardPile2(card=>{
+ return ['jiu','xionghuangjiu'].contains(card.name);
+ });
+ if(card) cards.push(card);
+ }
+ else if(num==4){
+ var card=get.cardPile2(card=>{
+ return card.name=='sha';
+ });
+ if(card) cards.push(card);
+ }
+ else if(num==6){
+ var card=get.cardPile2(card=>{
+ return card.name=='juedou';
+ });
+ if(card) cards.push(card);
+ }
+ if(cards.length) player.gain(cards,'gain2');
+ },
+ },
+ //毕岚
+ scspicai:{
+ audio:1,
+ enable:'phaseUse',
+ usable:1,
+ frequent:true,
+ content:function(){
+ 'step 0'
+ event.cards=[];
+ event.suits=[];
+ 'step 1'
+ player.judge(function(result){
+ var evt=_status.event.getParent('scspicai');
+ if(evt&&evt.suits&&evt.suits.contains(get.suit(result))) return 0;
+ return 1;
+ }).set('callback',lib.skill.scspicai.callback).judge2=function(result){
+ return result.bool?true:false;
+ };
+ 'step 2'
+ var cards=cards.filterInD();
+ if(cards.length) player.chooseTarget('将'+get.translation(cards)+'交给一名角色',true).set('ai',function(target){
+ var player=_status.event.player;
+ var att=get.attitude(player,target)/Math.sqrt(1+target.countCards('h'));
+ if(target.hasSkillTag('nogain')) att/=10;
+ return att;
+ });
+ else event.finish();
+ 'step 3'
+ if(result.bool){
+ var target=result.targets[0];
+ event.target=target;
+ player.line(target,'green');
+ target.gain(cards,'gain2').giver=player;
+ }
+ else event.finish();
+ },
+ callback:function(){
+ 'step 0'
+ var evt=event.getParent(2);
+ event.getParent().orderingCards.remove(event.judgeResult.card);
+ evt.cards.push(event.judgeResult.card);
+ if(event.getParent().result.bool){
+ evt.suits.push(event.getParent().result.suit);
+ player.chooseBool('是否继续发动【庀材】?').set('frequentSkill','scspicai');
+ }
+ else event._result={bool:false};
+ 'step 1'
+ if(result.bool) event.getParent(2).redo();
+ },
+ ai:{
+ order:9,
+ result:{
+ player:1,
+ },
+ },
+ },
+ //夏恽
+ scsyaozhuo:{
+ audio:1,
+ enable:'phaseUse',
+ usable:1,
+ filter:function(event,player){
+ return game.hasPlayer(function(current){
+ return player.canCompare(current);
+ });
+ },
+ filterTarget:function(card,player,current){
+ return player.canCompare(current);
+ },
+ content:function(){
+ 'step 0'
+ player.chooseToCompare(target);
+ 'step 1'
+ if(result.bool){
+ target.skip('phaseDraw');
+ target.addTempSkill('scsyaozhuo_skip',{player:'phaseDrawSkipped'});
+ }
+ else player.chooseToDiscard(true,'he');
+ },
+ subSkill:{
+ skip:{
+ mark:true,
+ intro:{content:'跳过下一个摸牌阶段'},
+ }
+ },
+ ai:{
+ order:1,
+ result:{
+ target:function(player,target){
+ if(target.skipList.contains('phaseDraw')||target.hasSkill('pingkou')) return 0;
+ var hs=player.getCards('h').sort(function(a,b){
+ return b.number-a.number;
+ });
+ var ts=target.getCards('h').sort(function(a,b){
+ return b.number-a.number;
+ });
+ if(!hs.length||!ts.length) return 0;
+ if(hs[0].number>ts[0].number-2&&hs[0].number>5) return -1;
+ return 0;
+ },
+ },
+ },
+ },
+ //韩悝
+ scsxiaolu:{
+ audio:1,
+ enable:'phaseUse',
+ usable:1,
+ content:function(){
+ 'step 0'
+ player.draw(3);
+ 'step 1'
+ var num=player.countCards('he');
+ if(!num) event.finish();
+ else if(num<3) event._result={index:1};
+ else player.chooseControl().set('choiceList',[
+ '将三张牌交给一名其他角色',
+ '弃置三张牌',
+ ]).set('ai',function(){
+ if(game.hasPlayer(function(current){
+ return current!=player&&get.attitude(player,current)>2;
+ })) return 0;
+ return 1;
+ });
+ 'step 2'
+ if(result.index==0){
+ player.chooseCardTarget({
+ position:'he',
+ filterCard:true,
+ selectCard:3,
+ filterTarget:function(card,player,target){
+ return player!=target;
+ },
+ ai1:function(card){
+ return get.unuseful(card);
+ },
+ ai2:function(target){
+ var att=get.attitude(_status.event.player,target);
+ if(target.hasSkillTag('nogain')) att/=10;
+ if(target.hasJudge('lebu')) att/=5;
+ return att;
+ },
+ prompt:'选择三张牌,交给一名其他角色',
+ forced:true,
+ });
+ }
+ else{
+ player.chooseToDiscard(3,true,'he');
+ event.finish();
+ }
+ 'step 3'
+ if(result.bool){
+ var target=result.targets[0];
+ player.give(result.cards,target);
+ }
+ },
+ ai:{
+ order:9,
+ result:{player:2}
+ }
+ },
+ //栗嵩
+ scskuiji:{
+ audio:1,
+ enable:'phaseUse',
+ usable:1,
+ filterTarget:function(card,player,target){
+ return target!=player&&target.countCards('h')>0;
+ },
+ content:function(){
+ 'step 0'
+ event.list1=[];
+ event.list2=[];
+ if(player.countCards('h')>0){
+ var chooseButton=player.chooseButton(4,['你的手牌',player.getCards('h'),get.translation(target.name)+'的手牌',target.getCards('h')]);
+ }
+ else{
+ var chooseButton=player.chooseButton(4,[get.translation(target.name)+'的手牌',target.getCards('h')]);
+ }
+ chooseButton.set('target',target);
+ chooseButton.set('ai',function(button){
+ var player=_status.event.player;
+ var target=_status.event.target;
+ var ps=[];
+ var ts=[];
+ for(var i=0;i0) return false;
+ return true;
+ },
+ content:function(){
+ var num=2;
+ var evt=trigger.getParent();
+ var suit=get.suit(trigger.card);
+ var suits=[];
+ if(num>0){
+ if(typeof evt.baseDamage!='number') evt.baseDamage=1;
+ var cards=get.cards(num);
+ player.showCards(cards.slice(0),get.translation(player)+'发动了【叱吓】');
+ while(cards.length>0){
+ var card=cards.pop();
+ var suitx=get.suit(card,false);
+ suits.add(suitx);
+ if(suit==suitx) evt.baseDamage++;
+ ui.cardPile.insertBefore(card,ui.cardPile.firstChild);
+ }
+ game.updateRoundNumber();
+ }
+ evt._scschihe_player=player;
+ var target=trigger.target;
+ target.addTempSkill('scschihe_block');
+ if(!target.storage.scschihe_block) target.storage.scschihe_block=[];
+ target.storage.scschihe_block.push([evt.card,suits]);
+ lib.skill.scschihe.updateBlocker(target);
+ },
+ updateBlocker:function(player){
+ var list=[],storage=player.storage.scschihe_block;
+ if(storage&&storage.length){
+ for(var i of storage) list.addArray(i[1]);
+ }
+ player.storage.scschihe_blocker=list;
+ },
+ ai:{
+ threaten:2.5,
+ halfneg:true,
+ },
+ subSkill:{
+ block:{
+ mod:{
+ cardEnabled:function(card,player){
+ if(!player.storage.scschihe_blocker) return;
+ var suit=get.suit(card);
+ if(suit=='none') return;
+ var evt=_status.event;
+ if(evt.name!='chooseToUse') evt=evt.getParent('chooseToUse');
+ if(!evt||!evt.respondTo||evt.respondTo[1].name!='sha') return;
+ if(player.storage.scschihe_blocker.contains(suit)) return false;
+ },
+ },
+ trigger:{
+ player:['damageBefore','damageCancelled','damageZero'],
+ target:['shaMiss','useCardToExcluded','useCardToEnd'],
+ global:['useCardEnd'],
+ },
+ forced:true,
+ firstDo:true,
+ charlotte:true,
+ onremove:function(player){
+ delete player.storage.scschihe_block;
+ delete player.storage.scschihe_blocker;
+ },
+ filter:function(event,player){
+ if(!event.card||!player.storage.scschihe_block) return false;
+ for(var i of player.storage.scschihe_block){
+ if(i[0]==event.card) return true;
+ }
+ return false;
+ },
+ content:function(){
+ var storage=player.storage.scschihe_block;
+ for(var i=0;i0&&player.getUseValue({name:name,nature:name=='sha'?'fire':null})>0){
+ var temp=get.order({name:name,nature:name=='sha'?'fire':null});
+ if(temp>max){
+ max=temp;
+ name2=map[name];
+ }
+ }
+ }
+ if(name2==get.suit(card,player)) return (name2=='diamond'?(5-get.value(card)):20-get.value(card));
+ return 0;
+ }
+ return 1;
+ },
+ position:'hes',
+ filterCard:function(card,player,event){
+ event=event||_status.event;
+ var filter=event._backup.filterCard;
+ var name=get.suit(card,player);
+ if(name=='club'&&filter({name:'shan',cards:[card]},player,event)) return true;
+ if(name=='diamond'&&filter({name:'sha',cards:[card],nature:'fire'},player,event)) return true;
+ if(name=='spade'&&filter({name:'wuxie',cards:[card]},player,event)) return true;
+ if(name=='heart'&&filter({name:'tao',cards:[card]},player,event)) return true;
+ return false;
+ },
+ filter:function(event,player){
+ var filter=event.filterCard;
+ if(filter({name:'sha',nature:'fire'},player,event)&&player.countCards('hes',{suit:'diamond'})) return true;
+ if(filter({name:'shan'},player,event)&&player.countCards('hes',{suit:'club'})) return true;
+ if(filter({name:'tao'},player,event)&&player.countCards('hes',{suit:'heart'})) return true;
+ if(filter({name:'wuxie'},player,event)&&player.countCards('hes',{suit:'spade'})) return true;
+ return false;
+ },
+ precontent:function(){
+ 'step 0'
+ player.addTempSkill('scsanruo_effect');
+ },
+ ai:{
+ respondSha:true,
+ respondShan:true,
+ skillTagFilter:function(player,tag){
+ var name;
+ switch(tag){
+ case 'respondSha':name='diamond';break;
+ case 'respondShan':name='club';break;
+ case 'save':name='heart';break;
+ }
+ if(!player.countCards('hes',{suit:name})) return false;
+ },
+ order:function(item,player){
+ if(player&&_status.event.type=='phase'){
+ var max=0;
+ var list=['sha','tao'];
+ var map={sha:'diamond',tao:'heart'}
+ for(var i=0;i0&&player.getUseValue({name:name,nature:name=='sha'?'fire':null})>0){
+ var temp=get.order({name:name,nature:name=='sha'?'fire':null});
+ if(temp>max) max=temp;
+ }
+ }
+ max/=1.1;
+ return max;
+ }
+ return 2;
+ },
+ },
+ hiddenCard:function(player,name){
+ if(name=='wuxie'&&_status.connectMode&&player.countCards('hes')>0) return true;
+ if(name=='wuxie') return player.countCards('hes',{suit:'spade'})>0;
+ if(name=='tao') return player.countCards('hes',{suit:'heart'})>0;
+ },
+ subSkill:{
+ effect:{
+ audio:'scsanruo',
+ trigger:{
+ player:['useCard','respond'],
+ },
+ filter:function(event,player){
+ return event.skill=='scsanruo';
+ },
+ direct:true,
+ forced:true,
+ charlotte:true,
+ content:function(){
+ 'step 0'
+ var name=trigger.card.name;
+ var next=game.createEvent('scsanruo_'+name);
+ next.player=player;
+ next.setContent(lib.skill.scsanruo_effect[name=='shan'?'sha':name]||function(){});
+ },
+ sha:function(){
+ 'step 0'
+ var trigger=event.getParent().getTrigger();
+ if(trigger.name=='useCard'){
+ var target=lib.skill.chongzhen1.logTarget(trigger,player);
+ }
+ else{
+ var target=trigger.source;
+ }
+ event.target=target;
+ if(!target||!target.countGainableCards(player,'he')) event._result={bool:false};
+ else player.chooseBool(get.prompt('scsanruo_effect',target),'获得该角色的一张牌').set('ai',()=>{
+ return _status.event.goon;
+ }).set('goon',get.attitude(player,target)<1);
+ 'step 1'
+ if(result.bool){
+ player.logSkill('scsanruo_effect',target);
+ player.gainPlayerCard(target,'he',true);
+ }
+ },
+ tao:function(){
+ 'step 0'
+ player.chooseTarget(get.prompt('scsanruo'),'获得一名其他角色的一张牌',(card,player,target)=>{
+ return target.countGainableCards(player,'he')&&target!=player;
+ }).set('ai',target=>{
+ return 1-get.attitude(_status.event.player,target);
+ });
+ 'step 1'
+ if(result.bool){
+ var target=result.targets[0];
+ player.logSkill('scsanruo_effect',target);
+ player.gainPlayerCard(target,'he',true);
+ }
+ },
+ wuxie:function(){
+ 'step 0'
+ var trigger=event.getParent().getTrigger();
+ var target=trigger.respondTo[0];
+ event.target=target;
+ if(!target||!target.countGainableCards(player,'he')) event._result={bool:false};
+ else player.chooseBool(get.prompt('scsanruo_effect',target),'获得该角色的一张牌').set('ai',()=>{
+ return _status.event.goon;
+ }).set('goon',get.attitude(player,target)<1);
+ 'step 1'
+ if(result.bool){
+ player.logSkill('scsanruo_effect',target);
+ player.gainPlayerCard(target,'he',true);
+ }
+ }
+ },
+ },
+ },
//牵招
mbshihe:{
audio:2,
@@ -1900,7 +3026,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
//马日磾
chengye:{
- audio:2,
+ audio:3,
liujing_filter:[
function(card){
return get.type(card,false)=='trick'&&get.tag(card,'damage',null,false)>0;
@@ -18842,6 +19968,46 @@ game.import('character',function(lib,game,ui,get,ai,_status){
mbshihe_info:'出牌阶段限一次。你可以与一名角色拼点。若你:赢,当其于其下回合结束前对你造成伤害时,取消之;没赢,你随机弃置一张牌。',
mbzhenfu:'镇抚',
mbzhenfu_info:'结束阶段,若你本回合因弃置失去过牌,你可以令一名其他角色获得1点护甲。',
+ shichangshi:'十常侍',
+ mbdanggu:'党锢',
+ mbdanggu_info:'锁定技。①游戏开始时,你获得十张“常侍”牌,然后你进行一次结党。②当你修整结束后,你进行一次结党并摸两张牌。③若你有亮出的“常侍”牌,你视为拥有这些牌的技能。',
+ mbdanggu_faq:'关于结党',
+ mbdanggu_faq_info:'
系统随机选择一张未亮出过的“常侍”牌,然后选择四张未亮出过的“常侍”牌(若剩余“常侍”牌中有「高望」,则必定出现)。你观看前者,然后从后者中选择一名与前者互相认可的“常侍”牌(不认可的“常侍”牌为不可选状态),你选择这两张牌。然后若此时不为双将模式,你将这两张武将牌作为你的武将牌(不移除原有技能);否则你获得这两张武将牌上的技能。',
+ mbmowang:'殁亡',
+ mbmowang_info:'锁定技。①当你死亡前,若你有未亮出的“常侍”牌且体力上限大于0,你将死亡改为修整至你的下个回合开始前,然后你复原武将牌,且不于此次死亡事件中进行展示身份牌、检测游戏胜利条件与执行奖惩的流程。②回合结束后,你死亡。',
+ mbmowang_faq:'关于修整',
+ mbmowang_faq_info:'
将武将牌移出游戏(视为你存活)。当该角色修整结束,其移回游戏。',
+ scs_zhangrang:'张让',
+ scstaoluan:'滔乱',
+ scstaoluan_info:'出牌阶段限一次。你可以将一张牌当任意一种基本牌或普通锦囊牌使用。',
+ scs_zhaozhong:'赵忠',
+ scschiyan:'鸱咽',
+ scschiyan_info:'①当你使用【杀】指定目标后,你可以将其的至多两张牌置于其武将牌上,然后其于当前回合结束时获得这些牌。②当你因执行【杀】的效果对一名角色造成伤害时,若该角色的手牌数和装备区内的牌数均不大于你,此伤害+1。',
+ scs_sunzhang:'孙璋',
+ scszimou:'自谋',
+ scszimou_info:'锁定技。出牌阶段,当你使用第二/四/六张牌时,你从牌堆中获得一张【酒】/【杀】/【决斗】。',
+ scs_bilan:'毕岚',
+ scspicai:'庀材',
+ scspicai_info:'出牌阶段限一次。你可进行判定牌不置入弃牌堆的判定。若判定结果与本次发动技能时的其他判定结果的花色均不相同,则你可以重复此流程。然后你将所有位于处理区的判定牌交给一名角色。',
+ scs_xiayun:'夏恽',
+ scsyaozhuo:'谣诼',
+ scsyaozhuo_info:'出牌阶段限一次。你可以与一名角色拼点,若你赢,其跳过下一个摸牌阶段;若你没赢,你弃置一张牌。',
+ scs_hankui:'韩悝',
+ scsxiaolu:'宵赂',
+ scsxiaolu_info:'出牌阶段限一次。你可以摸三张牌,然后选择一项:1.弃置三张牌;2.将三张牌交给一名其他角色。',
+ scs_lisong:'栗嵩',
+ scskuiji:'窥机',
+ scskuiji_info:'出牌阶段限一次。你可以观看一名其他角色的手牌,然后弃置你与其的共计四张花色各不相同的手牌。',
+ scs_duangui:'段珪',
+ scschihe:'叱吓',
+ scschihe_info:'当你使用【杀】指定唯一目标后,你可亮出牌堆顶的两张牌,令此【杀】的伤害值基数+X(X为亮出牌中花色与此【杀】相同的牌数),且目标角色不能使用亮出牌包含的花色的牌响应此【杀】。',
+ scs_guosheng:'郭胜',
+ scsniqu:'逆取',
+ scsniqu_info:'出牌阶段限一次。你可以对一名角色造成1点火焰伤害。',
+ scs_gaowang:'高望',
+ scsanruo:'安弱',
+ scsanruo_info:'你可以将一张♥牌当【桃】、♦当火【杀】、♣牌当【闪】、♠当【无懈可击】使用。当你以此法使用或打出【杀】或【闪】时,你可以获得对方的一张牌;当你以此法使用【桃】时,你可以获得一名其他角色的一张牌;当你以此法使用【无懈可击】时,你可以获得此牌响应的普通锦囊牌的使用者的一张牌。',
+
mobile_standard:'手杀异构·标准包',
mobile_shenhua:'手杀异构·神话再临',
@@ -18852,6 +20018,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
mobile_yijiang5:'手杀异构·将5',
mobile_yijiang67:'手杀异构·原创设计',
mobile_sp:'手杀异构·SP',
+ mobile_changshi:'十常侍单体',
mobile_shijiren:'始计篇·仁',
mobile_shijizhi:'始计篇·智',
mobile_shijixin:'始计篇·信',
diff --git a/character/offline.js b/character/offline.js
index f409480d2..36eed47ee 100644
--- a/character/offline.js
+++ b/character/offline.js
@@ -67,7 +67,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
pe_wenqin:['male','wei',4,['gzjinfa']],
pe_sunchen:['male','wu',4,['zyshilu','zyxiongnve']],
pe_mengda:['male','wei',4,['qiuan','liangfan']],
- pe_zhonghui:['male','wei',4,['zyquanji','zypaiyi']],
+ pe_zhonghui:['male','wei',4,['zyquanji','zypaiyi'],['clan:颍川钟氏']],
pe_wangyun:['male','qun',3,['zylianji','zymoucheng'],['clan:太原王氏']],
shen_jiaxu:['male','shen',3,['weimu','zybishi','zyjianbing'],['qun']],
yj_zhenji:['female','wei',3,['yjluoshen','qingguo']],
diff --git a/character/old.js b/character/old.js
index ded883153..1bfe3b3ec 100755
--- a/character/old.js
+++ b/character/old.js
@@ -66,7 +66,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
xin_yujin:['male','wei',4,['jieyue']],
//lusu:['male','wu',3,['haoshi','dimeng']],
//yuanshao:['male','qun',4,['luanji','xueyi'],['zhu']],
- old_zhonghui:['male','wei',3,['zzhenggong','zquanji','zbaijiang']],
+ old_zhonghui:['male','wei',3,['zzhenggong','zquanji','zbaijiang'],['clan:颍川钟氏']],
old_xusheng:['male','wu',4,['pojun']],
old_zhuran:['male','wu',4,['olddanshou']],
old_lingtong:['male','wu',4,['oldxuanfeng']],
diff --git a/character/rank.js b/character/rank.js
index e21540367..4009323bb 100644
--- a/character/rank.js
+++ b/character/rank.js
@@ -300,6 +300,7 @@ window.noname_character_rank={
'wangguan',
'duanqiaoxiao',
'old_wanglang',
+ 'shichangshi',
'key_misuzu',
'key_sunohara',
'key_umi',
@@ -582,6 +583,7 @@ window.noname_character_rank={
'dc_ruiji',
'yuantanyuanxiyuanshang',
'yanghong',
+ 'dc_sunhanhua',
],
bp:[
'chess_diaochan',
@@ -926,6 +928,7 @@ window.noname_character_rank={
'ol_zhangzhang',
'ol_mengda',
'dc_wuban',
+ 're_caochong',
],
b:[
'diy_feishi',
@@ -1216,6 +1219,9 @@ window.noname_character_rank={
'vtb_xiaotao',
'zhangchu',
'dc_duyu',
+ 'chentai',
+ 'clan_zhongyan',
+ 'sb_zhurong',
],
bm:[
'diy_xizhenxihong',
@@ -1404,6 +1410,7 @@ window.noname_character_rank={
'yeshiwen',
'qianzhao',
'vtb_xiaosha',
+ 'huanfan',
],
c:[
'xiahoudun',
@@ -1465,6 +1472,7 @@ window.noname_character_rank={
'old_liubiao',
'luoxian',
'ol_huban',
+ 'sb_menghuo',
],
d:[
'lvmeng',
@@ -1505,6 +1513,7 @@ window.noname_character_rank={
'junk_lidian',
'junk_duanwei',
'std_panfeng',
+ 'qianzhao',
],
rarity:{
legend:[
diff --git a/character/refresh.js b/character/refresh.js
index f75e2f0ee..a241b1075 100755
--- a/character/refresh.js
+++ b/character/refresh.js
@@ -11,7 +11,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
refresh_shan:['ol_jiangwei','ol_caiwenji','ol_liushan','ol_zhangzhang','re_zuoci','re_sunce','ol_dengai','re_zhanghe'],
refresh_yijiang1:['xin_wuguotai','xin_gaoshun','dc_caozhi','yujin_yujin','re_masu','xin_xusheng','re_fazheng','xin_lingtong','re_zhangchunhua','dc_xushu','re_chengong'],
refresh_yijiang2:['re_madai','re_wangyi','xin_handang','xin_zhonghui','re_liaohua','re_chengpu','re_caozhang','dc_bulianshi','xin_liubiao','re_xunyou','re_guanzhang'],
- refresh_yijiang3:['re_jianyong','re_guohuai','re_zhuran','re_panzhangmazhong','xin_yufan','dc_liru','re_manchong','re_fuhuanghou','re_guanping','re_liufeng'],
+ refresh_yijiang3:['re_jianyong','re_guohuai','re_zhuran','re_panzhangmazhong','xin_yufan','dc_liru','re_manchong','re_fuhuanghou','re_guanping','re_liufeng','re_caochong'],
refresh_yijiang4:['re_sunluban','re_wuyi','re_hanhaoshihuan','re_caozhen','re_zhoucang','dc_chenqun','re_caifuren','re_guyong','re_jushou','re_zhuhuan','re_zhangsong'],
refresh_yijiang5:['re_zhangyi','re_quancong','re_caoxiu','re_sunxiu','re_gongsunyuan','re_guotufengji','re_xiahoushi','re_liuchen','re_zhuzhi'],
refresh_yijiang6:['re_guohuanghou','re_sundeng'],
@@ -20,6 +20,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
connect:true,
character:{
+ re_caochong:['male','wei',3,['rechengxiang','renxin']],
ol_zhangzhang:['male','wu',3,['olzhijian','olguzheng']],
re_jsp_huangyueying:['female','qun',3,['rejiqiao','relinglong']],
re_zhangsong:['male','shu',3,['qiangzhi','rexiantu']],
@@ -52,7 +53,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
ol_lusu:['male','wu',3,['olhaoshi','oldimeng']],
re_jiaxu:['male','qun',3,['rewansha','reluanwu','reweimu']],
re_guyong:['male','wu',3,['reshenxing','rebingyi']],
- xin_zhonghui:['male','wei',4,['xinquanji','xinzili']],
+ xin_zhonghui:['male','wei',4,['xinquanji','xinzili'],['clan:颍川钟氏']],
re_caifuren:['female','qun',3,['reqieting','rexianzhou']],
re_guanping:['male','shu',4,['relongyin','jiezhong']],
re_guotufengji:['male','qun',3,['rejigong','shifei']],
@@ -161,6 +162,35 @@ game.import('character',function(lib,game,ui,get,ai,_status){
re_guohuai:['xiahouyuan','zhanghe'],
},
skill:{
+ //不想突破可以不突破的界曹冲
+ rechengxiang:{
+ audio:2,
+ group:'rechengxiang_gain',
+ trigger:{
+ player:'rechengxiang_gainEnd',
+ },
+ direct:true,
+ subfrequent:['gain'],
+ filter:function(event,player){
+ return event.cards2&&event.cards2.map(card=>{
+ return get.number(card);
+ }).reduce((sum,num)=>{
+ return sum+=num;
+ },0)==13;
+ },
+ content:function(){
+ 'step 0'
+ player.link(false);
+ 'step 1'
+ player.turnOver(false);
+ },
+ subSkill:{
+ gain:{
+ inherit:'chengxiang',
+ audio:'rechengxiang',
+ }
+ }
+ },
//OL界二张
olzhijian:{
audio:2,
@@ -1483,7 +1513,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
var effect=player.getUseValue(button.link[2]);
if(player.countCards('hs',button.link[2])>0) return 0;
if((player.getStat('skill').reqice||0)get.tag(button.link[2],i) >= 1)) return effect*2;
+ if(['draw','gain'].some(i=>get.tag(button.link[2],i) >= 1)) return effect*5;
}
if(effect>0) return effect;
return 0;
@@ -11984,6 +12014,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
}
player.storage.rerende2.push(target);
player.give(cards,target);
+ 'step 1'
if(typeof player.storage.rerende!='number'){
player.storage.rerende=0;
}
@@ -12051,7 +12082,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
else{
event.finish();
}
- 'step 1'
+ 'step 2'
if(result&&result.bool&&result.links[0]){
var card={name:result.links[0][2],nature:result.links[0][3]};
player.chooseUseTarget(card,true);
@@ -14655,6 +14686,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
olzhijian_info:'出牌阶段,你可以将一张装备牌置于其他角色的装备区(可替换原装备),然后摸一张牌。',
olguzheng:'固政',
olguzheng_info:'每阶段限一次。当其他角色的至少两张牌因弃置而进入弃牌堆后,你可以令其获得其中一张牌,然后你可以获得剩余的牌。',
+ re_caochong:'界曹冲',
+ rechengxiang:'称象',
+ rechengxiang_info:'当你受到伤害后,你可以亮出牌堆顶的四张牌。然后获得其中任意数量点数之和不大于13的牌。若你获得的牌点数之和为13,你复原武将牌。',
refresh_standard:'界限突破·标',
refresh_feng:'界限突破·风',
diff --git a/character/sb.js b/character/sb.js
index 1880b1181..d8b3b01c4 100644
--- a/character/sb.js
+++ b/character/sb.js
@@ -35,7 +35,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
sb_sunce:['male','wu',4,['sbjiang','sbhunzi','sbzhiba'],['zhu']],
sb_daqiao:['female','wu',3,['sbguose','sbliuli']],
sb_liubiao:['male','qun',3,['sbzishou','sbzongshi']],
- sb_zhurong:['female','shu',4,['sblieren','sbjuxiang'],['unseen']],
+ sb_zhurong:['female','shu',4,['sblieren','sbjuxiang']],
+ sb_menghuo:['male','shu',4,['sbhuoshou','sbzaiqi']],
},
characterSort:{
sb:{
@@ -43,10 +44,158 @@ game.import('character',function(lib,game,ui,get,ai,_status){
sb_shi:['sb_xuhuang','sb_machao','sb_fazheng','sb_chengong','sb_diaochan','sb_pangtong'],
sb_tong:['liucheng','sp_yangwan','sb_xiahoushi','sb_zhangfei','sb_zhaoyun','sb_sunce','sb_zhurong'],
sb_yu:['sb_yujin','sb_lvmeng','sb_huangzhong','sb_huanggai','sb_zhouyu','sb_caoren','sb_ganning'],
- sb_neng:['sb_huaxiong','sb_sunshangxiang','sb_jiangwei','sb_yuanshao'],
+ sb_neng:['sb_huaxiong','sb_sunshangxiang','sb_jiangwei','sb_yuanshao','sb_menghuo'],
}
},
skill:{
+ //萌货
+ sbhuoshou:{
+ audio:2,
+ trigger:{
+ player:'phaseUseBegin',
+ },
+ filter:function(event,player){
+ return true;
+ },
+ forced:true,
+ onremove:true,
+ group:['sbhuoshou_cancel','sbhuoshou_source','sbhuoshou_nanmaned'],
+ content:function(){
+ 'step 0'
+ var card=get.discardPile(card=>{
+ return card.name=='nanman';
+ });
+ if(card){
+ player.gain(card,'gain2');
+ }
+ else{
+ game.log('但是弃牌堆里并没有','#y南蛮入侵','!');
+ player.addMark('sbhuoshou',1,false);
+ if(player.countMark('sbhuoshou')>=5&&Math.random()<0.25) player.chat('我南蛮呢');
+ }
+ },
+ subSkill:{
+ cancel:{
+ audio:'sbhuoshou',
+ trigger:{target:'useCardToBefore'},
+ forced:true,
+ priority:15,
+ filter:function(event,player){
+ return (event.card.name=='nanman');
+ },
+ content:function(){
+ trigger.cancel();
+ },
+ },
+ source:{
+ audio:'sbhuoshou',
+ trigger:{global:'useCardToPlayered'},
+ forced:true,
+ filter:function(event,player){
+ return event.isFirstTarget&&event.card&&event.card.name=='nanman'&&event.player!=player;
+ },
+ content:function(){
+ trigger.getParent().customArgs.default.customSource=player;
+ }
+ },
+ nanmaned:{
+ trigger:{
+ player:'useCard1',
+ },
+ filter:function(event,player){
+ return event.card.name=='nanman';
+ },
+ forced:true,
+ popup:false,
+ charlotte:true,
+ content:function(){
+ 'step 0'
+ player.addTempSkill('sbhuoshou_ban','phaseUseAfter');
+ }
+ },
+ ban:{
+ charlotte:true,
+ intro:{
+ content:'此阶段不能再使用【南蛮入侵】',
+ }
+ },
+ },
+ mod:{
+ cardEnabled:function(card,player){
+ if(player.hasSkill('sbhuoshou_ban')&&card.name=='nanman') return false;
+ },
+ },
+ ai:{
+ threaten:1.9,
+ }
+ },
+ sbzaiqi:{
+ audio:2,
+ trigger:{
+ player:'phaseDiscardEnd',
+ },
+ chargeSkill:true,
+ filter:function(event,player){
+ return player.hasMark('charge');
+ },
+ group:'sbzaiqi_backflow',
+ direct:true,
+ content:function(){
+ 'step 0'
+ player.chooseTarget(get.prompt('sbzaiqi'),'选择任意名角色并消耗等量蓄力值,令这些角色选择一项:1.令你摸一张牌;2.弃置一张牌,然后你回复1点体力',[1,player.countMark('charge')]).set('ai',function(target){
+ var player=_status.event.player;
+ return get.attitude(player,target)+player.getDamagedHp()*3.5;
+ });
+ 'step 1'
+ if(result.bool){
+ var targets=result.targets;
+ targets.sortBySeat();
+ event.targets=targets;
+ player.logSkill('sbzaiqi',targets);
+ player.removeMark('charge',targets.length);
+ }
+ else event.finish();
+ 'step 2'
+ var target=targets.shift();
+ event.target=target;
+ if(!target.countCards('he')) event._result={bool:false};
+ else target.chooseToDiscard(get.translation(player)+'对你发动了【再起】','是否弃置一张牌令其回复1点体力?或者点击“取消”,令该角色摸一张牌。','he').set('ai',card=>{
+ var eff=_status.event.eff,att=_status.event.att;
+ if(eff>0&&att>0||eff<=0&&att<0) return 5.5-get.value(card);
+ return 0;
+ }).set('eff',get.recoverEffect(player,player,target)).set('att',get.attitude(target,player));
+ 'step 3'
+ target.line(player);
+ if(result.bool){
+ player.recover();
+ }
+ else{
+ player.draw();
+ }
+ game.delayex();
+ if(targets.length) event.goto(2);
+ },
+ subSkill:{
+ backflow:{
+ audio:'sbzaiqi',
+ trigger:{
+ player:'enterGame',
+ source:'damageSource',
+ global:'phaseBefore',
+ },
+ usable:1,
+ forced:true,
+ locked:false,
+ filter:function(event,player){
+ if(event.name=='damage') return true;
+ return (event.name!='phase'||game.phaseNumber==0);
+ },
+ content:function(){
+ player.addMark('charge',1);
+ }
+ }
+ }
+ },
//祝融
sblieren:{
audio:2,
@@ -4491,6 +4640,11 @@ game.import('character',function(lib,game,ui,get,ai,_status){
sblieren_info:'当你使用【杀】指定唯一目标后,你可以摸一张牌并与其拼点。若你赢,此【杀】结算结束后,你可以对另一名其他角色造成1点伤害。',
sbjuxiang:'巨象',
sbjuxiang_info:'锁定技。①【南蛮入侵】对你无效。②当其他角色使用【南蛮入侵】结算结束后,你获得此牌对应的所有实体牌。③结束阶段,若你未于本回合使用过【南蛮入侵】,你可以将一张游戏外的随机【南蛮入侵】(共八张)交给一名角色。',
+ sb_menghuo:'谋孟获',
+ sbhuoshou:'祸首',
+ sbhuoshou_info:'锁定技。①【南蛮入侵】对你无效。②当其他角色使用【南蛮入侵】指定第一个目标后,你代替其成为此牌的伤害来源。③出牌阶段开始时,你随机获得弃牌堆中的一张【南蛮入侵】。④出牌阶段,若你于此阶段使用过【南蛮入侵】,你不能使用【南蛮入侵】。',
+ sbzaiqi:'再起',
+ sbzaiqi_info:'蓄力技(1/7)。①弃牌阶段结束时,你可以消耗任意点蓄力值并选择等量名角色,然后令这些角色选择一项:1.令你摸一张牌;2.弃置一张牌,然后你回复1点体力。②每回合限一次。当你造成伤害后,你获得1点蓄力值。',
sb_zhi:'谋攻篇·知',
sb_shi:'谋攻篇·识',
diff --git a/character/sp2.js b/character/sp2.js
index 2c9487461..972e9d600 100644
--- a/character/sp2.js
+++ b/character/sp2.js
@@ -18,9 +18,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
zhangjinyun:['female','shu',3,['dchuizhi','dcjijiao']],
dc_mengda:['male','wei',4,['dclibang','dcwujie']],
dc_zhangmancheng:['male','qun',4,['dclvecheng','dczhongji'],['unseen']],
- huanfan:['male','wei',3,['dcjianzheng','dcfumou'],['unseen']],
+ huanfan:['male','wei',3,['dcjianzheng','dcfumou']],
mengyou:['male','qun',5,['hmmanyi','dcmanzhi'],['unseen']],
- chentai:['male','wei',4,['dcjiuxian','dcchenyong'],['unseen']],
+ chentai:['male','wei',4,['dcctjiuxian','dcchenyong']],
dc_sunchen:['male','wu',4,['dczigu','dczuowei'],['unseen']],
sunyu:['male','wu',3,['dcquanshou','dcshexue'],['unseen']],
xizheng:['male','shu',3,['dcdanyi','dcwencan'],['unseen']],
@@ -41,7 +41,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
dc_yangbiao:['male','qun',3,['dczhaohan','dcjinjie','dcjue']],
dc_huojun:['male','shu',4,['dcgue','dcsigong']],
guānning:['male','shu',3,['dcxiuwen','dclongsong']],
- dc_sunhanhua:['female','wu',3,['dchuiling','dcchongxu'],['unseen']],
+ dc_sunhanhua:['female','wu',3,['dchuiling','dcchongxu']],
dc_sunziliufang:['male','wei',3,['dcqinshen','dcweidang']],
dc_tengfanglan:['female','wu',3,['dcluochong','dcaichen']],
yuantanyuanxiyuanshang:['male','qun',4,['dcneifa']],
@@ -2333,7 +2333,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
}
},
//陈泰
- dcjiuxian:{
+ dcctjiuxian:{
audio:2,
enable:'phaseUse',
usable:1,
@@ -2359,18 +2359,18 @@ game.import('character',function(lib,game,ui,get,ai,_status){
'step 0'
player.draw(cards.length);
'step 1'
- player.addTempSkill('dcjiuxian_help');
+ player.addTempSkill('dcctjiuxian_help');
player.chooseUseTarget({
name:'juedou',
isCard:true,
- storage:{dcjiuxian:true}
+ storage:{dcctjiuxian:true}
},true);
},
subSkill:{
help:{
trigger:{global:'damageSource'},
filter:function(event,player){
- return event.card&&event.card.storage&&event.card.storage.dcjiuxian&&event.player.isIn()&&
+ return event.card&&event.card.storage&&event.card.storage.dcctjiuxian&&event.player.isIn()&&
event.getParent(2).targets.contains(event.player)&&game.hasPlayer(current=>{
return current!=player&&event.player.inRange(current)&¤t.isDamaged();
});
@@ -2387,7 +2387,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
'step 1'
if(result.bool){
var target=result.targets[0];
- player.logSkill('dcjiuxian_help',target);
+ player.logSkill('dcctjiuxian_help',target);
target.recover(player);
}
}
@@ -4196,7 +4196,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
var card={name:name,isCard:true};
if(event.filterCard(card,player,event)) vcards.push(['基本','',name]);
}
- return ui.create.dialog('胆迎',[vcards,'vcard'],'hidden');
+ var dialog=ui.create.dialog('胆迎',[vcards,'vcard'],'hidden');
+ dialog.direct=true;
+ return dialog;
},
backup:function(links,player){
return {
@@ -4802,6 +4804,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
}]
];
var name=evt.name;
+ if(trigger.name=='loseAsync') name=evt.type;
var list=['useCard','respond','discard','other'];
if(!list.contains(name)) name='other';
for(var i=0;i<1+player.countMark('dcqinghuang_add');i++){
@@ -4838,6 +4841,35 @@ game.import('character',function(lib,game,ui,get,ai,_status){
}
}
},
+ dcqinghuang:{
+ audio:2,
+ trigger:{player:'phaseUseBegin'},
+ filter:function(event,player){
+ return player.maxHp>1;
+ },
+ check:function(event,player){
+ var num1=player.countCards('h');
+ var num2=player.countCards('h',card=>player.hasValueTarget(card));
+ var num3=player.getHandcardLimit();
+ if(player.isDamaged()){
+ return num2>1||num1-num2-num3>0;
+ }
+ else{
+ return num2>2+Math.max(0,3-player.hp)||player.hp>2&&num1-num2-num3>2;
+ }
+ },
+ content:function(){
+ player.loseMaxHp();
+ player.addTempSkill('dcqinghuang_add');
+ player.addMark('dcqinghuang_add',1,false);
+ },
+ subSkill:{
+ add:{
+ charlotte:true,
+ onremove:true,
+ }
+ }
+ },
//孟节
dcyinlu:{
audio:2,
@@ -31287,8 +31319,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
dcmanzhi:'蛮智',
dcmanzhi_info:'①准备阶段,你可以选择一名其他角色并选择一项:1.令其交给你两张牌,然后其视为使用一张无距离限制的【杀】;2.获得其区域内至多两张牌,然后交给其等量的牌并摸一张牌。②结束阶段,若你的体力值与本回合准备阶段时的体力值相等,你可以执行你未于本回合执行过的〖蛮智①〗的分支。',
chentai:'陈泰',
- dcjiuxian:'救陷',
- dcjiuxian_info:'出牌阶段限一次。你可以重铸一半数量的手牌(向上取整),然后视为使用一张【决斗】。当此牌对目标角色造成伤害后,你可以令其攻击范围内的一名其他角色回复1点体力。',
+ dcctjiuxian:'救陷',
+ dcctjiuxian_info:'出牌阶段限一次。你可以重铸一半数量的手牌(向上取整),然后视为使用一张【决斗】。当此牌对目标角色造成伤害后,你可以令其攻击范围内的一名其他角色回复1点体力。',
dcchenyong:'沉勇',
dcchenyong_info:'结束阶段,你可以摸X张牌(X为本回合你使用过的牌的类型数)。',
dc_sunchen:'孙綝',
diff --git a/character/tw.js b/character/tw.js
index 6d6d6463c..7065bf410 100644
--- a/character/tw.js
+++ b/character/tw.js
@@ -7577,7 +7577,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
if(event.filterCard({name:'shan'},player,event)){
list.push(['基本','','shan']);
}
- return ui.create.dialog('朝凤',[list,'vcard'],'hidden');
+ var dialog=ui.create.dialog('朝凤',[list,'vcard'],'hidden');
+ dialog.direct=true;
+ return dialog;
},
check:function(button){
var player=_status.event.player;
diff --git a/character/yijiang.js b/character/yijiang.js
index 8229bcd84..8aae2bfad 100755
--- a/character/yijiang.js
+++ b/character/yijiang.js
@@ -46,7 +46,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
bulianshi:['female','wu',3,['old_anxu','zhuiyi']],
handang:['male','wu',4,['gongji','jiefan']],
fuhuanghou:['female','qun',3,['qiuyuan','zhuikong']],
- zhonghui:['male','wei',4,['quanji','zili']],
+ zhonghui:['male','wei',4,['quanji','zili'],['clan:颍川钟氏']],
jianyong:['male','shu',3,['qiaoshui','jyzongshi']],
old_madai:['male','shu',4,['mashu','qianxi']],
liufeng:['male','shu',4,['xiansi']],
@@ -72,7 +72,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
caorui:['male','wei',3,['huituo','mingjian','xingshuai'],['zhu']],
caoxiu:['male','wei',4,['qianju','qingxi']],
- zhongyao:['male','wei',3,['huomo','zuoding']],
+ zhongyao:['male','wei',3,['huomo','zuoding'],['clan:颍川钟氏']],
liuchen:['male','shu',4,['zhanjue','qinwang'],['zhu']],
zhangyi:['male','shu',4,['wurong','shizhi']],
sunxiu:['male','wu',3,['yanzhu','xingxue','xinzhaofu'],['zhu']],
@@ -12835,7 +12835,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
}
var dialog=ui.create.dialog(str,cards);
dialog.videoId=id;
- },player,event.videoId,event.cards,event.name=='chengxiang'?13:12);
+ },player,event.videoId,event.cards,event.name=='oldchengxiang'?12:13);
event.time=get.utc();
game.addVideo('showCards',player,['称象',get.cardsInfo(event.cards)]);
game.addVideo('delay',null,2);
@@ -12849,7 +12849,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
}
return (num+get.number(button.link)<=_status.event.maxNum);
});
- next.set('maxNum',event.name=='chengxiang'?13:12);
+ next.set('maxNum',event.name=='oldchengxiang'?12:13);
next.set('ai',function(button){
return get.value(button.link,_status.event.player);
});
@@ -12915,6 +12915,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
renxin:{
trigger:{global:'damageBegin4'},
audio:2,
+ audioname:['re_caochong'],
//priority:6,
filter:function(event,player){
return event.player!=player&&event.player.hp==1&&player.countCards('he',{type:'equip'})>0;
@@ -13543,7 +13544,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
chengpu:['re_chengpu','tw_chengpu','ns_chengpu','chengpu','xin_chengpu'],
liubiao:['re_liubiao','xin_liubiao','liubiao','oldre_liubiao','old_liubiao'],
manchong:['re_manchong','manchong'],
- caochong:['caochong','old_caochong'],
+ caochong:['re_caochong','caochong','old_caochong'],
guohuai:['guohuai','tw_guohuai','re_guohuai','xin_guohuai','ol_guohuai'],
jianyong:['re_jianyong','xin_jianyong','jianyong'],
panzhangmazhong:['xin_panzhangmazhong','re_panzhangmazhong','panzhangmazhong'],
@@ -14103,8 +14104,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
zhiyan_info:'结束阶段,你可以令一名角色摸一张牌并展示之,若为装备牌,其使用此牌并回复一点体力。',
miji_info:'结束阶段,若你已受伤,则可以摸X张牌,然后可以将等量的牌交给一名其他角色(X为你已损失的体力值)。',
zhenlie_info:'当你成为其他角色使用【杀】或普通锦囊牌的目标后,你可以失去一点体力并令此牌对你无效,然后弃置对方一张牌。',
- chengxiang_info:'当你受到伤害后,你可以亮出牌堆顶的四张牌。然后获得其中任意数量点数之和不大于13的牌',
- oldchengxiang_info:'当你受到伤害后,你可以亮出牌堆顶的四张牌。然后获得其中任意数量点数之和不大于12的牌',
+ chengxiang_info:'当你受到伤害后,你可以亮出牌堆顶的四张牌。然后获得其中任意数量点数之和不大于13的牌。',
+ oldchengxiang_info:'当你受到伤害后,你可以亮出牌堆顶的四张牌。然后获得其中任意数量点数之和不大于12的牌。',
renxin_info:'当体力值为1的一名其他角色受到伤害时,你可以将武将牌翻面并弃置一张装备牌,然后防止此伤害。',
oldrenxin_info:'其他角色进入濒死状态时,你可以将所有手牌交给该角色并翻面,然后该角色回复1点体力。',
jingce_info:'出牌阶段结束时,若你本回合使用的牌数量大于或等于你的当前体力值,你可以摸两张牌。',
diff --git a/character/yingbian.js b/character/yingbian.js
index caec4d51e..beb031cda 100644
--- a/character/yingbian.js
+++ b/character/yingbian.js
@@ -11,7 +11,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
yangzhi:['female','jin',3,['xinwanyi','maihuo']],
yangyan:['female','jin',3,['xinxuanbei','xianwan']],
ol_huaxin:['male','wei',3,['caozhao','olxibing']],
- zhongyan:['female','jin',3,['bolan','yifa']],
+ zhongyan:['female','jin',3,['bolan','yifa'],['clan:颍川钟氏']],
weiguan:['male','jin',3,['zhongyun','shenpin']],
cheliji:['male','qun',4,['chexuan','qiangshou']],
simazhou:['male','jin',4,['recaiwang','naxiang']],
diff --git a/game/game.js b/game/game.js
index e52dc3a69..841d4feab 100644
--- a/game/game.js
+++ b/game/game.js
@@ -12402,6 +12402,7 @@
next.setContent(info.content);
next.skillHidden=event.skillHidden;
if(info.forceDie) next.forceDie=true;
+ if(event.skill=='_turnover') next.includeOut=true;
"step 4"
if(player._hookTrigger){
for(var i=0;i