diff --git a/Mage.Sets/src/mage/cards/g/GougedZealot.java b/Mage.Sets/src/mage/cards/g/GougedZealot.java index a11e7ef4d0d..a8010194a03 100644 --- a/Mage.Sets/src/mage/cards/g/GougedZealot.java +++ b/Mage.Sets/src/mage/cards/g/GougedZealot.java @@ -1,20 +1,19 @@ package mage.cards.g; -import java.util.UUID; import mage.MageInt; -import mage.abilities.Ability; import mage.abilities.common.AttacksTriggeredAbility; import mage.abilities.condition.common.DeliriumCondition; import mage.abilities.decorator.ConditionalInterveningIfTriggeredAbility; -import mage.abilities.effects.OneShotEffect; +import mage.abilities.effects.common.DamageAllControlledTargetEffect; import mage.abilities.hint.common.CardTypesInGraveyardHint; -import mage.constants.*; import mage.abilities.keyword.ReachAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.filter.StaticFilters; -import mage.game.Game; -import mage.game.permanent.Permanent; +import mage.constants.CardType; +import mage.constants.SetTargetPointer; +import mage.constants.SubType; + +import java.util.UUID; /** * @@ -35,7 +34,7 @@ public final class GougedZealot extends CardImpl { // Delirium — Whenever Gouged Zealot attacks, if there are four or more card types among cards in your graveyard, Gouged Zealot deals 1 damage to each creature defending player controls. this.addAbility(new ConditionalInterveningIfTriggeredAbility( - new AttacksTriggeredAbility(new GougedZealotEffect(), false, null, SetTargetPointer.PLAYER), + new AttacksTriggeredAbility(new DamageAllControlledTargetEffect(1), false, null, SetTargetPointer.PLAYER), DeliriumCondition.instance, "Delirium — Whenever {this} attacks, if there are four or more card types among cards in your graveyard, {this} deals 1 damage to each creature defending player controls." ).addHint(CardTypesInGraveyardHint.YOU)); @@ -50,32 +49,3 @@ public final class GougedZealot extends CardImpl { return new GougedZealot(this); } } - -class GougedZealotEffect extends OneShotEffect { - - GougedZealotEffect() { - super(Outcome.Damage); - this.staticText = "{this} deals 1 damage to each creature defending player controls"; - } - - private GougedZealotEffect(final GougedZealotEffect effect) { - super(effect); - } - - @Override - public GougedZealotEffect copy() { - return new GougedZealotEffect(this); - } - - @Override - public boolean apply(Game game, Ability source) { - UUID defendingPlayerId = getTargetPointer().getFirst(game, source); - if (defendingPlayerId != null) { - for (Permanent permanent : game.getBattlefield().getAllActivePermanents(StaticFilters.FILTER_PERMANENT_CREATURE, defendingPlayerId, game)) { - permanent.damage(1, source.getSourceId(), source, game); - } - return true; - } - return false; - } -} diff --git a/Mage.Sets/src/mage/cards/l/LordOfShatterskullPass.java b/Mage.Sets/src/mage/cards/l/LordOfShatterskullPass.java index 8c009824f8f..44bed612ae5 100644 --- a/Mage.Sets/src/mage/cards/l/LordOfShatterskullPass.java +++ b/Mage.Sets/src/mage/cards/l/LordOfShatterskullPass.java @@ -1,26 +1,21 @@ - package mage.cards.l; -import java.util.List; -import java.util.UUID; import mage.MageInt; import mage.abilities.Abilities; import mage.abilities.AbilitiesImpl; import mage.abilities.Ability; import mage.abilities.common.AttacksTriggeredAbility; import mage.abilities.costs.mana.ManaCostsImpl; -import mage.abilities.effects.OneShotEffect; +import mage.abilities.effects.common.DamageAllControlledTargetEffect; import mage.abilities.keyword.LevelUpAbility; import mage.abilities.keyword.LevelerCardBuilder; import mage.cards.CardSetInfo; import mage.cards.LevelerCard; import mage.constants.CardType; +import mage.constants.SetTargetPointer; import mage.constants.SubType; -import mage.constants.Outcome; -import mage.filter.common.FilterCreaturePermanent; -import mage.filter.predicate.permanent.ControllerIdPredicate; -import mage.game.Game; -import mage.game.permanent.Permanent; + +import java.util.UUID; /** * @@ -46,7 +41,9 @@ public final class LordOfShatterskullPass extends LevelerCard { // 6/6 // Whenever Lord of Shatterskull Pass attacks, it deals 6 damage to each creature defending player controls. Abilities abilities2 = new AbilitiesImpl<>(); - abilities2.add(new AttacksTriggeredAbility(new LordOfShatterskullPassEffect(), false)); + abilities2.add(new AttacksTriggeredAbility(new DamageAllControlledTargetEffect(6) + .setText("it deals 6 damage to each creature defending player controls"), + false, null, SetTargetPointer.PLAYER)); this.addAbilities(LevelerCardBuilder.construct( new LevelerCardBuilder.LevelAbility(1, 5, abilities1, 6, 6), @@ -63,35 +60,3 @@ public final class LordOfShatterskullPass extends LevelerCard { return new LordOfShatterskullPass(this); } } - -class LordOfShatterskullPassEffect extends OneShotEffect { - - LordOfShatterskullPassEffect() { - super(Outcome.Damage); - this.staticText = "it deals 6 damage to each creature defending player controls"; - } - - private LordOfShatterskullPassEffect(final LordOfShatterskullPassEffect effect) { - super(effect); - } - - @Override - public LordOfShatterskullPassEffect copy() { - return new LordOfShatterskullPassEffect(this); - } - - @Override - public boolean apply(Game game, Ability source) { - UUID defenderId = game.getCombat().getDefenderId(source.getSourceId()); - if (defenderId != null) { - FilterCreaturePermanent filter = new FilterCreaturePermanent(); - filter.add(new ControllerIdPredicate(defenderId)); - List permanents = game.getBattlefield().getActivePermanents(filter, source.getControllerId(), source, game); - for (Permanent permanent : permanents) { - permanent.damage(6, source.getSourceId(), source, game, false, true); - } - return true; - } - return false; - } -} diff --git a/Mage.Sets/src/mage/cards/r/RoninCliffrider.java b/Mage.Sets/src/mage/cards/r/RoninCliffrider.java index de4898d4917..ab6f1bd3a45 100644 --- a/Mage.Sets/src/mage/cards/r/RoninCliffrider.java +++ b/Mage.Sets/src/mage/cards/r/RoninCliffrider.java @@ -1,22 +1,16 @@ - package mage.cards.r; -import java.util.List; -import java.util.UUID; import mage.MageInt; -import mage.abilities.Ability; import mage.abilities.common.AttacksTriggeredAbility; -import mage.abilities.effects.OneShotEffect; +import mage.abilities.effects.common.DamageAllControlledTargetEffect; import mage.abilities.keyword.BushidoAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SetTargetPointer; import mage.constants.SubType; -import mage.constants.Outcome; -import mage.filter.common.FilterCreaturePermanent; -import mage.filter.predicate.permanent.ControllerIdPredicate; -import mage.game.Game; -import mage.game.permanent.Permanent; + +import java.util.UUID; /** * @@ -35,7 +29,9 @@ public final class RoninCliffrider extends CardImpl { // Bushido 1 this.addAbility(new BushidoAbility(1)); // Whenever Ronin Cliffrider attacks, you may have it deal 1 damage to each creature defending player controls. - this.addAbility(new AttacksTriggeredAbility(new RoninCliffriderEffect(), true)); + this.addAbility(new AttacksTriggeredAbility(new DamageAllControlledTargetEffect(1) + .setText("you may have it deal 1 damage to each creature defending player controls"), + true, null, SetTargetPointer.PLAYER)); } private RoninCliffrider(final RoninCliffrider card) { @@ -47,34 +43,3 @@ public final class RoninCliffrider extends CardImpl { return new RoninCliffrider(this); } } -class RoninCliffriderEffect extends OneShotEffect { - - RoninCliffriderEffect() { - super(Outcome.Damage); - this.staticText = "you may have it deal 1 damage to each creature defending player controls"; - } - - private RoninCliffriderEffect(final RoninCliffriderEffect effect) { - super(effect); - } - - @Override - public RoninCliffriderEffect copy() { - return new RoninCliffriderEffect(this); - } - - @Override - public boolean apply(Game game, Ability source) { - UUID defenderId = game.getCombat().getDefenderId(source.getSourceId()); - if (defenderId != null) { - FilterCreaturePermanent filter = new FilterCreaturePermanent(); - filter.add(new ControllerIdPredicate(defenderId)); - List permanents = game.getBattlefield().getActivePermanents(filter, source.getControllerId(), source, game); - for (Permanent permanent : permanents) { - permanent.damage(1, source.getSourceId(), source, game, false, true); - } - return true; - } - return false; - } -} diff --git a/Mage.Sets/src/mage/cards/s/SwathcutterGiant.java b/Mage.Sets/src/mage/cards/s/SwathcutterGiant.java index b218e76e6f8..a39fb813f26 100644 --- a/Mage.Sets/src/mage/cards/s/SwathcutterGiant.java +++ b/Mage.Sets/src/mage/cards/s/SwathcutterGiant.java @@ -1,20 +1,16 @@ package mage.cards.s; -import java.util.UUID; import mage.MageInt; -import mage.abilities.Ability; import mage.abilities.common.AttacksTriggeredAbility; -import mage.abilities.effects.OneShotEffect; -import mage.abilities.effects.common.DamageAllEffect; -import mage.constants.SubType; +import mage.abilities.effects.common.DamageAllControlledTargetEffect; import mage.abilities.keyword.VigilanceAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; -import mage.constants.Outcome; -import mage.filter.common.FilterCreaturePermanent; -import mage.filter.predicate.permanent.ControllerIdPredicate; -import mage.game.Game; +import mage.constants.SetTargetPointer; +import mage.constants.SubType; + +import java.util.UUID; /** * @@ -34,7 +30,9 @@ public final class SwathcutterGiant extends CardImpl { this.addAbility(VigilanceAbility.getInstance()); // Whenever Swathcutter Giant attacks, it deals 1 damage to each creature defending player controls. - this.addAbility(new AttacksTriggeredAbility(new SwathcutterGiantEffect(), false)); + this.addAbility(new AttacksTriggeredAbility(new DamageAllControlledTargetEffect(1) + .setText("it deals 1 damage to each creature defending player controls"), + false, null, SetTargetPointer.PLAYER)); } private SwathcutterGiant(final SwathcutterGiant card) { @@ -46,30 +44,3 @@ public final class SwathcutterGiant extends CardImpl { return new SwathcutterGiant(this); } } - -class SwathcutterGiantEffect extends OneShotEffect { - - SwathcutterGiantEffect() { - super(Outcome.Benefit); - this.staticText = "it deals 1 damage to each creature " - + "defending player controls."; - } - - private SwathcutterGiantEffect(final SwathcutterGiantEffect effect) { - super(effect); - } - - @Override - public SwathcutterGiantEffect copy() { - return new SwathcutterGiantEffect(this); - } - - @Override - public boolean apply(Game game, Ability source) { - FilterCreaturePermanent filter = new FilterCreaturePermanent(); - filter.add(new ControllerIdPredicate( - game.getCombat().getDefenderId(source.getSourceId()) - )); - return new DamageAllEffect(1, filter).apply(game, source); - } -}