diff --git a/Mage.Sets/src/mage/sets/riseoftheeldrazi/EldraziTemple.java b/Mage.Sets/src/mage/sets/riseoftheeldrazi/EldraziTemple.java index 43eb4eaa076..1efedcecfa0 100644 --- a/Mage.Sets/src/mage/sets/riseoftheeldrazi/EldraziTemple.java +++ b/Mage.Sets/src/mage/sets/riseoftheeldrazi/EldraziTemple.java @@ -79,29 +79,6 @@ class EldraziTempleManaAbility extends BasicManaAbility { class GrandArchitectManaAbility extends ManaAbility { - private static final String abilityText = "Spend this mana only to cast artifact spells or activate abilities of artifacts. " - + "(Mage Tip: This ability can only be activated when an artifact spell or ability is on the stack.)"; - private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("untapped blue creature"); + private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("untapped blue creature"); static { filter.getColor().setBlue(true); @@ -149,7 +149,7 @@ class GrandArchitectManaAbility extends ManaAbility { } GrandArchitectManaAbility ( ) { - super(Zone.BATTLEFIELD, new BasicManaEffect(Mana.ColorlessMana(2)), new TapTargetCost(new TargetControlledCreaturePermanent(1, 1, filter, true))); + super(Zone.BATTLEFIELD, new BasicManaEffect(new GrandArchitectConditionalMana()), new TapTargetCost(new TargetControlledCreaturePermanent(1, 1, filter, true))); this.netMana.setColorless(2); } @@ -157,36 +157,28 @@ class GrandArchitectManaAbility extends ManaAbility { super(ability); } - @Override - public boolean canActivate(UUID playerId, Game game) { - boolean artifactSpellBeingCast = false; - - SpellStack stack = game.getStack(); - for ( int idx = 0; idx < stack.size(); idx++ ) { - StackObject stackObject = stack.get(idx); - if ( stackObject.getControllerId().equals(playerId) ) { - artifactSpellBeingCast |= stackObject.getCardType().contains(CardType.ARTIFACT); - MageObject source = game.getObject(stackObject.getSourceId()); - if (source != null) - artifactSpellBeingCast |= source.getCardType().contains(CardType.ARTIFACT); - } - } - - return super.canActivate(playerId, game) && artifactSpellBeingCast; - } - - @Override - public String getRule() { - return super.getRule() + " " + abilityText; - } - - @Override - public String getRule(String source) { - return super.getRule(source); - } - @Override public GrandArchitectManaAbility copy ( ) { return new GrandArchitectManaAbility(this); } } + +class GrandArchitectConditionalMana extends ConditionalMana { + + public GrandArchitectConditionalMana() { + super(Mana.ColorlessMana(2)); + staticText = "Spend this mana only to cast artifact spells or activate abilities of artifacts"; + addCondition(new GrandArchitectManaCondition()); + } +} + +class GrandArchitectManaCondition implements Condition { + @Override + public boolean apply(Game game, Ability source) { + MageObject object = game.getObject(source.getSourceId()); + if (object != null && object.getCardType().contains(CardType.ARTIFACT)) { + return true; + } + return false; + } +}