commit
03ca6722de
|
@ -281,7 +281,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){
|
||||||
content:function(){
|
content:function(){
|
||||||
target.link();
|
target.link();
|
||||||
},
|
},
|
||||||
chongzhu:true,
|
recastable:true,
|
||||||
ai:{
|
ai:{
|
||||||
wuxie:function(target,card,player,viewer){
|
wuxie:function(target,card,player,viewer){
|
||||||
if(_status.event.getRand()<0.5) return 0;
|
if(_status.event.getRand()<0.5) return 0;
|
||||||
|
|
|
@ -455,28 +455,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){
|
||||||
return target!=player&&(get.mode()!='guozhan'||_status.mode=='yingbian'||_status.mode=='free'||target.countCards('e')>0);
|
return target!=player&&(get.mode()!='guozhan'||_status.mode=='yingbian'||_status.mode=='free'||target.countCards('e')>0);
|
||||||
},
|
},
|
||||||
enable:true,
|
enable:true,
|
||||||
yingbian_prompt:function(card){
|
defaultYingbianEffect:'add',
|
||||||
var str='';
|
|
||||||
if(get.cardtag(card,'yingbian_all')){
|
|
||||||
str+='此牌的效果改为依次执行所有选项';
|
|
||||||
}
|
|
||||||
if(!str.length||get.cardtag(card,'yingbian_add')){
|
|
||||||
if(str.length) str+=';';
|
|
||||||
str+='当你使用此牌选择目标后,你可为此牌增加一个目标';
|
|
||||||
}
|
|
||||||
return str;
|
|
||||||
},
|
|
||||||
yingbian:function(event){
|
|
||||||
var card=event.card,bool=false;
|
|
||||||
if(get.cardtag(card,'yingbian_all')){
|
|
||||||
bool=true;
|
|
||||||
card.yingbian_all=true;
|
|
||||||
game.log(card,'执行所有选项');
|
|
||||||
}
|
|
||||||
if(!bool||get.cardtag(card,'yingbian_add')){
|
|
||||||
event.yingbian_addTarget=true;
|
|
||||||
}
|
|
||||||
},
|
|
||||||
content:function(){
|
content:function(){
|
||||||
'step 0'
|
'step 0'
|
||||||
if(event.card.yingbian_all){
|
if(event.card.yingbian_all){
|
||||||
|
@ -577,7 +556,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){
|
||||||
},
|
},
|
||||||
mode:['guozhan','versus'],
|
mode:['guozhan','versus'],
|
||||||
filterTarget:true,
|
filterTarget:true,
|
||||||
chongzhu:true,
|
recastable:true,
|
||||||
changeTarget:function(player,targets){
|
changeTarget:function(player,targets){
|
||||||
var target=targets[0];
|
var target=targets[0];
|
||||||
game.filterPlayer(function(current){
|
game.filterPlayer(function(current){
|
||||||
|
@ -942,7 +921,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){
|
||||||
fullskin:true,
|
fullskin:true,
|
||||||
type:'trick',
|
type:'trick',
|
||||||
enable:true,
|
enable:true,
|
||||||
chongzhu:true,
|
recastable:true,
|
||||||
filterTarget:function(card,player,target){
|
filterTarget:function(card,player,target){
|
||||||
if(player==target) return false;
|
if(player==target) return false;
|
||||||
return (target.countCards('h')||target.isUnseen(2));
|
return (target.countCards('h')||target.isUnseen(2));
|
||||||
|
|
|
@ -447,7 +447,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){
|
||||||
fullskin:true,
|
fullskin:true,
|
||||||
type:'trick',
|
type:'trick',
|
||||||
enable:true,
|
enable:true,
|
||||||
// chongzhu:true,
|
// recastable:true,
|
||||||
filterTarget:function(card,player,target){
|
filterTarget:function(card,player,target){
|
||||||
return target==player;
|
return target==player;
|
||||||
},
|
},
|
||||||
|
|
|
@ -259,7 +259,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){
|
||||||
enable:function(){
|
enable:function(){
|
||||||
return game.countPlayer()>2;
|
return game.countPlayer()>2;
|
||||||
},
|
},
|
||||||
chongzhu:function(){
|
recastable:function(){
|
||||||
return game.countPlayer()<=2;
|
return game.countPlayer()<=2;
|
||||||
},
|
},
|
||||||
singleCard:true,
|
singleCard:true,
|
||||||
|
|
|
@ -100,39 +100,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){
|
||||||
if(lib.linked.contains(card.nature)) return '出牌阶段,对你攻击范围内的一名角色使用。其须使用一张【闪】,否则你对其造成1点'+get.translation(card.nature)+'属性伤害。';
|
if(lib.linked.contains(card.nature)) return '出牌阶段,对你攻击范围内的一名角色使用。其须使用一张【闪】,否则你对其造成1点'+get.translation(card.nature)+'属性伤害。';
|
||||||
return '出牌阶段,对你攻击范围内的一名角色使用。其须使用一张【闪】,否则你对其造成1点伤害。';
|
return '出牌阶段,对你攻击范围内的一名角色使用。其须使用一张【闪】,否则你对其造成1点伤害。';
|
||||||
},
|
},
|
||||||
yingbian_prompt:function(card){
|
defaultYingbianEffect:'add',
|
||||||
var str='';
|
|
||||||
if(get.cardtag(card,'yingbian_hit')){
|
|
||||||
str+='此牌不可被响应';
|
|
||||||
}
|
|
||||||
if(get.cardtag(card,'yingbian_damage')){
|
|
||||||
if(str.length) str+=';';
|
|
||||||
str+='此牌的伤害值基数+1';
|
|
||||||
}
|
|
||||||
if(!str.length||get.cardtag(card,'yingbian_add')){
|
|
||||||
if(str.length) str+=';';
|
|
||||||
str+='当你使用此牌选择目标后,你可为此牌增加一个目标';
|
|
||||||
}
|
|
||||||
return str;
|
|
||||||
},
|
|
||||||
yingbian:function(event){
|
|
||||||
var card=event.card,bool=false;
|
|
||||||
if(get.cardtag(card,'yingbian_hit')){
|
|
||||||
bool=true;
|
|
||||||
event.directHit.addArray(game.players);
|
|
||||||
game.log(card,'不可被响应');
|
|
||||||
}
|
|
||||||
if(get.cardtag(card,'yingbian_damage')){
|
|
||||||
bool=true;
|
|
||||||
if(typeof event.baseDamage!='number') event.baseDamage=1;
|
|
||||||
event.baseDamage++;
|
|
||||||
game.log(event.card,'的伤害值基数+1');
|
|
||||||
}
|
|
||||||
if(!bool||get.cardtag(card,'yingbian_add')){
|
|
||||||
event.yingbian_addTarget=true;
|
|
||||||
}
|
|
||||||
},
|
|
||||||
yingbian_tags:['hit','damage','add'],
|
|
||||||
filterTarget:function(card,player,target){return player!=target},
|
filterTarget:function(card,player,target){return player!=target},
|
||||||
content:function(){
|
content:function(){
|
||||||
"step 0"
|
"step 0"
|
||||||
|
@ -387,27 +355,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){
|
||||||
cardcolor:'red',
|
cardcolor:'red',
|
||||||
notarget:true,
|
notarget:true,
|
||||||
nodelay:true,
|
nodelay:true,
|
||||||
yingbian_prompt:function(card){
|
defaultYingbianEffect:'draw',
|
||||||
var str='';
|
|
||||||
if(get.cardtag(card,'yingbian_gain')){
|
|
||||||
str+='当你声明使用此牌时,你获得此牌响应的目标牌';
|
|
||||||
}
|
|
||||||
if(!str.length||get.cardtag(card,'yingbian_draw')){
|
|
||||||
if(str.length) str+=';';
|
|
||||||
str+='当你声明使用此牌时,你摸一张牌';
|
|
||||||
}
|
|
||||||
return str;
|
|
||||||
},
|
|
||||||
yingbian_tags:['gain','draw'],
|
|
||||||
yingbian:function(event){
|
|
||||||
var bool=false;
|
|
||||||
if(get.cardtag(event.card,'yingbian_gain')){
|
|
||||||
bool=true;
|
|
||||||
var cardx=event.respondTo;
|
|
||||||
if(cardx&&cardx[1]&&cardx[1].cards&&cardx[1].cards.filterInD('od').length) event.player.gain(cardx[1].cards.filterInD('od'),'gain2','log');
|
|
||||||
}
|
|
||||||
if(!bool||get.cardtag(event.card,'yingbian_draw')) event.player.draw();
|
|
||||||
},
|
|
||||||
content:function(){
|
content:function(){
|
||||||
event.result='shaned';
|
event.result='shaned';
|
||||||
event.getParent().delayx=false;
|
event.getParent().delayx=false;
|
||||||
|
@ -889,11 +837,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){
|
||||||
selectTarget:-1,
|
selectTarget:-1,
|
||||||
cardcolor:'red',
|
cardcolor:'red',
|
||||||
reverseOrder:true,
|
reverseOrder:true,
|
||||||
yingbian_prompt:'当你使用此牌选择目标后,你可为此牌减少一个目标',
|
defaultYingbianEffect:'remove',
|
||||||
yingbian_tags:['remove'],
|
|
||||||
yingbian:function(event){
|
|
||||||
event.yingbian_removeTarget=true;
|
|
||||||
},
|
|
||||||
filterTarget:function(card,player,target){
|
filterTarget:function(card,player,target){
|
||||||
//return target.hp<target.maxHp;
|
//return target.hp<target.maxHp;
|
||||||
return true;
|
return true;
|
||||||
|
@ -929,11 +873,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){
|
||||||
type:'trick',
|
type:'trick',
|
||||||
enable:true,
|
enable:true,
|
||||||
selectTarget:-1,
|
selectTarget:-1,
|
||||||
yingbian_prompt:'当你使用此牌选择目标后,你可为此牌减少一个目标',
|
defaultYingbianEffect:'remove',
|
||||||
yingbian_tags:['remove'],
|
|
||||||
yingbian:function(event){
|
|
||||||
event.yingbian_removeTarget=true;
|
|
||||||
},
|
|
||||||
filterTarget:function(card,player,target){
|
filterTarget:function(card,player,target){
|
||||||
return target!=player;
|
return target!=player;
|
||||||
},
|
},
|
||||||
|
@ -1006,11 +946,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){
|
||||||
enable:true,
|
enable:true,
|
||||||
selectTarget:-1,
|
selectTarget:-1,
|
||||||
reverseOrder:true,
|
reverseOrder:true,
|
||||||
yingbian_prompt:'当你使用此牌选择目标后,你可为此牌减少一个目标',
|
defaultYingbianEffect:'remove',
|
||||||
yingbian_tags:['remove'],
|
|
||||||
yingbian:function(event){
|
|
||||||
event.yingbian_removeTarget=true;
|
|
||||||
},
|
|
||||||
filterTarget:function(card,player,target){
|
filterTarget:function(card,player,target){
|
||||||
return target!=player;
|
return target!=player;
|
||||||
},
|
},
|
||||||
|
@ -1124,11 +1060,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){
|
||||||
fullskin:true,
|
fullskin:true,
|
||||||
type:'trick',
|
type:'trick',
|
||||||
enable:true,
|
enable:true,
|
||||||
yingbian_prompt:'你令此牌不可被响应',
|
defaultYingbianEffect:'hit',
|
||||||
yingbian_tags:['hit'],
|
|
||||||
yingbian:function(event){
|
|
||||||
event.directHit.addArray(game.players);
|
|
||||||
},
|
|
||||||
filterTarget:function(card,player,target){
|
filterTarget:function(card,player,target){
|
||||||
return target!=player;
|
return target!=player;
|
||||||
},
|
},
|
||||||
|
@ -1426,11 +1358,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){
|
||||||
if(player==target) return false;
|
if(player==target) return false;
|
||||||
return target.countDiscardableCards(player,get.is.single()?'he':'hej');
|
return target.countDiscardableCards(player,get.is.single()?'he':'hej');
|
||||||
},
|
},
|
||||||
yingbian_prompt:'当你使用此牌选择目标后,你可为此牌增加一个目标',
|
defaultYingbianEffect:'add',
|
||||||
yingbian_tags:['add'],
|
|
||||||
yingbian:function(event){
|
|
||||||
event.yingbian_addTarget=true;
|
|
||||||
},
|
|
||||||
content:function(){
|
content:function(){
|
||||||
'step 0'
|
'step 0'
|
||||||
if(!get.is.single()&&target.countDiscardableCards(player,'hej')){
|
if(!get.is.single()&&target.countDiscardableCards(player,'hej')){
|
||||||
|
@ -1665,14 +1593,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){
|
||||||
},
|
},
|
||||||
notarget:true,
|
notarget:true,
|
||||||
finalDelay:false,
|
finalDelay:false,
|
||||||
yingbian_tags:['gain','draw'],
|
defaultYingbianEffect:'draw',
|
||||||
yingbian_prompt:function(card){
|
|
||||||
if(!get.cardtag(card,'yingbian_gain')) return '当你声明使用此牌时,你摸一张牌';
|
|
||||||
return '当此牌生效后,你获得此牌响应的目标牌';
|
|
||||||
},
|
|
||||||
yingbian:function(event){
|
|
||||||
if(!get.cardtag(event.card,'yingbian_gain')||get.cardtag(event.card,'yingbian_draw')) event.player.draw();
|
|
||||||
},
|
|
||||||
contentBefore:function(){
|
contentBefore:function(){
|
||||||
'step 0'
|
'step 0'
|
||||||
if(get.mode()=='guozhan'&&get.cardtag(card,'guo')){
|
if(get.mode()=='guozhan'&&get.cardtag(card,'guo')){
|
||||||
|
@ -1725,12 +1646,8 @@ game.import('card',function(lib,game,ui,get,ai,_status){
|
||||||
delete ui.tempnowuxie;
|
delete ui.tempnowuxie;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if(event.card.yingbian&&get.cardtag(event.card,'yingbian_gain')){
|
|
||||||
var cardx=event.getParent().respondTo;
|
|
||||||
if(cardx&&cardx[1]&&cardx[1].cards&&cardx[1].cards.filterInD('od').length) player.gain(cardx[1].cards.filterInD('od'),'gain2','log');
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
},
|
|
||||||
lebu:{
|
lebu:{
|
||||||
audio:true,
|
audio:true,
|
||||||
fullskin:true,
|
fullskin:true,
|
||||||
|
|
|
@ -266,7 +266,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){
|
||||||
fullskin:true,
|
fullskin:true,
|
||||||
type:'trick',
|
type:'trick',
|
||||||
nodelay:true,
|
nodelay:true,
|
||||||
// chongzhu:true,
|
// recastable:true,
|
||||||
global:'g_shencaojie',
|
global:'g_shencaojie',
|
||||||
content:function(){
|
content:function(){
|
||||||
var evt=event.getParent('g_shencaojie')._trigger;
|
var evt=event.getParent('g_shencaojie')._trigger;
|
||||||
|
|
298
card/yingbian.js
298
card/yingbian.js
|
@ -16,38 +16,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){
|
||||||
filterTarget:function(card,player,target){
|
filterTarget:function(card,player,target){
|
||||||
return target!=player&&target.countCards('hej')>0;
|
return target!=player&&target.countCards('hej')>0;
|
||||||
},
|
},
|
||||||
yingbian_tags:['all','hit','add'],
|
defaultYingbianEffect:'add',
|
||||||
yingbian_prompt:function(card){
|
|
||||||
var str='';
|
|
||||||
if(get.cardtag(card,'yingbian_all')){
|
|
||||||
str+='此牌的效果改为依次执行所有选项';
|
|
||||||
}
|
|
||||||
if(get.cardtag(card,'yingbian_hit')){
|
|
||||||
if(str.length) str+=';';
|
|
||||||
str+='此牌不可被响应';
|
|
||||||
}
|
|
||||||
if(!str.length||get.cardtag(card,'yingbian_add')){
|
|
||||||
if(str.length) str+=';';
|
|
||||||
str+='当你使用此牌选择目标后,你可为此牌增加一个目标';
|
|
||||||
}
|
|
||||||
return str;
|
|
||||||
},
|
|
||||||
yingbian:function(event){
|
|
||||||
var card=event.card,bool=false;
|
|
||||||
if(get.cardtag(card,'yingbian_all')){
|
|
||||||
bool=true;
|
|
||||||
card.yingbian_all=true;
|
|
||||||
game.log(card,'执行所有选项');
|
|
||||||
}
|
|
||||||
if(get.cardtag(card,'yingbian_hit')){
|
|
||||||
bool=true;
|
|
||||||
event.directHit.addArray(game.players);
|
|
||||||
game.log(card,'不可被响应');
|
|
||||||
}
|
|
||||||
if(!bool||get.cardtag(card,'yingbian_add')){
|
|
||||||
event.yingbian_addTarget=true;
|
|
||||||
}
|
|
||||||
},
|
|
||||||
content:function(){
|
content:function(){
|
||||||
var dist=get.distance(player,target);
|
var dist=get.distance(player,target);
|
||||||
if(dist>1||card.yingbian_all) player.discardPlayerCard(target,'hej',true);
|
if(dist>1||card.yingbian_all) player.discardPlayerCard(target,'hej',true);
|
||||||
|
@ -174,11 +143,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){
|
||||||
filterTarget:function(card,player,target){
|
filterTarget:function(card,player,target){
|
||||||
return target!=player&&target.countCards('h')>0;
|
return target!=player&&target.countCards('h')>0;
|
||||||
},
|
},
|
||||||
yingbian_prompt:'当你使用此牌选择目标后,你可为此牌增加一个目标',
|
defaultYingbianEffect:'add',
|
||||||
yingbian_tags:['add'],
|
|
||||||
yingbian:function(event){
|
|
||||||
event.yingbian_addTarget=true;
|
|
||||||
},
|
|
||||||
content:function(){
|
content:function(){
|
||||||
'step 0'
|
'step 0'
|
||||||
if(player.isDead()||!target.countCards('h')){
|
if(player.isDead()||!target.countCards('h')){
|
||||||
|
@ -399,27 +364,20 @@ game.import('card',function(lib,game,ui,get,ai,_status){
|
||||||
global:'heiguangkai_ai',
|
global:'heiguangkai_ai',
|
||||||
},
|
},
|
||||||
tongque_skill:{
|
tongque_skill:{
|
||||||
trigger:{player:'useCard1'},
|
trigger:{player:'useCardBegin'},
|
||||||
equipSkill:true,
|
equipSkill:true,
|
||||||
forced:true,
|
forced:true,
|
||||||
filter:function(event,player){
|
filter:(event,player)=>get.is.yingbianConditional(event.card)&&!player.hasHistory('useCard',evt=>get.is.yingbianConditional(evt.card)),
|
||||||
return !event.card.yingbian&&get.is.yingbian(event.card)&&player.getHistory('useCard',function(evt){
|
content:()=>{
|
||||||
return get.is.yingbian(evt.card)
|
trigger.forceYingbian=true;
|
||||||
}).indexOf(event)==0;
|
}
|
||||||
},
|
|
||||||
content:function(){
|
|
||||||
trigger.card.yingbian=true;
|
|
||||||
var info=get.info(trigger.card);
|
|
||||||
if(info&&info.yingbian) info.yingbian(trigger);
|
|
||||||
player.addTempSkill('yingbian_changeTarget');
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
tianjitu_skill:{
|
tianjitu_skill:{
|
||||||
audio:true,
|
audio:true,
|
||||||
trigger:{player:['equipBegin','loseBegin']},
|
trigger:{player:['equipBegin','loseBegin']},
|
||||||
forced:true,
|
forced:true,
|
||||||
equipSkill:true,
|
equipSkill:true,
|
||||||
filter:(event,player,name)=>name=='equipBegin'?event.card.name=='tianjitu'&&player.hasCard(card=>card!=event.card):event.cards.some(value=>value.name=='tianjitu')&&player.countCards('h')<5,
|
filter:(event,player,name)=>name=='equipBegin'?event.card.name=='tianjitu'&&player.hasCard(card=>card!=event.card):event.cards.some(value=>get.position(value)=='e'&&value.name=='tianjitu')&&player.countCards('h')<5,
|
||||||
content:()=>{
|
content:()=>{
|
||||||
if(event.triggername=='loseBegin') player.drawTo(5);
|
if(event.triggername=='loseBegin') player.drawTo(5);
|
||||||
else player.chooseToDiscard(true,card=>card!=_status.event.getTrigger().card,'he');
|
else player.chooseToDiscard(true,card=>card!=_status.event.getTrigger().card,'he');
|
||||||
|
@ -441,10 +399,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){
|
||||||
'step 1'
|
'step 1'
|
||||||
if(result.bool){
|
if(result.bool){
|
||||||
player.logSkill('taigongyinfu_skill');
|
player.logSkill('taigongyinfu_skill');
|
||||||
player.lose(result.cards,ui.discardPile,'visible');
|
player.recast(result.cards);
|
||||||
player.$throw(result.cards,1000);
|
|
||||||
game.log(player,'将',result.cards,'置入了弃牌堆');
|
|
||||||
player.draw();
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
@ -485,195 +440,63 @@ game.import('card',function(lib,game,ui,get,ai,_status){
|
||||||
firstDo:true,
|
firstDo:true,
|
||||||
ruleSkill:true,
|
ruleSkill:true,
|
||||||
forceLoad:true,
|
forceLoad:true,
|
||||||
filter:function(event,player){
|
filter:(event,player)=>{
|
||||||
if(event.card.yingbian) return false;
|
if(event.card.yingbian) return false;
|
||||||
var bool=player.hasSkillTag('forceYingbian');
|
const temporaryYingbian=event.temporaryYingbian||[],card=event.card;
|
||||||
var card=event.card;
|
if(temporaryYingbian.includes('force')||get.cardtag(card,'yingbian_force')) return true;
|
||||||
if(get.cardtag(card,'yingbian_kongchao')&&(!player.countCards('h')||bool)) return true;
|
const forceYingbian=event.forceYingbian||player.hasSkillTag('forceYingbian');
|
||||||
if(get.cardtag(card,'yingbian_canqu')&&(player.hp==1||bool)) return true;
|
for(const entry of lib.yingbian.condition.simple){
|
||||||
if(get.cardtag(card,'yingbian_fujia')&&(player.isMaxHandcard()||bool)) return true;
|
const key=entry[0];
|
||||||
if(get.cardtag(card,'yingbian_zhuzhan')) return true;
|
if((temporaryYingbian.includes(key)||get.cardtag(card,`yingbian_${key}`))&&(forceYingbian||entry[1](event))) return true;
|
||||||
return false;
|
}
|
||||||
|
const complexYingbianConditions=get.complexYingbianConditions();
|
||||||
|
return temporaryYingbian.some(value=>complexYingbianConditions.includes(value))||get.is.complexlyYingbianConditional(card);
|
||||||
},
|
},
|
||||||
content:function(){
|
content:()=>{
|
||||||
'step 0'
|
'step 0'
|
||||||
var card=trigger.card;
|
event.card=trigger.card;
|
||||||
event.card=card;
|
event.temporaryYingbian=trigger.temporaryYingbian||[];
|
||||||
var bool=false;
|
var yingbianConditionSatisfied=false;
|
||||||
if(get.cardtag(card,'yingbian_kongchao')&&!player.countCards('h')){
|
lib.yingbian.condition.simple.forEach((value,key)=>{
|
||||||
player.popup('空巢','soil');
|
if(!event.temporaryYingbian.includes(key)&&!get.cardtag(event.card,`yingbian_${key}`)||!value(trigger)) return;
|
||||||
bool=true;
|
player.popup(`yingbian_${key}_tag`,lib.yingbian.condition.color.get(key));
|
||||||
|
if(!yingbianConditionSatisfied) yingbianConditionSatisfied=true;
|
||||||
|
});
|
||||||
|
if(event.temporaryYingbian.includes('force')||get.cardtag(event.card,'yingbian_force')||trigger.forceYingbian||player.hasSkillTag('forceYingbian')){
|
||||||
|
player.popup('yingbian_force_tag',lib.yingbian.condition.color.get('force'));
|
||||||
|
if(!yingbianConditionSatisfied) yingbianConditionSatisfied=true;
|
||||||
}
|
}
|
||||||
else if(get.cardtag(card,'yingbian_canqu')&&player.hp==1){
|
if(yingbianConditionSatisfied){
|
||||||
player.popup('残躯','fire');
|
game.log(player,'触发了',event.card,'的应变条件');
|
||||||
bool=true;
|
event.goto(4);
|
||||||
}
|
|
||||||
else if(get.cardtag(card,'yingbian_fujia')&&player.isMaxHandcard()){
|
|
||||||
player.popup('富甲','orange');
|
|
||||||
bool=true;
|
|
||||||
}
|
|
||||||
else if(player.hasSkillTag('forceYingbian')){
|
|
||||||
player.popup('应变','metal');
|
|
||||||
bool=true;
|
|
||||||
}
|
|
||||||
if(bool){
|
|
||||||
game.log(player,'触发了',card,'的应变条件');
|
|
||||||
event.goto(10);
|
|
||||||
}
|
}
|
||||||
|
else if((event.num=0)>=(event.yingbianConditions=get.complexYingbianConditions()).length) event.finish();
|
||||||
'step 1'
|
'step 1'
|
||||||
event._global_waiting=true;
|
var yingbianCondition=event.yingbianConditions[num];
|
||||||
event.send=function(player,card,source,targets,id,id2,skillState){
|
if(event.temporaryYingbian.includes(yingbianCondition)||get.cardtag(card,`yingbian_${yingbianCondition}`)) lib.yingbian.condition.complex.get(yingbianCondition)(trigger);
|
||||||
if(skillState){
|
else event.goto(3);
|
||||||
player.applySkills(skillState);
|
|
||||||
}
|
|
||||||
var type=get.type2(card);
|
|
||||||
var str=get.translation(source);
|
|
||||||
if(targets&&targets.length){
|
|
||||||
str+='对';
|
|
||||||
str+=get.translation(targets);
|
|
||||||
}
|
|
||||||
str+='使用了';
|
|
||||||
var next=player.chooseCard({
|
|
||||||
filterCard:function(card){
|
|
||||||
return get.type2(card)==type&&lib.filter.cardDiscardable.apply(this,arguments);
|
|
||||||
},
|
|
||||||
prompt:str+=(get.translation(card)+',是否弃置一张'+get.translation(type)+'为其助战?'),
|
|
||||||
position:'h',
|
|
||||||
_global_waiting:true,
|
|
||||||
id:id,
|
|
||||||
id2:id2,
|
|
||||||
ai:function(cardx){
|
|
||||||
var info=get.info(card);
|
|
||||||
if(info&&info.ai&&info.ai.yingbian){
|
|
||||||
var ai=info.ai.yingbian(card,source,targets,player);
|
|
||||||
if(!ai) return 0;
|
|
||||||
return ai-get.value(cardx);
|
|
||||||
}
|
|
||||||
else if(get.attitude(player,source)<=0) return 0;
|
|
||||||
return 5-get.value(cardx);
|
|
||||||
},
|
|
||||||
});
|
|
||||||
if(game.online){
|
|
||||||
_status.event._resultid=id;
|
|
||||||
game.resume();
|
|
||||||
}
|
|
||||||
};
|
|
||||||
'step 2'
|
'step 2'
|
||||||
var type=get.type2(card);
|
if(result.bool) event.goto(4);
|
||||||
var list=game.filterPlayer(function(current){
|
|
||||||
if(current==player) return false;
|
|
||||||
if(!current.countCards('h')) return false;
|
|
||||||
return _status.connectMode||current.countCards('h',function(cardx){
|
|
||||||
return get.type2(cardx)==type;
|
|
||||||
})
|
|
||||||
});
|
|
||||||
event.list=list;
|
|
||||||
event.id=get.id();
|
|
||||||
list.sort(function(a,b){
|
|
||||||
return get.distance(event.source,a,'absolute')-get.distance(event.source,b,'absolute');
|
|
||||||
});
|
|
||||||
'step 3'
|
'step 3'
|
||||||
if(event.list.length==0){
|
event.num++;
|
||||||
event.finish();
|
if(event.num<event.yingbianConditions.length) event.goto(1);
|
||||||
return;
|
|
||||||
}
|
|
||||||
else if(_status.connectMode&&(event.list[0].isOnline()||event.list[0]==game.me)){
|
|
||||||
event.goto(5);
|
|
||||||
}
|
|
||||||
else{
|
|
||||||
event.current=event.list.shift();
|
|
||||||
event.send(event.current,event.card,player,trigger.targets,event.id,trigger.parent.id);
|
|
||||||
}
|
|
||||||
'step 4'
|
|
||||||
if(result.bool){
|
|
||||||
event.zhuzhanresult=event.current;
|
|
||||||
event.zhuzhanresult2=result;
|
|
||||||
if(event.current!=game.me) game.delayx();
|
|
||||||
event.goto(9);
|
|
||||||
}
|
|
||||||
else{
|
|
||||||
event.goto(3);
|
|
||||||
}
|
|
||||||
'step 5'
|
|
||||||
var id=event.id;
|
|
||||||
var sendback=function(result,player){
|
|
||||||
if(result&&result.id==id&&!event.zhuzhanresult&&result.bool){
|
|
||||||
event.zhuzhanresult=player;
|
|
||||||
event.zhuzhanresult2=result;
|
|
||||||
game.broadcast('cancel',id);
|
|
||||||
if(_status.event.id==id&&_status.event.name=='chooseCard'&&_status.paused){
|
|
||||||
return (function(){
|
|
||||||
event.resultOL=_status.event.resultOL;
|
|
||||||
ui.click.cancel();
|
|
||||||
if(ui.confirm) ui.confirm.close();
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else{
|
|
||||||
if(_status.event.id==id&&_status.event.name=='chooseCard'&&_status.paused){
|
|
||||||
return (function(){
|
|
||||||
event.resultOL=_status.event.resultOL;
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
var withme=false;
|
|
||||||
var withol=false;
|
|
||||||
var list=event.list;
|
|
||||||
for(var i=0;i<list.length;i++){
|
|
||||||
if(list[i].isOnline()){
|
|
||||||
withol=true;
|
|
||||||
list[i].wait(sendback);
|
|
||||||
list[i].send(event.send,list[i],event.card,player,trigger.targets,event.id,trigger.parent.id,get.skillState(list[i]));
|
|
||||||
list.splice(i--,1);
|
|
||||||
}
|
|
||||||
else if(list[i]==game.me){
|
|
||||||
withme=true;
|
|
||||||
event.send(list[i],event.card,player,trigger.targets,event.id,trigger.parent.id);
|
|
||||||
list.splice(i--,1);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if(!withme){
|
|
||||||
event.goto(7);
|
|
||||||
}
|
|
||||||
if(_status.connectMode){
|
|
||||||
if(withme||withol){
|
|
||||||
for(var i=0;i<game.players.length;i++){
|
|
||||||
if(game.players[i]!=player) game.players[i].showTimer();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
event.withol=withol;
|
|
||||||
'step 6'
|
|
||||||
if(result&&result.bool&&!event.zhuzhanresult){
|
|
||||||
game.broadcast('cancel',event.id);
|
|
||||||
event.zhuzhanresult=game.me;
|
|
||||||
event.zhuzhanresult2=result;
|
|
||||||
}
|
|
||||||
'step 7'
|
|
||||||
if(event.withol&&!event.resultOL){
|
|
||||||
game.pause();
|
|
||||||
}
|
|
||||||
'step 8'
|
|
||||||
for(var i=0;i<game.players.length;i++){
|
|
||||||
game.players[i].hideTimer();
|
|
||||||
}
|
|
||||||
'step 9'
|
|
||||||
if(event.zhuzhanresult){
|
|
||||||
var target=event.zhuzhanresult;
|
|
||||||
target.line(player,'green');
|
|
||||||
target.discard(event.zhuzhanresult2.cards).discarder=target;
|
|
||||||
target.popup('助战','wood');
|
|
||||||
game.log(target,'响应了',player,'发起的助战');
|
|
||||||
target.addExpose(0.2);
|
|
||||||
}
|
|
||||||
else event.finish();
|
else event.finish();
|
||||||
'step 10'
|
'step 4'
|
||||||
trigger.card.yingbian=true;
|
trigger.card.yingbian=true;
|
||||||
var info=get.info(trigger.card);
|
var yingbianEffectExecuted=false;
|
||||||
if(info&&info.yingbian) info.yingbian(trigger);
|
lib.yingbian.effect.forEach((value,key)=>{
|
||||||
player.addTempSkill('yingbian_changeTarget');
|
if(!event.temporaryYingbian.includes(key)&&!get.cardtag(card,`yingbian_${key}`)) return;
|
||||||
|
game.yingbianEffect(trigger,value);
|
||||||
|
if(!yingbianEffectExecuted) yingbianEffectExecuted=true;
|
||||||
|
});
|
||||||
|
if(!yingbianEffectExecuted){
|
||||||
|
var defaultYingbianEffect=get.defaultYingbianEffect(card);
|
||||||
|
if(lib.yingbian.effect.has(defaultYingbianEffect)){
|
||||||
|
lib.yingbian.effect.get(defaultYingbianEffect)(trigger);
|
||||||
|
if(!yingbianEffectExecuted) yingbianEffectExecuted=true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if(yingbianEffectExecuted) player.addTempSkill('yingbian_changeTarget');
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
yingbian_changeTarget:{
|
yingbian_changeTarget:{
|
||||||
|
@ -814,15 +637,16 @@ game.import('card',function(lib,game,ui,get,ai,_status){
|
||||||
yingbian_kongchao_tag:'空巢',
|
yingbian_kongchao_tag:'空巢',
|
||||||
yingbian_fujia_tag:'富甲',
|
yingbian_fujia_tag:'富甲',
|
||||||
yingbian_canqu_tag:'残躯',
|
yingbian_canqu_tag:'残躯',
|
||||||
|
yingbian_force_tag:'应变',
|
||||||
_yingbian:'应变',
|
_yingbian:'应变',
|
||||||
yingbian_changeTarget:'应变',
|
yingbian_changeTarget:'应变',
|
||||||
yingbian_add_tag:'(目标+)',
|
yingbian_add_tag:'(目标+)',
|
||||||
yingbian_remove_tag:'(目标-)',
|
yingbian_remove_tag:'(目标-)',
|
||||||
yingbian_draw_tag:'(摸牌)',
|
|
||||||
yingbian_all_tag:'(双项)',
|
|
||||||
yingbian_hit_tag:'(强命)',
|
|
||||||
yingbian_gain_tag:'(反甲)',
|
|
||||||
yingbian_damage_tag:'(伤害+)',
|
yingbian_damage_tag:'(伤害+)',
|
||||||
|
yingbian_draw_tag:'(摸牌)',
|
||||||
|
yingbian_gain_tag:'(反甲)',
|
||||||
|
yingbian_hit_tag:'(强命)',
|
||||||
|
yingbian_all_tag:'(双项)'
|
||||||
},
|
},
|
||||||
list:[
|
list:[
|
||||||
['spade',1,'juedou'],
|
['spade',1,'juedou'],
|
||||||
|
|
|
@ -613,10 +613,10 @@ game.import('card',function(lib,game,ui,get,ai,_status){
|
||||||
},
|
},
|
||||||
ai:{expose:0.1},
|
ai:{expose:0.1},
|
||||||
},
|
},
|
||||||
_yongjian_zengyu:{
|
_gifting:{
|
||||||
enable:'phaseUse',
|
enable:'phaseUse',
|
||||||
forceLoad:true,
|
forceLoad:true,
|
||||||
filter:(event,player)=>player.hasCard(card=>lib.skill._yongjian_zengyu.filterCard(card,player),lib.skill._yongjian_zengyu.position),
|
filter:(event,player)=>player.hasCard(card=>lib.skill._gifting.filterCard(card,player),lib.skill._gifting.position),
|
||||||
filterCard:(card,player)=>game.hasPlayer(current=>player.canGift(card,current,true)),
|
filterCard:(card,player)=>game.hasPlayer(current=>player.canGift(card,current,true)),
|
||||||
filterTarget:(card,player,target)=>ui.selected.cards.every(value=>player.canGift(value,target,true)),
|
filterTarget:(card,player,target)=>ui.selected.cards.every(value=>player.canGift(value,target,true)),
|
||||||
position:'he',
|
position:'he',
|
||||||
|
@ -677,8 +677,8 @@ game.import('card',function(lib,game,ui,get,ai,_status){
|
||||||
xinge_info:'出牌阶段限一次。你可以将一张手牌交给一名其他角色。',
|
xinge_info:'出牌阶段限一次。你可以将一张手牌交给一名其他角色。',
|
||||||
xinge_append:'<span class="text" style="font-family: yuanli">咕咕咕。</span>',
|
xinge_append:'<span class="text" style="font-family: yuanli">咕咕咕。</span>',
|
||||||
|
|
||||||
_yongjian_zengyu:'赠予',
|
_gifting:'赠予',
|
||||||
_yongjian_zengyu_info:'出牌阶段,你可将一张拥有“赠”标签的手牌区装备牌置于一名其他角色的装备区内,或将一张拥有“赠”标签的手牌区非装备牌正面朝上交给一名其他角色。',
|
_gifting_info:'出牌阶段,你可将一张拥有“赠”标签的手牌区装备牌置于一名其他角色的装备区内,或将一张拥有“赠”标签的手牌区非装备牌正面朝上交给一名其他角色。',
|
||||||
},
|
},
|
||||||
list:[
|
list:[
|
||||||
['spade',1,'guaguliaodu'],
|
['spade',1,'guaguliaodu'],
|
||||||
|
|
|
@ -276,7 +276,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){
|
||||||
enable:function(){
|
enable:function(){
|
||||||
return game.countPlayer()>2;
|
return game.countPlayer()>2;
|
||||||
},
|
},
|
||||||
chongzhu:function(){
|
recastable:function(){
|
||||||
return game.countPlayer()<=2;
|
return game.countPlayer()<=2;
|
||||||
},
|
},
|
||||||
multicheck:function(card,player){
|
multicheck:function(card,player){
|
||||||
|
|
|
@ -5,7 +5,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){
|
||||||
card:{
|
card:{
|
||||||
pozhenjue:{
|
pozhenjue:{
|
||||||
type:'zhenfa',
|
type:'zhenfa',
|
||||||
chongzhu:true,
|
recastable:true,
|
||||||
enable:true,
|
enable:true,
|
||||||
notarget:true,
|
notarget:true,
|
||||||
content:function(){
|
content:function(){
|
||||||
|
@ -25,7 +25,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){
|
||||||
},
|
},
|
||||||
changshezhen:{
|
changshezhen:{
|
||||||
type:'zhenfa',
|
type:'zhenfa',
|
||||||
chongzhu:true,
|
recastable:true,
|
||||||
enable:function(card,player){
|
enable:function(card,player){
|
||||||
if(player.inline()) return true;
|
if(player.inline()) return true;
|
||||||
if(player.identity=='unknown'||player.identity=='ye') return false;
|
if(player.identity=='unknown'||player.identity=='ye') return false;
|
||||||
|
@ -68,7 +68,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){
|
||||||
},
|
},
|
||||||
tianfuzhen:{
|
tianfuzhen:{
|
||||||
type:'zhenfa',
|
type:'zhenfa',
|
||||||
chongzhu:true,
|
recastable:true,
|
||||||
enable:function(){
|
enable:function(){
|
||||||
return game.hasPlayer(function(current){
|
return game.hasPlayer(function(current){
|
||||||
return current.isMajor();
|
return current.isMajor();
|
||||||
|
@ -94,7 +94,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){
|
||||||
},
|
},
|
||||||
dizaizhen:{
|
dizaizhen:{
|
||||||
type:'zhenfa',
|
type:'zhenfa',
|
||||||
chongzhu:true,
|
recastable:true,
|
||||||
enable:function(){
|
enable:function(){
|
||||||
return game.hasPlayer(function(current){
|
return game.hasPlayer(function(current){
|
||||||
return current.isNotMajor();
|
return current.isNotMajor();
|
||||||
|
@ -121,7 +121,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){
|
||||||
},
|
},
|
||||||
fengyangzhen:{
|
fengyangzhen:{
|
||||||
type:'zhenfa',
|
type:'zhenfa',
|
||||||
chongzhu:true,
|
recastable:true,
|
||||||
enable:true,
|
enable:true,
|
||||||
filterTarget:function(card,player,target){
|
filterTarget:function(card,player,target){
|
||||||
return target.sieged();
|
return target.sieged();
|
||||||
|
@ -142,7 +142,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){
|
||||||
},
|
},
|
||||||
yunchuizhen:{
|
yunchuizhen:{
|
||||||
type:'zhenfa',
|
type:'zhenfa',
|
||||||
chongzhu:true,
|
recastable:true,
|
||||||
enable:true,
|
enable:true,
|
||||||
filterTarget:function(card,player,target){
|
filterTarget:function(card,player,target){
|
||||||
return target.siege();
|
return target.siege();
|
||||||
|
@ -163,7 +163,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){
|
||||||
},
|
},
|
||||||
qixingzhen:{
|
qixingzhen:{
|
||||||
type:'zhenfa',
|
type:'zhenfa',
|
||||||
chongzhu:true,
|
recastable:true,
|
||||||
enable:function(card,player){
|
enable:function(card,player){
|
||||||
return player.siege()||player.sieged();
|
return player.siege()||player.sieged();
|
||||||
},
|
},
|
||||||
|
@ -202,7 +202,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){
|
||||||
},
|
},
|
||||||
shepanzhen:{
|
shepanzhen:{
|
||||||
type:'zhenfa',
|
type:'zhenfa',
|
||||||
chongzhu:true,
|
recastable:true,
|
||||||
enable:function(card,player){
|
enable:function(card,player){
|
||||||
if(player.identity=='unknown'||player.identity=='ye') return false;
|
if(player.identity=='unknown'||player.identity=='ye') return false;
|
||||||
if(get.population(player.identity)<=1) return false;
|
if(get.population(player.identity)<=1) return false;
|
||||||
|
@ -231,7 +231,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){
|
||||||
},
|
},
|
||||||
longfeizhen:{
|
longfeizhen:{
|
||||||
type:'zhenfa',
|
type:'zhenfa',
|
||||||
chongzhu:true,
|
recastable:true,
|
||||||
enable:function(card,player){
|
enable:function(card,player){
|
||||||
return player.next.siege(player);
|
return player.next.siege(player);
|
||||||
},
|
},
|
||||||
|
@ -261,7 +261,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){
|
||||||
},
|
},
|
||||||
huyizhen:{
|
huyizhen:{
|
||||||
type:'zhenfa',
|
type:'zhenfa',
|
||||||
chongzhu:true,
|
recastable:true,
|
||||||
enable:function(card,player){
|
enable:function(card,player){
|
||||||
return player.siege(player.next)||player.siege(player.previous);
|
return player.siege(player.next)||player.siege(player.previous);
|
||||||
},
|
},
|
||||||
|
@ -309,7 +309,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){
|
||||||
},
|
},
|
||||||
niaoxiangzhen:{
|
niaoxiangzhen:{
|
||||||
type:'zhenfa',
|
type:'zhenfa',
|
||||||
chongzhu:true,
|
recastable:true,
|
||||||
enable:true,
|
enable:true,
|
||||||
filterTarget:function(card,player,target){
|
filterTarget:function(card,player,target){
|
||||||
if(player.identity==target.identity) return false;
|
if(player.identity==target.identity) return false;
|
||||||
|
|
|
@ -4262,25 +4262,12 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
asara_yingwei:{
|
asara_yingwei:{
|
||||||
trigger:{player:'useCard1'},
|
trigger:{player:'useCardBegin'},
|
||||||
forced:true,
|
forced:true,
|
||||||
filter:function(event,player){
|
filter:event=>event.card.isCard&&event.cards.some(value=>value.hasGaintag('asara_yingwei')),
|
||||||
return player.getHistory('lose',function(evt){
|
content:()=>{
|
||||||
if(evt.getParent()!=event) return false;
|
trigger.forceYingbian=true;
|
||||||
for(var i in evt.gaintag_map){
|
|
||||||
if(evt.gaintag_map[i].contains('asara_yingwei')) return true;
|
|
||||||
}
|
}
|
||||||
return false;
|
|
||||||
}).length>0;
|
|
||||||
},
|
|
||||||
content:function(){
|
|
||||||
if(!trigger.card.yingbian){
|
|
||||||
trigger.card.yingbian=true;
|
|
||||||
var info=get.info(trigger.card);
|
|
||||||
if(info&&info.yingbian) info.yingbian(trigger);
|
|
||||||
player.addTempSkill('yingbian_changeTarget');
|
|
||||||
}
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
yukito_kongwu:{
|
yukito_kongwu:{
|
||||||
enable:'phaseUse',
|
enable:'phaseUse',
|
||||||
|
|
|
@ -1010,9 +1010,13 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
||||||
else if(lib.translate[name+'_info']){
|
else if(lib.translate[name+'_info']){
|
||||||
str+=(''+lib.translate[name+'_info']+'|');
|
str+=(''+lib.translate[name+'_info']+'|');
|
||||||
}
|
}
|
||||||
if(lib.card[name].yingbian_prompt&&get.is.yingbian(node)){
|
if(get.is.yingbianConditional(node)){
|
||||||
if(typeof lib.card[name].yingbian_prompt=='function') str+=('应变:'+lib.card[name].yingbian_prompt(node)+'|');
|
const yingbianEffects=get.yingbianEffects(node);
|
||||||
else str+=('应变:'+lib.card[name].yingbian_prompt+'|');
|
if(!yingbianEffects.length){
|
||||||
|
const defaultYingbianEffect=get.defaultYingbianEffect(node);
|
||||||
|
if(lib.yingbian.prompt.has(defaultYingbianEffect)) yingbianEffects.push(defaultYingbianEffect);
|
||||||
|
}
|
||||||
|
if(yingbianEffects.length) str+=`应变:${yingbianEffects.map(value=>lib.yingbian.prompt.get(value)).join(';')}|`;
|
||||||
}
|
}
|
||||||
return str;
|
return str;
|
||||||
},
|
},
|
||||||
|
@ -2337,200 +2341,31 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
||||||
group:'hina_shenshi_yingbian',
|
group:'hina_shenshi_yingbian',
|
||||||
},
|
},
|
||||||
hina_shenshi_yingbian:{
|
hina_shenshi_yingbian:{
|
||||||
trigger:{player:'useCard1'},
|
trigger:{player:'useCardBegin'},
|
||||||
forced:true,
|
forced:true,
|
||||||
filter:function(event,player){
|
filter:event=>event.card.isCard&&event.cards.some(value=>value.hasGaintag('hina_shenshi')),
|
||||||
return event.cards.length==1&&!event.card.yingbian&&player.hasHistory('lose',function(evt){
|
content:()=>{
|
||||||
if(evt.getParent()!=event) return false;
|
if(!Array.isArray(trigger.temporaryYingbian)) trigger.temporaryYingbian=[];
|
||||||
for(var i in evt.gaintag_map){
|
trigger.temporaryYingbian.add('force');
|
||||||
if(evt.gaintag_map[i].contains('hina_shenshi')) return true;
|
trigger.temporaryYingbian.addArray(get.yingbianEffects());
|
||||||
}
|
}
|
||||||
return false;
|
|
||||||
})&&Array.isArray(get.info(event.card).yingbian_tags);
|
|
||||||
},
|
|
||||||
content:function(){
|
|
||||||
if(!trigger.card.yingbian){
|
|
||||||
trigger.card.yingbian=true;
|
|
||||||
var info=get.info(trigger.card);
|
|
||||||
trigger.card.cardtags=info.yingbian_tags.map(function(i){
|
|
||||||
return 'yingbian_'+i;
|
|
||||||
});
|
|
||||||
if(info&&info.yingbian) info.yingbian(trigger);
|
|
||||||
player.addTempSkill('yingbian_changeTarget');
|
|
||||||
}
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
hina_xingzhi:{
|
hina_xingzhi:{
|
||||||
groupSkill:true,
|
groupSkill:true,
|
||||||
trigger:{player:'useCard1'},
|
trigger:{player:'useCard1'},
|
||||||
usable:1,
|
usable:1,
|
||||||
filter:function(event,player){
|
filter:(event,player)=>player.group=='key'&&!event.card.yingbian&&lib.yingbian.condition.complex.has('zhuzhan'),
|
||||||
return player.group=='key'&&!event.card.yingbian&&Array.isArray(get.info(event.card).yingbian_tags);
|
content:()=>{
|
||||||
},
|
|
||||||
content:function(){
|
|
||||||
'step 0'
|
'step 0'
|
||||||
var info=get.info(trigger.card);
|
trigger.afterYingbianZhuzhan=event=>event.zhuzhanresult.draw(2);
|
||||||
trigger.card.cardtags=info.yingbian_tags.map(function(i){
|
lib.yingbian.condition.complex.get('zhuzhan')(trigger);
|
||||||
return 'yingbian_'+i;
|
|
||||||
});
|
|
||||||
event.card=trigger.card;
|
|
||||||
event._global_waiting=true;
|
|
||||||
event.send=function(player,card,source,targets,id,id2,skillState){
|
|
||||||
if(skillState){
|
|
||||||
player.applySkills(skillState);
|
|
||||||
}
|
|
||||||
var type=get.type2(card);
|
|
||||||
var str=get.translation(source);
|
|
||||||
if(targets&&targets.length){
|
|
||||||
str+='对';
|
|
||||||
str+=get.translation(targets);
|
|
||||||
}
|
|
||||||
str+='使用了';
|
|
||||||
var next=player.chooseCard({
|
|
||||||
filterCard:function(card){
|
|
||||||
return get.type2(card)==type&&lib.filter.cardDiscardable.apply(this,arguments);
|
|
||||||
},
|
|
||||||
prompt:str+=(get.translation(card)+',是否弃置一张'+get.translation(type)+'为其助战?'),
|
|
||||||
position:'h',
|
|
||||||
_global_waiting:true,
|
|
||||||
id:id,
|
|
||||||
id2:id2,
|
|
||||||
ai:function(cardx){
|
|
||||||
var info=get.info(card),num=0;
|
|
||||||
if(info&&info.ai&&info.ai.yingbian){
|
|
||||||
var ai=info.ai.yingbian(card,source,targets,player);
|
|
||||||
if(ai) num=ai;
|
|
||||||
}
|
|
||||||
if(get.attitude(player,source)<=0) return 0;
|
|
||||||
return Math.max(ai,6)-get.value(cardx);
|
|
||||||
},
|
|
||||||
});
|
|
||||||
if(game.online){
|
|
||||||
_status.event._resultid=id;
|
|
||||||
game.resume();
|
|
||||||
}
|
|
||||||
};
|
|
||||||
'step 1'
|
'step 1'
|
||||||
var type=get.type2(card);
|
if(!result.bool) return;
|
||||||
var list=game.filterPlayer(function(current){
|
|
||||||
if(current==player) return false;
|
|
||||||
if(!current.countCards('h')) return false;
|
|
||||||
return _status.connectMode||current.countCards('h',function(cardx){
|
|
||||||
return get.type2(cardx)==type;
|
|
||||||
})
|
|
||||||
});
|
|
||||||
event.list=list;
|
|
||||||
event.id=get.id();
|
|
||||||
list.sort(function(a,b){
|
|
||||||
return get.distance(event.source,a,'absolute')-get.distance(event.source,b,'absolute');
|
|
||||||
});
|
|
||||||
'step 2'
|
|
||||||
if(event.list.length==0){
|
|
||||||
event.finish();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
else if(_status.connectMode&&(event.list[0].isOnline()||event.list[0]==game.me)){
|
|
||||||
event.goto(4);
|
|
||||||
}
|
|
||||||
else{
|
|
||||||
event.current=event.list.shift();
|
|
||||||
event.send(event.current,event.card,player,trigger.targets,event.id,trigger.parent.id);
|
|
||||||
}
|
|
||||||
'step 3'
|
|
||||||
if(result.bool){
|
|
||||||
event.zhuzhanresult=event.current;
|
|
||||||
event.zhuzhanresult2=result;
|
|
||||||
if(event.current!=game.me) game.delayx();
|
|
||||||
event.goto(8);
|
|
||||||
}
|
|
||||||
else{
|
|
||||||
event.goto(2);
|
|
||||||
}
|
|
||||||
'step 4'
|
|
||||||
var id=event.id;
|
|
||||||
var sendback=function(result,player){
|
|
||||||
if(result&&result.id==id&&!event.zhuzhanresult&&result.bool){
|
|
||||||
event.zhuzhanresult=player;
|
|
||||||
event.zhuzhanresult2=result;
|
|
||||||
game.broadcast('cancel',id);
|
|
||||||
if(_status.event.id==id&&_status.event.name=='chooseCard'&&_status.paused){
|
|
||||||
return (function(){
|
|
||||||
event.resultOL=_status.event.resultOL;
|
|
||||||
ui.click.cancel();
|
|
||||||
if(ui.confirm) ui.confirm.close();
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else{
|
|
||||||
if(_status.event.id==id&&_status.event.name=='chooseCard'&&_status.paused){
|
|
||||||
return (function(){
|
|
||||||
event.resultOL=_status.event.resultOL;
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
var withme=false;
|
|
||||||
var withol=false;
|
|
||||||
var list=event.list;
|
|
||||||
for(var i=0;i<list.length;i++){
|
|
||||||
if(list[i].isOnline()){
|
|
||||||
withol=true;
|
|
||||||
list[i].wait(sendback);
|
|
||||||
list[i].send(event.send,list[i],event.card,player,trigger.targets,event.id,trigger.parent.id,get.skillState(list[i]));
|
|
||||||
list.splice(i--,1);
|
|
||||||
}
|
|
||||||
else if(list[i]==game.me){
|
|
||||||
withme=true;
|
|
||||||
event.send(list[i],event.card,player,trigger.targets,event.id,trigger.parent.id);
|
|
||||||
list.splice(i--,1);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if(!withme){
|
|
||||||
event.goto(6);
|
|
||||||
}
|
|
||||||
if(_status.connectMode){
|
|
||||||
if(withme||withol){
|
|
||||||
for(var i=0;i<game.players.length;i++){
|
|
||||||
if(game.players[i]!=player) game.players[i].showTimer();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
event.withol=withol;
|
|
||||||
'step 5'
|
|
||||||
if(result&&result.bool&&!event.zhuzhanresult){
|
|
||||||
game.broadcast('cancel',event.id);
|
|
||||||
event.zhuzhanresult=game.me;
|
|
||||||
event.zhuzhanresult2=result;
|
|
||||||
}
|
|
||||||
'step 6'
|
|
||||||
if(event.withol&&!event.resultOL){
|
|
||||||
game.pause();
|
|
||||||
}
|
|
||||||
'step 7'
|
|
||||||
for(var i=0;i<game.players.length;i++){
|
|
||||||
game.players[i].hideTimer();
|
|
||||||
}
|
|
||||||
'step 8'
|
|
||||||
if(event.zhuzhanresult){
|
|
||||||
var target=event.zhuzhanresult;
|
|
||||||
target.line(player,'green');
|
|
||||||
target.discard(event.zhuzhanresult2.cards).discarder=target;
|
|
||||||
target.draw(2);
|
|
||||||
target.popup('助战','wood');
|
|
||||||
game.log(target,'响应了',player,'发起的助战');
|
|
||||||
target.addExpose(0.2);
|
|
||||||
}
|
|
||||||
else event.finish();
|
|
||||||
'step 9'
|
|
||||||
if(!trigger.card.yingbian){
|
|
||||||
trigger.card.yingbian=true;
|
trigger.card.yingbian=true;
|
||||||
var info=get.info(trigger.card);
|
lib.yingbian.effect.forEach(value=>game.yingbianEffect(trigger,value));
|
||||||
if(info&&info.yingbian) info.yingbian(trigger);
|
|
||||||
player.addTempSkill('yingbian_changeTarget');
|
player.addTempSkill('yingbian_changeTarget');
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
},
|
|
||||||
yingba:{
|
yingba:{
|
||||||
audio:2,
|
audio:2,
|
||||||
enable:'phaseUse',
|
enable:'phaseUse',
|
||||||
|
|
|
@ -3647,7 +3647,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
||||||
result:{player:1},
|
result:{player:1},
|
||||||
effect:{
|
effect:{
|
||||||
target:function(card,player,target){
|
target:function(card,player,target){
|
||||||
if(card&&get.type(card)=='equip'&&_status.event.skill=='_yongjian_zengyu') return 0;
|
if(card&&get.type(card)=='equip'&&_status.event.skill=='_gifting') return 0;
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|
|
@ -6147,7 +6147,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
},
|
},
|
||||||
chongzhu:true,
|
recastable:true,
|
||||||
selectTarget:2,
|
selectTarget:2,
|
||||||
postAi:()=>true,
|
postAi:()=>true,
|
||||||
contentBefore:function(){
|
contentBefore:function(){
|
||||||
|
|
337
game/game.js
337
game/game.js
|
@ -29,7 +29,7 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
var _status={
|
const _status={
|
||||||
paused:false,
|
paused:false,
|
||||||
paused2:false,
|
paused2:false,
|
||||||
paused3:false,
|
paused3:false,
|
||||||
|
@ -59,12 +59,13 @@
|
||||||
yingbian_kongchao:[],
|
yingbian_kongchao:[],
|
||||||
yingbian_fujia:[],
|
yingbian_fujia:[],
|
||||||
yingbian_canqu:[],
|
yingbian_canqu:[],
|
||||||
|
yingbian_force:[]
|
||||||
},
|
},
|
||||||
renku:[],
|
renku:[],
|
||||||
prehidden_skills:[],
|
prehidden_skills:[],
|
||||||
postReconnect:{},
|
postReconnect:{},
|
||||||
};
|
};
|
||||||
var lib={
|
const lib={
|
||||||
configprefix:'noname_0.9_',
|
configprefix:'noname_0.9_',
|
||||||
versionOL:27,
|
versionOL:27,
|
||||||
updateURLS:{
|
updateURLS:{
|
||||||
|
@ -149,6 +150,176 @@
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
yingbian:{
|
||||||
|
condition:{
|
||||||
|
color:new Map([
|
||||||
|
['zhuzhan','wood'],
|
||||||
|
['kongchao','soil'],
|
||||||
|
['fujia','orange'],
|
||||||
|
['canqu','fire'],
|
||||||
|
['force','metal']
|
||||||
|
]),
|
||||||
|
complex:new Map([
|
||||||
|
['zhuzhan',function(event){
|
||||||
|
const yingbianZhuzhan=game.createEvent('yingbianZhuzhan');
|
||||||
|
yingbianZhuzhan.player=event.player;
|
||||||
|
yingbianZhuzhan.card=event.card;
|
||||||
|
yingbianZhuzhan._trigger=event;
|
||||||
|
yingbianZhuzhan.afterYingbianZhuzhan=event.afterYingbianZhuzhan;
|
||||||
|
yingbianZhuzhan.setContent(()=>{
|
||||||
|
'step 0'
|
||||||
|
event._global_waiting=true;
|
||||||
|
event.send=(player,card,source,targets,id,id2,skillState)=>{
|
||||||
|
if(skillState) player.applySkills(skillState);
|
||||||
|
var type=get.type2(card),str=get.translation(source);
|
||||||
|
if(targets&&targets.length) str+=`对${get.translation(targets)}`;
|
||||||
|
str+=`使用了${get.translation(card)},是否弃置一张${get.translation(type)}为其助战?`;
|
||||||
|
player.chooseCard({
|
||||||
|
filterCard:(card,player)=>get.type2(card)==type&&lib.filter.cardDiscardable(card,player),
|
||||||
|
prompt:str,
|
||||||
|
position:'h',
|
||||||
|
_global_waiting:true,
|
||||||
|
id:id,
|
||||||
|
id2:id2,
|
||||||
|
ai:cardx=>{
|
||||||
|
var info=get.info(card);
|
||||||
|
if(info&&info.ai&&info.ai.yingbian){
|
||||||
|
var ai=info.ai.yingbian(card,source,targets,player);
|
||||||
|
if(!ai) return 0;
|
||||||
|
return ai-get.value(cardx);
|
||||||
|
}
|
||||||
|
else if(get.attitude(player,source)<=0) return 0;
|
||||||
|
return 5-get.value(cardx);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
if(!game.online) return;
|
||||||
|
_status.event._resultid=id;
|
||||||
|
game.resume();
|
||||||
|
};
|
||||||
|
'step 1'
|
||||||
|
var type=get.type2(card);
|
||||||
|
event.list=game.filterPlayer(current=>current!=player&¤t.countCards('h')&&(_status.connectMode||current.hasCard(cardx=>get.type2(cardx)==type,'h'))).sortBySeat(_status.currentPhase||player);
|
||||||
|
event.id=get.id();
|
||||||
|
'step 2'
|
||||||
|
if(!event.list.length) event.finish();
|
||||||
|
else if(_status.connectMode&&(event.list[0].isOnline()||event.list[0]==game.me)) event.goto(4);
|
||||||
|
else event.send(event.current=event.list.shift(),event.card,player,trigger.targets,event.id,trigger.parent.id);
|
||||||
|
'step 3'
|
||||||
|
if(result.bool){
|
||||||
|
event.zhuzhanresult=event.current;
|
||||||
|
event.zhuzhanresult2=result;
|
||||||
|
if(event.current!=game.me) game.delayx();
|
||||||
|
event.goto(8);
|
||||||
|
}
|
||||||
|
else event.goto(2);
|
||||||
|
'step 4'
|
||||||
|
var id=event.id,sendback=(result,player)=>{
|
||||||
|
if(result&&result.id==id&&!event.zhuzhanresult&&result.bool){
|
||||||
|
event.zhuzhanresult=player;
|
||||||
|
event.zhuzhanresult2=result;
|
||||||
|
game.broadcast('cancel',id);
|
||||||
|
if(_status.event.id==id&&_status.event.name=='chooseCard'&&_status.paused) return ()=>{
|
||||||
|
event.resultOL=_status.event.resultOL;
|
||||||
|
ui.click.cancel();
|
||||||
|
if(ui.confirm) ui.confirm.close();
|
||||||
|
};
|
||||||
|
}
|
||||||
|
else if(_status.event.id==id&&_status.event.name=='chooseCard'&&_status.paused) return ()=>event.resultOL=_status.event.resultOL;
|
||||||
|
},withme=false,withol=false,list=event.list;
|
||||||
|
for(var i=0;i<list.length;i++){
|
||||||
|
var current=list[i];
|
||||||
|
if(current.isOnline()){
|
||||||
|
withol=true;
|
||||||
|
current.wait(sendback);
|
||||||
|
current.send(event.send,current,event.card,player,trigger.targets,event.id,trigger.parent.id,get.skillState(current));
|
||||||
|
list.splice(i--,1);
|
||||||
|
}
|
||||||
|
else if(current==game.me){
|
||||||
|
withme=true;
|
||||||
|
event.send(current,event.card,player,trigger.targets,event.id,trigger.parent.id);
|
||||||
|
list.splice(i--,1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if(!withme) event.goto(6);
|
||||||
|
if(_status.connectMode&&(withme||withol)) game.players.forEach(value=>{
|
||||||
|
if(value!=player) value.showTimer();
|
||||||
|
});
|
||||||
|
event.withol=withol;
|
||||||
|
'step 5'
|
||||||
|
if(!result||!result.bool||event.zhuzhanresult) return;
|
||||||
|
game.broadcast('cancel',event.id);
|
||||||
|
event.zhuzhanresult=game.me;
|
||||||
|
event.zhuzhanresult2=result;
|
||||||
|
'step 6'
|
||||||
|
if(event.withol&&!event.resultOL) game.pause();
|
||||||
|
'step 7'
|
||||||
|
game.players.forEach(value=>value.hideTimer());
|
||||||
|
'step 8'
|
||||||
|
if(event.zhuzhanresult){
|
||||||
|
var target=event.zhuzhanresult;
|
||||||
|
target.line(player,'green');
|
||||||
|
target.discard(event.zhuzhanresult2.cards).discarder=target;
|
||||||
|
if(typeof event.afterYingbianZhuzhan=='function') event.afterYingbianZhuzhan(event,trigger);
|
||||||
|
var yingbianCondition=event.name.slice(8).toLowerCase(),yingbianConditionTag=`yingbian_${yingbianCondition}_tag`;
|
||||||
|
target.popup(yingbianConditionTag,lib.yingbian.condition.color.get(yingbianCondition));
|
||||||
|
game.log(target,'响应了',player,'发起的',yingbianConditionTag);
|
||||||
|
target.addExpose(0.2);
|
||||||
|
event.result={
|
||||||
|
bool:true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else event.result={
|
||||||
|
bool:false
|
||||||
|
};
|
||||||
|
});
|
||||||
|
yingbianZhuzhan._args=Array.from(arguments);
|
||||||
|
return yingbianZhuzhan;
|
||||||
|
}]
|
||||||
|
]),
|
||||||
|
simple:new Map([
|
||||||
|
['kongchao',event=>!event.player.countCards('h')],
|
||||||
|
['fujia',event=>event.player.isMaxHandcard()],
|
||||||
|
['canqu',event=>event.player.getHp()==1]
|
||||||
|
])
|
||||||
|
},
|
||||||
|
effect:new Map([
|
||||||
|
['add',()=>{
|
||||||
|
trigger.yingbian_addTarget=true;
|
||||||
|
}],
|
||||||
|
['remove',()=>{
|
||||||
|
trigger.yingbian_removeTarget=true;
|
||||||
|
}],
|
||||||
|
['damage',()=>{
|
||||||
|
if(typeof trigger.baseDamage!='number') trigger.baseDamage=1;
|
||||||
|
trigger.baseDamage++;
|
||||||
|
game.log(card,'的伤害值基数+1');
|
||||||
|
}],
|
||||||
|
['draw',()=>{
|
||||||
|
player.draw();
|
||||||
|
}],
|
||||||
|
['gain',()=>{
|
||||||
|
const cardx=trigger.respondTo;
|
||||||
|
if(cardx&&cardx[1]&&cardx[1].cards&&cardx[1].cards.filterInD('od').length) player.gain(cardx[1].cards.filterInD('od'),'gain2');
|
||||||
|
}],
|
||||||
|
['hit',()=>{
|
||||||
|
trigger.directHit.addArray(game.players).addArray(game.dead);
|
||||||
|
game.log(card,'不可被响应');
|
||||||
|
}],
|
||||||
|
['all',()=>{
|
||||||
|
card.yingbian_all=true;
|
||||||
|
game.log(card,'执行所有选项');
|
||||||
|
}]
|
||||||
|
]),
|
||||||
|
prompt:new Map([
|
||||||
|
['add','当你使用此牌选择目标后,你可为此牌增加一个目标'],
|
||||||
|
['remove','当你使用此牌选择目标后,你可为此牌减少一个目标'],
|
||||||
|
['damage','此牌的伤害值基数+1'],
|
||||||
|
['draw','当你声明使用此牌时,你摸一张牌'],
|
||||||
|
['gain','当你声明使用此牌时,你获得此牌响应的目标牌'],
|
||||||
|
['hit','此牌不可被响应'],
|
||||||
|
['all','此牌的效果改为依次执行所有选项']
|
||||||
|
])
|
||||||
|
},
|
||||||
characterDialogGroup:{
|
characterDialogGroup:{
|
||||||
'收藏':function(name,capt){
|
'收藏':function(name,capt){
|
||||||
return lib.config.favouriteCharacter.contains(name)?capt:null;
|
return lib.config.favouriteCharacter.contains(name)?capt:null;
|
||||||
|
@ -10618,7 +10789,7 @@
|
||||||
eight:'八',
|
eight:'八',
|
||||||
nine:'九',
|
nine:'九',
|
||||||
ten:'十',
|
ten:'十',
|
||||||
_chongzhu:'重铸',
|
_recasting:'重铸',
|
||||||
_lianhuan:'连环',
|
_lianhuan:'连环',
|
||||||
_lianhuan2:'连环',
|
_lianhuan2:'连环',
|
||||||
_kamisha:'神杀',
|
_kamisha:'神杀',
|
||||||
|
@ -28484,8 +28655,8 @@
|
||||||
if(!mod) return false;
|
if(!mod) return false;
|
||||||
if(strict&&mod=='unchanged'){
|
if(strict&&mod=='unchanged'){
|
||||||
if(get.position(card)!='h') return false;
|
if(get.position(card)!='h') return false;
|
||||||
const info=get.info(card);
|
const info=get.info(card),recastable=info.recastable||info.chongzhu;
|
||||||
return typeof info.chongzhu=='function'?info.chongzhu(_status.event,player):info.chongzhu;
|
return Boolean(typeof recastable=='function'?recastable(_status.event,player):recastable);
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
},
|
},
|
||||||
|
@ -30109,18 +30280,17 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
_chongzhu:{
|
_recasting:{
|
||||||
enable:'phaseUse',
|
enable:'phaseUse',
|
||||||
logv:false,
|
logv:false,
|
||||||
visible:true,
|
|
||||||
prompt:'将要重铸的牌置入弃牌堆并摸一张牌',
|
prompt:'将要重铸的牌置入弃牌堆并摸一张牌',
|
||||||
filter:(event,player)=>player.hasCard(card=>lib.skill._chongzhu.filterCard(card,player),'he'),
|
filter:(event,player)=>player.hasCard(card=>lib.skill._recasting.filterCard(card,player),lib.skill._recasting.position),
|
||||||
position:'he',
|
position:'he',
|
||||||
filterCard:(card,player)=>player.canRecast(card,null,true),
|
filterCard:(card,player)=>player.canRecast(card,null,true),
|
||||||
discard:false,
|
discard:false,
|
||||||
lose:false,
|
lose:false,
|
||||||
delay:false,
|
delay:false,
|
||||||
content:function(){
|
content:()=>{
|
||||||
player.recast(cards,null,(player,cards)=>{
|
player.recast(cards,null,(player,cards)=>{
|
||||||
var numberOfCardsToDraw=cards.length;
|
var numberOfCardsToDraw=cards.length;
|
||||||
cards.forEach(value=>{
|
cards.forEach(value=>{
|
||||||
|
@ -30204,6 +30374,71 @@
|
||||||
player.link();
|
player.link();
|
||||||
if(trigger.getParent().notLink()) trigger.getParent().lianhuanable=true;
|
if(trigger.getParent().notLink()) trigger.getParent().lianhuanable=true;
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
//Deprecated skills
|
||||||
|
_chongzhu:{
|
||||||
|
get filter(){
|
||||||
|
return lib.skill._recasting.filter;
|
||||||
|
},
|
||||||
|
set filter(filter){
|
||||||
|
lib.skill._recasting.filter=filter;
|
||||||
|
},
|
||||||
|
get filterCard(){
|
||||||
|
return lib.skill._recasting.filterCard;
|
||||||
|
},
|
||||||
|
set filterCard(filterCard){
|
||||||
|
lib.skill._recasting.filterCard=filterCard;
|
||||||
|
},
|
||||||
|
get content(){
|
||||||
|
return lib.skill._recasting.content;
|
||||||
|
},
|
||||||
|
set content(content){
|
||||||
|
lib.skill._recasting.content=content;
|
||||||
|
},
|
||||||
|
get ai(){
|
||||||
|
return lib.skill._recasting.ai;
|
||||||
|
},
|
||||||
|
set ai(ai){
|
||||||
|
lib.skill._recasting.ai=ai;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
_yongjian_zengyu:{
|
||||||
|
get filter(){
|
||||||
|
return lib.skill._gifting.filter;
|
||||||
|
},
|
||||||
|
set filter(filter){
|
||||||
|
lib.skill._gifting.filter=filter;
|
||||||
|
},
|
||||||
|
get filterCard(){
|
||||||
|
return lib.skill._gifting.filterCard;
|
||||||
|
},
|
||||||
|
set filterCard(filterCard){
|
||||||
|
lib.skill._gifting.filterCard=filterCard;
|
||||||
|
},
|
||||||
|
get filterTarget(){
|
||||||
|
return lib.skill._gifting.filterTarget;
|
||||||
|
},
|
||||||
|
set filterTarget(filterTarget){
|
||||||
|
lib.skill._gifting.filterTarget=filterTarget;
|
||||||
|
},
|
||||||
|
get check(){
|
||||||
|
return lib.skill._gifting.check;
|
||||||
|
},
|
||||||
|
set check(check){
|
||||||
|
lib.skill._gifting.check=check;
|
||||||
|
},
|
||||||
|
get content(){
|
||||||
|
return lib.skill._gifting.content;
|
||||||
|
},
|
||||||
|
set content(content){
|
||||||
|
lib.skill._gifting.content=content;
|
||||||
|
},
|
||||||
|
get ai(){
|
||||||
|
return lib.skill._gifting.ai;
|
||||||
|
},
|
||||||
|
set ai(ai){
|
||||||
|
lib.skill._gifting.ai=ai;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
character:{},
|
character:{},
|
||||||
|
@ -31325,7 +31560,23 @@
|
||||||
'妹子,交个朋友吧',
|
'妹子,交个朋友吧',
|
||||||
],
|
],
|
||||||
};
|
};
|
||||||
var game={
|
const game={
|
||||||
|
//Yingbian
|
||||||
|
//应变
|
||||||
|
yingbianEffect:function(event,content){
|
||||||
|
const yingbianEffect=game.createEvent('yingbianEffect');
|
||||||
|
yingbianEffect.player=event.player;
|
||||||
|
yingbianEffect.card=event.card;
|
||||||
|
yingbianEffect._trigger=event;
|
||||||
|
yingbianEffect.setContent(content);
|
||||||
|
yingbianEffect._args=Array.from(arguments);
|
||||||
|
return yingbianEffect;
|
||||||
|
},
|
||||||
|
setYingbianConditionColor:(yingbianCondition,color)=>game.broadcastAll((yingbianCondition,color)=>lib.yingbian.condition.color.set(yingbianCondition,color),yingbianCondition,color),
|
||||||
|
setComplexYingbianCondition:(yingbianCondition,condition)=>game.broadcastAll((yingbianCondition,condition)=>lib.yingbian.condition.complex.set(yingbianCondition,condition),yingbianCondition,condition),
|
||||||
|
setSimpleYingbianCondition:(yingbianCondition,condition)=>game.broadcastAll((yingbianCondition,condition)=>lib.yingbian.condition.simple.set(yingbianCondition,condition),yingbianCondition,condition),
|
||||||
|
setYingbianEffect:(yingbianEffect,effect)=>game.broadcastAll((yingbianEffect,effect)=>lib.yingbian.effect.set(yingbianEffect,effect),yingbianEffect,effect),
|
||||||
|
setYingbianPrompt:(yingbian,prompt)=>game.broadcastAll((yingbian,prompt)=>lib.yingbian.prompt.set(yingbian,prompt),yingbian,prompt),
|
||||||
//Add a background music to the config option
|
//Add a background music to the config option
|
||||||
//在设置选项中添加一首背景音乐
|
//在设置选项中添加一首背景音乐
|
||||||
addBackgroundMusic:(link,musicName,aozhan)=>{
|
addBackgroundMusic:(link,musicName,aozhan)=>{
|
||||||
|
@ -38570,7 +38821,7 @@
|
||||||
shuffleNumber:0,
|
shuffleNumber:0,
|
||||||
};
|
};
|
||||||
window['b'+'ann'+'e'+'dE'+'x'+'ten'+'s'+'i'+'o'+'ns']=['\u4fa0\u4e49','\u5168\u6559\u7a0b'];
|
window['b'+'ann'+'e'+'dE'+'x'+'ten'+'s'+'i'+'o'+'ns']=['\u4fa0\u4e49','\u5168\u6559\u7a0b'];
|
||||||
var ui={
|
const ui={
|
||||||
updates:[],
|
updates:[],
|
||||||
thrown:[],
|
thrown:[],
|
||||||
touchlines:[],
|
touchlines:[],
|
||||||
|
@ -52673,7 +52924,32 @@
|
||||||
ui._recycle[key]=node;
|
ui._recycle[key]=node;
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
var get={
|
const get={
|
||||||
|
//Yingbian
|
||||||
|
//应变
|
||||||
|
//Get the Yingbian conditions (of the card)
|
||||||
|
//获取(此牌的)应变条件
|
||||||
|
yingbianConditions:card=>get.complexYingbianConditions(card).concat(get.simpleYingbianConditions(card)),
|
||||||
|
complexYingbianConditions:card=>{
|
||||||
|
const complexYingbianConditions=Array.from(lib.yingbian.condition.complex.keys());
|
||||||
|
return card?complexYingbianConditions.filter(value=>get.cardtag(card,`yingbian_${value}`)):complexYingbianConditions;
|
||||||
|
},
|
||||||
|
simpleYingbianConditions:card=>{
|
||||||
|
const simpleYingbianConditions=Array.from(lib.yingbian.condition.simple.keys())
|
||||||
|
return card?simpleYingbianConditions.filter(value=>get.cardtag(card,`yingbian_${value}`)):simpleYingbianConditions;
|
||||||
|
},
|
||||||
|
//Get the Yingbian effects (of the card)
|
||||||
|
//获取(此牌的)应变效果
|
||||||
|
yingbianEffects:card=>{
|
||||||
|
const yingbianEffects=Array.from(lib.yingbian.effect.keys());
|
||||||
|
return card?yingbianEffects.filter(value=>get.cardtag(card,`yingbian_${value}`)):yingbianEffects;
|
||||||
|
},
|
||||||
|
//Get the default Yingbian effect of the card
|
||||||
|
//获取此牌的默认应变效果
|
||||||
|
defaultYingbianEffect:card=>{
|
||||||
|
const info=get.info(card);
|
||||||
|
return info&&info.defaultYingbianEffect||null;
|
||||||
|
},
|
||||||
//优先度判断
|
//优先度判断
|
||||||
priority:function(skill){
|
priority:function(skill){
|
||||||
const info=get.info(skill);
|
const info=get.info(skill);
|
||||||
|
@ -52871,9 +53147,30 @@
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
},
|
},
|
||||||
yingbian:function(node){
|
//Check if the card has a Yingbian condition
|
||||||
return get.cardtag(node,'yingbian_zhuzhan')||get.cardtag(node,'yingbian_fujia')||get.cardtag(node,'yingbian_canqu')||get.cardtag(node,'yingbian_kongchao');
|
//检测此牌是否具有应变条件
|
||||||
|
yingbianConditional:card=>get.is.complexlyYingbianConditional(card)||get.is.simplyYingbianConditional(card),
|
||||||
|
complexlyYingbianConditional:card=>{
|
||||||
|
for(const key of lib.yingbian.condition.complex.keys()){
|
||||||
|
if(get.cardtag(card,`yingbian_${key}`)) return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
},
|
},
|
||||||
|
simplyYingbianConditional:card=>{
|
||||||
|
for(const key of lib.yingbian.condition.simple.keys()){
|
||||||
|
if(get.cardtag(card,`yingbian_${key}`)) return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
},
|
||||||
|
//Check if the card has a Yingbian effect
|
||||||
|
//检测此牌是否具有应变效果
|
||||||
|
yingbianEffective:card=>{
|
||||||
|
for(const key of lib.yingbian.effect.keys()){
|
||||||
|
if(get.cardtag(card,`yingbian_${key}`)) return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
},
|
||||||
|
yingbian:card=>get.is.yingbianConditional(card)||get.is.yingbianEffective(card),
|
||||||
emoji:function(substring){
|
emoji:function(substring){
|
||||||
if(substring){
|
if(substring){
|
||||||
var reg=new RegExp("[~#^$@%&!?%*]",'g');
|
var reg=new RegExp("[~#^$@%&!?%*]",'g');
|
||||||
|
@ -56148,9 +56445,13 @@
|
||||||
uiintro._place_text=placetext;
|
uiintro._place_text=placetext;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if(lib.card[name].yingbian_prompt&&get.is.yingbian(node.link||node)){
|
if(get.is.yingbianConditional(node.link||node)){
|
||||||
if(typeof lib.card[name].yingbian_prompt=='function') uiintro.add('<div class="text" style="font-family: yuanli">应变:'+lib.card[name].yingbian_prompt(node.link||node)+'</div>');
|
const yingbianEffects=get.yingbianEffects(node.link||node);
|
||||||
else uiintro.add('<div class="text" style="font-family: yuanli">应变:'+lib.card[name].yingbian_prompt+'</div>');
|
if(!yingbianEffects.length){
|
||||||
|
const defaultYingbianEffect=get.defaultYingbianEffect(node.link||node);
|
||||||
|
if(lib.yingbian.prompt.has(defaultYingbianEffect)) yingbianEffects.push(defaultYingbianEffect);
|
||||||
|
}
|
||||||
|
if(yingbianEffects.length) uiintro.add(`<div class="text" style="font-family: yuanli">应变:${yingbianEffects.map(value=>lib.yingbian.prompt.get(value)).join(';')}</div>`);
|
||||||
}
|
}
|
||||||
if(lib.translate[name+'_append']){
|
if(lib.translate[name+'_append']){
|
||||||
uiintro.add('<div class="text" style="display:inline">'+lib.translate[name+'_append']+'</div>');
|
uiintro.add('<div class="text" style="display:inline">'+lib.translate[name+'_append']+'</div>');
|
||||||
|
@ -57234,7 +57535,7 @@
|
||||||
return get.attitude(_status.event.player,to);
|
return get.attitude(_status.event.player,to);
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
var ai={
|
const ai={
|
||||||
basic:{
|
basic:{
|
||||||
chooseButton:function(check){
|
chooseButton:function(check){
|
||||||
var event=_status.event;
|
var event=_status.event;
|
||||||
|
|
|
@ -4536,11 +4536,13 @@ div[data-decoration="bronze"]::after{
|
||||||
right: 6px;
|
right: 6px;
|
||||||
}
|
}
|
||||||
.card .tempname {
|
.card .tempname {
|
||||||
top: 6px;
|
|
||||||
left: 6px;
|
|
||||||
font-size: 22px;
|
|
||||||
color: white !important;
|
color: white !important;
|
||||||
|
font-size: 22px;
|
||||||
|
left: 8px;
|
||||||
pointer-events: none;
|
pointer-events: none;
|
||||||
|
top: 4px;
|
||||||
|
writing-mode: vertical-rl;
|
||||||
|
-webkit-writing-mode: vertical-rl;
|
||||||
}
|
}
|
||||||
/*.card.equip1 .wunature,
|
/*.card.equip1 .wunature,
|
||||||
.card.equip3 .wunature,
|
.card.equip3 .wunature,
|
||||||
|
|
|
@ -8359,7 +8359,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
for(var i in lib.card){
|
for(var i in lib.card){
|
||||||
if(lib.card[i].subtype=='equip1') lib.card[i].chongzhu=true;
|
if(lib.card[i].subtype=='equip1') lib.card[i].recastable=true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
|
@ -480,7 +480,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
|
||||||
hhzz_toulianghuanzhu:{
|
hhzz_toulianghuanzhu:{
|
||||||
enable:true,
|
enable:true,
|
||||||
cardimage:"toulianghuanzhu",
|
cardimage:"toulianghuanzhu",
|
||||||
chongzhu:true,
|
recastable:true,
|
||||||
type:'trick',
|
type:'trick',
|
||||||
filterTarget:function(card,player,target){
|
filterTarget:function(card,player,target){
|
||||||
return target.skillH.length>0;
|
return target.skillH.length>0;
|
||||||
|
|
|
@ -583,7 +583,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
|
||||||
enable:function(event,player){
|
enable:function(event,player){
|
||||||
return player.canAddFellow();
|
return player.canAddFellow();
|
||||||
},
|
},
|
||||||
chongzhu:function(event,player){
|
recastable:function(event,player){
|
||||||
return !player.isMin()&&!player.canAddFellow();
|
return !player.isMin()&&!player.canAddFellow();
|
||||||
},
|
},
|
||||||
notarget:true,
|
notarget:true,
|
||||||
|
@ -1424,7 +1424,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
|
||||||
lib.card.list.randomSort();
|
lib.card.list.randomSort();
|
||||||
}
|
}
|
||||||
|
|
||||||
lib.skill._chongzhu.usable=3;
|
lib.skill._recasting.usable=3;
|
||||||
for(i in lib.skill){
|
for(i in lib.skill){
|
||||||
if(lib.skill[i].changeSeat){
|
if(lib.skill[i].changeSeat){
|
||||||
lib.skill[i]={};
|
lib.skill[i]={};
|
||||||
|
@ -2366,7 +2366,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
|
||||||
type:'stonecard',
|
type:'stonecard',
|
||||||
stoneact:2,
|
stoneact:2,
|
||||||
career:'priest',
|
career:'priest',
|
||||||
chongzhu:true,
|
recastable:true,
|
||||||
enable:function(event,player){
|
enable:function(event,player){
|
||||||
if(player.career!='priest') return false;
|
if(player.career!='priest') return false;
|
||||||
return !player.storage.anyingxingtai||player.storage.anyingxingtai<2;
|
return !player.storage.anyingxingtai||player.storage.anyingxingtai<2;
|
||||||
|
|
Loading…
Reference in New Issue