mirror of
https://github.com/correl/mage.git
synced 2024-12-25 03:00:15 +00:00
* Undercity Reaches - fixed rollback error on plane's draw trigger
This commit is contained in:
parent
30fe344e23
commit
87d8383eb8
2 changed files with 57 additions and 4 deletions
|
@ -0,0 +1,53 @@
|
|||
package org.mage.test.cards.planes;
|
||||
|
||||
import mage.constants.PhaseStep;
|
||||
import mage.constants.Planes;
|
||||
import mage.constants.Zone;
|
||||
import org.junit.Test;
|
||||
import org.mage.test.serverside.base.CardTestPlayerBase;
|
||||
|
||||
/**
|
||||
* @author JayDi85
|
||||
*/
|
||||
public class UndercityReachesTest extends CardTestPlayerBase {
|
||||
|
||||
@Test
|
||||
public void test_CanTriggerByController() {
|
||||
removeAllCardsFromHand(playerA);
|
||||
|
||||
// Whenever a creature deals combat damage to a player, its controller may a draw a card
|
||||
addPlane(playerA, Planes.PLANE_UNDERCITY_REACHES);
|
||||
addCard(Zone.BATTLEFIELD, playerA, "Balduvian Bears", 1);
|
||||
|
||||
attack(1, playerA, "Balduvian Bears");
|
||||
setChoice(playerA, "Yes"); // draw
|
||||
|
||||
setStrictChooseMode(true);
|
||||
setStopAt(1, PhaseStep.END_TURN);
|
||||
execute();
|
||||
assertAllCommandsUsed();
|
||||
|
||||
assertLife(playerB, 20 - 2);
|
||||
assertHandCount(playerA, 1);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void test_CanTriggerByOther() {
|
||||
removeAllCardsFromHand(playerB);
|
||||
|
||||
// Whenever a creature deals combat damage to a player, its controller may a draw a card
|
||||
addPlane(playerA, Planes.PLANE_UNDERCITY_REACHES);
|
||||
addCard(Zone.BATTLEFIELD, playerB, "Balduvian Bears", 1);
|
||||
|
||||
attack(2, playerB, "Balduvian Bears");
|
||||
setChoice(playerB, "Yes"); // draw
|
||||
|
||||
setStrictChooseMode(true);
|
||||
setStopAt(2, PhaseStep.END_TURN);
|
||||
execute();
|
||||
assertAllCommandsUsed();
|
||||
|
||||
assertLife(playerA, 20 - 2);
|
||||
assertHandCount(playerB, 1 + 1); // +1 from turn draw, +1 from trigger
|
||||
}
|
||||
}
|
|
@ -43,7 +43,7 @@ public class UndercityReachesPlane extends Plane {
|
|||
this.setPlaneType(Planes.PLANE_UNDERCITY_REACHES);
|
||||
this.setExpansionSetCodeForImage("PCA");
|
||||
|
||||
// Whenever a creature deals combat damage to a player, its controller may a draw a card
|
||||
// Whenever a creature deals combat damage to a player, its controller may draw a card.
|
||||
Ability ability = new UndercityReachesTriggeredAbility();
|
||||
|
||||
this.getAbilities().add(ability);
|
||||
|
@ -68,7 +68,7 @@ public class UndercityReachesPlane extends Plane {
|
|||
class UndercityReachesTriggeredAbility extends TriggeredAbilityImpl {
|
||||
|
||||
public UndercityReachesTriggeredAbility() {
|
||||
super(Zone.COMMAND, null, true);
|
||||
super(Zone.COMMAND, null, false); // effect must be optional
|
||||
}
|
||||
|
||||
public UndercityReachesTriggeredAbility(final UndercityReachesTriggeredAbility ability) {
|
||||
|
@ -98,9 +98,9 @@ class UndercityReachesTriggeredAbility extends TriggeredAbilityImpl {
|
|||
if (((DamagedPlayerEvent) event).isCombatDamage()) {
|
||||
Permanent creature = game.getPermanent(event.getSourceId());
|
||||
if (creature != null) {
|
||||
Effect effect = new DrawCardTargetEffect(StaticValue.get(1), false, true);
|
||||
Effect effect = new DrawCardTargetEffect(StaticValue.get(1), true, false);
|
||||
effect.setTargetPointer(new FixedTarget(creature.getControllerId()));
|
||||
effect.apply(game, null);
|
||||
effect.apply(game, this);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue