From 794a4c7179bd62467d357bc09340496ba17e1891 Mon Sep 17 00:00:00 2001 From: LevelX2 Date: Mon, 29 Apr 2013 12:01:27 +0200 Subject: [PATCH] Fixed ForbiddenOrchard triggered ability laso to trigger if ForbiddenOrchad gains another mana ability. Using framework effect within Guttersnipe. --- .../championsofkamigawa/ForbiddenOrchard.java | 44 ++++++++++++++++--- .../sets/returntoravnica/Guttersnipe.java | 40 ++--------------- 2 files changed, 42 insertions(+), 42 deletions(-) diff --git a/Mage.Sets/src/mage/sets/championsofkamigawa/ForbiddenOrchard.java b/Mage.Sets/src/mage/sets/championsofkamigawa/ForbiddenOrchard.java index 8eee471db32..1a69e36d20c 100644 --- a/Mage.Sets/src/mage/sets/championsofkamigawa/ForbiddenOrchard.java +++ b/Mage.Sets/src/mage/sets/championsofkamigawa/ForbiddenOrchard.java @@ -32,16 +32,19 @@ package mage.sets.championsofkamigawa; import java.util.UUID; import mage.Constants.CardType; import mage.Constants.Rarity; -import mage.abilities.Ability; +import mage.Constants.Zone; +import mage.abilities.TriggeredAbilityImpl; import mage.abilities.effects.common.CreateTokenTargetEffect; import mage.abilities.mana.AnyColorManaAbility; import mage.cards.CardImpl; +import mage.game.Game; +import mage.game.events.GameEvent; import mage.game.permanent.token.SpiritToken; import mage.target.common.TargetOpponent; /** * - * @author LevelX + * @author LevelX2 */ public class ForbiddenOrchard extends CardImpl { @@ -49,11 +52,9 @@ public class ForbiddenOrchard extends CardImpl { super(ownerId, 276, "Forbidden Orchard", Rarity.RARE, new CardType[]{CardType.LAND}, null); this.expansionSetCode = "CHK"; // {T}: Add one mana of any color to your mana pool. - Ability ability = new AnyColorManaAbility(); + this.addAbility(new AnyColorManaAbility()); // Whenever you tap Forbidden Orchard for mana, put a 1/1 colorless Spirit creature token onto the battlefield under target opponent's control. - ability.addEffect(new CreateTokenTargetEffect(new SpiritToken())); - ability.addTarget(new TargetOpponent()); - this.addAbility(ability); + this.addAbility(new ForbiddenOrchardTriggeredAbility()); } public ForbiddenOrchard (final ForbiddenOrchard card) { @@ -65,3 +66,34 @@ public class ForbiddenOrchard extends CardImpl { return new ForbiddenOrchard(this); } } + +class ForbiddenOrchardTriggeredAbility extends TriggeredAbilityImpl { + + public ForbiddenOrchardTriggeredAbility() { + super(Zone.BATTLEFIELD, new CreateTokenTargetEffect(new SpiritToken())); + this.addTarget(new TargetOpponent(true)); + } + + public ForbiddenOrchardTriggeredAbility(final ForbiddenOrchardTriggeredAbility ability) { + super(ability); + } + + @Override + public boolean checkTrigger(GameEvent event, Game game) { + if (event.getType() == GameEvent.EventType.TAPPED_FOR_MANA && event.getSourceId().equals(getSourceId())) { + return true; + } + return false; + } + + @Override + public String getRule() { + return new StringBuilder("Whenever you tap {this} for mana, ").append(super.getRule()).toString() ; + } + + @Override + public ForbiddenOrchardTriggeredAbility copy() { + return new ForbiddenOrchardTriggeredAbility(this); + } + +} diff --git a/Mage.Sets/src/mage/sets/returntoravnica/Guttersnipe.java b/Mage.Sets/src/mage/sets/returntoravnica/Guttersnipe.java index dd04fe6ffd0..0e24c373ac2 100644 --- a/Mage.Sets/src/mage/sets/returntoravnica/Guttersnipe.java +++ b/Mage.Sets/src/mage/sets/returntoravnica/Guttersnipe.java @@ -32,10 +32,12 @@ import java.util.UUID; import mage.Constants; import mage.Constants.CardType; import mage.Constants.Rarity; +import mage.Constants.TargetController; import mage.MageInt; import mage.abilities.Ability; import mage.abilities.common.SpellCastTriggeredAbility; import mage.abilities.effects.OneShotEffect; +import mage.abilities.effects.common.DamagePlayersEffect; import mage.cards.CardImpl; import mage.filter.FilterSpell; import mage.filter.predicate.Predicates; @@ -67,7 +69,7 @@ public class Guttersnipe extends CardImpl { this.toughness = new MageInt(2); // Whenever you cast an instant or sorcery spell, Guttersnipe deals 2 damage to each opponent. - this.addAbility(new SpellCastTriggeredAbility(new GuttersnipeEffect(), filter, false)); + this.addAbility(new SpellCastTriggeredAbility(new DamagePlayersEffect(2, TargetController.OPPONENT), filter, false)); } public Guttersnipe (final Guttersnipe card) { @@ -78,38 +80,4 @@ public class Guttersnipe extends CardImpl { public Guttersnipe copy() { return new Guttersnipe(this); } - - private class GuttersnipeEffect extends OneShotEffect { - - public GuttersnipeEffect() { - super(Constants.Outcome.Damage); - staticText = "{this} deals 2 damage to each opponent"; - } - - public GuttersnipeEffect(final GuttersnipeEffect effect) { - super(effect); - } - - @Override - public boolean apply(Game game, Ability source) { - Player controller = game.getPlayer(source.getControllerId()); - if (controller != null) { - for (UUID playerId: controller.getInRange()) { - if (playerId != source.getControllerId()) { - Player opponent = game.getPlayer(playerId); - if (opponent != null) { - opponent.damage(2, source.getId(), game, false, true); - } - } - } - return true; - } - return false; - } - - @Override - public GuttersnipeEffect copy() { - return new GuttersnipeEffect(this); - } - } -} \ No newline at end of file +}