mirror of
https://github.com/correl/mage.git
synced 2024-11-15 19:19:33 +00:00
Fixed a problem with Tokens of the CopyEffect (e.g. with Essence of the Wild and Back from the Bring in play).
This commit is contained in:
parent
397b874b2d
commit
0a31a8b479
3 changed files with 39 additions and 3 deletions
|
@ -103,7 +103,7 @@ class BackFromTheBrinkCost extends CostImpl {
|
||||||
Player controller = game.getPlayer(controllerId);
|
Player controller = game.getPlayer(controllerId);
|
||||||
if (controller != null) {
|
if (controller != null) {
|
||||||
Card card = controller.getGraveyard().get(targets.getFirstTarget(), game);
|
Card card = controller.getGraveyard().get(targets.getFirstTarget(), game);
|
||||||
if (card != null && controller.moveCards(card, null, Zone.EXILED, ability, game)) {
|
if (card != null && controller.moveCards(card, Zone.EXILED, ability, game)) {
|
||||||
ability.getEffects().get(0).setTargetPointer(new FixedTarget(card.getId()));
|
ability.getEffects().get(0).setTargetPointer(new FixedTarget(card.getId()));
|
||||||
paid = card.getManaCost().pay(ability, game, sourceId, controllerId, noMana);
|
paid = card.getManaCost().pay(ability, game, sourceId, controllerId, noMana);
|
||||||
}
|
}
|
||||||
|
|
|
@ -68,4 +68,36 @@ public class EssenceOfTheWildtest extends CardTestPlayerBase {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* I control Essence of the Wild and Back from the Brink on the battlefield,
|
||||||
|
* and start using Back from the Brink on the creatures in my graveyard. The
|
||||||
|
* creature tokens don't enter the battlefield as copies of Essence of the
|
||||||
|
* Wild.
|
||||||
|
*
|
||||||
|
* Since it's an unusual situation, I checked around if there's something in
|
||||||
|
* the rules that would prevent this combo from working. Found this link and
|
||||||
|
* they confirmed that it should work, the tokens should come into play as
|
||||||
|
* 6/6s.
|
||||||
|
*/
|
||||||
|
@Test
|
||||||
|
public void testWithBackFromTheBrink() {
|
||||||
|
addCard(Zone.BATTLEFIELD, playerA, "Plains", 2);
|
||||||
|
// Creatures you control enter the battlefield as a copy of Essence of the Wild.
|
||||||
|
addCard(Zone.BATTLEFIELD, playerA, "Essence of the Wild"); // 6/6
|
||||||
|
// Exile a creature card from your graveyard and pay its mana cost: Put a token onto the battlefield that's a copy of that card. Activate this ability only any time you could cast a sorcery.
|
||||||
|
addCard(Zone.BATTLEFIELD, playerA, "Back from the Brink"); // Enchantment
|
||||||
|
|
||||||
|
addCard(Zone.GRAVEYARD, playerA, "Silvercoat Lion");
|
||||||
|
|
||||||
|
activateAbility(1, PhaseStep.PRECOMBAT_MAIN, playerA, "Exile a creature card");
|
||||||
|
setChoice(playerA, "Silvercoat Lion");
|
||||||
|
|
||||||
|
setStopAt(1, PhaseStep.BEGIN_COMBAT);
|
||||||
|
execute();
|
||||||
|
|
||||||
|
assertExileCount("Silvercoat Lion", 1);
|
||||||
|
assertPermanentCount(playerA, "Essence of the Wild", 2);
|
||||||
|
assertPowerToughness(playerA, "Essence of the Wild", 6, 6, Filter.ComparisonScope.All);
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -92,8 +92,12 @@ public class CopyEffect extends ContinuousEffectImpl {
|
||||||
permanent = game.getPermanentEntering(copyToObjectId);
|
permanent = game.getPermanentEntering(copyToObjectId);
|
||||||
if (permanent != null) {
|
if (permanent != null) {
|
||||||
copyToPermanent(permanent, game, source);
|
copyToPermanent(permanent, game, source);
|
||||||
// set reference to the permanent later on the battlefield so we have to add already one to the zone change counter
|
// set reference to the permanent later on the battlefield so we have to add already one (if no token) to the zone change counter
|
||||||
affectedObjectList.add(new MageObjectReference(permanent.getId(), game.getState().getZoneChangeCounter(copyToObjectId) + 1, game));
|
int ZCCDiff = 1;
|
||||||
|
if (permanent instanceof PermanentToken) {
|
||||||
|
ZCCDiff = 0;
|
||||||
|
}
|
||||||
|
affectedObjectList.add(new MageObjectReference(permanent.getId(), game.getState().getZoneChangeCounter(copyToObjectId) + ZCCDiff, game));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue