use of mage.abilities.keyword.ProtectionAbility in project mage by magefree.
the class CairnWandererTest method TestCairnWandererEffect.
/*
* Testing: As long as a creature card with flying is in a graveyard,
* {this} has flying. The same is true for fear, first strike,
* double strike, deathtouch, haste, landwalk, lifelink, protection,
* reach, trample, shroud, and vigilance.
*/
@Test
public void TestCairnWandererEffect() {
addCard(Zone.BATTLEFIELD, playerA, "Cairn Wanderer");
// Testing FlyingAbility.
addCard(Zone.GRAVEYARD, playerA, "Lantern Kami");
// Testing FearAbility.
addCard(Zone.GRAVEYARD, playerA, "Prickly Boggart");
// Testing FirstStrikeAbility.
addCard(Zone.GRAVEYARD, playerA, "Serra Zealot");
// Testing DoubleStrikeAbility.
addCard(Zone.GRAVEYARD, playerA, "Fencing Ace");
// Testing DeathtouchAbility.
addCard(Zone.GRAVEYARD, playerA, "Typhoid Rats");
// Testing HasteAbility.
addCard(Zone.GRAVEYARD, playerB, "Raging Goblin");
// Testing LandwalkAbility.
addCard(Zone.GRAVEYARD, playerB, "Zodiac Rooster");
// Testing LifelinkAbility.
addCard(Zone.GRAVEYARD, playerB, "Trained Caracal");
// Testing ProtectionAbility.
addCard(Zone.GRAVEYARD, playerB, "Progenitus");
// Testing ReachAbility.
addCard(Zone.GRAVEYARD, playerB, "Tree Monkey");
// Testing TrampleAbility.
addCard(Zone.GRAVEYARD, playerB, "Defiant Elf");
// Testing ShroudAbility.
addCard(Zone.GRAVEYARD, playerB, "Elvish Lookout");
// Testing VigilanceAbility.
addCard(Zone.GRAVEYARD, playerB, "Veteran Cavalier");
execute();
List<Ability> abilities = new ArrayList<>();
abilities.add(FlyingAbility.getInstance());
abilities.add(FearAbility.getInstance());
abilities.add(FirstStrikeAbility.getInstance());
abilities.add(DoubleStrikeAbility.getInstance());
abilities.add(DeathtouchAbility.getInstance());
abilities.add(HasteAbility.getInstance());
abilities.add(LifelinkAbility.getInstance());
abilities.add(ReachAbility.getInstance());
abilities.add(ShroudAbility.getInstance());
abilities.add(TrampleAbility.getInstance());
abilities.add(VigilanceAbility.getInstance());
assertAbilities(playerA, "Cairn Wanderer", abilities);
assertAbility(playerA, "Cairn Wanderer", new PlainswalkAbility(), true);
// Progenitus - protection from everything.
assertAbility(playerA, "Cairn Wanderer", new ProtectionAbility(new FilterCard("everything")), true);
}
use of mage.abilities.keyword.ProtectionAbility in project mage by magefree.
the class GainProtectionFromColorAllEffect method apply.
@Override
public boolean apply(Game game, Ability source) {
FilterCard protectionFilter = (FilterCard) ((ProtectionAbility) ability).getFilter();
protectionFilter.add(new ColorPredicate(choice.getColor()));
protectionFilter.setMessage(choice.getChoice());
((ProtectionAbility) ability).setFilter(protectionFilter);
return super.apply(game, source);
}
use of mage.abilities.keyword.ProtectionAbility in project mage by magefree.
the class JeweledSpiritEffect method apply.
@Override
public boolean apply(Game game, Ability source) {
Player controller = game.getPlayer(source.getControllerId());
ChoiceColorOrArtifact choice = new ChoiceColorOrArtifact();
if (controller != null && controller.choose(outcome, choice, game)) {
FilterCard protectionFilter = new FilterCard();
if (choice.isArtifactSelected()) {
protectionFilter.add(CardType.ARTIFACT.getPredicate());
} else {
protectionFilter.add(new ColorPredicate(choice.getColor()));
}
protectionFilter.setMessage(choice.getChoice());
ProtectionAbility protectionAbility = new ProtectionAbility(protectionFilter);
ContinuousEffect effect = new GainAbilitySourceEffect(protectionAbility, Duration.EndOfTurn);
game.addEffect(effect, source);
return true;
}
return false;
}
use of mage.abilities.keyword.ProtectionAbility in project mage by magefree.
the class SerrasEmissaryEffect method apply.
@Override
public boolean apply(Game game, Ability source) {
Player controller = game.getPlayer(source.getControllerId());
Object savedType = game.getState().getValue(source.getSourceId() + "_type");
if (controller == null || savedType == null) {
return false;
}
if (savedType instanceof String) {
CardType cardType = CardType.fromString((String) savedType);
FilterCard filter = new FilterCard(cardType + "s");
filter.add(cardType.getPredicate());
Ability ability = new ProtectionAbility(filter);
controller.addAbility(ability);
for (Permanent permanent : game.getBattlefield().getActivePermanents(StaticFilters.FILTER_CONTROLLED_CREATURE, source.getControllerId(), source.getSourceId(), game)) {
permanent.addAbility(ability, source.getSourceId(), game);
}
return true;
}
return false;
}
use of mage.abilities.keyword.ProtectionAbility in project mage by magefree.
the class WardSliverGainAbilityControlledEffect method apply.
@Override
public boolean apply(Game game, Ability source) {
if (protectionFilter == null) {
Permanent permanent = game.getPermanent(source.getSourceId());
if (permanent != null) {
ObjectColor color = (ObjectColor) game.getState().getValue(permanent.getId() + "_color");
if (color != null) {
protectionFilter = new FilterPermanent(color.getDescription());
protectionFilter.add(new ColorPredicate(color));
}
}
}
if (protectionFilter != null) {
for (Permanent perm : game.getBattlefield().getAllActivePermanents(StaticFilters.FILTER_PERMANENT_ALL_SLIVERS, game)) {
perm.addAbility(new ProtectionAbility(protectionFilter), source.getSourceId(), game);
}
return true;
}
return false;
}
Aggregations