commit
73272251af
323
character/diy.js
323
character/diy.js
|
@ -75,6 +75,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
||||||
db_key_liyingxia:['female','shu',3,['liyingxia_sanli','liyingxia_zhenjun','liyingxia_wumai'],['doublegroup:shu:key']],
|
db_key_liyingxia:['female','shu',3,['liyingxia_sanli','liyingxia_zhenjun','liyingxia_wumai'],['doublegroup:shu:key']],
|
||||||
key_erika:['female','key','3/3/2',['erika_shisong','erika_yousheng']],
|
key_erika:['female','key','3/3/2',['erika_shisong','erika_yousheng']],
|
||||||
key_satomi:['female','key',3,['satomi_luodao','satomi_daohai']],
|
key_satomi:['female','key',3,['satomi_luodao','satomi_daohai']],
|
||||||
|
key_iriya:['female','key',3,['iriya_yinji','iriya_haozhi'],['unseen']],
|
||||||
|
|
||||||
key_kud:['female','key',3,['kud_qiaoshou','kud_buhui']],
|
key_kud:['female','key',3,['kud_qiaoshou','kud_buhui']],
|
||||||
key_misuzu:['female','key',3,['misuzu_hengzhou','misuzu_nongyin','misuzu_zhongxing']],
|
key_misuzu:['female','key',3,['misuzu_hengzhou','misuzu_nongyin','misuzu_zhongxing']],
|
||||||
|
@ -572,9 +573,309 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
||||||
iriya_haozhi:{
|
iriya_haozhi:{
|
||||||
enable:'phaseUse',
|
enable:'phaseUse',
|
||||||
filterCard:true,
|
filterCard:true,
|
||||||
selectCard:[1,Infinity],
|
selectCard:[2,Infinity],
|
||||||
|
promptfunc:()=>'出牌阶段,你可以按照斗地主牌型弃置至少两张牌,且其他角色可以依次对其进行一轮响应。最后一名进行响应的角色可以根据对应牌型执行对应效果。',
|
||||||
|
position:'he',
|
||||||
getType:function(cards,player){
|
getType:function(cards,player){
|
||||||
var numbers=cards.map(card=>get.number(card,player));
|
var nums=cards.map(card=>{
|
||||||
|
var num=get.number(card,player);
|
||||||
|
if(num<=2) return num+13;
|
||||||
|
return num;
|
||||||
|
}).sort((a,b)=>(a-b)),len=nums.length;
|
||||||
|
if(len==1) return ['单张',nums[0],1];
|
||||||
|
if(len==2) return nums[1]==nums[0]?['对子',nums[0],1]:null;
|
||||||
|
var map={};
|
||||||
|
for(var i=0;i<len;i++){
|
||||||
|
var count=get.numOf(nums,nums[i]);
|
||||||
|
if(!map[count]) map[count]=[];
|
||||||
|
map[count].push(nums[i]);
|
||||||
|
i+=(count-1);
|
||||||
|
}
|
||||||
|
if(len==3){
|
||||||
|
if(map[3]) return ['三张',nums[0],1];
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
if(map[len]){
|
||||||
|
return ['炸弹',nums[0],length];
|
||||||
|
}
|
||||||
|
if(map[1]){
|
||||||
|
if(map[1].length==len&&len>4){
|
||||||
|
for(var i=0;i<map[1].length-1;i++){
|
||||||
|
if(map[1][i+1]-map[1][i]!=1) return null;
|
||||||
|
if(map[1][i+1]==15) return null;
|
||||||
|
}
|
||||||
|
return ['单顺',nums[0],len];
|
||||||
|
}
|
||||||
|
else if(map[1].length==2&&map[4]&&len==6){
|
||||||
|
return ['四带二',map[4][0],1]
|
||||||
|
}
|
||||||
|
else if(map[3]&&map[1].length==map[3].length&&len==map[1].length*4){
|
||||||
|
if(map[3].length==1) return ['三带一',map[3][0],1];
|
||||||
|
for(var i=0;i<map[3].length-1;i++){
|
||||||
|
if(map[3][i+1]-map[3][i]!=1) return null;
|
||||||
|
}
|
||||||
|
return ['单带飞机',map[3][0],map[3].length];
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
if(map[2]){
|
||||||
|
if(map[2].length*2==len&&len>5){
|
||||||
|
for(var i=0;i<map[2].length-1;i++){
|
||||||
|
if(map[2][i+1]-map[2][i]!=1) return null;
|
||||||
|
if(map[2][i+1]==15) return null;
|
||||||
|
}
|
||||||
|
return ['双顺',nums[0],len];
|
||||||
|
}
|
||||||
|
else if(map[4]&&len==6){
|
||||||
|
return ['四带二',map[4][0],1]
|
||||||
|
}
|
||||||
|
else if(map[3]&&map[2].length==map[3].length&&len==map[2].length*5){
|
||||||
|
if(map[3].length==1) return ['三带二',map[3][0],1];
|
||||||
|
for(var i=0;i<map[3].length-1;i++){
|
||||||
|
if(map[3][i+1]-map[3][i]!=1) return null;
|
||||||
|
if(map[3][i+1]==15) return null;
|
||||||
|
}
|
||||||
|
return ['双带飞机',map[3][0],map[3].length];
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
if(map[3]){
|
||||||
|
if(map[3].length*3==len&&len>5){
|
||||||
|
for(var i=0;i<map[3].length-1;i++){
|
||||||
|
if(map[3][i+1]-map[3][i]!=1) return null;
|
||||||
|
if(map[3][i+1]==15) return null;
|
||||||
|
}
|
||||||
|
return ['三顺',nums[0],len];
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
},
|
||||||
|
filterOk:function(){
|
||||||
|
return Array.isArray(lib.skill.iriya_haozhi.getType(ui.selected.cards,_status.event.player));
|
||||||
|
},
|
||||||
|
content:function(){
|
||||||
|
'step 0'
|
||||||
|
var players=game.filterPlayer().sortBySeat(player.getNext());
|
||||||
|
event.players=players;
|
||||||
|
event.current=player;
|
||||||
|
event.current_type=lib.skill.iriya_haozhi.getType(cards,player);
|
||||||
|
event.current_cards=cards.slice(0);
|
||||||
|
if(!event.current_type) event.finish();
|
||||||
|
'step 1'
|
||||||
|
var target=event.players.shift();
|
||||||
|
if((target!=player||event.current!=player)&&target.isIn()&&target.countCards('h')>=Math.min(cards.length,4)){
|
||||||
|
event.target=target;
|
||||||
|
target.addTempSkill('iriya_haozhi_temp',{global:['discardBefore','chooseToDiscardEnd','phaseAfter']});
|
||||||
|
var trans=get.translation(event.current);
|
||||||
|
var cardsn=function(cards,player){
|
||||||
|
var getn=(card,player)=>{
|
||||||
|
var num=get.number(card,player);
|
||||||
|
if(num<=2) return num+13;
|
||||||
|
return num;
|
||||||
|
};
|
||||||
|
cards.sort(function(a,b){
|
||||||
|
var numa=getn(a,player),numb=getn(b,player);
|
||||||
|
if(numa!=numb) return numa-numb;
|
||||||
|
return lib.suit.indexOf(get.suit(a,player)-get.suit(b,player));
|
||||||
|
});
|
||||||
|
var str='';
|
||||||
|
for(var i of cards){
|
||||||
|
str+=',';
|
||||||
|
str+=get.strNumber(get.number(i,player));
|
||||||
|
str+=get.translation(get.suit(i,player));
|
||||||
|
}
|
||||||
|
return str.slice(1);
|
||||||
|
}(event.current_cards,event.current);
|
||||||
|
var next=target.chooseToDiscard(
|
||||||
|
'是否响应'+trans+'的'+get.translation(event.current_type[0])+'?',
|
||||||
|
trans+'的牌组为'+cardsn+'。您此时可以点击“整理手牌”,将手牌按点数排序。',[2,Infinity],'he');
|
||||||
|
next.set('type',event.current_type);
|
||||||
|
next.set('filterOk',function(){
|
||||||
|
var type=lib.skill.iriya_haozhi.getType(ui.selected.cards,_status.event.player);
|
||||||
|
if(!type) return false;
|
||||||
|
var ptype=_status.event.type;
|
||||||
|
if(type[0]=='炸弹'){
|
||||||
|
if(ptype[0]=='炸弹'){
|
||||||
|
if(type[2]>ptype[2]) return true;
|
||||||
|
return type[1]>ptype[1]&&type[2]==ptype[2];
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return type[0]==ptype[0]&&type[2]==ptype[2]&&type[1]>ptype[1];
|
||||||
|
});
|
||||||
|
}
|
||||||
|
else if(event.players.length>0) event.redo();
|
||||||
|
else event.goto(3);
|
||||||
|
'step 2'
|
||||||
|
if(result.bool){
|
||||||
|
event.current=target;
|
||||||
|
event.current_type=lib.skill.iriya_haozhi.getType(result.cards.slice(0),target);
|
||||||
|
if(!event.current_type) event.finish();
|
||||||
|
}
|
||||||
|
if(event.players.length>0) event.goto(1);
|
||||||
|
'step 3'
|
||||||
|
var current=event.current,type=0;
|
||||||
|
if(!current.isIn()) return;
|
||||||
|
switch(event.current_type[0]){
|
||||||
|
case '对子':
|
||||||
|
type=1;break;
|
||||||
|
case '三张': case '三带一': case '三带二':
|
||||||
|
type=2;break;
|
||||||
|
case '单顺':
|
||||||
|
type=3;break;
|
||||||
|
case '双顺':
|
||||||
|
type=4;break;
|
||||||
|
case '三顺': case '单带飞机': case '双带飞机':
|
||||||
|
type=5;break;
|
||||||
|
case '炸弹': case'四带二':
|
||||||
|
type=6;break;
|
||||||
|
}
|
||||||
|
if(type==2){
|
||||||
|
current.addSkill('iriya_haozhi_extra');
|
||||||
|
current.addMark('iriya_haozhi_extra',1,false);
|
||||||
|
}
|
||||||
|
else if(type>0){
|
||||||
|
var next=game.createEvent('iriya_haozhi_effect',false);
|
||||||
|
next.player=current;
|
||||||
|
next.setContent(lib.skill.iriya_haozhi['content'+type]);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
content1:function(){
|
||||||
|
'step 0'
|
||||||
|
player.chooseTarget([1,2],'是否令至多两名角色各摸一张牌?');
|
||||||
|
'step 1'
|
||||||
|
if(result.bool){
|
||||||
|
var targets=result.targets.sortBySeat();
|
||||||
|
player.line(targets);
|
||||||
|
game.asyncDraw(targets);
|
||||||
|
game.delayex();
|
||||||
|
}
|
||||||
|
},
|
||||||
|
content3:function(){
|
||||||
|
'step 0'
|
||||||
|
player.chooseTarget([1,2],'是否对至多两名其他角色造成1点伤害?',lib.filter.notMe);
|
||||||
|
'step 1'
|
||||||
|
if(result.bool){
|
||||||
|
var targets=result.targets.sortBySeat();
|
||||||
|
player.line(targets);
|
||||||
|
event.targets=targets;
|
||||||
|
}
|
||||||
|
'step 2'
|
||||||
|
var target=targets.shift();
|
||||||
|
target.damage();
|
||||||
|
game.delayex();
|
||||||
|
if(targets.length>0) event.redo();
|
||||||
|
},
|
||||||
|
content4:function(){
|
||||||
|
'step 0'
|
||||||
|
player.chooseTarget([1,2],'是否弃置至多两名其他角色的各一张牌并造成1点伤害?',lib.filter.notMe);
|
||||||
|
'step 1'
|
||||||
|
if(result.bool){
|
||||||
|
var targets=result.targets.sortBySeat();
|
||||||
|
player.line(targets);
|
||||||
|
event.targets=targets;
|
||||||
|
}
|
||||||
|
'step 2'
|
||||||
|
var target=targets.shift();
|
||||||
|
player.discardPlayerCard(target,true,'he');
|
||||||
|
target.damage();
|
||||||
|
game.delayex();
|
||||||
|
if(targets.length>0) event.redo();
|
||||||
|
},
|
||||||
|
content5:function(){
|
||||||
|
'step 0'
|
||||||
|
player.chooseTarget([1,2],'是否令至多两名其他角色翻面,弃置其的各一张牌并造成1点伤害?',lib.filter.notMe);
|
||||||
|
'step 1'
|
||||||
|
if(result.bool){
|
||||||
|
var targets=result.targets.sortBySeat();
|
||||||
|
player.line(targets);
|
||||||
|
event.targets=targets;
|
||||||
|
}
|
||||||
|
'step 2'
|
||||||
|
var target=targets.shift();
|
||||||
|
target.turnOver();
|
||||||
|
player.discardPlayerCard(target,true,'e',5);
|
||||||
|
player.discardPlayerCard(target,true,'h');
|
||||||
|
target.damage();
|
||||||
|
game.delayex();
|
||||||
|
if(targets.length>0) event.redo();
|
||||||
|
},
|
||||||
|
content6:function(){
|
||||||
|
'step 0'
|
||||||
|
player.chooseTarget([1,2],'是否令至多两名其他角色翻面,弃置其装备区内的所有牌和一张手牌,并造成1点伤害?',lib.filter.notMe);
|
||||||
|
'step 1'
|
||||||
|
if(result.bool){
|
||||||
|
var targets=result.targets.sortBySeat();
|
||||||
|
player.line(targets);
|
||||||
|
event.targets=targets;
|
||||||
|
}
|
||||||
|
'step 2'
|
||||||
|
var target=targets.shift();
|
||||||
|
target.turnOver();
|
||||||
|
player.discardPlayerCard(target,true,'he');
|
||||||
|
target.damage();
|
||||||
|
game.delayex();
|
||||||
|
if(targets.length>0) event.redo();
|
||||||
|
},
|
||||||
|
ai:{sortCardByNum:true},
|
||||||
|
subSkill:{
|
||||||
|
extra:{
|
||||||
|
charlotte:true,
|
||||||
|
mod:{
|
||||||
|
targetInRange:()=>true,
|
||||||
|
cardUsable:()=>Infinity,
|
||||||
|
},
|
||||||
|
trigger:{player:'useCard2'},
|
||||||
|
forced:true,
|
||||||
|
onremove:true,
|
||||||
|
content:function(){
|
||||||
|
'step 0'
|
||||||
|
var num=player.countMark('iriya_haozhi_extra');
|
||||||
|
player.removeSkill('iriya_haozhi_extra');
|
||||||
|
var card=trigger.card;
|
||||||
|
if(trigger.addCount!==false){
|
||||||
|
trigger.addCount=false;
|
||||||
|
var stat=player.getStat().card;
|
||||||
|
if(stat[card.name]&&stat[card.name]>0) stat[card.name]--;
|
||||||
|
}
|
||||||
|
var info=get.info(card);
|
||||||
|
if(info.allowMultiple==false) event.finish();
|
||||||
|
if(trigger.targets&&!info.multitarget){
|
||||||
|
if(game.hasPlayer(function(current){
|
||||||
|
return !trigger.targets.contains(current)&&lib.filter.targetEnabled2(card,player,current);
|
||||||
|
})){
|
||||||
|
var prompt2='为'+get.translation(card)+'增加'+(num>1?'至多':'')+get.cnNumber(num)+'个目标'
|
||||||
|
player.chooseTarget(get.prompt('iriya_haozhi_extra'),[1,num],function(card,player,target){
|
||||||
|
var player=_status.event.player;
|
||||||
|
return !_status.event.targets.contains(target)&&lib.filter.targetEnabled2(_status.event.card,player,target);
|
||||||
|
}).set('prompt2',prompt2).set('ai',function(target){
|
||||||
|
var trigger=_status.event.getTrigger();
|
||||||
|
var player=_status.event.player;
|
||||||
|
return get.effect(target,trigger.card,player,player);
|
||||||
|
}).set('card',trigger.card).set('targets',trigger.targets);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
'step 1'
|
||||||
|
if(result.bool){
|
||||||
|
if(!event.isMine()&&!event.isOnline()) game.delayx();
|
||||||
|
event.targets=result.targets;
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
event.finish();
|
||||||
|
}
|
||||||
|
'step 2'
|
||||||
|
if(event.targets){
|
||||||
|
player.logSkill('iriya_haozhi_extra',event.targets);
|
||||||
|
trigger.targets.addArray(event.targets);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
intro:{content:'使用下一张牌无距离和次数限制,且可以增加#个目标'},
|
||||||
|
},
|
||||||
|
temp:{
|
||||||
|
ai:{sortCardByNum:true},
|
||||||
|
charlotte:true,
|
||||||
|
}
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
//远野美凪&远野小满
|
//远野美凪&远野小满
|
||||||
|
@ -8498,8 +8799,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
||||||
enable:'phaseUse',
|
enable:'phaseUse',
|
||||||
discard:false,
|
discard:false,
|
||||||
line:true,
|
line:true,
|
||||||
direct:true,
|
log:false,
|
||||||
clearTime:true,
|
|
||||||
delay:false,
|
delay:false,
|
||||||
lose:false,
|
lose:false,
|
||||||
prepare:function(cards,player,targets){
|
prepare:function(cards,player,targets){
|
||||||
|
@ -17562,6 +17862,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
||||||
saya_nodis:'破围',
|
saya_nodis:'破围',
|
||||||
//〖破围〗不会因为〖铁骑〗无效
|
//〖破围〗不会因为〖铁骑〗无效
|
||||||
inari_baiwei:'摆尾',
|
inari_baiwei:'摆尾',
|
||||||
|
inari_baiwei_draw:'摆尾',
|
||||||
inari_baiwei_info:'你可以将一张♦牌当做任意基本牌使用或打出。此牌结算完成后,你摸一张牌。',
|
inari_baiwei_info:'你可以将一张♦牌当做任意基本牌使用或打出。此牌结算完成后,你摸一张牌。',
|
||||||
//你不能以此法使用【毒】
|
//你不能以此法使用【毒】
|
||||||
inari_baiwei_backup:'摆尾',
|
inari_baiwei_backup:'摆尾',
|
||||||
|
@ -17848,13 +18149,13 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
||||||
iriya_yinji:'殷极',
|
iriya_yinji:'殷极',
|
||||||
iriya_yinji_info:'锁定技。出牌阶段开始时,你将手牌摸至17张。你不能直接使用以此法获得的牌。',
|
iriya_yinji_info:'锁定技。出牌阶段开始时,你将手牌摸至17张。你不能直接使用以此法获得的牌。',
|
||||||
iriya_haozhi:'豪掷',
|
iriya_haozhi:'豪掷',
|
||||||
iriya_haozhi_info:'出牌阶段,你可以弃置至少两张牌,然后摸一张牌。根据你以此法弃置的牌,你执行对应的效果。<br>'
|
iriya_haozhi_info:'出牌阶段,你可以按照斗地主牌型弃置至少两张牌,且其他角色可以依次对其进行一轮响应。最后一名进行响应的角色可以根据对应牌型执行对应效果。'
|
||||||
+'对子:你额外摸一张牌;'
|
+'对子:其可以令至多两名角色各摸一张牌。'
|
||||||
+'三带:'
|
+'三带:其使用的下一张牌可以多指定一个目标且无距离和次数限制。'
|
||||||
+'单顺:'
|
+'单顺:其可以对至多2名其他角色造成1点伤害。'
|
||||||
+'双顺:'
|
+'双顺:其可以弃置至多2名其他角色的一张牌并对其造成1点伤害。'
|
||||||
+'飞机:'
|
+'三顺/飞机:其可以令至多2名其他角色翻面,弃置其的一张牌并对其造成1点伤害。'
|
||||||
+'炸弹:',
|
+'炸弹/四带二:其可以令至多2名其他角色翻面,弃置这些角色装备区内的所有牌和一张手牌,对这些角色造成1点伤害。',
|
||||||
|
|
||||||
key_kud:'库特莉亚芙卡',
|
key_kud:'库特莉亚芙卡',
|
||||||
kud_qiaoshou:'巧手',
|
kud_qiaoshou:'巧手',
|
||||||
|
|
|
@ -3274,6 +3274,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
||||||
globalTo:function(from,to,distance){
|
globalTo:function(from,to,distance){
|
||||||
if(to.countMark('spshidi')%2==1) return distance+1;
|
if(to.countMark('spshidi')%2==1) return distance+1;
|
||||||
},
|
},
|
||||||
|
aiOrder:function(player,card,num){
|
||||||
|
if(from.countMark('spshidi')%2==0&&card.name=='sha'&&get.color(card)=='black') return num+0.1;
|
||||||
|
},
|
||||||
},
|
},
|
||||||
mark:true,
|
mark:true,
|
||||||
marktext:'☯',
|
marktext:'☯',
|
||||||
|
@ -6016,7 +6019,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
||||||
xingbu:{
|
xingbu:{
|
||||||
audio:2,
|
audio:2,
|
||||||
trigger:{player:'phaseJieshuBegin'},
|
trigger:{player:'phaseJieshuBegin'},
|
||||||
prompt2:'展示牌堆顶的三张牌,并根据其中红色牌的数量,令一名其他角色获得一种效果',
|
prompt2:'展示牌堆顶的三张牌,并可以根据其中红色牌的数量,令一名其他角色获得一种效果',
|
||||||
check:function(event,player){
|
check:function(event,player){
|
||||||
return game.hasPlayer(function(current){
|
return game.hasPlayer(function(current){
|
||||||
return current!=player&&get.attitude(player,current)>0;
|
return current!=player&&get.attitude(player,current)>0;
|
||||||
|
@ -6037,7 +6040,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
||||||
for(var i of cards){
|
for(var i of cards){
|
||||||
if(get.color(i,false)=='red') num++;
|
if(get.color(i,false)=='red') num++;
|
||||||
}
|
}
|
||||||
player.chooseTarget('选择一名其他角色获得星卜效果('+get.cnNumber(num)+'张)',lib.filter.notMe,true).set('ai',function(target){
|
player.chooseTarget('是否选择一名其他角色获得星卜效果('+get.cnNumber(num)+'张)?',lib.filter.notMe).set('ai',function(target){
|
||||||
var player=_status.event.player,num=_status.event.getParent().num;
|
var player=_status.event.player,num=_status.event.getParent().num;
|
||||||
var att=get.attitude(player,target);
|
var att=get.attitude(player,target);
|
||||||
if(num<3) att*=(-1);
|
if(num<3) att*=(-1);
|
||||||
|
@ -11215,17 +11218,20 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
||||||
trigger:{target:'useCardToTarget'},
|
trigger:{target:'useCardToTarget'},
|
||||||
direct:true,
|
direct:true,
|
||||||
filter:function(event,player){
|
filter:function(event,player){
|
||||||
return event.card.name=='sha';
|
return event.card.name=='sha'&&game.hasPlayer(function(current){
|
||||||
|
return current!=player&&!event.targets.contains(current)&&lib.filter.targetEnabled(event.card,event.player,current);
|
||||||
|
});
|
||||||
},
|
},
|
||||||
content:function(){
|
content:function(){
|
||||||
"step 0"
|
"step 0"
|
||||||
player.chooseTarget(get.prompt2('xinqiuyuan'),function(card,player,target){
|
player.chooseTarget(get.prompt2('xinqiuyuan'),function(card,player,target){
|
||||||
return target!=player&&!_status.event.targets.contains(target)&&_status.event.playerx.canUse('sha',target,false);
|
var evt=_status.event.getTrigger();
|
||||||
|
return target!=player&&!evt.targets.contains(target)&&lib.filter.targetEnabled(evt.card,evt.player,target);
|
||||||
}).set('ai',function(target){
|
}).set('ai',function(target){
|
||||||
var trigger=_status.event.getTrigger();
|
var trigger=_status.event.getTrigger();
|
||||||
var player=_status.event.player;
|
var player=_status.event.player;
|
||||||
return get.effect(target,trigger.card,trigger.player,player)+0.1;
|
return get.effect(target,trigger.card,trigger.player,player)+0.1;
|
||||||
}).set('targets',trigger.targets).set('playerx',trigger.player);
|
});
|
||||||
"step 1"
|
"step 1"
|
||||||
if(result.bool){
|
if(result.bool){
|
||||||
var target=result.targets[0];
|
var target=result.targets[0];
|
||||||
|
@ -17940,6 +17946,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
||||||
"shuijing_card_info":"将一名角色装备区内的防具牌移动到另一名角色对应区域。若场上有存活的司马徽,则改为将1名角色装备区内的1件装备移动到另1角色对应区域。","xinfu_pingcai":"评才",
|
"shuijing_card_info":"将一名角色装备区内的防具牌移动到另一名角色对应区域。若场上有存活的司马徽,则改为将1名角色装备区内的1件装备移动到另1角色对应区域。","xinfu_pingcai":"评才",
|
||||||
"xinfu_pingcai_info":"出牌阶段限一次,你可以挑选一个宝物并擦拭掉其上面的灰尘。然后,你可以根据宝物类型执行对应的效果。",
|
"xinfu_pingcai_info":"出牌阶段限一次,你可以挑选一个宝物并擦拭掉其上面的灰尘。然后,你可以根据宝物类型执行对应的效果。",
|
||||||
"xinfu_pdgyingshi":"隐世",
|
"xinfu_pdgyingshi":"隐世",
|
||||||
|
"xinfu_pdgyingshi2":"隐世",
|
||||||
"xinfu_pdgyingshi_info":"锁定技,你始终跳过准备阶段,判定阶段,结束阶段。你不能被选择为延时锦囊牌的目标。",
|
"xinfu_pdgyingshi_info":"锁定技,你始终跳过准备阶段,判定阶段,结束阶段。你不能被选择为延时锦囊牌的目标。",
|
||||||
"pcaudio_wolong_card":"卧龙",
|
"pcaudio_wolong_card":"卧龙",
|
||||||
"pcaudio_wolong_card_info":"",
|
"pcaudio_wolong_card_info":"",
|
||||||
|
@ -18472,7 +18479,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
||||||
zhiming:'知命',
|
zhiming:'知命',
|
||||||
zhiming_info:'准备阶段开始时或弃牌阶段结束时,你摸一张牌,然后可以将一张牌置于牌堆顶。',
|
zhiming_info:'准备阶段开始时或弃牌阶段结束时,你摸一张牌,然后可以将一张牌置于牌堆顶。',
|
||||||
xingbu:'星卜',
|
xingbu:'星卜',
|
||||||
xingbu_info:'结束阶段,你可以展示牌堆顶的三张牌,然后根据X值(X为这三张牌中红色牌的数量),令一名其他角色获得对应的效果直到其下回合结束:①三张:其摸牌阶段多摸两张牌,使用【杀】的次数上限+1。②两张:其使用【杀】的次数上限-1,跳过弃牌阶段。③小于两张:其于准备阶段开始时弃置一张手牌。',
|
xingbu_info:'结束阶段,你可以展示牌堆顶的三张牌,然后你可以根据X值(X为这三张牌中红色牌的数量),令一名其他角色获得对应的效果直到其下回合结束:①三张:其摸牌阶段多摸两张牌,使用【杀】的次数上限+1。②两张:其使用【杀】的次数上限-1,跳过弃牌阶段。③小于两张:其于准备阶段开始时弃置一张手牌。',
|
||||||
yuanqing:'渊清',
|
yuanqing:'渊清',
|
||||||
yuanqing_info:'锁定技,出牌阶段结束时,你随机将弃牌堆中你本阶段使用过的牌类型的各一张牌置于仁库中。',
|
yuanqing_info:'锁定技,出牌阶段结束时,你随机将弃牌堆中你本阶段使用过的牌类型的各一张牌置于仁库中。',
|
||||||
shuchen:'疏陈',
|
shuchen:'疏陈',
|
||||||
|
|
|
@ -21,7 +21,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
||||||
jsrg_hejin:['male','qun',4,['jsrgzhaobing','jsrgzhuhuan','jsrgyanhuo']],
|
jsrg_hejin:['male','qun',4,['jsrgzhaobing','jsrgzhuhuan','jsrgyanhuo']],
|
||||||
jsrg_sunjian:['male','qun',4,['jsrgpingtao','jsrgjuelie']],
|
jsrg_sunjian:['male','qun',4,['jsrgpingtao','jsrgjuelie']],
|
||||||
jsrg_huangfusong:['male','qun',4,['jsrgguanhuo','jsrgjuxia']],
|
jsrg_huangfusong:['male','qun',4,['jsrgguanhuo','jsrgjuxia']],
|
||||||
jsrg_xushao:['male','qun',3,['jsrgyingmen','jsrgpingjian'],['unseen']],
|
jsrg_xushao:['male','qun',3,['sbyingmen','sbpingjian']],
|
||||||
jsrg_dongbai:['female','qun',3,['jsrgshichong','jsrglianzhu']],
|
jsrg_dongbai:['female','qun',3,['jsrgshichong','jsrglianzhu']],
|
||||||
jsrg_qiaoxuan:['male','qun',3,['jsrgjuezhi','jsrgjizhao']],
|
jsrg_qiaoxuan:['male','qun',3,['jsrgjuezhi','jsrgjizhao']],
|
||||||
jsrg_yangbiao:['male','qun','3/4',['jsrgzhaohan','jsrgrangjie','jsrgyizheng']],
|
jsrg_yangbiao:['male','qun','3/4',['jsrgzhaohan','jsrgrangjie','jsrgyizheng']],
|
||||||
|
@ -149,8 +149,202 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
characterFilter:{
|
||||||
|
jsrg_xushao:function(mode){
|
||||||
|
return mode!='guozhan';
|
||||||
|
},
|
||||||
|
},
|
||||||
skill:{
|
skill:{
|
||||||
//江山如故·起
|
//江山如故·起
|
||||||
|
sbyingmen:{
|
||||||
|
forbid:['guozhan'],
|
||||||
|
trigger:{
|
||||||
|
global:'phaseBefore',
|
||||||
|
player:'enterGame',
|
||||||
|
},
|
||||||
|
forced:true,
|
||||||
|
filter:function(event,player){
|
||||||
|
return event.name!='phase'||game.phaseNumber==0;
|
||||||
|
},
|
||||||
|
content:function(){
|
||||||
|
if(!_status.characterlist) lib.skill.pingjian.initList();
|
||||||
|
var characters=_status.characterlist.randomRemove(4);
|
||||||
|
lib.skill.sbyingmen.addVisitors(characters,player);
|
||||||
|
game.delayx();
|
||||||
|
},
|
||||||
|
group:'sbyingmen_reload',
|
||||||
|
subSkill:{
|
||||||
|
reload:{
|
||||||
|
trigger:{player:'phaseBegin'},
|
||||||
|
forced:true,
|
||||||
|
locked:false,
|
||||||
|
filter:function(event,player){
|
||||||
|
return player.getStorage('sbyingmen').length<4;
|
||||||
|
},
|
||||||
|
content:function(){
|
||||||
|
if(!_status.characterlist) lib.skill.pingjian.initList();
|
||||||
|
var characters=_status.characterlist.randomRemove(4-player.getStorage('sbyingmen').length);
|
||||||
|
lib.skill.sbyingmen.addVisitors(characters,player);
|
||||||
|
game.delayx();
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
getSkills:function(characters,player){
|
||||||
|
var skills=[];
|
||||||
|
for(var name of characters){
|
||||||
|
if(Array.isArray(lib.character[name])){
|
||||||
|
for(var skill of lib.character[name][3]){
|
||||||
|
var list=get.skillCategoriesOf(skill,player);
|
||||||
|
list.remove('锁定技');
|
||||||
|
if(list.length>0) continue;
|
||||||
|
var info=get.info(skill);
|
||||||
|
if(info&&(!info.unique||info.gainable)) skills.add(skill);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return skills;
|
||||||
|
},
|
||||||
|
addVisitors:function(characters,player){
|
||||||
|
player.addSkillBlocker('sbyingmen');
|
||||||
|
game.log(player,'将','#y'+get.translation(characters),'加入了','#g“访客”')
|
||||||
|
lib.skill.rehuashen.drawCharacter(player,characters);
|
||||||
|
player.markAuto('sbyingmen',characters)
|
||||||
|
var storage=player.getStorage('sbyingmen');
|
||||||
|
var skills=lib.skill.sbyingmen.getSkills(storage,player);
|
||||||
|
player.addInvisibleSkill(skills);
|
||||||
|
},
|
||||||
|
removeVisitors:function(characters,player){
|
||||||
|
var skills=lib.skill.sbyingmen.getSkills(characters,player);
|
||||||
|
var characters2=player.getStorage('sbyingmen').slice(0);
|
||||||
|
characters2.removeArray(characters);
|
||||||
|
skills.removeArray(lib.skill.sbyingmen.getSkills(characters2,player));
|
||||||
|
player.unmarkAuto('sbyingmen',characters);
|
||||||
|
_status.characterlist.addArray(characters);
|
||||||
|
player.removeInvisibleSkill(skills);
|
||||||
|
},
|
||||||
|
onremove:function(player,skill){
|
||||||
|
lib.skill.sbyingmen.removeVisitors(player.getSkills('sbyingmen'),player);
|
||||||
|
player.removeSkillBlocker('sbyingmen');
|
||||||
|
},
|
||||||
|
skillBlocker:function(skill,player){
|
||||||
|
if(!player.invisibleSkills.contains(skill)||skill=='sbpingjian'||skill=='sbpingjian') return false;
|
||||||
|
return !player.hasSkill('sbpingjian');
|
||||||
|
},
|
||||||
|
marktext:'客',
|
||||||
|
intro:{
|
||||||
|
name:'访客',
|
||||||
|
mark:function(dialog,storage,player){
|
||||||
|
if(!storage||!storage.length) return '当前没有“访客”';
|
||||||
|
dialog.addSmall([storage,'character']);
|
||||||
|
var skills=lib.skill.sbyingmen.getSkills(storage,player);
|
||||||
|
if(skills.length) dialog.addText('<li>当前可用技能:'+get.translation(skills),false);
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
sbpingjian:{
|
||||||
|
trigger:{player:['useSkillAfter','logSkill']},
|
||||||
|
forced:true,
|
||||||
|
filter:function(event,player){
|
||||||
|
var skill=event.sourceSkill||event.skill;
|
||||||
|
return player.invisibleSkills.contains(skill)&&lib.skill.sbyingmen.getSkills(player.getStorage('sbyingmen'),player).contains(skill);
|
||||||
|
},
|
||||||
|
content:function(){
|
||||||
|
'step 0'
|
||||||
|
var visitors=player.getStorage('sbyingmen').slice(0);
|
||||||
|
var drawers=visitors.filter(function(name){
|
||||||
|
return Array.isArray(lib.character[name])&&lib.character[name][3].contains(trigger.sourceSkill);
|
||||||
|
});
|
||||||
|
event.drawers=drawers;
|
||||||
|
if(visitors.length==1) event._result={bool:true,links:visitors};
|
||||||
|
else{
|
||||||
|
var dialog=['评鉴:请选择移去一张“访客”'];
|
||||||
|
if(drawers.length) dialog.push('<div class="text center">如果移去'+get.translation(drawers)+',则你摸一张牌</div>');
|
||||||
|
dialog.push([visitors,'character']);
|
||||||
|
player.chooseButton(dialog,true);
|
||||||
|
}
|
||||||
|
'step 1'
|
||||||
|
if(result.bool){
|
||||||
|
lib.skill.sbyingmen.removeVisitors(result.links,player);
|
||||||
|
game.log(player,'移去了','#y'+get.translation(result.links[0]));
|
||||||
|
if(event.drawers.contains(result.links[0])) player.draw();
|
||||||
|
}
|
||||||
|
},
|
||||||
|
group:'sbpingjian_trigger',
|
||||||
|
subSkill:{
|
||||||
|
trigger:{
|
||||||
|
trigger:{player:'triggerInvisible'},
|
||||||
|
forced:true,
|
||||||
|
forceDie:true,
|
||||||
|
popup:false,
|
||||||
|
priority:10,
|
||||||
|
filter:function(event,player){
|
||||||
|
if(event.revealed) return false;
|
||||||
|
var skills=lib.skill.sbyingmen.getSkills(player.getStorage('sbyingmen'),player);
|
||||||
|
game.expandSkills(skills);
|
||||||
|
return skills.contains(event.skill);
|
||||||
|
},
|
||||||
|
content:function(){
|
||||||
|
"step 0"
|
||||||
|
if(get.info(trigger.skill).silent){
|
||||||
|
event.finish();
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
var info=get.info(trigger.skill);
|
||||||
|
var event=trigger,trigger=event._trigger;
|
||||||
|
var str;
|
||||||
|
var check=info.check;
|
||||||
|
if(info.prompt) str=info.prompt;
|
||||||
|
else{
|
||||||
|
if(typeof info.logTarget=='string'){
|
||||||
|
str=get.prompt(event.skill,trigger[info.logTarget],player);
|
||||||
|
}
|
||||||
|
else if(typeof info.logTarget=='function'){
|
||||||
|
var logTarget=info.logTarget(trigger,player);
|
||||||
|
if(get.itemtype(logTarget).indexOf('player')==0) str=get.prompt(event.skill,logTarget,player);
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
str=get.prompt(event.skill,null,player);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if(typeof str=='function'){str=str(trigger,player)}
|
||||||
|
var next=player.chooseBool('评鉴:'+str);
|
||||||
|
next.set('yes',!info.check||info.check(trigger,player));
|
||||||
|
next.set('hsskill',event.skill);
|
||||||
|
next.set('forceDie',true);
|
||||||
|
next.set('ai',function(){
|
||||||
|
return _status.event.yes;
|
||||||
|
});
|
||||||
|
if(typeof info.prompt2=='function'){
|
||||||
|
next.set('prompt2',info.prompt2(trigger,player));
|
||||||
|
}
|
||||||
|
else if(typeof info.prompt2=='string'){
|
||||||
|
next.set('prompt2',info.prompt2);
|
||||||
|
}
|
||||||
|
else if(info.prompt2!=false){
|
||||||
|
if(lib.dynamicTranslate[event.skill]) next.set('prompt2',lib.dynamicTranslate[event.skill](player,event.skill));
|
||||||
|
else if(lib.translate[event.skill+'_info']) next.set('prompt2',lib.translate[event.skill+'_info']);
|
||||||
|
}
|
||||||
|
if(trigger.skillwarn){
|
||||||
|
if(next.prompt2){
|
||||||
|
next.set('prompt2','<span class="thundertext">'+trigger.skillwarn+'。</span>'+next.prompt2);
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
next.set('prompt2',trigger.skillwarn);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
"step 1"
|
||||||
|
if(result.bool){
|
||||||
|
trigger.revealed=true;
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
trigger.untrigger();
|
||||||
|
trigger.cancelled=true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
jsrgchaozheng:{
|
jsrgchaozheng:{
|
||||||
audio:2,
|
audio:2,
|
||||||
trigger:{player:'phaseZhunbeiBegin'},
|
trigger:{player:'phaseZhunbeiBegin'},
|
||||||
|
@ -1800,7 +1994,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
||||||
var targets=game.filterPlayer(current=>{
|
var targets=game.filterPlayer(current=>{
|
||||||
return !current.hasMark('jsrgzhenglve_mark');
|
return !current.hasMark('jsrgzhenglve_mark');
|
||||||
});
|
});
|
||||||
if(!targets.length) event._result={bool:true};
|
if(!targets.length) event.finish();
|
||||||
else if(targets.length<=num) event._result={bool:true,targets:targets};
|
else if(targets.length<=num) event._result={bool:true,targets:targets};
|
||||||
else player.chooseTarget('令'+get.cnNumber(num)+'名角色获得“猎”标记',true,num,(card,player,target)=>{
|
else player.chooseTarget('令'+get.cnNumber(num)+'名角色获得“猎”标记',true,num,(card,player,target)=>{
|
||||||
return !target.hasMark('jsrgzhenglve_mark');
|
return !target.hasMark('jsrgzhenglve_mark');
|
||||||
|
@ -8286,12 +8480,17 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
||||||
jsrgxundao_info:'当你的判定牌生效前,你可以令至多两名角色依次弃置一张牌,然后你选择一张以此法弃置且位于弃牌堆中的牌代替此判定牌。',
|
jsrgxundao_info:'当你的判定牌生效前,你可以令至多两名角色依次弃置一张牌,然后你选择一张以此法弃置且位于弃牌堆中的牌代替此判定牌。',
|
||||||
jsrglinghua:'灵化',
|
jsrglinghua:'灵化',
|
||||||
jsrglinghua_info:'①准备阶段,你可以进行目标角色为你的【闪电】的特殊的使用流程。若你未因此受到伤害,你可以令一名角色回复1点体力。②结束阶段,你可以进行目标角色为你且判定效果反转的【闪电】的特殊的使用流程。若你未因此受到伤害,你可以对一名角色造成1点雷电伤害。',
|
jsrglinghua_info:'①准备阶段,你可以进行目标角色为你的【闪电】的特殊的使用流程。若你未因此受到伤害,你可以令一名角色回复1点体力。②结束阶段,你可以进行目标角色为你且判定效果反转的【闪电】的特殊的使用流程。若你未因此受到伤害,你可以对一名角色造成1点雷电伤害。',
|
||||||
|
sbyingmen:'盈门',
|
||||||
|
sbyingmen_info:'锁定技。①游戏开始时,你将武将牌堆中随机四张武将牌置于你的武将牌上,称为“访客”。②回合开始时,若你的“访客”数小于4,你随机从武将牌堆中将“访客”补至四张。',
|
||||||
|
sbpingjian:'评鉴',
|
||||||
|
sbpingjian_info:'你可以于满足你“访客”上的一个无技能标签或仅有锁定技标签的技能条件的时机发动此技能。你发动的技能结算结束后,若此技能位于你的“访客”中,则你选择移去一张“访客”。若移去的是本次发动技能的“访客”,你摸一张牌。',
|
||||||
|
|
||||||
offline_star:'桌游志·SP',
|
offline_star:'桌游志·SP',
|
||||||
offline_sticker:'桌游志·贴纸',
|
offline_sticker:'桌游志·贴纸',
|
||||||
offline_luanwu:'文和乱武',
|
offline_luanwu:'文和乱武',
|
||||||
offline_yongjian:'用间篇',
|
offline_yongjian:'用间篇',
|
||||||
offline_jiangshanruguqi:'江山如故·起',
|
offline_jiangshanruguqi:'江山如故·起',
|
||||||
|
offline_feihongyingxue:'飞鸿映雪',
|
||||||
offline_piracyE:'官盗E系列·战役篇',
|
offline_piracyE:'官盗E系列·战役篇',
|
||||||
offline_piracyS:'官盗S系列',
|
offline_piracyS:'官盗S系列',
|
||||||
offline_piracyK:'官盗K系列',
|
offline_piracyK:'官盗K系列',
|
||||||
|
|
|
@ -43,6 +43,7 @@ window.noname_character_rank={
|
||||||
'noname',
|
'noname',
|
||||||
'sb_machao',
|
'sb_machao',
|
||||||
'dc_zhouxuān',
|
'dc_zhouxuān',
|
||||||
|
'key_iriya',
|
||||||
],
|
],
|
||||||
ap:[
|
ap:[
|
||||||
'gjqt_aruan',
|
'gjqt_aruan',
|
||||||
|
@ -296,6 +297,7 @@ window.noname_character_rank={
|
||||||
'zhanghua',
|
'zhanghua',
|
||||||
'zerong',
|
'zerong',
|
||||||
'wangguan',
|
'wangguan',
|
||||||
|
'duanqiaoxiao',
|
||||||
'key_misuzu',
|
'key_misuzu',
|
||||||
'key_sunohara',
|
'key_sunohara',
|
||||||
'key_umi',
|
'key_umi',
|
||||||
|
@ -908,6 +910,8 @@ window.noname_character_rank={
|
||||||
'xia_zhaoe',
|
'xia_zhaoe',
|
||||||
'zhangkai',
|
'zhangkai',
|
||||||
'sunhong',
|
'sunhong',
|
||||||
|
'zhangjinyun',
|
||||||
|
'dc_mengda',
|
||||||
],
|
],
|
||||||
b:[
|
b:[
|
||||||
'diy_feishi',
|
'diy_feishi',
|
||||||
|
@ -1619,6 +1623,7 @@ window.noname_character_rank={
|
||||||
'tw_jiangji',
|
'tw_jiangji',
|
||||||
'tw_niufudongxie',
|
'tw_niufudongxie',
|
||||||
'tw_shen_lvmeng',
|
'tw_shen_lvmeng',
|
||||||
|
'zhangjinyun',
|
||||||
'key_tomoya',
|
'key_tomoya',
|
||||||
'key_masato',
|
'key_masato',
|
||||||
'key_shiorimiyuki',
|
'key_shiorimiyuki',
|
||||||
|
@ -1843,6 +1848,7 @@ window.noname_character_rank={
|
||||||
'mengjie',
|
'mengjie',
|
||||||
'dc_ruiji',
|
'dc_ruiji',
|
||||||
'xia_zhaoe',
|
'xia_zhaoe',
|
||||||
|
'duanqiaoxiao',
|
||||||
'key_kano',
|
'key_kano',
|
||||||
'key_haruko',
|
'key_haruko',
|
||||||
'key_akiko',
|
'key_akiko',
|
||||||
|
@ -1876,6 +1882,7 @@ window.noname_character_rank={
|
||||||
'key_yukito',
|
'key_yukito',
|
||||||
'key_kotomi',
|
'key_kotomi',
|
||||||
'db_key_liyingxia',
|
'db_key_liyingxia',
|
||||||
|
'key_iriya',
|
||||||
],
|
],
|
||||||
rare:[
|
rare:[
|
||||||
'pal_shenqishuang',
|
'pal_shenqishuang',
|
||||||
|
|
|
@ -3912,8 +3912,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
||||||
lose:false,
|
lose:false,
|
||||||
delay:false,
|
delay:false,
|
||||||
line:true,
|
line:true,
|
||||||
direct:true,
|
|
||||||
clearTime:true,
|
|
||||||
prepare:function(cards,player,targets){
|
prepare:function(cards,player,targets){
|
||||||
targets[0].logSkill('xinhuangtian');
|
targets[0].logSkill('xinhuangtian');
|
||||||
},
|
},
|
||||||
|
@ -4554,7 +4552,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
||||||
threaten:0.8,
|
threaten:0.8,
|
||||||
effect:{
|
effect:{
|
||||||
target:function(card,player,target){
|
target:function(card,player,target){
|
||||||
if(get.tag(card,'damage')){
|
if(get.tag(card,'damage')&&!target.storage.xinzili){
|
||||||
if(player.hasSkillTag('jueqing',false,target)) return [1,-2];
|
if(player.hasSkillTag('jueqing',false,target)) return [1,-2];
|
||||||
if(!target.hasFriend()) return;
|
if(!target.hasFriend()) return;
|
||||||
if(target.hp>=4) return [0.5,get.tag(card,'damage')*2];
|
if(target.hp>=4) return [0.5,get.tag(card,'damage')*2];
|
||||||
|
@ -5338,14 +5336,14 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
||||||
filter:function(event,player){
|
filter:function(event,player){
|
||||||
if(event.card.name!='sha'||event.card.nature!='fire') return false;
|
if(event.card.name!='sha'||event.card.nature!='fire') return false;
|
||||||
return game.hasPlayer(function(current){
|
return game.hasPlayer(function(current){
|
||||||
return !event.targets.contains(current)&&player.canUse(event.card,current);
|
return !event.targets.contains(current)&&lib.filter.targetEnabled(event.card,player,current)&&lib.filter.targetInRange(event.card,player,current);
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
direct:true,
|
direct:true,
|
||||||
content:function(){
|
content:function(){
|
||||||
'step 0'
|
'step 0'
|
||||||
player.chooseTarget(get.prompt('ollihuo'),'为'+get.translation(trigger.card)+'增加一个目标',function(card,player,target){
|
player.chooseTarget(get.prompt('ollihuo'),'为'+get.translation(trigger.card)+'增加一个目标',function(card,player,target){
|
||||||
return !_status.event.sourcex.contains(target)&&player.canUse(_status.event.card,target);
|
return !_status.event.sourcex.contains(target)&&lib.filter.targetInRange(_status.event.card,player,target)&&lib.filter.targetEnabled(_status.event.card,player,target);
|
||||||
}).set('sourcex',trigger.targets).set('card',trigger.card).set('ai',function(target){
|
}).set('sourcex',trigger.targets).set('card',trigger.card).set('ai',function(target){
|
||||||
var player=_status.event.player;
|
var player=_status.event.player;
|
||||||
return get.effect(target,_status.event.card,player,player);
|
return get.effect(target,_status.event.card,player,player);
|
||||||
|
@ -6003,17 +6001,20 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
||||||
trigger:{target:'useCardToTarget'},
|
trigger:{target:'useCardToTarget'},
|
||||||
direct:true,
|
direct:true,
|
||||||
filter:function(event,player){
|
filter:function(event,player){
|
||||||
return event.card.name=='sha';
|
return event.card.name=='sha'&&game.hasPlayer(function(current){
|
||||||
|
return current!=player&&!event.targets.contains(current)&&lib.filter.targetEnabled(event.card,event.player,current);
|
||||||
|
});
|
||||||
},
|
},
|
||||||
content:function(){
|
content:function(){
|
||||||
"step 0"
|
"step 0"
|
||||||
player.chooseTarget(get.prompt2('reqiuyuan'),function(card,player,target){
|
player.chooseTarget(get.prompt2('reqiuyuan'),function(card,player,target){
|
||||||
return target!=player&&!_status.event.targets.contains(target)&&_status.event.playerx.canUse('sha',target,false);
|
var evt=_status.event.getTrigger();
|
||||||
|
return target!=player&&!evt.targets.contains(target)&&lib.filter.targetEnabled(evt.card,evt.player,target);
|
||||||
}).set('ai',function(target){
|
}).set('ai',function(target){
|
||||||
var trigger=_status.event.getTrigger();
|
var trigger=_status.event.getTrigger();
|
||||||
var player=_status.event.player;
|
var player=_status.event.player;
|
||||||
return get.effect(target,trigger.card,trigger.player,player)+0.1;
|
return get.effect(target,trigger.card,trigger.player,player)+0.1;
|
||||||
}).set('targets',trigger.targets).set('playerx',trigger.player);
|
});
|
||||||
"step 1"
|
"step 1"
|
||||||
if(result.bool){
|
if(result.bool){
|
||||||
var target=result.targets[0];
|
var target=result.targets[0];
|
||||||
|
@ -13533,7 +13534,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
||||||
},
|
},
|
||||||
trigger:{source:'damageEnd'},
|
trigger:{source:'damageEnd'},
|
||||||
locked:true,
|
locked:true,
|
||||||
direct:true,
|
forced:true,
|
||||||
filter:function(event,player){
|
filter:function(event,player){
|
||||||
if(event.name=='chooseToUse') return player.hasCard(card=>get.suit(card)=='spade','hs');
|
if(event.name=='chooseToUse') return player.hasCard(card=>get.suit(card)=='spade','hs');
|
||||||
return event.card&&event.card.name=='sha'&&event.getParent(2).jiu==true&&!player.hasSkill('oljiuchi_air');
|
return event.card&&event.card.name=='sha'&&event.getParent(2).jiu==true&&!player.hasSkill('oljiuchi_air');
|
||||||
|
|
|
@ -3886,8 +3886,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
||||||
filterTarget:function(card,player,target){
|
filterTarget:function(card,player,target){
|
||||||
return target.hasZhuSkill('zhiba',player)&&player.canCompare(target);
|
return target.hasZhuSkill('zhiba',player)&&player.canCompare(target);
|
||||||
},
|
},
|
||||||
direct:true,
|
log:false,
|
||||||
clearTime:true,
|
|
||||||
prepare:function(cards,player,targets){
|
prepare:function(cards,player,targets){
|
||||||
targets[0].logSkill('zhiba');
|
targets[0].logSkill('zhiba');
|
||||||
},
|
},
|
||||||
|
@ -7356,8 +7355,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
||||||
lose:false,
|
lose:false,
|
||||||
delay:false,
|
delay:false,
|
||||||
line:true,
|
line:true,
|
||||||
direct:true,
|
|
||||||
clearTime:true,
|
|
||||||
prepare:function(cards,player,targets){
|
prepare:function(cards,player,targets){
|
||||||
targets[0].logSkill('huangtian');
|
targets[0].logSkill('huangtian');
|
||||||
},
|
},
|
||||||
|
|
|
@ -13,6 +13,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
||||||
sp_huben:["caohong","xiahouba","zhugeke","zumao","wenpin","litong","mazhong","heqi","quyi","luzhi","zangba","yuejin","dingfeng","wuyan","ol_zhuling","tianyu","huojun",'zhaoyǎn','dengzhong','ol_furong','macheng','ol_zhangyì','ol_zhujun','maxiumatie'],
|
sp_huben:["caohong","xiahouba","zhugeke","zumao","wenpin","litong","mazhong","heqi","quyi","luzhi","zangba","yuejin","dingfeng","wuyan","ol_zhuling","tianyu","huojun",'zhaoyǎn','dengzhong','ol_furong','macheng','ol_zhangyì','ol_zhujun','maxiumatie'],
|
||||||
sp_liesi:['mizhu','weizi','ol_liuba'],
|
sp_liesi:['mizhu','weizi','ol_liuba'],
|
||||||
sp_default:["sp_diaochan","sp_zhaoyun","sp_sunshangxiang","sp_caoren","sp_jiangwei","sp_machao","sp_caiwenji","jsp_guanyu","jsp_huangyueying","sp_pangde","sp_jiaxu","yuanshu",'sp_zhangliao','sp_ol_zhanghe','sp_menghuo'],
|
sp_default:["sp_diaochan","sp_zhaoyun","sp_sunshangxiang","sp_caoren","sp_jiangwei","sp_machao","sp_caiwenji","jsp_guanyu","jsp_huangyueying","sp_pangde","sp_jiaxu","yuanshu",'sp_zhangliao','sp_ol_zhanghe','sp_menghuo'],
|
||||||
|
sp_waitforsort:['sunhong','luoxian','ol_huban','wangguan'],
|
||||||
sp_qifu:["caoying",'panshu',"caochun","yuantanyuanshang",'caoshuang','wolongfengchu','guansuo','baosanniang','fengfangnv','jin_zhouchu'],
|
sp_qifu:["caoying",'panshu',"caochun","yuantanyuanshang",'caoshuang','wolongfengchu','guansuo','baosanniang','fengfangnv','jin_zhouchu'],
|
||||||
sp_wanglang:['wanglang'],
|
sp_wanglang:['wanglang'],
|
||||||
sp_tongque:["sp_fuwan","sp_fuhuanghou","sp_jiben"],
|
sp_tongque:["sp_fuwan","sp_fuhuanghou","sp_jiben"],
|
||||||
|
@ -803,6 +804,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
||||||
})%2==0;
|
})%2==0;
|
||||||
},
|
},
|
||||||
group:'oldaili_record',
|
group:'oldaili_record',
|
||||||
|
check:function(event,player){
|
||||||
|
if(get.distance(event.player,player,'absolute')==1&&!player.isTurnedOver()) return false;
|
||||||
|
return true;
|
||||||
|
},
|
||||||
content:function(){
|
content:function(){
|
||||||
player.turnOver();
|
player.turnOver();
|
||||||
player.draw(3,'visible').gaintag=['oldaili_tag'];
|
player.draw(3,'visible').gaintag=['oldaili_tag'];
|
||||||
|
@ -823,6 +828,20 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
||||||
return lib.skill.oldaili.mod.aiValue.apply(this,arguments);
|
return lib.skill.oldaili.mod.aiValue.apply(this,arguments);
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
mark:true,
|
||||||
|
marktext:'砺',
|
||||||
|
intro:{
|
||||||
|
markcount:function(storage,player){
|
||||||
|
return player.countCards('h',card=>card.hasGaintag('oldaili_tag'));
|
||||||
|
},
|
||||||
|
mark:function(dialog,content,player){
|
||||||
|
var cards=player.getCards('h',card=>card.hasGaintag('oldaili_tag'));
|
||||||
|
if(cards.length){
|
||||||
|
dialog.addAuto(cards);
|
||||||
|
}
|
||||||
|
else return '无展示牌';
|
||||||
|
},
|
||||||
|
},
|
||||||
subSkill:{
|
subSkill:{
|
||||||
record:{
|
record:{
|
||||||
trigger:{player:'showCardsEnd'},
|
trigger:{player:'showCardsEnd'},
|
||||||
|
@ -835,7 +854,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
||||||
cards.forEach(card=>card.addGaintag('oldaili_tag'));
|
cards.forEach(card=>card.addGaintag('oldaili_tag'));
|
||||||
},trigger.cards);
|
},trigger.cards);
|
||||||
}
|
}
|
||||||
}
|
},
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
//胡班
|
//胡班
|
||||||
|
@ -22869,6 +22888,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
||||||
sp_guozhan:"国战",
|
sp_guozhan:"国战",
|
||||||
sp_guozhan2:"国战移植",
|
sp_guozhan2:"国战移植",
|
||||||
sp_others:"其他",
|
sp_others:"其他",
|
||||||
|
sp_waitforsort:'等待分包',
|
||||||
sp_single:'新1v1',
|
sp_single:'新1v1',
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
612
character/sp2.js
612
character/sp2.js
|
@ -4,6 +4,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
||||||
name:'sp2',
|
name:'sp2',
|
||||||
connect:true,
|
connect:true,
|
||||||
character:{
|
character:{
|
||||||
|
duanqiaoxiao:['female','wei',3,['dccaizhuang','dchuayi']],
|
||||||
|
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'],['unseen']],
|
||||||
mengyou:['male','qun',5,['hmmanyi','dcmanzhi'],['unseen']],
|
mengyou:['male','qun',5,['hmmanyi','dcmanzhi'],['unseen']],
|
||||||
chentai:['male','wei',4,['dcjiuxian','dcchenyong'],['unseen']],
|
chentai:['male','wei',4,['dcjiuxian','dcchenyong'],['unseen']],
|
||||||
|
@ -229,7 +233,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
||||||
sp_sbfm:["lisu","xinpi","zhangwen"],
|
sp_sbfm:["lisu","xinpi","zhangwen"],
|
||||||
sp_guandu:["sp_zhanghe","xunchen","sp_shenpei","gaolan","lvkuanglvxiang","chunyuqiong","sp_xuyou","xinping","hanmeng"],
|
sp_guandu:["sp_zhanghe","xunchen","sp_shenpei","gaolan","lvkuanglvxiang","chunyuqiong","sp_xuyou","xinping","hanmeng"],
|
||||||
sp_qihuan:['zhaozhong','re_hejin','fengfang','mushun','dc_fuwan'],
|
sp_qihuan:['zhaozhong','re_hejin','fengfang','mushun','dc_fuwan'],
|
||||||
sp_binglin:['re_niujin',"sp_mifangfushiren",'licaiwei','dc_zhaoyan','shiyi','sunlang','sunhuan'],
|
sp_binglin:['re_niujin',"sp_mifangfushiren",'licaiwei','dc_zhaoyan','shiyi','sunlang','sunhuan','dc_mengda'],
|
||||||
sp_danqi:['dufuren','qinyilu','bianxi','dc_huban','dc_hujinding','dc_zhaoyǎn','wangwei','liyixiejing','guānning'],
|
sp_danqi:['dufuren','qinyilu','bianxi','dc_huban','dc_hujinding','dc_zhaoyǎn','wangwei','liyixiejing','guānning'],
|
||||||
sp_fenghuo:['re_nanhualaoxian','tongyuan','zhangning','re_pangdegong'],
|
sp_fenghuo:['re_nanhualaoxian','tongyuan','zhangning','re_pangdegong'],
|
||||||
sp_baigei:['re_panfeng','xingdaorong','caoxing','re_chunyuqiong','xiahoujie','dc_caiyang','zhoushan'],
|
sp_baigei:['re_panfeng','xingdaorong','caoxing','re_chunyuqiong','xiahoujie','dc_caiyang','zhoushan'],
|
||||||
|
@ -256,13 +260,565 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
||||||
sp2_zhangtai:['guozhao','fanyufeng','ruanyu','yangwan','re_panshu'],
|
sp2_zhangtai:['guozhao','fanyufeng','ruanyu','yangwan','re_panshu'],
|
||||||
sp2_jinse:['caojinyu','re_sunyi','re_fengfangnv','caohua','laiyinger','zhangfen'],
|
sp2_jinse:['caojinyu','re_sunyi','re_fengfangnv','caohua','laiyinger','zhangfen'],
|
||||||
sp2_yinyu:['zhouyi','luyi'],
|
sp2_yinyu:['zhouyi','luyi'],
|
||||||
sp2_doukou:['re_xinxianying','huaman','xuelingyun','dc_ruiji'],
|
sp2_doukou:['re_xinxianying','huaman','xuelingyun','dc_ruiji','duanqiaoxiao'],
|
||||||
sp2_jichu:['zhaoang','dc_liuye','dc_wangyun','yanghong','huanfan','xizheng'],
|
sp2_jichu:['zhaoang','dc_liuye','dc_wangyun','yanghong','huanfan','xizheng'],
|
||||||
sp2_yuxiu:['dongguiren','dc_tengfanglan'],
|
sp2_yuxiu:['dongguiren','dc_tengfanglan','zhangjinyun'],
|
||||||
sp_decade:['caobuxing','re_maliang','xin_baosanniang','dongxie','liuhui'],
|
sp_decade:['caobuxing','re_maliang','xin_baosanniang','dongxie','liuhui'],
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
skill:{
|
skill:{
|
||||||
|
//段巧笑
|
||||||
|
dccaizhuang:{
|
||||||
|
audio:2,
|
||||||
|
enable:'phaseUse',
|
||||||
|
usable:1,
|
||||||
|
filter:function(event,player){
|
||||||
|
return player.hasCard(function(card){
|
||||||
|
return lib.filter.cardDiscardable(card,player,'dccaizhuang');
|
||||||
|
},'he');
|
||||||
|
},
|
||||||
|
complexCard:true,
|
||||||
|
selectCard:[1,4],
|
||||||
|
position:'he',
|
||||||
|
filterCard:function(card,player){
|
||||||
|
var suit=get.suit(card);
|
||||||
|
if(!lib.suit.contains(suit)) return false;
|
||||||
|
if(ui.selected.cards.length){
|
||||||
|
if(ui.selected.cards.some(i=>{
|
||||||
|
return get.suit(i)==suit;
|
||||||
|
})) return false;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
},
|
||||||
|
check:function(card){
|
||||||
|
var player=_status.event.player;
|
||||||
|
var suit=get.suit(card);
|
||||||
|
if(get.position(card)!='h'&&player.countCards('h',{suit:suit})==1) return 0.1;
|
||||||
|
if(!player.hasCard(cardx=>cardx!=card&&get.suit(cardx)==suit)) return 7.5-get.value(card);
|
||||||
|
return 6-get.value(card);
|
||||||
|
},
|
||||||
|
content:function(){
|
||||||
|
'step 0'
|
||||||
|
var suits=[];
|
||||||
|
player.countCards('h',card=>{
|
||||||
|
if(suits.length>=4) return;
|
||||||
|
var suit=get.suit(card);
|
||||||
|
if(!lib.suit.contains(suit)) return;
|
||||||
|
suits.add(suit);
|
||||||
|
});
|
||||||
|
if(suits.length>=cards.length) event.finish();
|
||||||
|
'step 1'
|
||||||
|
player.draw();
|
||||||
|
event.goto(0);
|
||||||
|
},
|
||||||
|
ai:{
|
||||||
|
order:2,
|
||||||
|
result:{
|
||||||
|
player:function(player){
|
||||||
|
var suits=lib.suit.filter(suit=>{
|
||||||
|
return player.countCards('h',{suit:suit})>1;
|
||||||
|
});
|
||||||
|
var suits2=[],cards=player.getCards('h');
|
||||||
|
for(var card of cards){
|
||||||
|
var suitx=get.suit(card);
|
||||||
|
if(suits2.contains(suitx)) continue;
|
||||||
|
if(!player.hasCard(cardx=>cardx!=card&&get.suit(cardx)==suitx)&&get.value(card)<7.5||get.value(card)<6) suits2.add(suitx);
|
||||||
|
}
|
||||||
|
if(suits2.length<=suits.length) return 0;
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
dchuayi:{
|
||||||
|
audio:2,
|
||||||
|
trigger:{player:'phaseJieshuBegin'},
|
||||||
|
frequent:true,
|
||||||
|
content:function(){
|
||||||
|
'step 0'
|
||||||
|
player.judge(()=>1).judge2=(result)=>result.bool;
|
||||||
|
'step 1'
|
||||||
|
var color=result.color;
|
||||||
|
if(color=='red'||color=='black') player.addTempSkill('dchuayi_'+color,{player:'phaseBegin'});
|
||||||
|
},
|
||||||
|
subSkill:{
|
||||||
|
red:{
|
||||||
|
trigger:{global:'phaseEnd'},
|
||||||
|
charlotte:true,
|
||||||
|
forced:true,
|
||||||
|
filter:function(event,player){
|
||||||
|
return event.player!=player;
|
||||||
|
},
|
||||||
|
content:function(){
|
||||||
|
player.draw();
|
||||||
|
},
|
||||||
|
mark:true,
|
||||||
|
intro:{
|
||||||
|
name:'华衣·红',
|
||||||
|
content:'其他角色的回合结束时,你摸一张牌'
|
||||||
|
},
|
||||||
|
},
|
||||||
|
black:{
|
||||||
|
trigger:{player:'damageEnd'},
|
||||||
|
charlotte:true,
|
||||||
|
forced:true,
|
||||||
|
content:function(){
|
||||||
|
player.draw(2);
|
||||||
|
},
|
||||||
|
mark:true,
|
||||||
|
intro:{
|
||||||
|
name:'华衣·黑',
|
||||||
|
content:'当你受到伤害后,摸两张牌'
|
||||||
|
},
|
||||||
|
ai:{
|
||||||
|
maixie:true,
|
||||||
|
maixie_hp:true,
|
||||||
|
effect:{
|
||||||
|
target:function(card,player,target){
|
||||||
|
if(get.tag(card,'damage')){
|
||||||
|
if(player.hasSkillTag('jueqing',false,target)) return [1,-2];
|
||||||
|
if(!target.hasFriend()) return;
|
||||||
|
var num=1;
|
||||||
|
if(get.attitude(player,target)>0){
|
||||||
|
if(player.needsToDiscard()){
|
||||||
|
num=0.5;
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
num=0.3;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if(target.hp>=4) return [1,num*2];
|
||||||
|
if(target.hp==3) return [1,num*1.5];
|
||||||
|
if(target.hp==2) return [1,num*0.5];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
//张瑾云
|
||||||
|
dchuizhi:{
|
||||||
|
audio:2,
|
||||||
|
trigger:{player:'phaseDrawEnd'},
|
||||||
|
direct:true,
|
||||||
|
content:function(){
|
||||||
|
'step 0'
|
||||||
|
player.chooseToDiscard(get.prompt('dchuizhi'),'你可以选择弃置任意张手牌并点击“确定”,将手牌摸至与全场手牌数最多的角色数相同。',[0,Infinity]).set('logSkill','dchuizhi').set('ai',card=>{
|
||||||
|
if(_status.event.isMax){
|
||||||
|
if(ui.selected.cards.length) return -get.value(card);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
return 6-get.value(card);
|
||||||
|
}).set('isMax',player.isMaxHandcard());
|
||||||
|
'step 1'
|
||||||
|
if(result.bool){
|
||||||
|
var num=0,targets=game.filterPlayer();
|
||||||
|
for(var current of targets){
|
||||||
|
if(current.isMaxHandcard()){
|
||||||
|
num=current.countCards('h');
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
num=Math.max(1,Math.min(5,num-player.countCards('h')));
|
||||||
|
player.draw(num);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
dcjijiao:{
|
||||||
|
audio:2,
|
||||||
|
enable:'phaseUse',
|
||||||
|
limited:true,
|
||||||
|
skillAnimation:true,
|
||||||
|
animationColor:'orange',
|
||||||
|
init:function(player){
|
||||||
|
player.addSkill('dcjijiao_machi');
|
||||||
|
},
|
||||||
|
onremove:function(player){
|
||||||
|
player.removeSkill('dcjijiao_machi');
|
||||||
|
},
|
||||||
|
onChooseToUse:function(event){
|
||||||
|
if(event.dcjijiao==undefined&&!game.online){
|
||||||
|
var bool=lib.skill.dcjijiao.getCards(event.player,true);
|
||||||
|
event.set('dcjijiao',bool);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
filter:function(event,player){
|
||||||
|
return event.dcjijiao;
|
||||||
|
},
|
||||||
|
filterTarget:true,
|
||||||
|
getCards:function(player,bool){
|
||||||
|
var cards=Array.from(ui.discardPile.childNodes);
|
||||||
|
var gains=cards.slice(0);
|
||||||
|
var history=game.getAllGlobalHistory('cardMove',function(evt){
|
||||||
|
if(evt.name=='lose') return evt.position==ui.discardPile;
|
||||||
|
return evt.name=='cardsDiscard';
|
||||||
|
});
|
||||||
|
for(var i=history.length-1;i>=0;i--){
|
||||||
|
var evt=history[i];
|
||||||
|
var cards2=evt.cards.filter(function(card){
|
||||||
|
return cards.contains(card);
|
||||||
|
});
|
||||||
|
if(cards2.length){
|
||||||
|
if(!lib.skill.dcjijiao.isUse(evt,player)){
|
||||||
|
gains.removeArray(cards2);
|
||||||
|
}
|
||||||
|
cards.removeArray(cards2);
|
||||||
|
}
|
||||||
|
if(!cards.length) break;
|
||||||
|
}
|
||||||
|
if(bool) return gains.some(card=>get.type2(card,false)=='trick');
|
||||||
|
return gains.filter(card=>get.type2(card,false)=='trick');
|
||||||
|
},
|
||||||
|
isUse:function(event,player){
|
||||||
|
if(event.name!='cardsDiscard') return (event.type=='discard'&&event.player==player);
|
||||||
|
var evtx=event.getParent();
|
||||||
|
if(evtx.name!='orderingDiscard') return false;
|
||||||
|
var evt2=(evtx.relatedEvent||evtx.getParent());
|
||||||
|
return (evt2.name=='useCard'&&evt2.player==player);
|
||||||
|
},
|
||||||
|
content:function(){
|
||||||
|
player.awakenSkill('dcjijiao');
|
||||||
|
var cards=lib.skill.dcjijiao.getCards(player);
|
||||||
|
if(cards.length){
|
||||||
|
target.gain(cards,'gain2').gaintag.add('dcjijiao');
|
||||||
|
target.addSkill('dcjijiao_nowuxie');
|
||||||
|
}
|
||||||
|
},
|
||||||
|
ai:{
|
||||||
|
order:1,
|
||||||
|
result:{
|
||||||
|
target:function(player,target){
|
||||||
|
if(game.roundNumber==1&&ui.cardPile.childNodes.length>game.countPlayer()*5&&!game.hasPlayer(current=>current.hp<=2)&&!player.hasSkill('dcjijiao_risutoa')) return 0;
|
||||||
|
return 5;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
subSkill:{
|
||||||
|
machi:{
|
||||||
|
charlotte:true,
|
||||||
|
forced:true,
|
||||||
|
popup:false,
|
||||||
|
trigger:{
|
||||||
|
global:['washCard','die'],
|
||||||
|
},
|
||||||
|
filter:function(event,player){
|
||||||
|
return player.hasSkill('dcjijiao',null,false,false);
|
||||||
|
},
|
||||||
|
content:function(){
|
||||||
|
player.addSkill('dcjijiao_risutoa');
|
||||||
|
}
|
||||||
|
},
|
||||||
|
risutoa:{
|
||||||
|
charlotte:true,
|
||||||
|
forced:true,
|
||||||
|
popup:false,
|
||||||
|
trigger:{global:'phaseAfter'},
|
||||||
|
content:function(){
|
||||||
|
if(player.awakenedSkills.contains('dcjijiao')){
|
||||||
|
player.restoreSkill('dcjijiao');
|
||||||
|
game.log(player,'重置了','#g【继椒】');
|
||||||
|
//player.removeSkill('dcjijiao_machi');
|
||||||
|
}
|
||||||
|
player.removeSkill('dcjijiao_risutoa');
|
||||||
|
}
|
||||||
|
},
|
||||||
|
nowuxie:{
|
||||||
|
trigger:{player:'useCard1'},
|
||||||
|
forced:true,
|
||||||
|
charlotte:true,
|
||||||
|
firstDo:true,
|
||||||
|
popup:false,
|
||||||
|
filter:function(event,player){
|
||||||
|
if(get.type(event.card)!='trick') return false;
|
||||||
|
return player.hasHistory('lose',function(evt){
|
||||||
|
if(evt.getParent()!=event) return false;
|
||||||
|
for(var i in evt.gaintag_map){
|
||||||
|
if(evt.gaintag_map[i].contains('dcjijiao')) return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
});
|
||||||
|
},
|
||||||
|
content:function(){
|
||||||
|
trigger.nowuxie=true;
|
||||||
|
},
|
||||||
|
onremove:function(player){
|
||||||
|
player.removeGaintag('dcjijiao');
|
||||||
|
},
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
//孟达
|
||||||
|
dclibang:{
|
||||||
|
audio:2,
|
||||||
|
enable:'phaseUse',
|
||||||
|
usable:1,
|
||||||
|
filterCard:true,
|
||||||
|
position:'he',
|
||||||
|
filter:function(event,player){
|
||||||
|
return player.hasCard(function(card){
|
||||||
|
return lib.filter.cardDiscardable(card,player,'dclibang');
|
||||||
|
},'he')&&game.countPlayer(current=>current!=player)>=2;
|
||||||
|
},
|
||||||
|
filterTarget:function(card,player,target){
|
||||||
|
return target!=player;
|
||||||
|
},
|
||||||
|
selectTarget:2,
|
||||||
|
multiline:true,
|
||||||
|
multitarget:true,
|
||||||
|
content:function(){
|
||||||
|
'step 0'
|
||||||
|
event.num=0;
|
||||||
|
event.cardsx=[];
|
||||||
|
event.targets.sortBySeat();
|
||||||
|
'step 1'
|
||||||
|
var current=targets[event.num];
|
||||||
|
if(current.countCards('he')) player.gainPlayerCard(current,'he',true,'visibleMove');
|
||||||
|
event.num++;
|
||||||
|
'step 2'
|
||||||
|
if(result.bool){
|
||||||
|
var card=result.cards[0];
|
||||||
|
event.cardsx.push(card);
|
||||||
|
}
|
||||||
|
if(event.num<targets.length) event.goto(1);
|
||||||
|
'step 3'
|
||||||
|
player.judge().set('callback',lib.skill.dclibang.contentx);
|
||||||
|
},
|
||||||
|
contentx:function(){
|
||||||
|
'step 0'
|
||||||
|
var card=event.judgeResult.card;
|
||||||
|
var color=event.judgeResult.color;
|
||||||
|
var player=event.getParent(2).player;
|
||||||
|
var cards=event.getParent(2).cardsx;
|
||||||
|
for(var cardx of cards){
|
||||||
|
if(get.color(cardx)==color){
|
||||||
|
if(get.position(card,true)=='o') player.gain(card,'gain2');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
event.goto(3);
|
||||||
|
'step 1'
|
||||||
|
var targets=event.getParent(2).targets.filter(target=>{
|
||||||
|
return player.canUse('sha',target);
|
||||||
|
});
|
||||||
|
if(!targets.length) event.finish();
|
||||||
|
else player.chooseTarget('利傍:视为对其中一名角色使用一张【杀】',true,(card,player,target)=>{
|
||||||
|
return _status.event.targets.contains(target);
|
||||||
|
}).set('targets',targets).set('ai',target=>{
|
||||||
|
return get.effect(target,{name:'sha'},player,player);
|
||||||
|
});
|
||||||
|
'step 2'
|
||||||
|
if(result.bool){
|
||||||
|
player.useCard({name:'sha',isCard:true},result.targets[0]);
|
||||||
|
}
|
||||||
|
event.finish();
|
||||||
|
'step 3'
|
||||||
|
player.chooseCardTarget({
|
||||||
|
filterCard:function(card){
|
||||||
|
return get.itemtype(card)=='card';
|
||||||
|
},
|
||||||
|
filterTarget:function(card,player,target){
|
||||||
|
return _status.event.targets.contains(target);
|
||||||
|
},
|
||||||
|
selectCard:2,
|
||||||
|
targets:event.getParent(2).targets,
|
||||||
|
position:'he',
|
||||||
|
prompt:'交给其中一名角色两张牌,或失去1点体力',
|
||||||
|
ai1:function(card){
|
||||||
|
return 1;
|
||||||
|
},
|
||||||
|
ai2:function(target){
|
||||||
|
var player=_status.event.player,card=ui.selected.cards[0];
|
||||||
|
if(val>0) return get.attitude(player,target)*2;
|
||||||
|
return (get.value(card,target)-2)*get.attitude(player,target);
|
||||||
|
},
|
||||||
|
});
|
||||||
|
'step 4'
|
||||||
|
if(result.bool){
|
||||||
|
player.give(result.cards,result.targets[0]);
|
||||||
|
}
|
||||||
|
else player.loseHp();
|
||||||
|
},
|
||||||
|
ai:{
|
||||||
|
order:8,
|
||||||
|
result:{
|
||||||
|
target:function(player,target){
|
||||||
|
if(get.attitude(player,target)>0&&ui.selected.targets.length) return 0.1;
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
dcwujie:{
|
||||||
|
audio:2,
|
||||||
|
forced:true,
|
||||||
|
trigger:{
|
||||||
|
global:['discardBegin','drawBegin'],
|
||||||
|
},
|
||||||
|
forced:true,
|
||||||
|
forceDie:true,
|
||||||
|
group:'dcwujie_inf',
|
||||||
|
logTarget:'player',
|
||||||
|
filter:function(event,player){
|
||||||
|
return event.getParent().name=='die'&&event.getParent().source==event.player&&event.player!=player;
|
||||||
|
},
|
||||||
|
content:function(){
|
||||||
|
trigger.cancel();
|
||||||
|
},
|
||||||
|
subSkill:{
|
||||||
|
inf:{
|
||||||
|
trigger:{player:'useCard1'},
|
||||||
|
forced:true,
|
||||||
|
popup:false,
|
||||||
|
firstDo:true,
|
||||||
|
filter:function(event,player){
|
||||||
|
if(get.color(event.card)=='none'&&event.addCount!==false) return true;
|
||||||
|
return false;
|
||||||
|
},
|
||||||
|
content:function(){
|
||||||
|
trigger.addCount=false;
|
||||||
|
var stat=player.getStat().card,name=trigger.card.name;
|
||||||
|
if(typeof stat[name]=='number') stat[name]--;
|
||||||
|
},
|
||||||
|
}
|
||||||
|
},
|
||||||
|
mod:{
|
||||||
|
targetInRange:function(card,player){
|
||||||
|
if(get.color(card)=='none') return true;
|
||||||
|
},
|
||||||
|
cardUsable:function(card){
|
||||||
|
if(get.color(card)=='none') return Infinity;
|
||||||
|
},
|
||||||
|
}
|
||||||
|
},
|
||||||
|
//张曼成
|
||||||
|
dclvecheng:{
|
||||||
|
audio:2,
|
||||||
|
enable:'phaseUse',
|
||||||
|
usable:1,
|
||||||
|
filterTarget:lib.filter.notMe,
|
||||||
|
content:function(){
|
||||||
|
player.addTempSkill('dclvecheng_xiongluan');
|
||||||
|
player.markAuto('dclvecheng_xiongluan',[target]);
|
||||||
|
},
|
||||||
|
ai:{
|
||||||
|
threaten:2.1,
|
||||||
|
order:9,
|
||||||
|
expose:0.2,
|
||||||
|
result:{
|
||||||
|
target:function(player,target){
|
||||||
|
if(player.getStorage('dclvecheng_xiongluan').contains(target)) return 0;
|
||||||
|
if(target.getEquip('bagua')||target.getEquip('rewrite_bagua')) return -0.6;
|
||||||
|
var hs=player.countCards('h',card=>{
|
||||||
|
return get.name(card)=='sha'&&get.effect(target,card,player,player)!=0;
|
||||||
|
});
|
||||||
|
var ts=target.hp;
|
||||||
|
if(hs>=ts&&ts>1) return -2;
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
subSkill:{
|
||||||
|
xiongluan:{
|
||||||
|
trigger:{player:'phaseEnd'},
|
||||||
|
charlotte:true,
|
||||||
|
forced:true,
|
||||||
|
popup:false,
|
||||||
|
onremove:true,
|
||||||
|
filter:function(event,player){
|
||||||
|
return player.getStorage('dclvecheng_xiongluan').some(i=>i.isIn());
|
||||||
|
},
|
||||||
|
content:function(){
|
||||||
|
'step 0'
|
||||||
|
event.targets=player.getStorage('dclvecheng_xiongluan').slice();
|
||||||
|
event.targets.sortBySeat();
|
||||||
|
'step 1'
|
||||||
|
if(!event.targets.length){
|
||||||
|
event.finish();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
var target=event.targets.shift();
|
||||||
|
event.target=target;
|
||||||
|
target.showHandcards();
|
||||||
|
var cards=target.getCards('h','sha');
|
||||||
|
if(!cards.length) event.redo();
|
||||||
|
else event.forced=false;
|
||||||
|
'step 2'
|
||||||
|
var forced=event.forced;
|
||||||
|
var prompt2=forced?'掠城:选择对'+get.translation(player)+'使用的【杀】':'掠城:是否依次对'+get.translation(player)+'使用所有的【杀】?';
|
||||||
|
target.chooseToUse(forced,function(card,player,event){
|
||||||
|
if(get.itemtype(card)!='card'||get.name(card)!='sha') return false;
|
||||||
|
return lib.filter.filterCard.apply(this,arguments);
|
||||||
|
},prompt2).set('targetRequired',true).set('complexSelect',true).set('filterTarget',function(card,player,target){
|
||||||
|
if(target!=_status.event.sourcex&&!ui.selected.targets.contains(_status.event.sourcex)) return false;
|
||||||
|
return lib.filter.targetEnabled.apply(this,arguments);
|
||||||
|
}).set('sourcex',player);
|
||||||
|
'step 3'
|
||||||
|
if(result.bool){
|
||||||
|
if(target.countCards('h','sha')){
|
||||||
|
event.forced=true;
|
||||||
|
event.goto(2);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
event.forced=false;
|
||||||
|
event.goto(1);
|
||||||
|
},
|
||||||
|
intro:{
|
||||||
|
content:'可以对$随意大喊大叫'
|
||||||
|
},
|
||||||
|
mod:{
|
||||||
|
cardUsableTarget:function(card,player,target){
|
||||||
|
if(card.name=='sha'&&player.getStorage('dclvecheng_xiongluan').contains(target)) return true;
|
||||||
|
},
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
dczhongji:{
|
||||||
|
audio:2,
|
||||||
|
trigger:{player:'useCard'},
|
||||||
|
filter:function(event,player){
|
||||||
|
var suit=get.suit(event.card);
|
||||||
|
return !lib.suit.contains(suit)||!player.countCards('h',{suit:suit});
|
||||||
|
},
|
||||||
|
check:function(event,player){
|
||||||
|
var num=Math.min(20,player.maxHp-player.countCards('h'));
|
||||||
|
if(num<=0) return false;
|
||||||
|
var numx=player.getHistory('useSkill',evt=>{
|
||||||
|
return evt.skill=='dczhongji';
|
||||||
|
}).length+1;
|
||||||
|
if(numx>num) return false;
|
||||||
|
if(_status.currentPhase!=player) return true;
|
||||||
|
if(player.hasCard(card=>{
|
||||||
|
var suit=get.suit(card);
|
||||||
|
return player.hasValueTarget(card)&&!player.hasCard(cardx=>{
|
||||||
|
return cardx!=card&&get.suit(cardx)==suit;
|
||||||
|
});
|
||||||
|
})) return false;
|
||||||
|
return true;
|
||||||
|
},
|
||||||
|
prompt2:function(event,player){
|
||||||
|
var num=Math.min(20,player.maxHp-player.countCards('h'));
|
||||||
|
var str=num>0?'摸'+get.cnNumber(num)+'张牌,然后':'';
|
||||||
|
return str+'弃置'+get.cnNumber(1+player.getHistory('useSkill',evt=>{
|
||||||
|
return evt.skill=='dczhongji';
|
||||||
|
}).length)+'张牌';
|
||||||
|
},
|
||||||
|
content:function(){
|
||||||
|
'step 0'
|
||||||
|
var num=Math.min(20,player.maxHp-player.countCards('h'));
|
||||||
|
if(num>0) player.draw(num);
|
||||||
|
'step 1'
|
||||||
|
var num=player.getHistory('useSkill',evt=>{
|
||||||
|
return evt.skill=='dczhongji';
|
||||||
|
}).length;
|
||||||
|
player.chooseToDiscard('螽集:请弃置'+get.cnNumber(num)+'张牌','he',true,num).set('ai',get.unuseful);
|
||||||
|
},
|
||||||
|
ai:{
|
||||||
|
threaten:3.2,
|
||||||
|
}
|
||||||
|
},
|
||||||
//桓范
|
//桓范
|
||||||
dcjianzheng:{
|
dcjianzheng:{
|
||||||
audio:2,
|
audio:2,
|
||||||
|
@ -3514,7 +4070,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
intro:{
|
intro:{
|
||||||
name:'内伐 - 非基本牌',
|
name:'内伐 - 锦囊牌',
|
||||||
content:'本回合内不能使用基本牌,且使用普通锦囊牌选择目标时可以多选择或者取消1个目标。'
|
content:'本回合内不能使用基本牌,且使用普通锦囊牌选择目标时可以多选择或者取消1个目标。'
|
||||||
},
|
},
|
||||||
filter:function(event,player){
|
filter:function(event,player){
|
||||||
|
@ -3524,7 +4080,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
||||||
if(info.allowMultiple==false) return false;
|
if(info.allowMultiple==false) return false;
|
||||||
if(event.targets&&!info.multitarget){
|
if(event.targets&&!info.multitarget){
|
||||||
if(game.hasPlayer(function(current){
|
if(game.hasPlayer(function(current){
|
||||||
return !event.targets.contains(current)&&lib.filter.targetEnabled2(event.card,player,current)&&lib.filter.targetInRange(event.card,player,current);
|
return !event.targets.contains(current)&&lib.filter.targetEnabled2(event.card,player,current);
|
||||||
})){
|
})){
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -3537,7 +4093,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
||||||
player.chooseTarget(get.prompt('dcneifa'),function(card,player,target){
|
player.chooseTarget(get.prompt('dcneifa'),function(card,player,target){
|
||||||
var player=_status.event.player;
|
var player=_status.event.player;
|
||||||
if(_status.event.targets.contains(target)) return true;
|
if(_status.event.targets.contains(target)) return true;
|
||||||
return lib.filter.targetEnabled2(_status.event.card,player,target)&&lib.filter.targetInRange(_status.event.card,player,target);
|
return lib.filter.targetEnabled2(_status.event.card,player,target);
|
||||||
}).set('prompt2',prompt2).set('ai',function(target){
|
}).set('prompt2',prompt2).set('ai',function(target){
|
||||||
var trigger=_status.event.getTrigger();
|
var trigger=_status.event.getTrigger();
|
||||||
var player=_status.event.player;
|
var player=_status.event.player;
|
||||||
|
@ -5137,11 +5693,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
||||||
intro:{
|
intro:{
|
||||||
content:'limited'
|
content:'limited'
|
||||||
},
|
},
|
||||||
direct:true,
|
|
||||||
content:function(){
|
content:function(){
|
||||||
'step 0'
|
'step 0'
|
||||||
player.awakenSkill('dcyongdi');
|
player.awakenSkill('dcyongdi');
|
||||||
player.logSkill('dcyongdi',target);
|
//player.logSkill('dcyongdi',target);
|
||||||
if(!game.hasPlayer(current=>current.maxHp<target.maxHp)){
|
if(!game.hasPlayer(current=>current.maxHp<target.maxHp)){
|
||||||
target.gainMaxHp();
|
target.gainMaxHp();
|
||||||
}
|
}
|
||||||
|
@ -12381,6 +12936,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
||||||
subSkill:{
|
subSkill:{
|
||||||
mark:{
|
mark:{
|
||||||
mark:'character',
|
mark:'character',
|
||||||
|
charlotte:true,
|
||||||
intro:{
|
intro:{
|
||||||
content:'已获得〖怨语〗效果',
|
content:'已获得〖怨语〗效果',
|
||||||
onunmark:true,
|
onunmark:true,
|
||||||
|
@ -12809,7 +13365,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
||||||
var getNum=function(current){
|
var getNum=function(current){
|
||||||
var history=current.actionHistory;
|
var history=current.actionHistory;
|
||||||
var num=0;
|
var num=0;
|
||||||
for(var i=history.length-1;i>=0;i--){
|
for(var i=history.length-2;i>=0;i--){
|
||||||
for(var j=0;j<history[i].useCard.length;j++){
|
for(var j=0;j<history[i].useCard.length;j++){
|
||||||
if(get.type2(history[i].useCard[j].card,false)=='trick') num++;
|
if(get.type2(history[i].useCard[j].card,false)=='trick') num++;
|
||||||
}
|
}
|
||||||
|
@ -15614,8 +16170,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
||||||
direct:true,
|
direct:true,
|
||||||
filter:function(event,player){
|
filter:function(event,player){
|
||||||
if(player==event.player||!event.player.isIn()) return false;
|
if(player==event.player||!event.player.isIn()) return false;
|
||||||
if(!player.hasHistory('useSkill',function(evt){
|
if(!player.hasAllHistory('useSkill',function(evt){
|
||||||
return evt.skil=='huguan'&&evt.targets.contains(event.player);
|
return evt.skill=='huguan'&&evt.targets.contains(event.player);
|
||||||
})) return false;
|
})) return false;
|
||||||
var suits=[];
|
var suits=[];
|
||||||
event.player.getHistory('lose',function(evt){
|
event.player.getHistory('lose',function(evt){
|
||||||
|
@ -27624,6 +28180,14 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
||||||
zerong:'笮[zé]融(?—195年),丹杨(治今安徽宣城)人,东汉末年豪强,生性残暴却笃信佛教,为佛教在中国的发展做出了很大贡献。东汉末年投奔徐州刺史陶谦,督管下邳、彭城、广陵三郡运粮。将其中大量物资占为己有累积财力,遂在徐州一带大规模崇佛,修建豪华佛寺,铸造金铜大佛,衣以锦彩,并举行浴佛节,招揽信徒万余人。其崇佛活动奠定了中国大型佛事活动的基础。后又投奔赵昱、薛礼、朱皓并将他们杀害,扬州牧刘繇因此兴兵讨伐笮融。笮融兵败后逃入深山,由于当地山民同样对他恨之入骨,便联手搜捕、杀死笮融,并将他的首级献给刘繇。',
|
zerong:'笮[zé]融(?—195年),丹杨(治今安徽宣城)人,东汉末年豪强,生性残暴却笃信佛教,为佛教在中国的发展做出了很大贡献。东汉末年投奔徐州刺史陶谦,督管下邳、彭城、广陵三郡运粮。将其中大量物资占为己有累积财力,遂在徐州一带大规模崇佛,修建豪华佛寺,铸造金铜大佛,衣以锦彩,并举行浴佛节,招揽信徒万余人。其崇佛活动奠定了中国大型佛事活动的基础。后又投奔赵昱、薛礼、朱皓并将他们杀害,扬州牧刘繇因此兴兵讨伐笮融。笮融兵败后逃入深山,由于当地山民同样对他恨之入骨,便联手搜捕、杀死笮融,并将他的首级献给刘繇。',
|
||||||
zhoushan:'周善,《三国演义》中人物,不见于正史记载。为吴侯孙权的家将,此人最有胆量,自幼穿房入户,多随孙策。权为骗其妹回吴,遣善将五百人,扮为商人,分作五船;更诈修国书,以备盘诘;船内暗藏兵器。周善领命,往荆州。正骗得孙夫人带刘禅上船,赵云前来抢走禅,周善在后梢挟住舵,只顾放船下水。正僵持时张飞赶到,周善见张飞上船,提刀来迎,被张飞手起一剑砍倒,提头掷于孙夫人前。',
|
zhoushan:'周善,《三国演义》中人物,不见于正史记载。为吴侯孙权的家将,此人最有胆量,自幼穿房入户,多随孙策。权为骗其妹回吴,遣善将五百人,扮为商人,分作五船;更诈修国书,以备盘诘;船内暗藏兵器。周善领命,往荆州。正骗得孙夫人带刘禅上船,赵云前来抢走禅,周善在后梢挟住舵,只顾放船下水。正僵持时张飞赶到,周善见张飞上船,提刀来迎,被张飞手起一剑砍倒,提头掷于孙夫人前。',
|
||||||
zhangkai:'张闿[kǎi],陶谦的手下都尉。奉命截杀曹操之父曹嵩,杀死曹嵩,夺去财宝逃往淮南投奔袁术,并担任刺杀陈王刘宠和陈国相骆俊的任务。',
|
zhangkai:'张闿[kǎi],陶谦的手下都尉。奉命截杀曹操之父曹嵩,杀死曹嵩,夺去财宝逃往淮南投奔袁术,并担任刺杀陈王刘宠和陈国相骆俊的任务。',
|
||||||
|
huanfan:'桓范(?~249年),字元则,沛郡龙亢县(今安徽省怀远县龙亢镇)人。三国时期曹魏大臣、文学家、画家。建安末年,担任丞相府掾,联合王象等共同撰写《皇览》。延康元年,担任羽林左监。魏明帝时,历任中领军、尚书,出任征虏将军、东中郎将、兖州刺史等。正始年间,授大司农,为大将军曹爽出谋划策,号称“智囊 ”。高平陵政变(249年)发生后,力劝曹爽挟带皇帝曹芳进入许昌,没有得到采纳,最终被太傅司马懿诛杀。桓范颇有文才,著有《世要论》(《桓范新书》)。善于画画,唐朝张彦远《历代名画记》目为中品。',
|
||||||
|
mengyou:'孟优,《三国演义》里的人物,南蛮王孟获之弟。与诸葛亮的南征军交战,向败战的兄长推荐朵思大王,劝兄长借助朵思之力与蜀汉军对抗。后来与兄长一起发誓归顺蜀汉。',
|
||||||
|
sunyu:'孙瑜(177年-215年),字仲异,吴郡富春(今浙江富阳)人,孙坚之弟孙静的次子,孙权的堂兄。官至奋威将军、丹杨太守。孙瑜初以恭义校尉的身份统领士兵,曾跟随周瑜、孙权等人征战,擅于安抚部下、招降纳顺。孙瑜爱读古籍,又请学者马普来为将领官员的子弟讲学,于是东吴开始设立学官。215年,孙瑜去世,时年三十九岁。',
|
||||||
|
xizheng:'郤正(?-278年),本名郤纂,字令先,司州河南郡偃师县(今河南省偃师市)人,三国蜀汉至西晋时期学者、官员。少好学,广读古籍。弱冠即善写文章,为蜀汉朝廷征为秘书吏,官至秘书令。公元263年(景耀六年),曹魏攻伐蜀汉,后主刘禅投降,郤正为之撰写投降书。后随刘禅前往洛阳,受封关内侯,又得到晋武帝司马炎赏识,任巴西郡太守,公元278年(咸宁四年)去世。郤正为人不重名利,曾作《释讥》,表明自己淡泊之心境;又醉心于文学,共作诗歌、论著、辞赋等近百篇,但多散佚于后世。',
|
||||||
|
liuchongluojun:'刘宠(?~197年),汉明帝刘庄玄孙,陈敬王刘羡曾孙,陈顷王刘崇之孙,陈孝王刘承之子,陈国第六位国君,也是东汉陈国的最后一位国君。骆俊(?-197),字孝远,东汉末年扬州会稽郡乌伤县(今浙江义乌)人。宗室陈王刘宠的国相,在任期间励精图治,深得民众爱戴。刘宠勇猛过人,善使弓弩,箭法高超。在其父刘承死后,继承陈王爵位。中平年间,黄巾军起义,郡县官兵都弃城逃走,刘宠于是征兵自守卫。当时天下饥荒,诸王侯都已不再享有租赋,反屡遭抢掠,有的甚至流离在外,死于荒野。只有陈国仍很富强,邻郡百姓纷纷前去投靠,陈国拥有部众达十余万人。初平元年(190年),各州郡起兵讨伐董卓,刘宠率军屯驻阳夏,自称辅汉大将军。建安二年(197年),袁术向陈国求取粮草,遭陈国国相骆俊拒绝,袁术大为生气,便派刺客张闿假装路过陈国,乘机杀死骆俊和刘宠。',
|
||||||
|
yuechen:'乐綝(195~257年),字号不详,阳平郡卫国县(今河南省清丰县)人。三国时期曹魏将领,右将军乐进的儿子。果毅坚毅,袭封广昌亭侯,累迁扬州刺史。甘露二年,为叛乱的征东大将军诸葛诞所杀,追赠卫尉。',
|
||||||
|
zhangjinyun:'张瑾云,张星彩的妹妹,刘禅的第二任皇后,238年正月立为皇后。景耀六年(263年),蜀汉灭亡,刘禅被俘,此后,受封为安乐公。张皇后也随之成为安乐公夫人,咸熙元年(264年),随刘禅到洛阳。',
|
||||||
|
duanqiaoxiao:'段巧笑,三国时代魏国魏文帝时的宫人,甚受到魏文帝的宠爱。传说她以原有的化妆品中的米粉和胡粉,再加入葵花子汁,发明了女性化妆用的脂粉。',
|
||||||
},
|
},
|
||||||
characterTitle:{
|
characterTitle:{
|
||||||
// wulan:'#b对决限定武将',
|
// wulan:'#b对决限定武将',
|
||||||
|
@ -27793,6 +28357,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
||||||
duanwei:['duanwei','junk_duanwei'],
|
duanwei:['duanwei','junk_duanwei'],
|
||||||
xushao:['xushao','jsrg_xushao'],
|
xushao:['xushao','jsrg_xushao'],
|
||||||
huban:['dc_huban','ol_huban'],
|
huban:['dc_huban','ol_huban'],
|
||||||
|
mengda:['dc_mengda','pe_mengda'],
|
||||||
},
|
},
|
||||||
translate:{
|
translate:{
|
||||||
lijue:"李傕",
|
lijue:"李傕",
|
||||||
|
@ -28423,7 +28988,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
||||||
huguan:'护关',
|
huguan:'护关',
|
||||||
huguan_info:'一名角色于出牌阶段内使用第一张牌时,若此牌为红色,则你可以声明一种花色。该花色的牌不计入其本回合的手牌上限。',
|
huguan_info:'一名角色于出牌阶段内使用第一张牌时,若此牌为红色,则你可以声明一种花色。该花色的牌不计入其本回合的手牌上限。',
|
||||||
yaopei:'摇佩',
|
yaopei:'摇佩',
|
||||||
yaopei_info:'其他角色的弃牌阶段结束时,若你本回合对其发动过〖护关〗,则你可以弃置一张与其于此阶段弃置的牌花色均不相同的牌。然后你选择一项:①其摸两张牌,你回复1点体力。②其回复1点体力,你摸两张牌。',
|
yaopei_info:'其他角色的弃牌阶段结束时,若你本局游戏内对其发动过〖护关〗,则你可以弃置一张与其于此阶段弃置的牌花色均不相同的牌。然后你选择一项:①其摸两张牌,你回复1点体力。②其回复1点体力,你摸两张牌。',
|
||||||
mingluan:'鸣鸾',
|
mingluan:'鸣鸾',
|
||||||
mingluan_info:'其他角色的结束阶段开始时,若有角色于本回合内回复过体力,则你可以弃置任意张牌,然后摸X张牌(X为当前角色的手牌数,且至多摸至5张)。',
|
mingluan_info:'其他角色的结束阶段开始时,若有角色于本回合内回复过体力,则你可以弃置任意张牌,然后摸X张牌(X为当前角色的手牌数,且至多摸至5张)。',
|
||||||
re_pangdegong:'庞德公',
|
re_pangdegong:'庞德公',
|
||||||
|
@ -28913,7 +29478,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
||||||
dcmoukui_info:'当你使用【杀】指定第一个目标后,你可以选择任意项:1.摸一张牌;2.弃置其中一个目标角色一张牌。若你均选择,当此【杀】被无效后或被抵消后,该角色弃置你一张牌。',
|
dcmoukui_info:'当你使用【杀】指定第一个目标后,你可以选择任意项:1.摸一张牌;2.弃置其中一个目标角色一张牌。若你均选择,当此【杀】被无效后或被抵消后,该角色弃置你一张牌。',
|
||||||
yuantanyuanxiyuanshang:'袁谭袁尚袁熙',
|
yuantanyuanxiyuanshang:'袁谭袁尚袁熙',
|
||||||
dcneifa:'内伐',
|
dcneifa:'内伐',
|
||||||
dcneifa_info:'出牌阶段开始时,你可以摸三张牌,然后弃置一张牌。若你弃置的牌类型为:基本牌,本阶段你不能使用锦囊牌,且【杀】的使用次数上限+X且可以额外指定一名目标(无距离限制);锦囊牌,本阶段你不能使用基本牌,且使用普通锦囊牌选择目标时可以增加或减少一个目标(X为你发动〖内伐〗弃牌后手牌中因〖内伐〗而不能使用的牌的数量且最多为5)。',
|
dcneifa_info:'出牌阶段开始时,你可以摸三张牌,然后弃置一张牌。若你弃置的牌类型为:基本牌,本阶段你不能使用锦囊牌,且【杀】的使用次数上限+X且可以额外指定一名目标;锦囊牌,本阶段你不能使用基本牌,且使用普通锦囊牌选择目标时可以增加或减少一个目标(X为你发动〖内伐〗弃牌后手牌中因〖内伐〗而不能使用的牌的数量且最多为5。你以此法选择的额外目标均无距离限制)。',
|
||||||
dc_tengfanglan:'滕芳兰',
|
dc_tengfanglan:'滕芳兰',
|
||||||
dcluochong:'落宠',
|
dcluochong:'落宠',
|
||||||
dcluochong_info:'一轮游戏开始时,你可以弃置任意名角色区域里的共计至多[4]张牌,然后若你以此法弃置了一名角色的至少三张牌,则你方括号内的数字-1。',
|
dcluochong_info:'一轮游戏开始时,你可以弃置任意名角色区域里的共计至多[4]张牌,然后若你以此法弃置了一名角色的至少三张牌,则你方括号内的数字-1。',
|
||||||
|
@ -29046,7 +29611,26 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
||||||
dcporui_info:'每轮限一次。其他角色的结束阶段,你可以弃置一张基本牌并选择另一名于此回合内失去过牌的其他角色,你视为对其依次使用X+1张【杀】,然后你交给其X张手牌(X为你的体力值)。',
|
dcporui_info:'每轮限一次。其他角色的结束阶段,你可以弃置一张基本牌并选择另一名于此回合内失去过牌的其他角色,你视为对其依次使用X+1张【杀】,然后你交给其X张手牌(X为你的体力值)。',
|
||||||
dcgonghu:'共护',
|
dcgonghu:'共护',
|
||||||
dcgonghu_info:'锁定技。①当你于回合外失去基本牌后,你于〖破锐〗后增加“若其没有因此受到伤害,你回复1点体力”。②当你于回合外造成或受到伤害后,你删除〖破锐〗中的“,然后你交给其X张手牌”。③当你使用红色基本牌/红色普通锦囊牌时,若你已发动过〖共护①〗和〖共护②〗,则此牌不可被响应/可额外增加一个目标。',
|
dcgonghu_info:'锁定技。①当你于回合外失去基本牌后,你于〖破锐〗后增加“若其没有因此受到伤害,你回复1点体力”。②当你于回合外造成或受到伤害后,你删除〖破锐〗中的“,然后你交给其X张手牌”。③当你使用红色基本牌/红色普通锦囊牌时,若你已发动过〖共护①〗和〖共护②〗,则此牌不可被响应/可额外增加一个目标。',
|
||||||
|
dc_zhangmancheng:'张曼成',
|
||||||
|
dclvecheng:'掠城',
|
||||||
|
dclvecheng_info:'出牌阶段限一次。你可以选择一名其他角色,你于本回合对其使用【杀】无次数限制。然后回合结束时,其展示所有手牌,若其中有【杀】,其可以选择对你依次使用其中所有的【杀】。',
|
||||||
|
dczhongji:'螽集',
|
||||||
|
dczhongji_info:'当你使用牌时,若此牌无花色或你手牌区里没有与此牌花色相同的手牌,你可以将手牌摸至体力上限并弃置X张牌(X为本回合发动〖螽集〗的次数)。',
|
||||||
|
zhangjinyun:'张瑾云',
|
||||||
|
dchuizhi:'蕙质',
|
||||||
|
dchuizhi_info:'摸牌阶段结束时,你可以选择是否弃置任意张手牌,然后将手牌摸至与全场手牌数最多的角色相同(至少摸一张,至多摸五张)。',
|
||||||
|
dcjijiao:'继椒',
|
||||||
|
dcjijiao_info:'限定技。出牌阶段,你可以令一名角色获得所有弃牌堆中你于本局游戏内使用或弃置过的普通锦囊牌,且这些牌不能被【无懈可击】响应。一名角色的回合结束后,若本回合牌堆洗过牌或有角色死亡,你重置〖继椒〗。',
|
||||||
|
duanqiaoxiao:'段巧笑',
|
||||||
|
dccaizhuang:'彩妆',
|
||||||
|
dccaizhuang_info:'出牌阶段限一次。你可以弃置任意张花色各不相同的牌。然后若你手牌中的花色数小于你以此法弃置的牌数,你摸一张牌并重复此流程。',
|
||||||
|
dchuayi:'华衣',
|
||||||
|
dchuayi_info:'结束阶段,你可以判定,然后你获得如下效果直到你下回合开始时:红色,其他角色回合结束时,你摸一张牌;黑色,当你受到伤害后,你摸两张牌。',
|
||||||
|
dc_mengda:'孟达',
|
||||||
|
dclibang:'利傍',
|
||||||
|
dclibang_info:'出牌阶段限一次。你可以弃置一张牌,正面向上获得两名其他角色的各一张牌。然后你判定,若结果与这两张牌的颜色均不同,你交给其中一名角色两张牌或失去1点体力,否则你获得判定牌并视为对其中一名角色使用一张【杀】。',
|
||||||
|
dcwujie:'无节',
|
||||||
|
dcwujie_info:'锁定技。①你使用无色牌无任何次数限制且无距离限制。②当其他角色执行杀死你的奖惩而摸牌或弃牌时,取消之。',
|
||||||
|
|
||||||
sp_whlw:"文和乱武",
|
sp_whlw:"文和乱武",
|
||||||
sp_zlzy:"逐鹿中原",
|
sp_zlzy:"逐鹿中原",
|
||||||
|
|
|
@ -705,6 +705,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
||||||
refuseInfo:['不给','拒绝'],
|
refuseInfo:['不给','拒绝'],
|
||||||
subSkill:{
|
subSkill:{
|
||||||
want:{
|
want:{
|
||||||
|
audio:'twkaizeng',
|
||||||
|
forceaudio:true,
|
||||||
enable:'phaseUse',
|
enable:'phaseUse',
|
||||||
usable:1,
|
usable:1,
|
||||||
charlotte:true,
|
charlotte:true,
|
||||||
|
@ -761,8 +763,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
||||||
return {
|
return {
|
||||||
audio:'twkaizeng',
|
audio:'twkaizeng',
|
||||||
type:result.control,
|
type:result.control,
|
||||||
direct:true,
|
log:false,
|
||||||
clearTime:true,
|
|
||||||
delay:false,
|
delay:false,
|
||||||
filterTarget:function(card,player,target){
|
filterTarget:function(card,player,target){
|
||||||
return target.hasSkill('twkaizeng');
|
return target.hasSkill('twkaizeng');
|
||||||
|
@ -799,7 +800,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
||||||
target.give(cards,player);
|
target.give(cards,player);
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
var refuseInfo=lib.skill.twkaizeng.refuseInfo;
|
var refuseInfo=lib.skill.twkaizeng.refuseInfo.slice();
|
||||||
if(get.attitude(target,player)<0) refuseInfo.push('没门');
|
if(get.attitude(target,player)<0) refuseInfo.push('没门');
|
||||||
target.chat(refuseInfo.randomGet());
|
target.chat(refuseInfo.randomGet());
|
||||||
event.finish();
|
event.finish();
|
||||||
|
@ -1778,17 +1779,24 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
||||||
enable:'phaseUse',
|
enable:'phaseUse',
|
||||||
usable:1,
|
usable:1,
|
||||||
forceaudio:true,
|
forceaudio:true,
|
||||||
filter:function(event,player){
|
onChooseToUse:function(event){
|
||||||
var num=1;
|
if(!game.online){
|
||||||
game.countPlayer2(current=>{
|
var num=1;
|
||||||
|
game.countPlayer2(current=>{
|
||||||
var history=current.actionHistory;
|
var history=current.actionHistory;
|
||||||
for(var i=history.length-1;i>=0;i--){
|
for(var i=history.length-1;i>=0;i--){
|
||||||
for(var evt of history[i].useSkill){
|
for(var evt of history[i].useSkill){
|
||||||
if(evt.skill=='twluannian_global') num++;
|
if(evt.skill=='twluannian_global') num++;
|
||||||
|
}
|
||||||
|
if(history[i].isRound) break;
|
||||||
}
|
}
|
||||||
}
|
});
|
||||||
});
|
event.set('twluannian_num',num);
|
||||||
return player.group=='qun'&&player.countCards('he')>=num&&game.hasPlayer(function(current){
|
}
|
||||||
|
},
|
||||||
|
filter:function(event,player){
|
||||||
|
if(!event.twluannian_num) return false;
|
||||||
|
return player.group=='qun'&&player.countCards('he')>=event.twluannian_num&&game.hasPlayer(function(current){
|
||||||
var target=current.storage.twxiongzheng_target;
|
var target=current.storage.twxiongzheng_target;
|
||||||
return target&&target.isIn()&¤t!=player&¤t.hasZhuSkill('twluannian',player)
|
return target&&target.isIn()&¤t!=player&¤t.hasZhuSkill('twluannian',player)
|
||||||
})
|
})
|
||||||
|
@ -1797,31 +1805,14 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
||||||
position:'he',
|
position:'he',
|
||||||
prompt:function(){
|
prompt:function(){
|
||||||
var player=_status.event.player;
|
var player=_status.event.player;
|
||||||
var num=1;
|
var num=_status.event.twluannian_num
|
||||||
game.countPlayer2(current=>{
|
|
||||||
var history=current.actionHistory;
|
|
||||||
for(var i=history.length-1;i>=0;i--){
|
|
||||||
for(var evt of history[i].useSkill){
|
|
||||||
if(evt.skill=='twluannian_global') num++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
var list=game.filterPlayer(function(current){
|
var list=game.filterPlayer(function(current){
|
||||||
return current.hasZhuSkill('twluannian',player);
|
return current.hasZhuSkill('twluannian',player);
|
||||||
}).map(i=>i.storage.twxiongzheng_target).sortBySeat();
|
}).map(i=>i.storage.twxiongzheng_target).sortBySeat();
|
||||||
return '弃置'+get.cnNumber(num)+'张牌,对'+get.translation(list)+(list.length>1?'中的一人':'')+'造成1点伤害';
|
return '弃置'+get.cnNumber(num)+'张牌,对'+get.translation(list)+(list.length>1?'中的一人':'')+'造成1点伤害';
|
||||||
},
|
},
|
||||||
selectCard:function(){
|
selectCard:function(){
|
||||||
var num=1;
|
return _status.event.twluannian_num;
|
||||||
game.countPlayer2(current=>{
|
|
||||||
var history=current.actionHistory;
|
|
||||||
for(var i=history.length-1;i>=0;i--){
|
|
||||||
for(var evt of history[i].useSkill){
|
|
||||||
if(evt.skill=='twluannian_global') num++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
return num;
|
|
||||||
},
|
},
|
||||||
complexSelect:true,
|
complexSelect:true,
|
||||||
complexCard:true,
|
complexCard:true,
|
||||||
|
@ -10262,12 +10253,11 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
||||||
usable:1,
|
usable:1,
|
||||||
mahouSkill:true,
|
mahouSkill:true,
|
||||||
filter:function(event,player){
|
filter:function(event,player){
|
||||||
return !player.hasSkill('twzhouzu_mahou')
|
return !player.hasSkill('twzhouzu_mahou');
|
||||||
},
|
},
|
||||||
filterTarget:function(card,player,target){
|
filterTarget:function(card,player,target){
|
||||||
return player!=target;
|
return player!=target;
|
||||||
},
|
},
|
||||||
direct:true,
|
|
||||||
line:false,
|
line:false,
|
||||||
delay:false,
|
delay:false,
|
||||||
content:function(){
|
content:function(){
|
||||||
|
|
|
@ -1388,6 +1388,23 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
||||||
target.addSkill('xinzhaofu_effect');
|
target.addSkill('xinzhaofu_effect');
|
||||||
target.markAuto('xinzhaofu_effect',[player]);
|
target.markAuto('xinzhaofu_effect',[player]);
|
||||||
},
|
},
|
||||||
|
ai:{
|
||||||
|
order:9,
|
||||||
|
result:{
|
||||||
|
target:function(player,target){
|
||||||
|
var targets=game.filterPlayer(function(current){
|
||||||
|
return current.group=='wu'&&get.attitude(player,current)>0;
|
||||||
|
});
|
||||||
|
if(targets.length){
|
||||||
|
for(var targetx of targets){
|
||||||
|
if(!targetx.inRange(target)) return -1;
|
||||||
|
}
|
||||||
|
return -0.5;
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
subSkill:{
|
subSkill:{
|
||||||
effect:{
|
effect:{
|
||||||
charlotte:true,
|
charlotte:true,
|
||||||
|
@ -4340,7 +4357,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
||||||
return current.hasSkill('wengua');
|
return current.hasSkill('wengua');
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
direct:true,
|
log:false,
|
||||||
delay:false,
|
delay:false,
|
||||||
filterCard:true,
|
filterCard:true,
|
||||||
discard:false,
|
discard:false,
|
||||||
|
@ -10914,10 +10931,16 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
||||||
oldqiuyuan:{
|
oldqiuyuan:{
|
||||||
audio:'qiuyuan',
|
audio:'qiuyuan',
|
||||||
inherit:'qiuyuan',
|
inherit:'qiuyuan',
|
||||||
|
filter:function(event,player){
|
||||||
|
return event.card.name=='sha'&&game.hasPlayer(function(current){
|
||||||
|
return current!=player&&!event.targets.contains(current)&¤t.countCards('h')>0&&lib.filter.targetEnabled(event.card,event.player,current);
|
||||||
|
});
|
||||||
|
},
|
||||||
content:function(){
|
content:function(){
|
||||||
"step 0"
|
"step 0"
|
||||||
player.chooseTarget(get.prompt2('oldqiuyuan'),function(card,player,target){
|
player.chooseTarget(get.prompt2('oldqiuyuan'),function(card,player,target){
|
||||||
return target!=player&&!_status.event.targets.contains(target)&&_status.event.playerx.canUse('sha',target,false)&&target.countCards('h');
|
var evt=_status.event.getTrigger();
|
||||||
|
return target!=player&&!evt.targets.contains(target)&&lib.filter.targetEnabled(evt.card,evt.player,target)&&target.countCards('h')>0;
|
||||||
}).set('ai',function(target){
|
}).set('ai',function(target){
|
||||||
var trigger=_status.event.getTrigger();
|
var trigger=_status.event.getTrigger();
|
||||||
var player=_status.event.player;
|
var player=_status.event.player;
|
||||||
|
@ -10954,12 +10977,15 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
||||||
trigger:{target:'useCardToTarget'},
|
trigger:{target:'useCardToTarget'},
|
||||||
direct:true,
|
direct:true,
|
||||||
filter:function(event,player){
|
filter:function(event,player){
|
||||||
return event.card.name=='sha';
|
return event.card.name=='sha'&&game.hasPlayer(function(current){
|
||||||
|
return current!=player&&!event.targets.contains(current)&&lib.filter.targetEnabled(event.card,event.player,current);
|
||||||
|
});
|
||||||
},
|
},
|
||||||
content:function(){
|
content:function(){
|
||||||
"step 0"
|
"step 0"
|
||||||
player.chooseTarget(get.prompt2('qiuyuan'),function(card,player,target){
|
player.chooseTarget(get.prompt2('qiuyuan'),function(card,player,target){
|
||||||
return target!=player&&!_status.event.targets.contains(target)&&_status.event.playerx.canUse('sha',target,false);
|
var evt=_status.event.getTrigger();
|
||||||
|
return target!=player&&!evt.targets.contains(target)&&lib.filter.targetEnabled(evt.card,evt.player,target);
|
||||||
}).set('ai',function(target){
|
}).set('ai',function(target){
|
||||||
var trigger=_status.event.getTrigger();
|
var trigger=_status.event.getTrigger();
|
||||||
var player=_status.event.player;
|
var player=_status.event.player;
|
||||||
|
@ -13047,7 +13073,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
||||||
return false;
|
return false;
|
||||||
},
|
},
|
||||||
forceaudio:true,
|
forceaudio:true,
|
||||||
direct:true,
|
|
||||||
prompt:'弃置一名有【逆】的角色的两张【逆】,然后视为对包含其在内的角色使用【杀】。',
|
prompt:'弃置一名有【逆】的角色的两张【逆】,然后视为对包含其在内的角色使用【杀】。',
|
||||||
delay:false,
|
delay:false,
|
||||||
log:false,
|
log:false,
|
||||||
|
|
|
@ -819,29 +819,41 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
||||||
audio:'qimei',
|
audio:'qimei',
|
||||||
charlotte:true,
|
charlotte:true,
|
||||||
forced:true,
|
forced:true,
|
||||||
|
popup:false,
|
||||||
trigger:{global:['equipAfter','addJudgeAfter','gainAfter','loseAsyncAfter','loseAfter','gainAfter','addToExpansionAfter']},
|
trigger:{global:['equipAfter','addJudgeAfter','gainAfter','loseAsyncAfter','loseAfter','gainAfter','addToExpansionAfter']},
|
||||||
logTarget:function(event,player){
|
|
||||||
return player.storage.qimei_draw;
|
|
||||||
},
|
|
||||||
usable:1,
|
usable:1,
|
||||||
filter:function(event,player){
|
filter:function(event,player){
|
||||||
var target=player.storage.qimei_draw;
|
var target=player.storage.qimei_draw;
|
||||||
if(!target||!target.isIn()) return false;
|
if(!target||!target.isIn()) return false;
|
||||||
if(event.name!='gain'||(event.player!=player&&event.player!=target)){
|
if(player.countCards('h')!=target.countCards('h')) return false;
|
||||||
var evt1=event.getl(player);
|
var hasChange=function(event,player){
|
||||||
if(!evt1||!evt1.hs||!evt1.hs.length){
|
var gain=0,lose=0;
|
||||||
var evt2=event.getl(target);
|
if(event.getg) gain=event.getg(player).length;
|
||||||
if(!evt2||!evt2.hs||!evt2.hs.length) return false;
|
if(event.getl) lose=event.getl(player).hs.length;
|
||||||
}
|
return gain!=lose;
|
||||||
}
|
};
|
||||||
return player.countCards('h')==target.countCards('h');
|
return hasChange(event,player)||hasChange(event,target);
|
||||||
},
|
},
|
||||||
content:function(){
|
content:function(){
|
||||||
|
'step 0'
|
||||||
if(trigger.delay===false) game.delayx();
|
if(trigger.delay===false) game.delayx();
|
||||||
var evt1=trigger.getl(player);
|
'step 1'
|
||||||
if((trigger.name=='gain'&&player==trigger.player)||(evt1&&evt1.hs&&evt1.hs.length)) player.storage.qimei_draw.draw();
|
var target=player.storage.qimei_draw;
|
||||||
var evt2=trigger.getl(player.storage.qimei_draw);
|
player.logSkill('qimei_draw',target);
|
||||||
if((trigger.name=='gain'&&player==player.storage.qimei_draw)||evt2&&evt2.hs&&evt2.hs.length) player.draw();
|
var drawer=[];
|
||||||
|
var hasChange=function(event,player){
|
||||||
|
var gain=0,lose=0;
|
||||||
|
if(event.getg) gain=event.getg(player).length;
|
||||||
|
if(event.getl) lose=event.getl(player).hs.length;
|
||||||
|
return gain!=lose;
|
||||||
|
};
|
||||||
|
if(hasChange(trigger,player)) drawer.push(target);
|
||||||
|
if(hasChange(trigger,target)) drawer.push(player);
|
||||||
|
if(drawer.length==1) drawer[0].draw();
|
||||||
|
else{
|
||||||
|
game.asyncDraw(drawer.sortBySeat());
|
||||||
|
game.delayex();
|
||||||
|
}
|
||||||
},
|
},
|
||||||
group:'qimei_hp',
|
group:'qimei_hp',
|
||||||
onremove:true,
|
onremove:true,
|
||||||
|
@ -2633,8 +2645,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
||||||
lose:false,
|
lose:false,
|
||||||
delay:false,
|
delay:false,
|
||||||
line:true,
|
line:true,
|
||||||
direct:true,
|
log:false,
|
||||||
clearTime:true,
|
|
||||||
prepare:function(cards,player,targets){
|
prepare:function(cards,player,targets){
|
||||||
targets[0].logSkill('ruilve');
|
targets[0].logSkill('ruilve');
|
||||||
},
|
},
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
window.noname_asset_list=[
|
window.noname_asset_list=[
|
||||||
'v1.9.122',
|
'v1.9.122.2',
|
||||||
'audio/background/aozhan_chaoming.mp3',
|
'audio/background/aozhan_chaoming.mp3',
|
||||||
'audio/background/aozhan_online.mp3',
|
'audio/background/aozhan_online.mp3',
|
||||||
'audio/background/aozhan_rewrite.mp3',
|
'audio/background/aozhan_rewrite.mp3',
|
||||||
|
@ -5939,6 +5939,7 @@ window.noname_asset_list=[
|
||||||
'image/character/dc_liuyu.jpg',
|
'image/character/dc_liuyu.jpg',
|
||||||
'image/character/dc_luotong.jpg',
|
'image/character/dc_luotong.jpg',
|
||||||
'image/character/dc_lvkuanglvxiang.jpg',
|
'image/character/dc_lvkuanglvxiang.jpg',
|
||||||
|
'image/character/dc_mengda.jpg',
|
||||||
'image/character/dc_ruiji.jpg',
|
'image/character/dc_ruiji.jpg',
|
||||||
'image/character/dc_sp_jiaxu.jpg',
|
'image/character/dc_sp_jiaxu.jpg',
|
||||||
'image/character/dc_sunru.jpg',
|
'image/character/dc_sunru.jpg',
|
||||||
|
@ -5989,6 +5990,7 @@ window.noname_asset_list=[
|
||||||
'image/character/dongyun.jpg',
|
'image/character/dongyun.jpg',
|
||||||
'image/character/dongzhao.jpg',
|
'image/character/dongzhao.jpg',
|
||||||
'image/character/dongzhuo.jpg',
|
'image/character/dongzhuo.jpg',
|
||||||
|
'image/character/duanqiaoxiao.jpg',
|
||||||
'image/character/duanwei.jpg',
|
'image/character/duanwei.jpg',
|
||||||
'image/character/dufuren.jpg',
|
'image/character/dufuren.jpg',
|
||||||
'image/character/duji.jpg',
|
'image/character/duji.jpg',
|
||||||
|
@ -6364,6 +6366,21 @@ window.noname_asset_list=[
|
||||||
'image/character/jsp_huangyueying.jpg',
|
'image/character/jsp_huangyueying.jpg',
|
||||||
'image/character/jsp_liubei.jpg',
|
'image/character/jsp_liubei.jpg',
|
||||||
'image/character/jsp_zhaoyun.jpg',
|
'image/character/jsp_zhaoyun.jpg',
|
||||||
|
'image/character/jsrg_caocao.jpg',
|
||||||
|
'image/character/jsrg_dongbai.jpg',
|
||||||
|
'image/character/jsrg_hejin.jpg',
|
||||||
|
'image/character/jsrg_huangfusong.jpg',
|
||||||
|
'image/character/jsrg_kongrong.jpg',
|
||||||
|
'image/character/jsrg_liubei.jpg',
|
||||||
|
'image/character/jsrg_liuhong.jpg',
|
||||||
|
'image/character/jsrg_liuyan.jpg',
|
||||||
|
'image/character/jsrg_nanhualaoxian.jpg',
|
||||||
|
'image/character/jsrg_qiaoxuan.jpg',
|
||||||
|
'image/character/jsrg_sunjian.jpg',
|
||||||
|
'image/character/jsrg_wangyun.jpg',
|
||||||
|
'image/character/jsrg_xushao.jpg',
|
||||||
|
'image/character/jsrg_yangbiao.jpg',
|
||||||
|
'image/character/jsrg_zhujun.jpg',
|
||||||
'image/character/jun_caocao.jpg',
|
'image/character/jun_caocao.jpg',
|
||||||
'image/character/jun_liubei.jpg',
|
'image/character/jun_liubei.jpg',
|
||||||
'image/character/jun_sunquan.jpg',
|
'image/character/jun_sunquan.jpg',
|
||||||
|
@ -6395,6 +6412,7 @@ window.noname_asset_list=[
|
||||||
'image/character/key_hiroto.jpg',
|
'image/character/key_hiroto.jpg',
|
||||||
'image/character/key_hisako.jpg',
|
'image/character/key_hisako.jpg',
|
||||||
'image/character/key_inari.jpg',
|
'image/character/key_inari.jpg',
|
||||||
|
'image/character/key_iriya.jpg',
|
||||||
'image/character/key_iwasawa.jpg',
|
'image/character/key_iwasawa.jpg',
|
||||||
'image/character/key_jojiro.jpg',
|
'image/character/key_jojiro.jpg',
|
||||||
'image/character/key_kagari.jpg',
|
'image/character/key_kagari.jpg',
|
||||||
|
@ -6506,6 +6524,7 @@ window.noname_asset_list=[
|
||||||
'image/character/lukai.jpg',
|
'image/character/lukai.jpg',
|
||||||
'image/character/lukang.jpg',
|
'image/character/lukang.jpg',
|
||||||
'image/character/luotong.jpg',
|
'image/character/luotong.jpg',
|
||||||
|
'image/character/luoxian.jpg',
|
||||||
'image/character/lusu.jpg',
|
'image/character/lusu.jpg',
|
||||||
'image/character/luxun.jpg',
|
'image/character/luxun.jpg',
|
||||||
'image/character/luyi.jpg',
|
'image/character/luyi.jpg',
|
||||||
|
@ -6638,6 +6657,7 @@ window.noname_asset_list=[
|
||||||
'image/character/ol_huangzhong.jpg',
|
'image/character/ol_huangzhong.jpg',
|
||||||
'image/character/ol_huaxin.jpg',
|
'image/character/ol_huaxin.jpg',
|
||||||
'image/character/ol_huaxiong.jpg',
|
'image/character/ol_huaxiong.jpg',
|
||||||
|
'image/character/ol_huban.jpg',
|
||||||
'image/character/ol_jiangwei.jpg',
|
'image/character/ol_jiangwei.jpg',
|
||||||
'image/character/ol_liaohua.jpg',
|
'image/character/ol_liaohua.jpg',
|
||||||
'image/character/ol_lisu.jpg',
|
'image/character/ol_lisu.jpg',
|
||||||
|
@ -6984,6 +7004,7 @@ window.noname_asset_list=[
|
||||||
'image/character/re_zhuhuan.jpg',
|
'image/character/re_zhuhuan.jpg',
|
||||||
'image/character/re_zhuran.jpg',
|
'image/character/re_zhuran.jpg',
|
||||||
'image/character/re_zhurong.jpg',
|
'image/character/re_zhurong.jpg',
|
||||||
|
'image/character/re_zhuzhi.jpg',
|
||||||
'image/character/re_zoushi.jpg',
|
'image/character/re_zoushi.jpg',
|
||||||
'image/character/re_zuoci.jpg',
|
'image/character/re_zuoci.jpg',
|
||||||
'image/character/ruanhui.jpg',
|
'image/character/ruanhui.jpg',
|
||||||
|
@ -6991,6 +7012,8 @@ window.noname_asset_list=[
|
||||||
'image/character/ruiji.jpg',
|
'image/character/ruiji.jpg',
|
||||||
'image/character/sb_caocao.jpg',
|
'image/character/sb_caocao.jpg',
|
||||||
'image/character/sb_caoren.jpg',
|
'image/character/sb_caoren.jpg',
|
||||||
|
'image/character/sb_chengong.jpg',
|
||||||
|
'image/character/sb_diaochan.jpg',
|
||||||
'image/character/sb_fazheng.jpg',
|
'image/character/sb_fazheng.jpg',
|
||||||
'image/character/sb_ganning.jpg',
|
'image/character/sb_ganning.jpg',
|
||||||
'image/character/sb_huanggai.jpg',
|
'image/character/sb_huanggai.jpg',
|
||||||
|
@ -7000,10 +7023,12 @@ window.noname_asset_list=[
|
||||||
'image/character/sb_liubei.jpg',
|
'image/character/sb_liubei.jpg',
|
||||||
'image/character/sb_lvmeng.jpg',
|
'image/character/sb_lvmeng.jpg',
|
||||||
'image/character/sb_machao.jpg',
|
'image/character/sb_machao.jpg',
|
||||||
|
'image/character/sb_pangtong.jpg',
|
||||||
'image/character/sb_sunquan.jpg',
|
'image/character/sb_sunquan.jpg',
|
||||||
'image/character/sb_sunshangxiang.jpg',
|
'image/character/sb_sunshangxiang.jpg',
|
||||||
'image/character/sb_xiahoushi.jpg',
|
'image/character/sb_xiahoushi.jpg',
|
||||||
'image/character/sb_xuhuang.jpg',
|
'image/character/sb_xuhuang.jpg',
|
||||||
|
'image/character/sb_yuanshao.jpg',
|
||||||
'image/character/sb_yujin.jpg',
|
'image/character/sb_yujin.jpg',
|
||||||
'image/character/sb_zhangfei.jpg',
|
'image/character/sb_zhangfei.jpg',
|
||||||
'image/character/sb_zhangjiao.jpg',
|
'image/character/sb_zhangjiao.jpg',
|
||||||
|
@ -7119,11 +7144,13 @@ window.noname_asset_list=[
|
||||||
'image/character/sp_zhugeliang.jpg',
|
'image/character/sp_zhugeliang.jpg',
|
||||||
'image/character/sp_zhujun.jpg',
|
'image/character/sp_zhujun.jpg',
|
||||||
'image/character/sp_zongyu.jpg',
|
'image/character/sp_zongyu.jpg',
|
||||||
|
'image/character/std_panfeng.jpg',
|
||||||
'image/character/sunce.jpg',
|
'image/character/sunce.jpg',
|
||||||
'image/character/sunchen.jpg',
|
'image/character/sunchen.jpg',
|
||||||
'image/character/sundeng.jpg',
|
'image/character/sundeng.jpg',
|
||||||
'image/character/sunhanhua.jpg',
|
'image/character/sunhanhua.jpg',
|
||||||
'image/character/sunhao.jpg',
|
'image/character/sunhao.jpg',
|
||||||
|
'image/character/sunhong.jpg',
|
||||||
'image/character/sunjian.jpg',
|
'image/character/sunjian.jpg',
|
||||||
'image/character/sunlang.jpg',
|
'image/character/sunlang.jpg',
|
||||||
'image/character/sunliang.jpg',
|
'image/character/sunliang.jpg',
|
||||||
|
@ -7439,6 +7466,7 @@ window.noname_asset_list=[
|
||||||
'image/character/yanfuren.jpg',
|
'image/character/yanfuren.jpg',
|
||||||
'image/character/yangbiao.jpg',
|
'image/character/yangbiao.jpg',
|
||||||
'image/character/yangfu.jpg',
|
'image/character/yangfu.jpg',
|
||||||
|
'image/character/yanghong.jpg',
|
||||||
'image/character/yanghuiyu.jpg',
|
'image/character/yanghuiyu.jpg',
|
||||||
'image/character/yangwan.jpg',
|
'image/character/yangwan.jpg',
|
||||||
'image/character/yangxiu.jpg',
|
'image/character/yangxiu.jpg',
|
||||||
|
@ -7543,6 +7571,7 @@ window.noname_asset_list=[
|
||||||
'image/character/zhanghuyuechen.jpg',
|
'image/character/zhanghuyuechen.jpg',
|
||||||
'image/character/zhangji.jpg',
|
'image/character/zhangji.jpg',
|
||||||
'image/character/zhangjiao.jpg',
|
'image/character/zhangjiao.jpg',
|
||||||
|
'image/character/zhangjinyun.jpg',
|
||||||
'image/character/zhangkai.jpg',
|
'image/character/zhangkai.jpg',
|
||||||
'image/character/zhangliang.jpg',
|
'image/character/zhangliang.jpg',
|
||||||
'image/character/zhangliao.jpg',
|
'image/character/zhangliao.jpg',
|
||||||
|
@ -7605,31 +7634,6 @@ window.noname_asset_list=[
|
||||||
'image/character/zumao.jpg',
|
'image/character/zumao.jpg',
|
||||||
'image/character/zuoci.jpg',
|
'image/character/zuoci.jpg',
|
||||||
'image/character/zuofen.jpg',
|
'image/character/zuofen.jpg',
|
||||||
'image/character/jsrg_caocao.jpg',
|
|
||||||
'image/character/jsrg_dongbai.jpg',
|
|
||||||
'image/character/jsrg_hejin.jpg',
|
|
||||||
'image/character/jsrg_huangfusong.jpg',
|
|
||||||
'image/character/jsrg_kongrong.jpg',
|
|
||||||
'image/character/jsrg_liubei.jpg',
|
|
||||||
'image/character/jsrg_liuhong.jpg',
|
|
||||||
'image/character/jsrg_liuyan.jpg',
|
|
||||||
'image/character/jsrg_nanhualaoxian.jpg',
|
|
||||||
'image/character/jsrg_qiaoxuan.jpg',
|
|
||||||
'image/character/jsrg_sunjian.jpg',
|
|
||||||
'image/character/jsrg_wangyun.jpg',
|
|
||||||
'image/character/jsrg_xushao.jpg',
|
|
||||||
'image/character/jsrg_yangbiao.jpg',
|
|
||||||
'image/character/jsrg_zhujun.jpg',
|
|
||||||
'image/character/luoxian.jpg',
|
|
||||||
'image/character/ol_huban.jpg',
|
|
||||||
'image/character/re_zhuzhi.jpg',
|
|
||||||
'image/character/sb_chengong.jpg',
|
|
||||||
'image/character/sb_diaochan.jpg',
|
|
||||||
'image/character/sb_pangtong.jpg',
|
|
||||||
'image/character/sb_yuanshao.jpg',
|
|
||||||
'image/character/std_panfeng.jpg',
|
|
||||||
'image/character/sunhong.jpg',
|
|
||||||
'image/character/yanghong.jpg',
|
|
||||||
|
|
||||||
'image/emotion/shibing_emotion/1.gif',
|
'image/emotion/shibing_emotion/1.gif',
|
||||||
'image/emotion/shibing_emotion/2.gif',
|
'image/emotion/shibing_emotion/2.gif',
|
||||||
|
|
136
game/game.js
136
game/game.js
|
@ -12058,7 +12058,9 @@
|
||||||
if(!fullskills.contains(event.skill)){
|
if(!fullskills.contains(event.skill)){
|
||||||
var info=get.info(event.skill);
|
var info=get.info(event.skill);
|
||||||
var hidden=player.hiddenSkills.slice(0);
|
var hidden=player.hiddenSkills.slice(0);
|
||||||
|
var invisible=player.invisibleSkills.slice(0);
|
||||||
game.expandSkills(hidden);
|
game.expandSkills(hidden);
|
||||||
|
game.expandSkills(invisible);
|
||||||
if(hidden.contains(event.skill)){
|
if(hidden.contains(event.skill)){
|
||||||
if(!info.silent&&player.hasSkillTag('nomingzhi',false,null,true)){
|
if(!info.silent&&player.hasSkillTag('nomingzhi',false,null,true)){
|
||||||
event.finish();
|
event.finish();
|
||||||
|
@ -12070,6 +12072,9 @@
|
||||||
event.skillHidden=true;
|
event.skillHidden=true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else if(invisible.contains(event.skill)){
|
||||||
|
event.trigger('triggerInvisible');
|
||||||
|
}
|
||||||
else{
|
else{
|
||||||
var keep=false;
|
var keep=false;
|
||||||
for(var i in player.additionalSkills){
|
for(var i in player.additionalSkills){
|
||||||
|
@ -12677,7 +12682,7 @@
|
||||||
if(game.modeSwapPlayer&&!_status.auto&&player.isUnderControl()&&!lib.filter.wuxieSwap(event)){
|
if(game.modeSwapPlayer&&!_status.auto&&player.isUnderControl()&&!lib.filter.wuxieSwap(event)){
|
||||||
game.modeSwapPlayer(player);
|
game.modeSwapPlayer(player);
|
||||||
}
|
}
|
||||||
var skills=player.getSkills(true);
|
var skills=player.getSkills('invisible').concat(lib.skill.global);
|
||||||
game.expandSkills(skills);
|
game.expandSkills(skills);
|
||||||
for(var i=0;i<skills.length;i++){
|
for(var i=0;i<skills.length;i++){
|
||||||
var info=lib.skill[skills[i]];
|
var info=lib.skill[skills[i]];
|
||||||
|
@ -12932,7 +12937,7 @@
|
||||||
delete event.dialog;
|
delete event.dialog;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
var skills=player.getSkills(true);
|
var skills=player.getSkills('invisible').concat(lib.skill.global);
|
||||||
game.expandSkills(skills);
|
game.expandSkills(skills);
|
||||||
for(var i=0;i<skills.length;i++){
|
for(var i=0;i<skills.length;i++){
|
||||||
var info=lib.skill[skills[i]];
|
var info=lib.skill[skills[i]];
|
||||||
|
@ -15799,7 +15804,7 @@
|
||||||
player.markSkill(roundname);
|
player.markSkill(roundname);
|
||||||
}
|
}
|
||||||
var name=event.skill;
|
var name=event.skill;
|
||||||
var players=player.getSkills(null,false,false);
|
var players=player.getSkills(false,false,false);
|
||||||
var equips=player.getSkills('e');
|
var equips=player.getSkills('e');
|
||||||
var global=lib.skill.global.slice(0);
|
var global=lib.skill.global.slice(0);
|
||||||
var logInfo={
|
var logInfo={
|
||||||
|
@ -15808,14 +15813,14 @@
|
||||||
event:_status.event,
|
event:_status.event,
|
||||||
};
|
};
|
||||||
if(info.sourceSkill){
|
if(info.sourceSkill){
|
||||||
logInfo.sourceSkill=name;
|
logInfo.sourceSkill=info.sourceSkill;
|
||||||
if(global.contains(name)){
|
if(global.contains(info.sourceSkill)){
|
||||||
logInfo.type='global';
|
logInfo.type='global';
|
||||||
}
|
}
|
||||||
else if(players.contains(name)){
|
else if(players.contains(info.sourceSkill)){
|
||||||
logInfo.type='player';
|
logInfo.type='player';
|
||||||
}
|
}
|
||||||
else if(equips.contains(name)){
|
else if(equips.contains(info.sourceSkill)){
|
||||||
logInfo.type='equip';
|
logInfo.type='equip';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -17989,7 +17994,7 @@
|
||||||
hasUsableCard:function(name){
|
hasUsableCard:function(name){
|
||||||
var player=this;
|
var player=this;
|
||||||
if(player.countCards('hs',name)) return true;
|
if(player.countCards('hs',name)) return true;
|
||||||
var skills=player.getSkills(true).concat(lib.skill.global);
|
var skills=player.getSkills('invisible').concat(lib.skill.global);
|
||||||
game.expandSkills(skills);
|
game.expandSkills(skills);
|
||||||
for(var i=0;i<skills.length;i++){
|
for(var i=0;i<skills.length;i++){
|
||||||
var ifo=get.info(skills[i]);
|
var ifo=get.info(skills[i]);
|
||||||
|
@ -19540,6 +19545,7 @@
|
||||||
skills.add(i);
|
skills.add(i);
|
||||||
}
|
}
|
||||||
if(arg2) skills.addArray(this.hiddenSkills);
|
if(arg2) skills.addArray(this.hiddenSkills);
|
||||||
|
if(arg2===false||arg2=='invisible') skills.addArray(this.invisibleSkills);
|
||||||
if(arg3!==false) skills.addArray(es);
|
if(arg3!==false) skills.addArray(es);
|
||||||
for(var i in this.forbiddenSkills){
|
for(var i in this.forbiddenSkills){
|
||||||
skills.remove(i);
|
skills.remove(i);
|
||||||
|
@ -22294,7 +22300,7 @@
|
||||||
}
|
}
|
||||||
if(info){
|
if(info){
|
||||||
var player=this;
|
var player=this;
|
||||||
var players=player.getSkills(null,false,false);
|
var players=player.getSkills(false,false,false);
|
||||||
var equips=player.getSkills('e');
|
var equips=player.getSkills('e');
|
||||||
var global=lib.skill.global.slice(0);
|
var global=lib.skill.global.slice(0);
|
||||||
var logInfo={
|
var logInfo={
|
||||||
|
@ -22303,14 +22309,14 @@
|
||||||
event:_status.event,
|
event:_status.event,
|
||||||
};
|
};
|
||||||
if(info.sourceSkill){
|
if(info.sourceSkill){
|
||||||
logInfo.sourceSkill=name;
|
logInfo.sourceSkill=info.sourceSkill;
|
||||||
if(global.contains(name)){
|
if(global.contains(info.sourceSkill)){
|
||||||
logInfo.type='global';
|
logInfo.type='global';
|
||||||
}
|
}
|
||||||
else if(players.contains(name)){
|
else if(players.contains(info.sourceSkill)){
|
||||||
logInfo.type='player';
|
logInfo.type='player';
|
||||||
}
|
}
|
||||||
else if(equips.contains(name)){
|
else if(equips.contains(info.sourceSkill)){
|
||||||
logInfo.type='equip';
|
logInfo.type='equip';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -23011,6 +23017,41 @@
|
||||||
this.popup(skill);
|
this.popup(skill);
|
||||||
game.log(this,'获得了技能','#g【'+get.translation(skill)+'】');
|
game.log(this,'获得了技能','#g【'+get.translation(skill)+'】');
|
||||||
},
|
},
|
||||||
|
addInvisibleSkill:function(skill){
|
||||||
|
if(Array.isArray(skill)){
|
||||||
|
for(var i=0;i<skill.length;i++){
|
||||||
|
this.addInvisibleSkill(skill[i]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
if(this.invisibleSkills.contains(skill)) return;
|
||||||
|
var info=lib.skill[skill];
|
||||||
|
if(!info) return;
|
||||||
|
this.invisibleSkills.add(skill);
|
||||||
|
this.addSkillTrigger(skill);
|
||||||
|
if(this.awakenedSkills.contains(skill)){
|
||||||
|
this.awakenSkill(skill);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
removeInvisibleSkill:function(skill){
|
||||||
|
if(!skill) return;
|
||||||
|
if(Array.isArray(skill)){
|
||||||
|
for(var i=0;i<skill.length;i++){
|
||||||
|
this.removeSkill(skill[i]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
var info=lib.skill[skill];
|
||||||
|
if(info&&info.fixed&&arguments[1]!==true) return skill;
|
||||||
|
game.broadcastAll(function(player,skill){
|
||||||
|
player.invisibleSkills.remove(skill);
|
||||||
|
},this,skill);
|
||||||
|
if(!player.hasSkill(skill,true)) player.removeSkill(skill);
|
||||||
|
}
|
||||||
|
return skill;
|
||||||
|
},
|
||||||
addSkill:function(skill,checkConflict,nobroadcast,addToSkills){
|
addSkill:function(skill,checkConflict,nobroadcast,addToSkills){
|
||||||
if(Array.isArray(skill)){
|
if(Array.isArray(skill)){
|
||||||
for(var i=0;i<skill.length;i++){
|
for(var i=0;i<skill.length;i++){
|
||||||
|
@ -23328,6 +23369,7 @@
|
||||||
game.broadcastAll(function(player,skill){
|
game.broadcastAll(function(player,skill){
|
||||||
player.skills.remove(skill);
|
player.skills.remove(skill);
|
||||||
player.hiddenSkills.remove(skill);
|
player.hiddenSkills.remove(skill);
|
||||||
|
player.invisibleSkills.remove(skill);
|
||||||
delete player.tempSkills[skill];
|
delete player.tempSkills[skill];
|
||||||
for(var i in player.additionalSkills){
|
for(var i in player.additionalSkills){
|
||||||
player.additionalSkills[i].remove(skill);
|
player.additionalSkills[i].remove(skill);
|
||||||
|
@ -24227,7 +24269,7 @@
|
||||||
},
|
},
|
||||||
hasWuxie:function(){
|
hasWuxie:function(){
|
||||||
if(this.countCards('hs','wuxie')) return true;
|
if(this.countCards('hs','wuxie')) return true;
|
||||||
var skills=this.getSkills(true).concat(lib.skill.global);
|
var skills=this.getSkills('invisible').concat(lib.skill.global);
|
||||||
game.expandSkills(skills);
|
game.expandSkills(skills);
|
||||||
for(var i=0;i<skills.length;i++){
|
for(var i=0;i<skills.length;i++){
|
||||||
var ifo=get.info(skills[i]);
|
var ifo=get.info(skills[i]);
|
||||||
|
@ -26864,7 +26906,7 @@
|
||||||
}
|
}
|
||||||
if(lib.config.compatiblemode){
|
if(lib.config.compatiblemode){
|
||||||
(function(){
|
(function(){
|
||||||
var skills=player.getSkills(true).concat(lib.skill.global);
|
var skills=player.getSkills('invisible').concat(lib.skill.global);
|
||||||
game.expandSkills(skills);
|
game.expandSkills(skills);
|
||||||
for(var i=0;i<skills.length;i++){
|
for(var i=0;i<skills.length;i++){
|
||||||
var info=get.info(skills[i]);
|
var info=get.info(skills[i]);
|
||||||
|
@ -27416,7 +27458,7 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
var fullskills=game.expandSkills(player.getSkills().concat(lib.skill.global));
|
var fullskills=game.expandSkills(player.getSkills(false).concat(lib.skill.global));
|
||||||
var info=get.info(skill);
|
var info=get.info(skill);
|
||||||
if((info.noHidden||get.mode()!='guozhan')&&!fullskills.contains(skill)){
|
if((info.noHidden||get.mode()!='guozhan')&&!fullskills.contains(skill)){
|
||||||
return false;
|
return false;
|
||||||
|
@ -32988,21 +33030,43 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
exit:function(){
|
exit:function(){
|
||||||
if(lib.device=='ios'){
|
//安卓 / ios
|
||||||
game.saveConfig('mode');
|
if(lib.device) {
|
||||||
if(_status){
|
if(lib.device=='ios'){
|
||||||
if(_status.reloading) return;
|
game.saveConfig('mode');
|
||||||
_status.reloading=true;
|
if(_status){
|
||||||
|
if(_status.reloading)return;
|
||||||
|
_status.reloading=true;
|
||||||
|
}
|
||||||
|
if(_status.video&&!_status.replayvideo) {
|
||||||
|
localStorage.removeItem(lib.configprefix + 'playbackmode');
|
||||||
|
}
|
||||||
|
window.location.reload();
|
||||||
}
|
}
|
||||||
if(_status.video&&!_status.replayvideo){
|
else{
|
||||||
localStorage.removeItem(lib.configprefix+'playbackmode');
|
if(navigator.app&&navigator.app.exitApp){
|
||||||
|
navigator.app.exitApp();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
window.location.reload();
|
|
||||||
}
|
}
|
||||||
else{
|
//electron
|
||||||
if(navigator.app&&navigator.app.exitApp){
|
else if(typeof process=='function'){
|
||||||
navigator.app.exitApp();
|
var versions=window.process.versions;
|
||||||
|
var electronVersion=parseFloat(versions.electron);
|
||||||
|
var remote;
|
||||||
|
if(electronVersion>=14){
|
||||||
|
remote=require('@electron/remote');
|
||||||
|
}else{
|
||||||
|
remote=require('electron').remote;
|
||||||
}
|
}
|
||||||
|
var thisWindow=remote.getCurrentWindow();
|
||||||
|
thisWindow.destroy();
|
||||||
|
window.process.exit();
|
||||||
|
}
|
||||||
|
//网页版
|
||||||
|
else{
|
||||||
|
window.onbeforeunload = null;
|
||||||
|
window.close();
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
open:function(url){
|
open:function(url){
|
||||||
|
@ -35162,7 +35226,7 @@
|
||||||
skills2=player.getSkills(false,true,false);
|
skills2=player.getSkills(false,true,false);
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
skills2=player.getSkills(true,true,false);
|
skills2=player.getSkills('invisible',true,false);
|
||||||
}
|
}
|
||||||
skills2=game.filterSkills(skills2.concat(lib.skill.global),player,player.getSkills('e').concat(lib.skill.global));
|
skills2=game.filterSkills(skills2.concat(lib.skill.global),player,player.getSkills('e').concat(lib.skill.global));
|
||||||
event._skillChoice=[];
|
event._skillChoice=[];
|
||||||
|
@ -35175,7 +35239,7 @@
|
||||||
else if(info.enable=='phaseUse') enable=(event.type=='phase');
|
else if(info.enable=='phaseUse') enable=(event.type=='phase');
|
||||||
else if(typeof info.enable=='string') enable=(info.enable==event.name);
|
else if(typeof info.enable=='string') enable=(info.enable==event.name);
|
||||||
if(enable){
|
if(enable){
|
||||||
if(!game.expandSkills(player.getSkills().concat(lib.skill.global)).contains(skills2[i])&&(info.noHidden||get.mode()!='guozhan'||player.hasSkillTag('nomingzhi',false,null,true))) enable=false;
|
if(!game.expandSkills(player.getSkills(false).concat(lib.skill.global)).contains(skills2[i])&&(info.noHidden||get.mode()!='guozhan'||player.hasSkillTag('nomingzhi',false,null,true))) enable=false;
|
||||||
if(info.filter&&!info.filter(event,player)) enable=false;
|
if(info.filter&&!info.filter(event,player)) enable=false;
|
||||||
if(info.viewAs&&typeof info.viewAs!='function'&&event.filterCard&&!event.filterCard(info.viewAs,player,event)) enable=false;
|
if(info.viewAs&&typeof info.viewAs!='function'&&event.filterCard&&!event.filterCard(info.viewAs,player,event)) enable=false;
|
||||||
if(info.viewAs&&typeof info.viewAs!='function'&&info.viewAsFilter&&info.viewAsFilter(player)==false) enable=false;
|
if(info.viewAs&&typeof info.viewAs!='function'&&info.viewAsFilter&&info.viewAsFilter(player)==false) enable=false;
|
||||||
|
@ -35201,7 +35265,7 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
var equipskills=[];
|
var equipskills=[];
|
||||||
var ownedskills=player.getSkills(true,false);
|
var ownedskills=player.getSkills('invisible',false);
|
||||||
game.expandSkills(ownedskills);
|
game.expandSkills(ownedskills);
|
||||||
for(var i=0;i<skills.length;i++){
|
for(var i=0;i<skills.length;i++){
|
||||||
if(!ownedskills.contains(skills[i])){
|
if(!ownedskills.contains(skills[i])){
|
||||||
|
@ -46563,7 +46627,15 @@
|
||||||
for(var i=0;i<hs.length;i++){
|
for(var i=0;i<hs.length;i++){
|
||||||
hs[i].goto(ui.special);
|
hs[i].goto(ui.special);
|
||||||
}
|
}
|
||||||
hs.sort(function(b,a){
|
if(game.me.hasSkillTag('sortCardByNum')){
|
||||||
|
var getn=function(card){
|
||||||
|
var num=get.number(card,game.me);
|
||||||
|
if(num<3) return 13+num;
|
||||||
|
return num;
|
||||||
|
}
|
||||||
|
hs.sort((a,b)=>(getn(b)-getn(a)));
|
||||||
|
}
|
||||||
|
else hs.sort(function(b,a){
|
||||||
if(a.name!=b.name) return lib.sort.card(a.name,b.name);
|
if(a.name!=b.name) return lib.sort.card(a.name,b.name);
|
||||||
else if(a.suit!=b.suit) return lib.suit.indexOf(a)-lib.suit.indexOf(b);
|
else if(a.suit!=b.suit) return lib.suit.indexOf(a)-lib.suit.indexOf(b);
|
||||||
else return a.number-b.number;
|
else return a.number-b.number;
|
||||||
|
@ -47224,6 +47296,7 @@
|
||||||
node.phaseNumber=0;
|
node.phaseNumber=0;
|
||||||
node.skipList=[];
|
node.skipList=[];
|
||||||
node.skills=[];
|
node.skills=[];
|
||||||
|
node.invisibleSkills=[];
|
||||||
node.initedSkills=[];
|
node.initedSkills=[];
|
||||||
node.additionalSkills={};
|
node.additionalSkills={};
|
||||||
node.disabledSkills={};
|
node.disabledSkills={};
|
||||||
|
@ -52711,6 +52784,7 @@
|
||||||
skills[i]={
|
skills[i]={
|
||||||
skills:lib.playerOL[i].skills,
|
skills:lib.playerOL[i].skills,
|
||||||
hiddenSkills:lib.playerOL[i].hiddenSkills,
|
hiddenSkills:lib.playerOL[i].hiddenSkills,
|
||||||
|
invisibleSkills:lib.playerOL[i].invisibleSkills,
|
||||||
additionalSkills:lib.playerOL[i].additionalSkills,
|
additionalSkills:lib.playerOL[i].additionalSkills,
|
||||||
disabledSkills:lib.playerOL[i].disabledSkills,
|
disabledSkills:lib.playerOL[i].disabledSkills,
|
||||||
tempSkills:lib.playerOL[i].tempSkills,
|
tempSkills:lib.playerOL[i].tempSkills,
|
||||||
|
|
|
@ -1,12 +1,10 @@
|
||||||
window.noname_update={
|
window.noname_update={
|
||||||
version:'1.9.122.1',
|
version:'1.9.122.2',
|
||||||
update:'1.9.122',
|
update:'1.9.122.1',
|
||||||
changeLog:[
|
changeLog:[
|
||||||
'增大GPL协议的醒目性',
|
'整合@copcap @shijian @disgrace2013的Pull Request',
|
||||||
'整合@copcap 编写的代码',
|
'《江山如故·起》许劭及其配套机制',
|
||||||
'线下武将包《江山如故·起》(暂时不含许劭)',
|
'十周年孟达、段巧笑、张瑾云',
|
||||||
'OL罗宪、胡班、孙弘;十周年界朱治、杨弘',
|
|
||||||
'谋陈宫、貂蝉、庞统、袁绍;线下标潘凤',
|
|
||||||
'其他技能调整和bug修复',
|
'其他技能调整和bug修复',
|
||||||
],
|
],
|
||||||
files:[
|
files:[
|
||||||
|
@ -26,30 +24,30 @@ window.noname_update={
|
||||||
//'card/zhenfa.js',
|
//'card/zhenfa.js',
|
||||||
//'card/zhulu.js',
|
//'card/zhulu.js',
|
||||||
//'character/clan.js',
|
//'character/clan.js',
|
||||||
//'character/diy.js',
|
'character/diy.js',
|
||||||
//'character/extra.js',
|
//'character/extra.js',
|
||||||
//'character/hearth.js',
|
//'character/hearth.js',
|
||||||
//'character/gujian.js',
|
//'character/gujian.js',
|
||||||
//'character/gwent.js',
|
//'character/gwent.js',
|
||||||
//'character/hearth.js',
|
//'character/hearth.js',
|
||||||
//'character/mobile.js',
|
'character/mobile.js',
|
||||||
//'character/mtg.js',
|
//'character/mtg.js',
|
||||||
//'character/offline.js',
|
'character/offline.js',
|
||||||
//'character/old.js',
|
//'character/old.js',
|
||||||
//'character/ow.js',
|
//'character/ow.js',
|
||||||
//'character/rank.js',
|
'character/rank.js',
|
||||||
//'character/refresh.js',
|
'character/refresh.js',
|
||||||
//'character/sb.js',
|
//'character/sb.js',
|
||||||
//'character/shenhua.js',
|
'character/shenhua.js',
|
||||||
//'character/sp.js',
|
'character/sp.js',
|
||||||
//'character/sp2.js',
|
'character/sp2.js',
|
||||||
//'character/standard.js',
|
//'character/standard.js',
|
||||||
//'character/tw.js',
|
'character/tw.js',
|
||||||
//'character/swd.js',
|
//'character/swd.js',
|
||||||
//'character/xianjian.js',
|
//'character/xianjian.js',
|
||||||
//'character/xinghuoliaoyuan.js',
|
//'character/xinghuoliaoyuan.js',
|
||||||
//'character/yijiang.js',
|
'character/yijiang.js',
|
||||||
//'character/yingbian.js',
|
'character/yingbian.js',
|
||||||
//'character/yxs.js',
|
//'character/yxs.js',
|
||||||
//'extension/boss/extension.js',
|
//'extension/boss/extension.js',
|
||||||
//'font/suits.ttf',
|
//'font/suits.ttf',
|
||||||
|
@ -67,7 +65,7 @@ window.noname_update={
|
||||||
//'mode/doudizhu.js',
|
//'mode/doudizhu.js',
|
||||||
//'mode/guozhan.js',
|
//'mode/guozhan.js',
|
||||||
//'mode/identity.js',
|
//'mode/identity.js',
|
||||||
//'mode/single.js',
|
'mode/single.js',
|
||||||
//'mode/stone.js',
|
//'mode/stone.js',
|
||||||
//'mode/tafang.js',
|
//'mode/tafang.js',
|
||||||
//'mode/versus.js',
|
//'mode/versus.js',
|
||||||
|
|
Binary file not shown.
After Width: | Height: | Size: 26 KiB |
Binary file not shown.
After Width: | Height: | Size: 28 KiB |
Binary file not shown.
After Width: | Height: | Size: 146 KiB |
Binary file not shown.
After Width: | Height: | Size: 33 KiB |
|
@ -239,6 +239,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
|
||||||
|
|
||||||
game.gameDraw(game.zhu,function(player){
|
game.gameDraw(game.zhu,function(player){
|
||||||
if(_status.mode=='dianjiang') return 4;
|
if(_status.mode=='dianjiang') return 4;
|
||||||
|
if(_status.mode=='normal') return player==game.zhu?3:4;
|
||||||
if(_status.mode=='changban') return player==game.fan?5:4;
|
if(_status.mode=='changban') return player==game.fan?5:4;
|
||||||
if(player.hasSkill('cuorui')){
|
if(player.hasSkill('cuorui')){
|
||||||
player.logSkill('cuorui');
|
player.logSkill('cuorui');
|
||||||
|
@ -834,7 +835,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
|
||||||
},source,name,color);
|
},source,name,color);
|
||||||
game.log(source,'出场');
|
game.log(source,'出场');
|
||||||
|
|
||||||
var num=source.maxHp;
|
var num=_status.mode == 'normal' ? 4 : source.maxHp;
|
||||||
if(player.hasSkill('cuorui')){
|
if(player.hasSkill('cuorui')){
|
||||||
player.logSkill('cuorui');
|
player.logSkill('cuorui');
|
||||||
num=2+_status.characterChoice[player.identity].length;
|
num=2+_status.characterChoice[player.identity].length;
|
||||||
|
|
Loading…
Reference in New Issue