commit
34bb27e52e
|
@ -718,11 +718,11 @@ game.import('card',function(lib,game,ui,get,ai,_status){
|
||||||
event.finish();
|
event.finish();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if(get.is.versus()){
|
if(card.storage&&card.storage.chooseDirection||get.is.versus()){
|
||||||
player.chooseControl('顺时针','逆时针',function(event,player){
|
player.chooseControl('顺时针','逆时针',function(event,player){
|
||||||
if(player.next.side==player.side) return '逆时针';
|
if(get.event('isVersus')&&player.next.side==player.side||get.attitude(player,player.next)>get.attitude(player,player.previous)) return '逆时针';
|
||||||
return '顺时针';
|
return '顺时针';
|
||||||
}).set('prompt','选择'+get.translation(card)+'的结算方向');
|
}).set('prompt','选择'+get.translation(card)+'的结算方向').set('isVersus',get.is.versus());
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
event.goto(2);
|
event.goto(2);
|
||||||
|
|
1475
character/ddd.js
1475
character/ddd.js
File diff suppressed because it is too large
Load Diff
66
game/game.js
66
game/game.js
|
@ -18233,29 +18233,32 @@
|
||||||
},
|
},
|
||||||
moveCard:function(){
|
moveCard:function(){
|
||||||
'step 0'
|
'step 0'
|
||||||
if(!player.canMoveCard(null,event.nojudge)){
|
if(!player.canMoveCard(null,event.nojudge,event.sourceTargets,event.aimTargets,event.filter)){
|
||||||
event.finish();
|
event.finish();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
var next=player.chooseTarget(2,function(card,player,target){
|
var next=player.chooseTarget(2,function(card,player,target){
|
||||||
|
var filterCard=get.event('filter');
|
||||||
if(ui.selected.targets.length){
|
if(ui.selected.targets.length){
|
||||||
|
if(!get.event('aimTargets').includes(target)) return false;
|
||||||
var from=ui.selected.targets[0];
|
var from=ui.selected.targets[0];
|
||||||
var js=from.getCards('j');
|
var js=from.getCards('j',filterCard);
|
||||||
for(var i=0;i<js.length;i++){
|
for(var i=0;i<js.length;i++){
|
||||||
if(_status.event.nojudge) break;
|
if(_status.event.nojudge) break;
|
||||||
if(target.canAddJudge(js[i])) return true;
|
if(target.canAddJudge(js[i])) return true;
|
||||||
}
|
}
|
||||||
if(target.isMin()) return false;
|
if(target.isMin()) return false;
|
||||||
var es=from.getCards('e');
|
var es=from.getCards('e',filterCard);
|
||||||
for(var i=0;i<es.length;i++){
|
for(var i=0;i<es.length;i++){
|
||||||
if(target.canEquip(es[i])) return true;
|
if(target.canEquip(es[i])) return true;
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
|
if(!get.event('sourceTargets').includes(target)) return false;
|
||||||
var range='ej';
|
var range='ej';
|
||||||
if(_status.event.nojudge) range='e';
|
if(_status.event.nojudge) range='e';
|
||||||
return target.countCards(range)>0;
|
return target.countCards(range,filterCard)>0;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
next.set('nojudge',event.nojudge||false);
|
next.set('nojudge',event.nojudge||false);
|
||||||
|
@ -18311,6 +18314,9 @@
|
||||||
next.set('multitarget',true);
|
next.set('multitarget',true);
|
||||||
next.set('targetprompt',_status.event.targetprompt||['被移走','移动目标']);
|
next.set('targetprompt',_status.event.targetprompt||['被移走','移动目标']);
|
||||||
next.set('prompt',event.prompt||'移动场上的一张牌');
|
next.set('prompt',event.prompt||'移动场上的一张牌');
|
||||||
|
next.set('filter',event.filter);
|
||||||
|
next.set('sourceTargets',event.sourceTargets||game.filterPlayer());
|
||||||
|
next.set('aimTargets',event.aimTargets||game.filterPlayer());
|
||||||
if(event.prompt2) next.set('prompt2',event.prompt2);
|
if(event.prompt2) next.set('prompt2',event.prompt2);
|
||||||
if(event.forced) next.set('forced',true);
|
if(event.forced) next.set('forced',true);
|
||||||
'step 1'
|
'step 1'
|
||||||
|
@ -18341,6 +18347,7 @@
|
||||||
}
|
}
|
||||||
},targets[0]).set('nojudge',event.nojudge||false).set('targets0',targets[0]).set('targets1',targets[1]).set('filterButton',function(button){
|
},targets[0]).set('nojudge',event.nojudge||false).set('targets0',targets[0]).set('targets1',targets[1]).set('filterButton',function(button){
|
||||||
var targets1=_status.event.targets1;
|
var targets1=_status.event.targets1;
|
||||||
|
if(!get.event('filter')(button.link)) return false;
|
||||||
if(get.position(button.link)=='j'){
|
if(get.position(button.link)=='j'){
|
||||||
if(_status.event.nojudge) return false;
|
if(_status.event.nojudge) return false;
|
||||||
return targets1.canAddJudge(button.link);
|
return targets1.canAddJudge(button.link);
|
||||||
|
@ -18348,7 +18355,7 @@
|
||||||
else{
|
else{
|
||||||
return targets1.canEquip(button.link);
|
return targets1.canEquip(button.link);
|
||||||
}
|
}
|
||||||
});
|
}).set('filter',event.filter);
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
event.finish();
|
event.finish();
|
||||||
|
@ -24878,13 +24885,33 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
canMoveCard(withatt,nojudge){
|
canMoveCard(withatt,nojudge){
|
||||||
var player=this;
|
const player=this;
|
||||||
return game.hasPlayer(function(current){
|
const args=Array.from(arguments).slice(2);
|
||||||
var att=get.sgn(get.attitude(player,current));
|
let sourceTargets,aimTargets,filterCard;
|
||||||
|
args.forEach(arg=>{
|
||||||
|
if(get.itemtype(arg)=='players'){
|
||||||
|
if(!sourceTargets) sourceTargets=arg;
|
||||||
|
else if(!aimTargets) aimTargets=arg;
|
||||||
|
}
|
||||||
|
else if(get.itemtype(arg)=='player'){
|
||||||
|
if(!sourceTargets) sourceTargets=[arg];
|
||||||
|
else if(!aimTargets) aimTargets=[arg];
|
||||||
|
}
|
||||||
|
else if(typeof arg=='function'){
|
||||||
|
filterCard=arg;
|
||||||
|
}
|
||||||
|
else if(typeof arg=='object'&&arg){
|
||||||
|
filterCard=get.filter(arg);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
if(!sourceTargets) sourceTargets=game.filterPlayer();
|
||||||
|
if(!aimTargets) aimTargets=game.filterPlayer();
|
||||||
|
return sourceTargets.some(current=>{
|
||||||
|
const att=get.sgn(get.attitude(player,current));
|
||||||
if(!withatt||att!=0){
|
if(!withatt||att!=0){
|
||||||
var es=current.getCards('e');
|
var es=current.getCards('e',filterCard);
|
||||||
for(var i=0;i<es.length;i++){
|
for(var i=0;i<es.length;i++){
|
||||||
if(game.hasPlayer(function(current2){
|
if(aimTargets.some(current2=>{
|
||||||
if(withatt){
|
if(withatt){
|
||||||
if(get.sgn(get.value(es[i],current))!=-att) return false;
|
if(get.sgn(get.value(es[i],current))!=-att) return false;
|
||||||
var att2=get.sgn(get.attitude(player,current2));
|
var att2=get.sgn(get.attitude(player,current2));
|
||||||
|
@ -24897,7 +24924,7 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if(!nojudge&&(!withatt||att>0)){
|
if(!nojudge&&(!withatt||att>0)){
|
||||||
var js=current.getCards('j');
|
var js=current.getCards('j',filterCard);
|
||||||
for(var i=0;i<js.length;i++){
|
for(var i=0;i<js.length;i++){
|
||||||
if(game.hasPlayer(function(current2){
|
if(game.hasPlayer(function(current2){
|
||||||
if(withatt){
|
if(withatt){
|
||||||
|
@ -24919,6 +24946,14 @@
|
||||||
if(typeof arguments[i]=='boolean'){
|
if(typeof arguments[i]=='boolean'){
|
||||||
next.forced=arguments[i];
|
next.forced=arguments[i];
|
||||||
}
|
}
|
||||||
|
else if(get.itemtype(arguments[i])=='players'){
|
||||||
|
if(!next.sourceTargets) next.sourceTargets=arguments[i];
|
||||||
|
else if(!next.aimTargets) next.aimTargets=arguments[i];
|
||||||
|
}
|
||||||
|
else if(get.itemtype(arguments[i])=='player'){
|
||||||
|
if(!next.sourceTargets) next.sourceTargets=[arguments[i]];
|
||||||
|
else if(!next.aimTargets) next.aimTargets=[arguments[i]];
|
||||||
|
}
|
||||||
else if(typeof arguments[i]=='string'){
|
else if(typeof arguments[i]=='string'){
|
||||||
get.evtprompt(next,arguments[i]);
|
get.evtprompt(next,arguments[i]);
|
||||||
}
|
}
|
||||||
|
@ -24930,7 +24965,16 @@
|
||||||
next.targetprompt=arguments[i];
|
next.targetprompt=arguments[i];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else if(typeof arguments[i]=='function'){
|
||||||
|
next.filter=arguments[i];
|
||||||
|
}
|
||||||
|
else if(typeof arguments[i]=='object'&&arguments[i]){
|
||||||
|
next.filter=get.filter(arguments[i]);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
if(!next.sourceTargets) next.sourceTargets=game.filterPlayer();
|
||||||
|
if(!next.aimTargets) next.aimTargets=game.filterPlayer();
|
||||||
|
if(next.filter==undefined) next.filter=lib.filter.all;
|
||||||
next.setContent('moveCard');
|
next.setContent('moveCard');
|
||||||
next._args=Array.from(arguments);
|
next._args=Array.from(arguments);
|
||||||
return next;
|
return next;
|
||||||
|
|
Loading…
Reference in New Issue