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 com.google.common.collect.Lists;
|
||||
import forge.game.ability.AbilityUtils;
|
||||
import forge.game.ability.SpellAbilityEffect;
|
||||
import forge.game.card.Card;
|
||||
@@ -97,9 +98,17 @@ public class TwoPilesEffect extends SpellAbilityEffect {
|
||||
}
|
||||
|
||||
// first, separate the cards into piles
|
||||
final CardCollectionView pile1 = separator.getController().chooseCardsForEffect(pool, sa, title, 0, size, false, null);
|
||||
final CardCollection pile2 = new CardCollection(pool);
|
||||
pile2.removeAll(pile1);
|
||||
final CardCollectionView pile1;
|
||||
final CardCollection pile2;
|
||||
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) {
|
||||
pile1WasChosen = true;
|
||||
@@ -151,32 +160,37 @@ public class TwoPilesEffect extends SpellAbilityEffect {
|
||||
|
||||
// take action on the chosen pile
|
||||
if (sa.hasParam("ChosenPile")) {
|
||||
if (card.hasRemembered()) {
|
||||
card.clearRemembered();
|
||||
}
|
||||
List<Object> tempRemembered = Lists.newArrayList(card.getRemembered());
|
||||
card.removeRemembered(tempRemembered);
|
||||
card.addRemembered(chosenPile);
|
||||
|
||||
SpellAbility sub = sa.getAdditionalAbility("ChosenPile");
|
||||
if (sub != null) {
|
||||
AbilityUtils.resolve(sub);
|
||||
}
|
||||
card.clearRemembered();
|
||||
card.removeRemembered(chosenPile);
|
||||
card.addRemembered(tempRemembered);
|
||||
}
|
||||
|
||||
// take action on the unchosen pile
|
||||
if (sa.hasParam("UnchosenPile")) {
|
||||
if (card.hasRemembered()) {
|
||||
card.clearRemembered();
|
||||
}
|
||||
List<Object> tempRemembered = Lists.newArrayList(card.getRemembered());
|
||||
card.removeRemembered(tempRemembered);
|
||||
card.addRemembered(unchosenPile);
|
||||
|
||||
SpellAbility sub = sa.getAdditionalAbility("UnchosenPile");
|
||||
if (sub != null) {
|
||||
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