更改描述:将“选择距离最近的一名其他角色,该角色”改为“你”';
}
else{
@@ -4584,13 +4584,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
else{
game.log(player,'更改了','【矫诏】','的描述');
player.popup('更改描述');
- player.markSkill('jiaozhao');
- if(player.storage.jiaozhao1){
- player.storage.jiaozhao2=true;
- }
- else{
- player.storage.jiaozhao1=true;
- }
+ player.addMark('xindanxin',1,false);
}
}
},
@@ -5203,6 +5197,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
audio:2,
trigger:{player:'phaseJieshuBegin'},
direct:true,
+ filter:function(event,player){
+ return !player.getExpansions('jieyue2').length;
+ },
content:function(){
'step 0'
player.chooseCardTarget({
@@ -5245,10 +5242,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
}
'step 2'
if(result.bool&&result.cards&&result.cards.length){
- event.target.$give(result.cards,player,false);
- player.storage.jieyue2=result.cards[0];
- event.target.lose(result.cards[0],ui.special,'toStorage');
- player.syncStorage('jieyue2');
+ player.addToExpansion(result.cards,'give',target).gaintag.add('jieyue2');
player.addSkill('jieyue2');
}
else if(event.target.countCards('he')){
@@ -5257,13 +5251,18 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
ai:{
expose:0.1
- }
+ },
},
jieyue2:{
- mark:'card',
intro:{
- content:'card'
+ content:'expansion',
+ markcount:'expansion',
},
+ onremove:function(player,skill){
+ var cards=player.getExpansions(skill);
+ if(cards.length) player.loseToDiscardpile(cards);
+ },
+ marktext:'钺',
audio:true,
enable:'chooseToUse',
filterCard:function(card){
@@ -5277,6 +5276,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
prompt:'将一张黑色手牌当无懈可击使用',
check:function(card){return 8-get.value(card)},
threaten:1.2,
+ charlotte:true,
group:['jieyue3','jieyue4']
},
jieyue3:{
@@ -5308,8 +5308,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){
trigger:{player:'phaseZhunbeiBegin'},
forced:true,
content:function(){
- player.gain(player.storage.jieyue2,'gain2','fromStorage');
- player.storage.jieyue2=null;
+ 'step 0'
+ var cards=player.getExpansions('jieyue2');
+ if(cards.length) player.gain(cards,'gain2');
+ 'step 1'
player.removeSkill('jieyue2');
}
},
@@ -5556,21 +5558,11 @@ game.import('character',function(lib,game,ui,get,ai,_status){
audio:2,
audioname:['xin_chengpu'],
filter:function(event,player){
- return player.countCards('h')>0&&(_status.connectMode||player.countCards('h','sha')>0)&&!player.storage.chunlao.length;
- },
- init:function(player){
- if(!player.storage.chunlao) player.storage.chunlao=[];
+ return player.countCards('h')>0&&(_status.connectMode||player.countCards('h','sha')>0)&&!player.getExpansion('chunlao').length;
},
intro:{
- content:'cards',
- onunmark:function(storage,player){
- if(storage&&storage.length){
- player.$throw(storage,1000);
- game.cardsDiscard(storage);
- game.log(storage,'被置入了弃牌堆');
- storage.length=0;
- }
- },
+ content:'expansion',
+ markcount:'expansion',
},
content:function(){
'step 0'
@@ -5580,11 +5572,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
'step 1'
if(result.bool){
player.logSkill('chunlao');
- player.storage.chunlao=player.storage.chunlao.concat(result.cards);
- player.syncStorage('chunlao');
- player.markSkill('chunlao');
- player.lose(result.cards,ui.special,'toStorage');
- player.$give(result.cards,player,false);
+ player.addToExpansion(result.cards,player,'giveAuto').gaintag.add('chunlao');
}
},
ai:{
@@ -5592,7 +5580,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
player:function(card,player,target){
if(_status.currentPhase!=player) return;
if(card.name=='sha'&&!player.needsToDiscard()&&
- !player.storage.chunlao.length&&target.hp>1){
+ !player.getExpansions('chunlao').length&&target.hp>1){
return 'zeroplayertarget';
}
}
@@ -5604,7 +5592,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
chunlao2:{
enable:'chooseToUse',
filter:function(event,player){
- return event.type=='dying'&&event.dying&&event.dying.hp<=0&&player.storage.chunlao.length>0;
+ return event.type=='dying'&&event.dying&&event.dying.hp<=0&&player.getExpansions('chunlao').length>0;
},
filterTarget:function(card,player,target){
return target==_status.event.dying;
@@ -5615,28 +5603,19 @@ game.import('character',function(lib,game,ui,get,ai,_status){
selectTarget:-1,
content:function(){
"step 0"
- player.chooseCardButton(get.translation('chunlao'),player.storage.chunlao,true);
+ player.chooseCardButton(get.translation('chunlao'),player.getExpansions('chunlao'),true);
"step 1"
if(result.bool){
player.logSkill('chunlao',target);
- player.$throw(result.links);
- player.storage.chunlao.remove(result.links[0]);
- game.cardsDiscard(result.links[0]);
- player.syncStorage('chunlao')
+ player.loseToDiscardpile(result.links);
event.type='dying';
target.useCard({name:'jiu',isCard:true},target);
- if(!player.storage.chunlao.length){
- player.unmarkSkill('chunlao');
- }
- else{
- player.markSkill('chunlao');
- }
}
},
ai:{
order:6,
skillTagFilter:function(player){
- return player.storage.chunlao.length>0;
+ return player.getExpansions('chunlao').length>0;
},
save:true,
result:{
@@ -5975,20 +5954,16 @@ game.import('character',function(lib,game,ui,get,ai,_status){
return _status.currentPhase==player;
},
frequent:true,
- init:function(player){
- if(!player.storage.sidi) player.storage.sidi=[];
- },
intro:{
- content:'cards',
- onunmark:'throw',
+ content:'expansion',
+ markcount:'expansion',
+ },
+ onremove:function(player,skill){
+ var cards=player.getExpansions(skill);
+ if(cards.length) player.loseToDiscardpile(cards);
},
content:function(){
- var card=game.cardsGotoSpecial(get.cards()).cards[0];
- game.log(player,'将',card,'置于武将牌上');
- player.$gain2(card);
- player.storage.sidi.add(card);
- player.markSkill('sidi');
- player.syncStorage('sidi');
+ player.addToExpansion(get.cards(),'gain2').gaintag.add('sidi');
},
group:'sidi2'
},
@@ -5996,7 +5971,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
trigger:{global:'phaseUseBegin'},
filter:function(event,player){
if(event.player==player||event.player.isDead()) return false;
- if(!player.storage.sidi||!player.storage.sidi.length) return false;
+ if(!player.getExpansions('sidi').length) return false;
return true;
},
check:function(event,player){
@@ -6029,11 +6004,12 @@ game.import('character',function(lib,game,ui,get,ai,_status){
logTarget:'player',
content:function(){
'step 0'
- if(player.storage.sidi.length==1){
- event.directbutton=player.storage.sidi[0];
+ var cards=player.getExpansions('sidi');
+ if(cards.length==1){
+ event.directbutton=cards[0];
}
else{
- player.chooseCardButton('弃置一张“司敌”牌',player.storage.sidi,true);
+ player.chooseCardButton('弃置一张“司敌”牌',cards,true);
}
'step 1'
var button;
@@ -6044,20 +6020,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
button=result.links[0];
}
if(button){
- player.$throw([button]);
- game.log(player,'将',button,'置于弃牌堆');
- game.cardsDiscard(button);
+ player.loseToDiscardpile('sidi');
trigger.player.addTempSkill('sidi3');
trigger.player.addMark('sidi3',1,false);
- player.storage.sidi.remove(button);
- player.syncStorage('sidi');
- if(player.storage.sidi.length==0){
- player.unmarkSkill('sidi');
- }
- else{
- player.markSkill('sidi');
- }
- game.delayx();
}
}
},
@@ -7807,19 +7772,13 @@ game.import('character',function(lib,game,ui,get,ai,_status){
content:function(){
'step 0'
player.choosePlayerCard(trigger.target,'he',
- [1,Math.min(trigger.target.countCards('he'),trigger.target.hp)],get.prompt('xinpojun',trigger.target));
+ [1,Math.min(trigger.target.countCards('he'),trigger.target.hp)],get.prompt('xinpojun',trigger.target)).set('forceAuto',true);
'step 1'
if(result.bool&&result.links.length){
- player.logSkill('xinpojun',trigger.target);
- if(trigger.target.storage.xinpojun2){
- trigger.target.storage.xinpojun2=trigger.target.storage.xinpojun2.concat(result.links);
- }
- else{
- trigger.target.storage.xinpojun2=result.links.slice(0);
- }
- game.addVideo('storage',trigger.target,['xinpojun2',get.cardsInfo(trigger.target.storage.xinpojun2),'cards']);
- trigger.target.addSkill('xinpojun2');
- trigger.target.lose(result.links,ui.special,'toStorage');
+ var target=trigger.target;
+ player.logSkill('xinpojun',target);
+ target.addToExpansion(result.cards,'giveAuto',target).gaintag.add('xinpojun2');
+ target.addSkill('xinpojun2');
}
},
ai:{
@@ -7836,41 +7795,27 @@ game.import('character',function(lib,game,ui,get,ai,_status){
xinpojun2:{
trigger:{global:'phaseEnd'},
forced:true,
- audio:false,
- mark:true,
+ popup:false,
+ charlotte:true,
+ filter:function(event,player){
+ return player.getExpansions('xinpojun2').length>0;
+ },
+ content:function(){
+ 'step 0'
+ var cards=player.getExpansions('xinpojun2');
+ player.gain(cards,'draw');
+ game.log(player,'收回了'+get.cnNumber(cards.length)+'张“破军”牌');
+ 'step 1'
+ player.removeSkill('xinpojun2');
+ },
intro:{
- content:'cardCount',
- onunmark:function(storage,player){
- if(storage&&storage.length){
- player.$throw(storage,1000);
- game.cardsDiscard(storage);
- game.log(storage,'被置入了弃牌堆');
- storage.length=0;
- }
+ markcount:'expansion',
+ mark:function(dialog,storage,player){
+ var cards=player.getExpansions('xinpojun2');
+ if(player.isUnderControl(true)) dialog.addAuto(cards);
+ else return '共有'+get.cnNumber(cards.length)+'张牌';
},
},
- content:function(){
- if(player.storage.xinpojun2){
- player.gain(player.storage.xinpojun2,'fromStorage');
- delete player.storage.xinpojun2;
- }
- player.removeSkill('xinpojun2');
- },
- //group:'xinpojun3'
- },
- xinpojun3:{
- trigger:{player:'dieBegin'},
- forced:true,
- popup:false,
- content:function(){
- player.$throw(player.storage.xinpojun2,1000);
- for(var i=0;i
0;
},
@@ -9261,11 +9203,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
}
"step 3"
if(result.cards&&result.cards.length){
- player.lose(result.cards,ui.special,'toStorage');
- player.storage.quanji=player.storage.quanji.concat(result.cards);
- player.syncStorage('quanji');
- player.markSkill('quanji');
- game.log(player,'将',result.cards,'置于武将牌上作为“权”');
+ player.addToExpansion(result.cards,player,'giveAuto').gaintag.add('quanji');
}
"step 4"
if(event.count>0){
@@ -9279,19 +9217,16 @@ game.import('character',function(lib,game,ui,get,ai,_status){
}
},
intro:{
- content:'cards',
- onunmark:function(storage,player){
- if(storage&&storage.length){
- player.$throw(storage,1000);
- game.cardsDiscard(storage);
- game.log(storage,'被置入了弃牌堆');
- storage.length=0;
- }
- },
+ content:'expansion',
+ markcount:'expansion',
+ },
+ onremove:function(player,skill){
+ var cards=player.getExpansions(skill);
+ if(cards.length) player.loseToDiscardpile(cards);
},
mod:{
maxHandcard:function(player,num){
- return num+player.storage.quanji.length;
+ return num+player.getExpansions('quanji').length;
}
},
ai:{
@@ -9322,7 +9257,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
trigger:{player:'phaseZhunbeiBegin'},
forced:true,
filter:function(event,player){
- return !player.hasSkill('paiyi')&&player.storage.quanji&&player.storage.quanji.length>=3;
+ return !player.hasSkill('paiyi')&&player.getExpansions('quanji').length>=3;
},
content:function(){
"step 0"
@@ -9342,11 +9277,11 @@ game.import('character',function(lib,game,ui,get,ai,_status){
audio:2,
audioname:['re_zhonghui'],
filter:function(event,player){
- return player.storage.quanji&&player.storage.quanji.length>0;
+ return player.getExpansions('quanji').length>0;
},
chooseButton:{
dialog:function(event,player){
- return ui.create.dialog('排异',player.storage.quanji,'hidden')
+ return ui.create.dialog('排异',player.getExpansions('quanji'),'hidden')
},
backup:function(links,player){
return {
@@ -9375,18 +9310,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
contentx:function(){
"step 0"
var card=lib.skill.paiyi_backup.card;
- game.cardsDiscard(card);
- player.$throw(card);
- player.storage.quanji.remove(card);
- game.log(card,'进入了弃牌堆');
- if(!player.storage.quanji.length){
- player.unmarkSkill('quanji');
- }
- else{
- player.markSkill('quanji');
- }
- player.syncStorage('quanji');
- game.delayx();
+ player.loseToDiscardpile(card);
"step 1"
target.draw(2);
"step 2"
@@ -10966,7 +10890,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
audioname:['boss_lvbu3','re_heqi'],
trigger:{
player:['loseAfter','phaseDiscardEnd'],
- global:['equipAfter','addJudgeAfter','gainAfter','loseAsyncAfter'],
+ global:['equipAfter','addJudgeAfter','gainAfter','loseAsyncAfter','addToExpansionAfter'],
},
direct:true,
filter:function(event,player){
@@ -11645,9 +11569,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){
audio:2,
trigger:{player:'phaseZhunbeiBegin'},
direct:true,
- init:function(player){
- if(!player.storage.xiansi) player.storage.xiansi=[];
- },
content:function(){
"step 0"
player.chooseTarget(get.prompt2('xiansi'),[1,2],function(card,player,target){
@@ -11675,24 +11596,17 @@ game.import('character',function(lib,game,ui,get,ai,_status){
}
"step 3"
if(result.bool){
- player.storage.xiansi=player.storage.xiansi.concat(result.links);
- player.markSkill('xiansi');
- player.syncStorage('xiansi');
- event.current.lose(result.links,ui.special,'toStorage');
- event.current.$give(result.links,player,false);
+ player.addToExpansion(result.cards,event.current,'give').gaintag.add('xiansi');
event.goto(2);
}
},
intro:{
- content:'cards',
- onunmark:function(storage,player){
- if(storage&&storage.length){
- player.$throw(storage,1000);
- game.cardsDiscard(storage);
- game.log(storage,'被置入了弃牌堆');
- storage.length=0;
- }
- },
+ content:'expansion',
+ markcount:'expansion',
+ },
+ onremove:function(player,skill){
+ var cards=player.getExpansions(skill);
+ if(cards.length) player.loseToDiscardpile(cards);
},
ai:{
threaten:2
@@ -11705,16 +11619,16 @@ game.import('character',function(lib,game,ui,get,ai,_status){
viewAs:{name:'sha',isCard:true},
filter:function(event,player){
return game.hasPlayer(function(current){
- return current.hasSkill('xiansi')&¤t.storage.xiansi.length>1&&event.filterTarget({name:'sha'},player,current);
+ return current.hasSkill('xiansi')&¤t.getExpansions('xiansi').length>1&&event.filterTarget({name:'sha'},player,current);
});
},
filterTarget:function(card,player,target){
var bool=false;
var players=ui.selected.targets.slice(0);
for(var i=0;i1) bool=true;break;
+ if(players[i].hasSkill('xiansi')&&players[i].getExpansions('xiansi').length>1) bool=true;break;
}
- if(!bool&&(!target.hasSkill('xiansi')||target.storage.xiansi.length<=1)) return false;
+ if(!bool&&(!target.hasSkill('xiansi')||target.getExpansions('xiansi').length<=1)) return false;
return _status.event._backup.filterTarget.apply(this,arguments);
},
complexSelect:true,
@@ -11730,8 +11644,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
precontent:function(){
"step 0"
var targets=game.filterPlayer(function(current){
- if(event.result.targets.contains(current)&¤t.storage.xiansi){
- return current.storage.xiansi.length>1;
+ if(event.result.targets.contains(current)&¤t.getExpansions('xiansi')){
+ return current.getExpansions('xiansi').length>1;
}
return false;
});
@@ -11740,7 +11654,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
event.goto(2);
}
else if(targets.length>0){
- player.chooseTarget(true,'选择【陷嗣】的目标',function(card,player,target){
+ player.chooseTarget(true,'选择弃置【陷嗣】牌的目标',function(card,player,target){
return _status.event.list.contains(target);
}).set('list',targets).set('ai',function(target){
var player=_status.event.player;
@@ -11759,11 +11673,11 @@ game.import('character',function(lib,game,ui,get,ai,_status){
}
"step 2"
if(event.target){
- if(event.target.storage.xiansi.length==2){
- event.directresult=event.target.storage.xiansi.slice(0);
+ if(event.target.getExpansions('xiansi').length==2){
+ event.directresult=event.target.getExpansions('xiansi').slice(0);
}
else{
- player.chooseCardButton('移去两张“逆”',2,event.target.storage.xiansi,true);
+ player.chooseCardButton('移去两张“逆”',2,event.target.getExpansions('xiansi'),true);
}
}
else{
@@ -11773,19 +11687,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
if(event.directresult||result.bool){
player.logSkill('xiansi2',event.target);
var links=event.directresult||result.links;
- for(var i=0;i=2;
},
@@ -12009,56 +11908,40 @@ game.import('character',function(lib,game,ui,get,ai,_status){
zyexin:{
trigger:{player:'damageEnd',source:'damageSource'},
frequent:true,
- init:function(player){
- if(!player.storage.zyexin) player.storage.zyexin=[];
- },
intro:{
- content:'cards',
- onunmark:function(storage,player){
- if(storage&&storage.length){
- player.$throw(storage,1000);
- game.cardsDiscard(storage);
- game.log(storage,'被置入了弃牌堆');
- storage.length=0;
- }
- },
+ content:'expansion',
+ markcount:'expansion',
+ },
+ onremove:function(player,skill){
+ var cards=player.getExpansions(skill);
+ if(cards.length) player.loseToDiscardpile(cards);
},
content:function(){
- var card=game.cardsGotoSpecial(get.cards()).cards[0];
- player.storage.zyexin.push(card);
- player.$draw(card);
- player.markSkill('zyexin');
- game.addVideo('storage',player,['zyexin',get.cardsInfo(player.storage.zyexin),'cards']);
+ player.addToExpansion('zyexin',get.cards()).gaintag.add('zyexin');
},
- group:'zyexin2'
+ group:'zyexin2',
},
zyexin2:{
enable:'phaseUse',
usable:1,
lose:false,
+ discard:false,
delay:false,
selectCard:[1,Infinity],
filterCard:true,
filter:function(event,player){
- return player.storage.zyexin.length>0;
+ return player.getExpansions('zyexin').length>0;
},
prompt:'用任意数量的手牌与等量的“权”交换',
content:function(){
- "step 0"
- player.lose(cards,ui.special,'toStorage');
- player.storage.zyexin=player.storage.zyexin.concat(cards);
- player.chooseCardButton(player.storage.zyexin,'选择'+cards.length+'张牌作为手牌',cards.length,true).ai=function(button){
+ 'step 0'
+ player.addToExpansion(cards,'give',player).gaintag.add('zyexin');
+ 'step 1'
+ player.chooseCardButton(player.getExpansions('zyexin'),'选择'+cards.length+'张牌作为手牌',cards.length,true).ai=function(button){
return get.value(button.link);
}
- if(player==game.me&&_status.auto){
- game.delay();
- }
- "step 1"
- player.gain(result.links,'toStorage');
- for(var i=0;i=4&&!player.storage.zzili;
+ return player.getExpansions('zyexin').length>=4&&!player.storage.zzili;
},
forced:true,
content:function(){
@@ -12092,8 +11975,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
zpaiyi:{
trigger:{player:'phaseJieshuBegin'},
filter:function(event,player){
- for(var i=0;i0&&event.targets.length==1&&
- event.player.isIn()&&(!event.player.storage.maihuo_effect||!event.player.storage.maihuo_effect.length);
+ event.player.isIn()&&(!event.player.getExpansions('maihuo_effect').length);
},
prompt2:function(event){
return '令'+get.translation(event.card)+'暂时对你无效';
@@ -311,8 +311,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
content:function(){
trigger.excluded.add(player);
var target=trigger.player,cards=trigger.cards.filterInD();
- game.cardsGotoSpecial(cards);
- target.markAuto('maihuo_effect',cards);
+ target.addToExpansion('gain2',cards).gaintag.add('maihuo_effect');
target.storage.maihuo_target=player;
target.addSkill('maihuo_effect')
},
@@ -323,24 +322,30 @@ game.import('character',function(lib,game,ui,get,ai,_status){
forced:true,
charlotte:true,
filter:function(event,player){
- return player.storage.maihuo_effect&&player.storage.maihuo_effect.length>0;
+ return player.getExpansions('maihuo_effect').length>0;
},
content:function(){
- var card=player.storage.maihuo_effect[0];
+ 'step 0'
+ var cards=player.getExpansions('maihuo_effect'),card=cards[0];
if(card.name!='sha') card=get.autoViewAs({
name:'sha',
isCard:true,
- },player.storage.maihuo_effect);
+ },cards);
var target=player.storage.maihuo_target;
if(target.isIn()&&player.canUse(card,target,null,true)){
- player.useCard(card,target,player.storage.maihuo_effect);
- delete player.storage.maihuo_effect;
+ player.useCard(card,target,cards);
}
+ else event.finish();
+ 'step 1'
player.removeSkill('maihuo_effect');
},
intro:{
- content:'cards',
- onunmark:'throw',
+ content:'expansion',
+ markcount:'expansion',
+ },
+ onremove:function(player,skill){
+ var cards=player.getExpansions(skill);
+ if(cards.length) player.loseToDiscardpile(cards);
},
ai:{threaten:1.05},
},
@@ -1024,7 +1029,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
audio:'zhongyun',
trigger:{
player:['loseAfter','gainAfter'],
- global:['equipAfter','addJudgeAfter','gainAfter','loseAsyncAfter'],
+ global:['equipAfter','addJudgeAfter','gainAfter','loseAsyncAfter','addToExpansionAfter'],
},
forced:true,
filter:function(event,player){
@@ -1169,7 +1174,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
audio:'chexuan',
trigger:{
player:'loseAfter',
- global:['equipAfter','addJudgeAfter','gainAfter','loseAsyncAfter'],
+ global:['equipAfter','addJudgeAfter','gainAfter','loseAsyncAfter','addToExpansionAfter'],
},
frequent:true,
filter:function(event,player){
@@ -1333,13 +1338,11 @@ game.import('character',function(lib,game,ui,get,ai,_status){
logTarget:'source',
content:function(){
'step 0'
- var cards=player.getStorage('qiaoyan');
+ var cards=player.getExpansions('qiaoyan');
if(cards.length){
var source=trigger.source;
- player.$give(cards,source,false);
- source.gain(cards,'log');
- player.unmarkAuto('qiaoyan',cards);
- event.goto(3);
+ source.gain(cards,player,'give');
+ event.finish();
}
else{
trigger.cancel();
@@ -1353,17 +1356,16 @@ game.import('character',function(lib,game,ui,get,ai,_status){
'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,'放在了武将牌上');
+ player.addToExpansion(cards,player,'give').gaintag.add('qiaoyan');
}
event.finish();
- 'step 3'
- game.delayx();
},
marktext:'珠',
- intro:{content:'cards',onunmark:'throw'},
+ intro:{content:'expansion',markcount:'expansion'},
+ onremove:function(player,skill){
+ var cards=player.getExpansions(skill);
+ if(cards.length) player.loseToDiscardpile(cards);
+ },
ai:{
filterDamage:true,
skillTagFilter:function(player,tag,arg){
@@ -1380,11 +1382,11 @@ game.import('character',function(lib,game,ui,get,ai,_status){
direct:true,
locked:true,
filter:function(event,player){
- return player.storage.qiaoyan&&player.storage.qiaoyan.length>0;
+ return player.getExpansions('qiaoyan').length>0;
},
content:function(){
'step 0'
- event.cards=player.storage.qiaoyan;
+ event.cards=player.getExpansions('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);
@@ -1400,13 +1402,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){
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);
+ target.gain(cards,player,'give');
}
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);
})){
@@ -2175,7 +2174,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
global:'zhaoran3',
trigger:{
player:'loseAfter',
- global:['equipAfter','addJudgeAfter','gainAfter','loseAsyncAfter'],
+ global:['equipAfter','addJudgeAfter','gainAfter','loseAsyncAfter','addToExpansionAfter'],
},
forced:true,
charlotte:true,
diff --git a/game/asset.js b/game/asset.js
index 9d232eee1..271497901 100644
--- a/game/asset.js
+++ b/game/asset.js
@@ -424,6 +424,7 @@ window.noname_asset_list=[
'audio/effect/tie.mp3',
'audio/effect/win.mp3',
'audio/effect/tori_no_uta.mp3',
+ 'audio/effect/taketori_hishou.mp3',
'audio/die/beimihu.mp3',
'audio/die/boss_lvbu1.mp3',
@@ -840,6 +841,12 @@ window.noname_asset_list=[
'audio/die/sp_yangwan.mp3',
'audio/die/xin_jushou.mp3',
'audio/die/yj_huangzhong.mp3',
+ 'audio/die/sp_maojie.mp3',
+ 'audio/die/sp_zhujun.mp3',
+ 'audio/die/wangtao.mp3',
+ 'audio/die/wangyue.mp3',
+ 'audio/die/wuyan.mp3',
+ 'audio/die/xin_sunxiu.mp3',
'audio/skill/decadezishou1.mp3',
'audio/skill/decadezishou2.mp3',
@@ -3824,6 +3831,33 @@ window.noname_asset_list=[
'audio/skill/spyishi2.mp3',
'audio/skill/xinjianying1.mp3',
'audio/skill/xinjianying2.mp3',
+ 'audio/skill/bingqing1.mp3',
+ 'audio/skill/bingqing2.mp3',
+ 'audio/skill/houfeng1.mp3',
+ 'audio/skill/houfeng2.mp3',
+ 'audio/skill/houfeng3.mp3',
+ 'audio/skill/huguan_wangyue1.mp3',
+ 'audio/skill/huguan_wangyue2.mp3',
+ 'audio/skill/huguan1.mp3',
+ 'audio/skill/huguan2.mp3',
+ 'audio/skill/lanjiang1.mp3',
+ 'audio/skill/lanjiang2.mp3',
+ 'audio/skill/liubing1.mp3',
+ 'audio/skill/liubing2.mp3',
+ 'audio/skill/mingluan1.mp3',
+ 'audio/skill/mingluan2.mp3',
+ 'audio/skill/mobilexingxue1.mp3',
+ 'audio/skill/mobilexingxue2.mp3',
+ 'audio/skill/mobileyanzhu1.mp3',
+ 'audio/skill/mobileyanzhu2.mp3',
+ 'audio/skill/yangjie1.mp3',
+ 'audio/skill/yangjie2.mp3',
+ 'audio/skill/yaopei1.mp3',
+ 'audio/skill/yaopei2.mp3',
+ 'audio/skill/yingfeng1.mp3',
+ 'audio/skill/yingfeng2.mp3',
+ 'audio/skill/zjjuxiang1.mp3',
+ 'audio/skill/zjjuxiang2.mp3',
'audio/voice/male/0.mp3',
'audio/voice/male/1.mp3',
diff --git a/game/game.js b/game/game.js
index 2c8983a26..7a179fcf7 100644
--- a/game/game.js
+++ b/game/game.js
@@ -11067,7 +11067,6 @@
}
game.updateRenku();
}
- if(event.notrigger!==true) event.trigger('addCardToStorage');
},
chooseToEnable:function(){
'step 0'
@@ -14731,14 +14730,17 @@
return;
}
if(!get.info(card,false).noForceDie) event.forceDie=true;
- var next=player.lose(cards,'visible',ui.ordering).set('type','use');
- var directDiscard=[];
- for(var i=0;icard.hasGaintag(i),'x'))?'markSkill':'unmarkSkill'](i);
+ }
+ }
event.hs=hs;
event.es=es;
event.js=js;
event.ss=ss;
+ event.xs=xs;
"step 2"
if(numcard.hasGaintag(i));
+ }
else if(typeof this.storage[i+'_markcount']=='number'){
num=this.storage[i+'_markcount'];
}
@@ -18473,6 +18619,13 @@
}
}
}
+ else if(arg1[i]=='x'){
+ for(j=0;j0||map.ss.length>0) return map;
+ if(map.cards.length>0||map.ss.length>0||map.xs.length>0) return map;
+ };
+ next.gaintag=[];
+ return next;
+ },
+ addToExpansion:function(){
+ var next=game.createEvent('addToExpansion');
+ next.player=this;
+ for(var i=0;i0||map.ss.length>0||map.xs.length>0) return map;
};
next.gaintag=[];
return next;
@@ -20398,7 +20666,7 @@
}
}
if(next.cards){
- var hej=this.getCards('hejs');
+ var hej=this.getCards('hejsx');
for(var i=0;i0||map.ss.length>0) return map;
+ if(map.cards.length>0||map.ss.length>0||map.xs.length>0) return map;
};
return next;
},
@@ -20818,6 +21088,7 @@
es:[],
js:[],
ss:[],
+ xs:[],
cards:[],
cards2:[],
};
@@ -20827,11 +21098,12 @@
map.es.addArray(evt.es);
map.js.addArray(evt.js);
map.ss.addArray(evt.ss);
+ map.xs.addArray(evt.xs);
map.cards.addArray(evt.cards);
map.cards2.addArray(evt.cards2);
}
});
- if(map.cards.length>0||map.ss.length>0) return map;
+ if(map.cards.length>0||map.ss.length>0||map.xs.length>0) return map;
};
return next;
},
@@ -21272,6 +21544,9 @@
this.markAuto(name);
}
},
+ getExpansions:function(tag){
+ return this.getCards('x',(card)=>card.hasGaintag(tag));
+ },
getStorage:function(name){
return this.storage[name]||[];
},
@@ -25050,7 +25325,7 @@
return false;
},
hasPosition:function(){
- return ['h','e','j'].contains(get.position(this));
+ return ['h','e','j','s','x'].contains(get.position(this));
},
isInPile:function(){
return ['c','d'].contains(get.position(this));
@@ -27185,7 +27460,7 @@
}
},
_discard:{
- trigger:{global:'discardAfter'},
+ trigger:{global:['discardAfter','loseToDiscardpileAfter']},
forced:true,
popup:false,
priority:-100,
@@ -28535,6 +28810,7 @@
es:[],
js:[],
ss:[],
+ xs:[],
cards:[],
cards2:[],
};
@@ -28544,11 +28820,12 @@
map.es.addArray(evt.es);
map.js.addArray(evt.js);
map.ss.addArray(evt.ss);
+ map.xs.addArray(evt.xs);
map.cards.addArray(evt.cards);
map.cards2.addArray(evt.cards2);
}
});
- if(map.cards.length>0||map.ss.length>0) return map;
+ if(map.cards.length>0||map.ss.length>0||map.xs.length>0) return map;
};
if(arg&&get.is.object(arg)){
for(var i in arg) next[i]=arg[i];
@@ -33546,7 +33823,7 @@
args[i]=arguments[i];
}
if((args.length==0||args.contains('card'))&&_status.event.player){
- var cards=_status.event.player.getCards('hejs');
+ var cards=_status.event.player.getCards('hejsx');
for(j=0;j ',node),
handcards1:ui.create.div('.handcards'),
handcards2:ui.create.div('.handcards'),
+ expansions:ui.create.div('.expansions'),
};
+ node.node.expansions.display='none';
var chainlength=game.layout=='default'?64:40;
for(var i=0;i