TwoPilesEffect.resolve support "DefinedPiles"

This commit is contained in:
Northmoc
2022-11-13 12:32:25 -05:00
parent 5467d80243
commit bcb285e70a

View File

@@ -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;
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); 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.removeRemembered(unchosenPile);
card.addRemembered(tempRemembered);
}
}
}
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(); card.clearRemembered();
} }
} }
} }
} // end twoPiles resolve
}