1
0
Fork 0

Fix action effect in trash && black cards

This commit is contained in:
WEBXOSS 2016-12-04 13:27:58 +08:00
parent 9b93ad4bf1
commit d39a7c79a3
2 changed files with 38 additions and 25 deletions

View file

@ -116937,14 +116937,22 @@ var CardInfo = {
"【※】:あなたのトラッシュから白のカード1枚と黒のカード1枚を手札に加える。"
],
burstEffectTexts_zh_CN: [
"【※】:抽1张牌。"
"【※】:从你的废弃区将1张白色的卡和1张黑色的卡加入手牌。"
],
burstEffectTexts_en: [
"【※】Add 1 white card and 1 black card from your trash to your hand."
],
burstEffect: {
actionAsyn: function () {
this.player.draw(1);
var filter = function (card) {
return card.hasColor('white');
};
return this.player.pickCardAsyn(filter).callback(this,function () {
var filter = function (card) {
return card.hasColor('black');
};
return this.player.pickCardAsyn(filter);
});
}
}
},
@ -117380,7 +117388,7 @@ var CardInfo = {
"【出】あなたの手札から天使のシグニ1枚を公開するか、このシグニをトラッシュに置く。この方法で天使のシグニを公開した場合、あなたのデッキから天使のシグニ枚を探してトラッシュに置く。その後、デッキをシャッフルする。"
],
startUpEffectTexts_zh_CN: [
"【出】从你的手牌将1张<天使>SIGNI公开或将这只SIGNI放置到废弃区。通过这个方法将<天使>SIGNI公开了的场合从你的卡组中探寻1张<天使>SIGNI公开并加入手牌。之后,洗切牌组。"
"【出】从你的手牌将1张<天使>SIGNI公开或将这只SIGNI放置到废弃区。通过这个方法将<天使>SIGNI公开了的场合从你的卡组中探寻1张<天使>SIGNI放置到废弃区。之后,洗切牌组。"
],
startUpEffectTexts_en: [
"[On-Play]: Reveal 1 <Angel> SIGNI from your hand, or put this SIGNI into the trash. If you revealed an <Angel> SIGNI this way, search your deck for 1 <Angel> SIGNI and put it into the trash. Then, shuffle your deck."
@ -117390,13 +117398,15 @@ var CardInfo = {
var cards = this.player.hands.filter(function (card) {
return card.hasClass('天使');
},this);
return this.player.selectOptionalAsyn('REVEAL',cards).callback(this,function (card) {
return this.player.selectOptionalAsyn('REVEAL',cards,true).callback(this,function (card) {
if (!card) return this.trashAsyn();
return this.player.opponent.showCardsAsyn([card]).callback(this,function () {
var filter = function (card) {
return card.hasClass('天使');
};
return this.player.seekAsyn(filter,1);
return this.player.searchAsyn(filter,1).callback(this,function (cards) {
this.game.trashCards(cards);
});
});
});
}
@ -117452,7 +117462,7 @@ var CardInfo = {
var cards = this.player.hands.filter(function (card) {
return card.hasClass('天使');
},this);
return this.player.selectOptionalAsyn('REVEAL',cards).callback(this,function (card) {
return this.player.selectOptionalAsyn('REVEAL',cards,true).callback(this,function (card) {
if (!card) return this.trashAsyn();
});
}
@ -118924,7 +118934,7 @@ var CardInfo = {
action: function (set,add) {
var effect = this.game.newEffect({
source: this,
description: '1923-const-0',
description: '1923-const-1',
triggerCondition: function (event) {
return (event.oldZone === this.player.trashZone);
},

View file

@ -791,10 +791,26 @@ Player.prototype.canUseActionEffect = function (effect,arg) {
if (!arg) arg = {};
if (this.charmedActionEffectBanned && effect.source.charm) return false;
if (effect.source.abilityLost) return false;
// inHand
if (effect.source.zone === this.handZone && !effect.activatedInHand) return false;
if (effect.source.zone !== this.handZone && effect.activatedInHand) return false;
// inTrashZone
if (effect.source.zone === this.trashZone && !effect.activatedInTrashZone) return false;
if (effect.source.zone !== this.handZone && effect.activatedInHand) return false;
// attackPhase
if (this.game.phase.isAttackPhase()) {
if (!effect.attackPhase) return false;
} else {
if (effect.attackPhase && !effect.mainPhase) return false;
}
// onAttack
if (arg.onAttack && !effect.onAttack) return false;
if (!arg.onAttack && effect.onAttack) return false;
// cross
if (effect.cross && !effect.source.crossed) return false;
// once
if (effect.once && inArr(effect,this.usedActionEffects)) return false;
// condition
if (effect.useCondition && !effect.useCondition.call(effect.source,arg)) return false;
// <混沌之键主 乌姆尔=FYRA>
if (effect.activatedInTrashZone) {
@ -821,10 +837,6 @@ Player.prototype.useActionEffectAsyn = function () {
cards.forEach(function (card) {
card.actionEffects.forEach(function (effect) {
if (effect.spellCutIn) return;
if (card.zone === this.handZone && !effect.activatedInHand) return;
if (card.zone !== this.handZone && effect.activatedInHand) return;
if (effect.attackPhase && !effect.mainPhase) return;
if (effect.activatedInTrashZone && card.zone !== this.trashZone) return;
if (this.canUseActionEffect(effect)) {
effects.push(effect);
}
@ -933,24 +945,15 @@ Player.prototype.useAttackPhaseArtsAsyn = function () {
};
Player.prototype.useAttackPhaseActionEffect = function () {
var cards = [];
concat(this.signis,this.lrig).forEach(function (card) {
var flag = card.actionEffects.some(function (effect) {
return !effect.activatedInTrashZone && effect.attackPhase && this.canUseActionEffect(effect);
var cards = concat(this.signis,this.lrig,this.trashZone.cards).filter(function (card) {
return card.actionEffects.some(function (effect) {
return this.canUseActionEffect(effect);
},this);
if (flag) cards.push(card);
},this);
this.trashZone.cards.forEach(function (card) {
// if (card.type !== 'SIGNI') return;
var flag = card.actionEffects.some(function (effect) {
return effect.activatedInTrashZone && effect.attackPhase && this.canUseActionEffect(effect);
},this);
if (flag) cards.push(card);
},this);
});
if (!cards.length) return Callback.never();
return this.selectAsyn('USE_ACTION_EFFECT',cards).callback(this,function (card) {
var effects = card.actionEffects.filter(function (effect) {
return effect.attackPhase && this.canUseActionEffect(effect);
return this.canUseActionEffect(effect);
},this);
if (!effects.length) return;
return Callback.immediately().callback(this,function () {