From 0bc15a6dbc36a55aede2b1081484faf50f884028 Mon Sep 17 00:00:00 2001 From: LevelX2 Date: Fri, 10 May 2013 15:01:19 +0200 Subject: [PATCH] Using framework effect for Lobber Crew and Crackling Perimeter. --- .../sets/gatecrash/CracklingPerimeter.java | 35 ++------------- .../mage/sets/returntoravnica/LobberCrew.java | 44 ++----------------- 2 files changed, 7 insertions(+), 72 deletions(-) diff --git a/Mage.Sets/src/mage/sets/gatecrash/CracklingPerimeter.java b/Mage.Sets/src/mage/sets/gatecrash/CracklingPerimeter.java index b2fb2c60708..1f1a59d58bd 100644 --- a/Mage.Sets/src/mage/sets/gatecrash/CracklingPerimeter.java +++ b/Mage.Sets/src/mage/sets/gatecrash/CracklingPerimeter.java @@ -31,11 +31,13 @@ import java.util.UUID; import mage.Constants; import mage.Constants.CardType; import mage.Constants.Rarity; +import mage.Constants.TargetController; import mage.Constants.Zone; import mage.abilities.Ability; import mage.abilities.common.SimpleActivatedAbility; import mage.abilities.costs.common.TapTargetCost; import mage.abilities.effects.OneShotEffect; +import mage.abilities.effects.common.DamagePlayersEffect; import mage.cards.CardImpl; import mage.filter.common.FilterControlledPermanent; import mage.filter.predicate.Predicates; @@ -65,7 +67,7 @@ public class CracklingPerimeter extends CardImpl { this.color.setRed(true); // Tap an untapped Gate you control: Crackling Perimeter deals 1 damage to each opponent. - this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new CracklingPerimeterEffect(), new TapTargetCost(new TargetControlledPermanent(filter)))); + this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new DamagePlayersEffect(1, TargetController.OPPONENT), new TapTargetCost(new TargetControlledPermanent(filter)))); } public CracklingPerimeter(final CracklingPerimeter card) { @@ -77,34 +79,3 @@ public class CracklingPerimeter extends CardImpl { return new CracklingPerimeter(this); } } - -class CracklingPerimeterEffect extends OneShotEffect { - - public CracklingPerimeterEffect() { - super(Constants.Outcome.Damage); - staticText = "{this} deals 1 damage to each opponent"; - } - - public CracklingPerimeterEffect(final CracklingPerimeterEffect effect) { - super(effect); - } - - @Override - public boolean apply(Game game, Ability source) { - boolean result = true; - for (UUID playerId : game.getOpponents(source.getControllerId())) { - Player opponent = game.getPlayer(playerId); - if (opponent != null) { - opponent.damage(1, source.getSourceId(), game, false, true); - } else { - result = false; - } - } - return result; - } - - @Override - public CracklingPerimeterEffect copy() { - return new CracklingPerimeterEffect(this); - } -} diff --git a/Mage.Sets/src/mage/sets/returntoravnica/LobberCrew.java b/Mage.Sets/src/mage/sets/returntoravnica/LobberCrew.java index 247b191f36f..cf92a38c58e 100644 --- a/Mage.Sets/src/mage/sets/returntoravnica/LobberCrew.java +++ b/Mage.Sets/src/mage/sets/returntoravnica/LobberCrew.java @@ -32,20 +32,19 @@ import java.util.UUID; import mage.Constants; import mage.Constants.CardType; import mage.Constants.Rarity; +import mage.Constants.TargetController; import mage.Constants.Zone; import mage.MageInt; -import mage.abilities.Ability; import mage.abilities.TriggeredAbilityImpl; import mage.abilities.common.SimpleActivatedAbility; import mage.abilities.costs.common.TapSourceCost; -import mage.abilities.effects.OneShotEffect; +import mage.abilities.effects.common.DamagePlayersEffect; import mage.abilities.effects.common.UntapSourceEffect; import mage.abilities.keyword.DefenderAbility; import mage.cards.CardImpl; import mage.game.Game; import mage.game.events.GameEvent; import mage.game.stack.Spell; -import mage.players.Player; /** * @@ -65,9 +64,8 @@ public class LobberCrew extends CardImpl { // Defender this.addAbility(DefenderAbility.getInstance()); // {T}: Lobber Crew deals 1 damage to each opponent. - this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new LobberCrewEffect(), new TapSourceCost())); + this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new DamagePlayersEffect(1, TargetController.OPPONENT), new TapSourceCost())); // Whenever you cast a multicolored spell, untap Lobber Crew. - this.addAbility(new LobberCrewTriggeredAbility()); } @@ -79,40 +77,6 @@ public class LobberCrew extends CardImpl { public LobberCrew copy() { return new LobberCrew(this); } - - private class LobberCrewEffect extends OneShotEffect { - - public LobberCrewEffect() { - super(Constants.Outcome.Damage); - staticText = "{this} deals 1 damage to each opponent"; - } - - public LobberCrewEffect(final LobberCrewEffect 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(1, source.getId(), game, false, true); - } - } - } - return true; - } - return false; - } - - @Override - public LobberCrewEffect copy() { - return new LobberCrewEffect(this); - } - } } class LobberCrewTriggeredAbility extends TriggeredAbilityImpl { @@ -142,6 +106,6 @@ class LobberCrewTriggeredAbility extends TriggeredAbilityImpl