mirror of
https://github.com/magefree/mage.git
synced 2025-12-22 11:32:00 -08:00
* Added test and some minor changes.
This commit is contained in:
parent
4f6d3f3a1a
commit
7f5e3a262e
6 changed files with 58 additions and 2 deletions
|
|
@ -110,7 +110,9 @@ class PhantasmalImageCopyEffect extends OneShotEffect {
|
||||||
if (!permanent.getSubtype().contains("Illusion")) {
|
if (!permanent.getSubtype().contains("Illusion")) {
|
||||||
permanent.getSubtype().add("Illusion");
|
permanent.getSubtype().add("Illusion");
|
||||||
}
|
}
|
||||||
permanent.addAbility(new BecomesTargetTriggeredAbility(new SacrificeSourceEffect()), game);
|
// Add directly because the created permanent is only used to copy from, so there is no need to add the ability to e.g. TriggeredAbilities
|
||||||
|
permanent.getAbilities().add(new BecomesTargetTriggeredAbility(new SacrificeSourceEffect()));
|
||||||
|
//permanent.addAbility(new BecomesTargetTriggeredAbility(new SacrificeSourceEffect()), game);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
|
||||||
|
|
@ -54,9 +54,11 @@ public class WurmcoilEngine extends CardImpl {
|
||||||
this.power = new MageInt(6);
|
this.power = new MageInt(6);
|
||||||
this.toughness = new MageInt(6);
|
this.toughness = new MageInt(6);
|
||||||
|
|
||||||
|
// Deathtouch, lifelink
|
||||||
this.addAbility(DeathtouchAbility.getInstance());
|
this.addAbility(DeathtouchAbility.getInstance());
|
||||||
this.addAbility(LifelinkAbility.getInstance());
|
this.addAbility(LifelinkAbility.getInstance());
|
||||||
|
|
||||||
|
// When Wurmcoil Engine dies, put a 3/3 colorless Wurm artifact creature token with deathtouch and a 3/3 colorless Wurm artifact creature token with lifelink onto the battlefield.
|
||||||
Ability ability = new DiesTriggeredAbility(new CreateTokenEffect(new Wurm1Token(expansionSetCode)), false);
|
Ability ability = new DiesTriggeredAbility(new CreateTokenEffect(new Wurm1Token(expansionSetCode)), false);
|
||||||
ability.addEffect(new CreateTokenEffect(new Wurm2Token(expansionSetCode)));
|
ability.addEffect(new CreateTokenEffect(new Wurm2Token(expansionSetCode)));
|
||||||
this.addAbility(ability);
|
this.addAbility(ability);
|
||||||
|
|
|
||||||
|
|
@ -53,6 +53,7 @@ public class Clone extends CardImpl {
|
||||||
this.power = new MageInt(0);
|
this.power = new MageInt(0);
|
||||||
this.toughness = new MageInt(0);
|
this.toughness = new MageInt(0);
|
||||||
|
|
||||||
|
// You may have Clone enter the battlefield as a copy of any creature on the battlefield.
|
||||||
Ability ability = new SimpleStaticAbility(Zone.BATTLEFIELD, new EntersBattlefieldEffect(
|
Ability ability = new SimpleStaticAbility(Zone.BATTLEFIELD, new EntersBattlefieldEffect(
|
||||||
new CopyPermanentEffect(),
|
new CopyPermanentEffect(),
|
||||||
"You may have {this} enter the battlefield as a copy of any creature on the battlefield",
|
"You may have {this} enter the battlefield as a copy of any creature on the battlefield",
|
||||||
|
|
|
||||||
|
|
@ -61,7 +61,11 @@ public class Nightmare extends CardImpl {
|
||||||
|
|
||||||
this.power = new MageInt(0);
|
this.power = new MageInt(0);
|
||||||
this.toughness = new MageInt(0);
|
this.toughness = new MageInt(0);
|
||||||
|
|
||||||
|
// Flying
|
||||||
this.addAbility(FlyingAbility.getInstance());
|
this.addAbility(FlyingAbility.getInstance());
|
||||||
|
|
||||||
|
// Nightmare's power and toughness are each equal to the number of Swamps you control.
|
||||||
this.addAbility(new SimpleStaticAbility(Zone.ALL, new SetPowerToughnessSourceEffect(new PermanentsOnBattlefieldCount(filter), Duration.EndOfGame)));
|
this.addAbility(new SimpleStaticAbility(Zone.ALL, new SetPowerToughnessSourceEffect(new PermanentsOnBattlefieldCount(filter), Duration.EndOfGame)));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -108,9 +108,11 @@ public class CloneTest extends CardTestPlayerBase {
|
||||||
addCard(Zone.BATTLEFIELD, playerA, "Swamp", 1);
|
addCard(Zone.BATTLEFIELD, playerA, "Swamp", 1);
|
||||||
addCard(Zone.BATTLEFIELD, playerB, "Swamp", 6);
|
addCard(Zone.BATTLEFIELD, playerB, "Swamp", 6);
|
||||||
addCard(Zone.BATTLEFIELD, playerB, "Forest", 1);
|
addCard(Zone.BATTLEFIELD, playerB, "Forest", 1);
|
||||||
|
// Target creature you control gets +1/+1 and gains hexproof until end of turn. (It can't be the target of spells or abilities your opponents control.)
|
||||||
addCard(Zone.HAND, playerB, "Ranger's Guile");
|
addCard(Zone.HAND, playerB, "Ranger's Guile");
|
||||||
|
|
||||||
addCard(Zone.HAND, playerA, "Clone");
|
addCard(Zone.HAND, playerA, "Clone");
|
||||||
|
// Return target nonland permanent to its owner's hand.
|
||||||
addCard(Zone.HAND, playerA, "Disperse");
|
addCard(Zone.HAND, playerA, "Disperse");
|
||||||
|
|
||||||
addCard(Zone.BATTLEFIELD, playerB, "Nightmare", 1);
|
addCard(Zone.BATTLEFIELD, playerB, "Nightmare", 1);
|
||||||
|
|
|
||||||
|
|
@ -526,4 +526,49 @@ public class PhantasmalImageTest extends CardTestPlayerBase {
|
||||||
assertPowerToughness(playerB, "Butcher Ghoul", 2, 2);
|
assertPowerToughness(playerB, "Butcher Ghoul", 2, 2);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 12:29: Attacker: Wurmcoil Engine [466] (6/6) blocked by Wurmcoil Engine
|
||||||
|
* [4ed] (6/6)
|
||||||
|
* 12:29: yespair gains 6 life
|
||||||
|
* 12:29: HipSomHap gains 6 life
|
||||||
|
* 12:29: Wurmcoil Engine [4ed] died
|
||||||
|
* 12:29: Ability triggers: Wurmcoil Engine [4ed] - When Wurmcoil Engine [4ed] dies, put a a 3/3 colorless
|
||||||
|
* Wurm artifact creature token with deathtouch onto the battlefield. Put a
|
||||||
|
* a 3/3 colorless Wurm artifact creature token with lifelink onto the
|
||||||
|
* battlefield.
|
||||||
|
* 12:29: Phantasmal Image [466] died
|
||||||
|
* 12:29: HipSomHap puts a Wurm [7d0] token onto the battlefield
|
||||||
|
* 12:29: HipSomHap puts a Wurm [186] token onto the battlefield
|
||||||
|
*
|
||||||
|
* To the best of my knowledge, the Phantasmal Image [466], which entered
|
||||||
|
* the battlefield as a Wurmcoil Engine, should grant tokens through the
|
||||||
|
* Dies-trigger as well, right?
|
||||||
|
*/
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testDiesTriggered2() {
|
||||||
|
addCard(Zone.BATTLEFIELD, playerB, "Wurmcoil Engine");
|
||||||
|
|
||||||
|
addCard(Zone.BATTLEFIELD, playerA, "Island", 2);
|
||||||
|
addCard(Zone.HAND, playerA, "Phantasmal Image");
|
||||||
|
|
||||||
|
castSpell(1, PhaseStep.PRECOMBAT_MAIN, playerA, "Phantasmal Image"); // not targeted
|
||||||
|
setChoice(playerB, "Wurmcoil Engine");
|
||||||
|
|
||||||
|
attack(2, playerB, "Wurmcoil Engine");
|
||||||
|
block(2, playerA, "Wurmcoil Engine", "Wurmcoil Engine");
|
||||||
|
setStopAt(2, PhaseStep.POSTCOMBAT_MAIN);
|
||||||
|
execute();
|
||||||
|
|
||||||
|
assertLife(playerB, 26);
|
||||||
|
assertLife(playerA, 26);
|
||||||
|
|
||||||
|
assertGraveyardCount(playerA, "Phantasmal Image", 1);
|
||||||
|
assertGraveyardCount(playerB, "Wurmcoil Engine", 1);
|
||||||
|
|
||||||
|
assertPermanentCount(playerA, "Wurm", 2);
|
||||||
|
assertPermanentCount(playerB, "Wurm", 2);
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue