mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-19 12:18:00 +00:00
TwoPilesEffect.resolve support "DefinedPiles"
This commit is contained in:
@@ -2,6 +2,7 @@ package forge.game.ability.effects;
|
|||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
import com.google.common.collect.Lists;
|
||||||
import forge.game.ability.AbilityUtils;
|
import forge.game.ability.AbilityUtils;
|
||||||
import forge.game.ability.SpellAbilityEffect;
|
import forge.game.ability.SpellAbilityEffect;
|
||||||
import forge.game.card.Card;
|
import forge.game.card.Card;
|
||||||
@@ -97,9 +98,17 @@ public class TwoPilesEffect extends SpellAbilityEffect {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// first, separate the cards into piles
|
// first, separate the cards into piles
|
||||||
final CardCollectionView pile1 = separator.getController().chooseCardsForEffect(pool, sa, title, 0, size, false, null);
|
final CardCollectionView pile1;
|
||||||
final CardCollection pile2 = new CardCollection(pool);
|
final CardCollection pile2;
|
||||||
pile2.removeAll(pile1);
|
if (sa.hasParam("DefinedPiles")) {
|
||||||
|
final String[] def = sa.getParam("DefinedPiles").split(",", 2);
|
||||||
|
pile1 = AbilityUtils.getDefinedCards(card, def[0], sa);
|
||||||
|
pile2 = AbilityUtils.getDefinedCards(card, def[1], sa);
|
||||||
|
} else {
|
||||||
|
pile1 = separator.getController().chooseCardsForEffect(pool, sa, title, 0, size, false, null);
|
||||||
|
pile2 = new CardCollection(pool);
|
||||||
|
pile2.removeAll(pile1);
|
||||||
|
}
|
||||||
|
|
||||||
if (isLeftRightPile) {
|
if (isLeftRightPile) {
|
||||||
pile1WasChosen = true;
|
pile1WasChosen = true;
|
||||||
@@ -151,32 +160,37 @@ public class TwoPilesEffect extends SpellAbilityEffect {
|
|||||||
|
|
||||||
// take action on the chosen pile
|
// take action on the chosen pile
|
||||||
if (sa.hasParam("ChosenPile")) {
|
if (sa.hasParam("ChosenPile")) {
|
||||||
if (card.hasRemembered()) {
|
List<Object> tempRemembered = Lists.newArrayList(card.getRemembered());
|
||||||
card.clearRemembered();
|
card.removeRemembered(tempRemembered);
|
||||||
}
|
|
||||||
card.addRemembered(chosenPile);
|
card.addRemembered(chosenPile);
|
||||||
|
|
||||||
SpellAbility sub = sa.getAdditionalAbility("ChosenPile");
|
SpellAbility sub = sa.getAdditionalAbility("ChosenPile");
|
||||||
if (sub != null) {
|
if (sub != null) {
|
||||||
AbilityUtils.resolve(sub);
|
AbilityUtils.resolve(sub);
|
||||||
}
|
}
|
||||||
card.clearRemembered();
|
card.removeRemembered(chosenPile);
|
||||||
|
card.addRemembered(tempRemembered);
|
||||||
}
|
}
|
||||||
|
|
||||||
// take action on the unchosen pile
|
// take action on the unchosen pile
|
||||||
if (sa.hasParam("UnchosenPile")) {
|
if (sa.hasParam("UnchosenPile")) {
|
||||||
if (card.hasRemembered()) {
|
List<Object> tempRemembered = Lists.newArrayList(card.getRemembered());
|
||||||
card.clearRemembered();
|
card.removeRemembered(tempRemembered);
|
||||||
}
|
|
||||||
card.addRemembered(unchosenPile);
|
card.addRemembered(unchosenPile);
|
||||||
|
|
||||||
SpellAbility sub = sa.getAdditionalAbility("UnchosenPile");
|
SpellAbility sub = sa.getAdditionalAbility("UnchosenPile");
|
||||||
if (sub != null) {
|
if (sub != null) {
|
||||||
AbilityUtils.resolve(sub);
|
AbilityUtils.resolve(sub);
|
||||||
}
|
}
|
||||||
card.clearRemembered();
|
card.removeRemembered(unchosenPile);
|
||||||
|
card.addRemembered(tempRemembered);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} // end twoPiles resolve
|
if (!sa.hasParam("KeepRemembered")) {
|
||||||
|
// prior to addition of "DefinedPiles" param, TwoPilesEffect cleared remembered objects in the
|
||||||
|
// Chosen/Unchosen subability resolutions, so this preserves that
|
||||||
|
card.clearRemembered();
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user