From e057bde1501eae3c6a1538eebb318fb5c0a9ddfb Mon Sep 17 00:00:00 2001 From: Styxo Date: Thu, 5 Jan 2017 14:12:18 +0100 Subject: [PATCH] [Refactor] Merged some similar abilities together --- Mage.Sets/src/mage/cards/a/AbattoirGhoul.java | 4 +- Mage.Sets/src/mage/cards/a/Abomination.java | 9 +- .../src/mage/cards/a/AetherMembrane.java | 13 +- .../src/mage/cards/a/AislingLeprechaun.java | 6 +- Mage.Sets/src/mage/cards/a/AshmouthHound.java | 6 +- .../src/mage/cards/a/AssembledAlphas.java | 6 +- .../src/mage/cards/a/AuriokChampion.java | 16 ++- Mage.Sets/src/mage/cards/b/BaronSengir.java | 4 +- Mage.Sets/src/mage/cards/b/BindingAgony.java | 4 +- Mage.Sets/src/mage/cards/b/BloodCultist.java | 4 +- .../src/mage/cards/b/BrimazKingOfOreskos.java | 6 +- .../src/mage/cards/b/BushiTenderfoot.java | 4 +- .../src/mage/cards/c/ChampionOfLambholt.java | 29 +++-- Mage.Sets/src/mage/cards/c/Cockatrice.java | 10 +- Mage.Sets/src/mage/cards/d/Deathgazer.java | 9 +- Mage.Sets/src/mage/cards/d/DenProtector.java | 36 +----- Mage.Sets/src/mage/cards/d/DreadSlaver.java | 4 +- Mage.Sets/src/mage/cards/d/DreadSpecter.java | 11 +- Mage.Sets/src/mage/cards/d/DruidsCall.java | 4 +- .../src/mage/cards/d/DwarvenSoldier.java | 8 +- .../src/mage/cards/e/EngulfingSlagwurm.java | 12 +- Mage.Sets/src/mage/cards/f/FlailingDrake.java | 6 +- .../src/mage/cards/f/FlameheartWerewolf.java | 6 +- Mage.Sets/src/mage/cards/f/FrozenSolid.java | 4 +- .../src/mage/cards/g/GarzaZolPlagueQueen.java | 4 +- .../src/mage/cards/g/GoblinFlotilla.java | 34 ++---- .../src/mage/cards/g/GoldnightCommander.java | 20 +++- Mage.Sets/src/mage/cards/g/GorgonRecluse.java | 10 +- .../src/mage/cards/g/GreenbeltDruid.java | 64 ---------- .../src/mage/cards/g/GriffinProtector.java | 18 ++- .../src/mage/cards/g/GuerrillaTactics.java | 4 +- .../src/mage/cards/h/HealerOfThePride.java | 16 ++- .../src/mage/cards/i/InfernoElemental.java | 6 +- .../src/mage/cards/i/InitiateOfBlood.java | 4 +- ...lMonuments.java => InspiringStatuary.java} | 10 +- .../cards/k/KaijinOfTheVanishingTouch.java | 12 +- .../src/mage/cards/k/KessigForgemaster.java | 6 +- Mage.Sets/src/mage/cards/l/LoyalSentry.java | 14 +-- Mage.Sets/src/mage/cards/m/Meglonoth.java | 6 +- Mage.Sets/src/mage/cards/m/Metrognome.java | 4 +- Mage.Sets/src/mage/cards/m/MireBlight.java | 4 +- Mage.Sets/src/mage/cards/m/MortalWound.java | 4 +- Mage.Sets/src/mage/cards/p/PredatorOoze.java | 4 +- Mage.Sets/src/mage/cards/q/Quagnoth.java | 4 +- Mage.Sets/src/mage/cards/r/RaggedVeins.java | 4 +- .../src/mage/cards/r/RepentantVampire.java | 4 +- Mage.Sets/src/mage/cards/r/RockBasilisk.java | 6 +- Mage.Sets/src/mage/cards/r/RotWolf.java | 4 +- Mage.Sets/src/mage/cards/s/SengirBats.java | 4 +- Mage.Sets/src/mage/cards/s/SengirVampire.java | 4 +- Mage.Sets/src/mage/cards/s/ShapeStealer.java | 6 +- .../mage/cards/s/ShieldOfTheRighteous.java | 10 +- Mage.Sets/src/mage/cards/s/SlaveI.java | 4 +- Mage.Sets/src/mage/cards/s/SoulCollector.java | 4 +- Mage.Sets/src/mage/cards/s/SoulLink.java | 4 +- .../src/mage/cards/s/SoulsAttendant.java | 19 ++- .../src/mage/cards/s/SpitefulShadows.java | 4 +- .../src/mage/cards/t/TalruumChampion.java | 6 +- Mage.Sets/src/mage/cards/t/TangleAsp.java | 9 +- .../src/mage/cards/t/ThicketBasilisk.java | 9 +- .../src/mage/cards/t/TreefolkMystic.java | 17 +-- .../src/mage/cards/v/VampiricDragon.java | 4 +- .../src/mage/cards/v/VampiricEmbrace.java | 4 +- .../src/mage/cards/v/VampiricSliver.java | 4 +- Mage.Sets/src/mage/cards/v/VeinDrinker.java | 4 +- .../src/mage/cards/v/VenomousDragonfly.java | 9 +- Mage.Sets/src/mage/cards/v/VertigoSpawn.java | 6 +- Mage.Sets/src/mage/cards/w/WallOfFrost.java | 8 +- Mage.Sets/src/mage/cards/w/WallOfTears.java | 8 +- .../src/mage/cards/w/WitherscaleWurm.java | 6 +- .../src/mage/cards/z/ZurgoHelmsmasher.java | 4 +- Mage.Sets/src/mage/sets/AetherRevolt.java | 1 - ...tureEntersBattlefieldTriggeredAbility.java | 53 --------- .../BlocksAttachedTriggeredAbility.java | 40 +++++-- ...locksCreatureAttachedTriggeredAbility.java | 105 ---------------- .../BlocksCreatureTriggeredAbility.java | 86 -------------- ...omesBlockedByCreatureTriggeredAbility.java | 112 ------------------ ...locksOrBecomesBlockedTriggeredAbility.java | 59 +++++++-- .../common/BlocksTriggeredAbility.java | 23 ++-- ...> DealtDamageAndDiedTriggeredAbility.java} | 12 +- ... DealtDamageAttachedTriggeredAbility.java} | 12 +- ...=> DiscardedByOpponentTriggerAbility.java} | 12 +- ...erCreatureYourControlTriggeredAbility.java | 77 ------------ ...ckedByCreaturesWithGreaterPowerEffect.java | 11 +- ...BlockedByCreaturesWithLessPowerEffect.java | 10 +- 85 files changed, 412 insertions(+), 845 deletions(-) delete mode 100644 Mage.Sets/src/mage/cards/g/GreenbeltDruid.java rename Mage.Sets/src/mage/cards/i/{InspirationalMonuments.java => InspiringStatuary.java} (88%) delete mode 100644 Mage/src/main/java/mage/abilities/common/AnotherCreatureEntersBattlefieldTriggeredAbility.java delete mode 100644 Mage/src/main/java/mage/abilities/common/BlocksCreatureAttachedTriggeredAbility.java delete mode 100644 Mage/src/main/java/mage/abilities/common/BlocksCreatureTriggeredAbility.java delete mode 100644 Mage/src/main/java/mage/abilities/common/BlocksOrBecomesBlockedByCreatureTriggeredAbility.java rename Mage/src/main/java/mage/abilities/common/{DiesAndDealtDamageThisTurnTriggeredAbility.java => DealtDamageAndDiedTriggeredAbility.java} (77%) rename Mage/src/main/java/mage/abilities/common/{DamageDealtToAttachedTriggeredAbility.java => DealtDamageAttachedTriggeredAbility.java} (87%) rename Mage/src/main/java/mage/abilities/common/{DiscardedByOpponentTrigger.java => DiscardedByOpponentTriggerAbility.java} (84%) delete mode 100644 Mage/src/main/java/mage/abilities/common/EntersAnotherCreatureYourControlTriggeredAbility.java diff --git a/Mage.Sets/src/mage/cards/a/AbattoirGhoul.java b/Mage.Sets/src/mage/cards/a/AbattoirGhoul.java index 63690b62a60..cf980e7d650 100644 --- a/Mage.Sets/src/mage/cards/a/AbattoirGhoul.java +++ b/Mage.Sets/src/mage/cards/a/AbattoirGhoul.java @@ -35,7 +35,7 @@ import mage.cards.CardSetInfo; import mage.constants.*; import mage.game.Game; import java.util.UUID; -import mage.abilities.common.DiesAndDealtDamageThisTurnTriggeredAbility; +import mage.abilities.common.DealtDamageAndDiedTriggeredAbility; import mage.abilities.effects.OneShotEffect; import mage.cards.Card; import mage.game.permanent.Permanent; @@ -57,7 +57,7 @@ public class AbattoirGhoul extends CardImpl { this.addAbility(FirstStrikeAbility.getInstance()); // Whenever a creature dealt damage by Abattoir Ghoul this turn dies, you gain life equal to that creature's toughness. - this.addAbility(new DiesAndDealtDamageThisTurnTriggeredAbility(new AbattoirGhoulEffect(), false)); + this.addAbility(new DealtDamageAndDiedTriggeredAbility(new AbattoirGhoulEffect(), false)); } public AbattoirGhoul(final AbattoirGhoul card) { diff --git a/Mage.Sets/src/mage/cards/a/Abomination.java b/Mage.Sets/src/mage/cards/a/Abomination.java index 603b4f91dd8..e49d8f6af2f 100644 --- a/Mage.Sets/src/mage/cards/a/Abomination.java +++ b/Mage.Sets/src/mage/cards/a/Abomination.java @@ -30,7 +30,7 @@ package mage.cards.a; import java.util.UUID; import mage.MageInt; import mage.ObjectColor; -import mage.abilities.common.BlocksOrBecomesBlockedByCreatureTriggeredAbility; +import mage.abilities.common.BlocksOrBecomesBlockedTriggeredAbility; import mage.abilities.common.delayed.AtTheEndOfCombatDelayedTriggeredAbility; import mage.abilities.effects.Effect; import mage.abilities.effects.common.CreateDelayedTriggeredAbilityEffect; @@ -55,17 +55,16 @@ public class Abomination extends CardImpl { } public Abomination(UUID ownerId, CardSetInfo setInfo) { - super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{B}{B}"); + super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{B}{B}"); this.subtype.add("Horror"); this.power = new MageInt(2); this.toughness = new MageInt(6); // Whenever Abomination blocks or becomes blocked by a green or white creature, destroy that creature at end of combat. - Effect effect = new CreateDelayedTriggeredAbilityEffect( - new AtTheEndOfCombatDelayedTriggeredAbility(new DestroyTargetEffect()), true); + Effect effect = new CreateDelayedTriggeredAbilityEffect(new AtTheEndOfCombatDelayedTriggeredAbility(new DestroyTargetEffect()), true); effect.setText("destroy that creature at end of combat"); - this.addAbility(new BlocksOrBecomesBlockedByCreatureTriggeredAbility(effect, filter, false)); + this.addAbility(new BlocksOrBecomesBlockedTriggeredAbility(effect, filter, false)); } public Abomination(final Abomination card) { diff --git a/Mage.Sets/src/mage/cards/a/AetherMembrane.java b/Mage.Sets/src/mage/cards/a/AetherMembrane.java index 08469820795..555dc7e4016 100644 --- a/Mage.Sets/src/mage/cards/a/AetherMembrane.java +++ b/Mage.Sets/src/mage/cards/a/AetherMembrane.java @@ -29,7 +29,7 @@ package mage.cards.a; import java.util.UUID; import mage.MageInt; -import mage.abilities.common.BlocksCreatureTriggeredAbility; +import mage.abilities.common.BlocksTriggeredAbility; import mage.abilities.common.delayed.AtTheEndOfCombatDelayedTriggeredAbility; import mage.abilities.effects.Effect; import mage.abilities.effects.common.CreateDelayedTriggeredAbilityEffect; @@ -47,20 +47,21 @@ import mage.constants.CardType; public class AetherMembrane extends CardImpl { public AetherMembrane(UUID ownerId, CardSetInfo setInfo) { - super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{R}{R}"); + super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{R}{R}"); this.subtype.add("Wall"); this.power = new MageInt(0); this.toughness = new MageInt(5); - // Defender; reach - this.addAbility(ReachAbility.getInstance()); + // Defender this.addAbility(DefenderAbility.getInstance()); + // Reach + this.addAbility(ReachAbility.getInstance()); + // Whenever Aether Membrane blocks a creature, return that creature to its owner's hand at end of combat. Effect effect = new ReturnToHandTargetEffect(); effect.setText("return that creature to its owner's hand at end of combat"); - this.addAbility(new BlocksCreatureTriggeredAbility(new CreateDelayedTriggeredAbilityEffect( - new AtTheEndOfCombatDelayedTriggeredAbility(effect)), false, true)); + this.addAbility(new BlocksTriggeredAbility(new CreateDelayedTriggeredAbilityEffect(new AtTheEndOfCombatDelayedTriggeredAbility(effect)), false, true)); } public AetherMembrane(final AetherMembrane card) { diff --git a/Mage.Sets/src/mage/cards/a/AislingLeprechaun.java b/Mage.Sets/src/mage/cards/a/AislingLeprechaun.java index c46a6023af6..b2f1babbc24 100644 --- a/Mage.Sets/src/mage/cards/a/AislingLeprechaun.java +++ b/Mage.Sets/src/mage/cards/a/AislingLeprechaun.java @@ -31,7 +31,7 @@ import java.util.UUID; import mage.MageInt; import mage.ObjectColor; import mage.abilities.Ability; -import mage.abilities.common.BlocksOrBecomesBlockedByCreatureTriggeredAbility; +import mage.abilities.common.BlocksOrBecomesBlockedTriggeredAbility; import mage.abilities.effects.Effect; import mage.abilities.effects.common.continuous.BecomesColorTargetEffect; import mage.cards.CardImpl; @@ -46,7 +46,7 @@ import mage.constants.Duration; public class AislingLeprechaun extends CardImpl { public AislingLeprechaun(UUID ownerId, CardSetInfo setInfo) { - super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{G}"); + super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{G}"); this.subtype.add("Faerie"); this.power = new MageInt(1); this.toughness = new MageInt(1); @@ -54,7 +54,7 @@ public class AislingLeprechaun extends CardImpl { // Whenever Aisling Leprechaun blocks or becomes blocked by a creature, that creature becomes green. Effect effect = new BecomesColorTargetEffect(ObjectColor.GREEN, Duration.EndOfGame); effect.setText("that creature becomes green"); - Ability ability = new BlocksOrBecomesBlockedByCreatureTriggeredAbility(effect, false); + Ability ability = new BlocksOrBecomesBlockedTriggeredAbility(effect, false); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/a/AshmouthHound.java b/Mage.Sets/src/mage/cards/a/AshmouthHound.java index d2d76533c35..3b70d17472f 100644 --- a/Mage.Sets/src/mage/cards/a/AshmouthHound.java +++ b/Mage.Sets/src/mage/cards/a/AshmouthHound.java @@ -30,7 +30,7 @@ package mage.cards.a; import java.util.UUID; import mage.constants.CardType; import mage.MageInt; -import mage.abilities.common.BlocksOrBecomesBlockedByCreatureTriggeredAbility; +import mage.abilities.common.BlocksOrBecomesBlockedTriggeredAbility; import mage.abilities.effects.common.DamageTargetEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; @@ -42,7 +42,7 @@ import mage.cards.CardSetInfo; public class AshmouthHound extends CardImpl { public AshmouthHound(UUID ownerId, CardSetInfo setInfo) { - super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{R}"); + super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{R}"); this.subtype.add("Elemental"); this.subtype.add("Hound"); @@ -50,7 +50,7 @@ public class AshmouthHound extends CardImpl { this.toughness = new MageInt(1); // Whenever Ashmouth Hound blocks or becomes blocked by a creature, Ashmouth Hound deals 1 damage to that creature. - this.addAbility(new BlocksOrBecomesBlockedByCreatureTriggeredAbility(new DamageTargetEffect(1, true, "that creature"), false)); + this.addAbility(new BlocksOrBecomesBlockedTriggeredAbility(new DamageTargetEffect(1, true, "that creature"), false)); } public AshmouthHound(final AshmouthHound card) { diff --git a/Mage.Sets/src/mage/cards/a/AssembledAlphas.java b/Mage.Sets/src/mage/cards/a/AssembledAlphas.java index 22960327661..80025eda5fd 100644 --- a/Mage.Sets/src/mage/cards/a/AssembledAlphas.java +++ b/Mage.Sets/src/mage/cards/a/AssembledAlphas.java @@ -30,7 +30,7 @@ package mage.cards.a; import java.util.UUID; import mage.MageInt; import mage.abilities.Ability; -import mage.abilities.common.BlocksOrBecomesBlockedByCreatureTriggeredAbility; +import mage.abilities.common.BlocksOrBecomesBlockedTriggeredAbility; import mage.abilities.effects.Effect; import mage.abilities.effects.common.DamageTargetControllerEffect; import mage.abilities.effects.common.DamageTargetEffect; @@ -45,13 +45,13 @@ import mage.constants.CardType; public class AssembledAlphas extends CardImpl { public AssembledAlphas(UUID ownerId, CardSetInfo setInfo) { - super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{5}{R}"); + super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{5}{R}"); this.subtype.add("Wolf"); this.power = new MageInt(5); this.toughness = new MageInt(5); // Whenever Assembled Alphas blocks or becomes blocked by a creature, Assembled Alphas deals 3 damage to that creature and 3 damage to that creature's controller. - Ability ability = new BlocksOrBecomesBlockedByCreatureTriggeredAbility(new DamageTargetEffect(3, true, "that creature"), false); + Ability ability = new BlocksOrBecomesBlockedTriggeredAbility(new DamageTargetEffect(3, true, "that creature"), false); Effect effect = new DamageTargetControllerEffect(3); effect.setText("and 3 damage to that creature's controller"); ability.addEffect(effect); diff --git a/Mage.Sets/src/mage/cards/a/AuriokChampion.java b/Mage.Sets/src/mage/cards/a/AuriokChampion.java index e53c00fdc5e..ee3317eaad9 100644 --- a/Mage.Sets/src/mage/cards/a/AuriokChampion.java +++ b/Mage.Sets/src/mage/cards/a/AuriokChampion.java @@ -30,12 +30,15 @@ package mage.cards.a; import java.util.UUID; import mage.MageInt; import mage.ObjectColor; -import mage.abilities.common.AnotherCreatureEntersBattlefieldTriggeredAbility; +import mage.abilities.common.EntersBattlefieldAllTriggeredAbility; import mage.abilities.effects.common.GainLifeEffect; import mage.abilities.keyword.ProtectionAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.Zone; +import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.permanent.AnotherPredicate; /** * @@ -43,8 +46,14 @@ import mage.constants.CardType; */ public class AuriokChampion extends CardImpl { + private static FilterCreaturePermanent filter = new FilterCreaturePermanent("another creature"); + + static { + filter.add(new AnotherPredicate()); + } + public AuriokChampion(UUID ownerId, CardSetInfo setInfo) { - super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{W}{W}"); + super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{W}{W}"); this.subtype.add("Human"); this.subtype.add("Cleric"); @@ -53,8 +62,9 @@ public class AuriokChampion extends CardImpl { // Protection from black and from red this.addAbility(ProtectionAbility.from(ObjectColor.BLACK, ObjectColor.RED)); + // Whenever another creature enters the battlefield, you may gain 1 life. - this.addAbility(new AnotherCreatureEntersBattlefieldTriggeredAbility(new GainLifeEffect(1), true)); + this.addAbility(new EntersBattlefieldAllTriggeredAbility(Zone.BATTLEFIELD, new GainLifeEffect(1), filter, true)); } diff --git a/Mage.Sets/src/mage/cards/b/BaronSengir.java b/Mage.Sets/src/mage/cards/b/BaronSengir.java index 6bff446724f..5fcaa90fcc0 100644 --- a/Mage.Sets/src/mage/cards/b/BaronSengir.java +++ b/Mage.Sets/src/mage/cards/b/BaronSengir.java @@ -30,7 +30,7 @@ package mage.cards.b; import java.util.UUID; import mage.MageInt; import mage.abilities.Ability; -import mage.abilities.common.DiesAndDealtDamageThisTurnTriggeredAbility; +import mage.abilities.common.DealtDamageAndDiedTriggeredAbility; import mage.abilities.common.SimpleActivatedAbility; import mage.abilities.costs.common.TapSourceCost; import mage.abilities.effects.common.RegenerateTargetEffect; @@ -70,7 +70,7 @@ public class BaronSengir extends CardImpl { this.addAbility(FlyingAbility.getInstance()); // Whenever a creature dealt damage by Baron Sengir this turn dies, put a +2/+2 counter on Baron Sengir. - this.addAbility(new DiesAndDealtDamageThisTurnTriggeredAbility(new AddCountersSourceEffect(CounterType.P2P2.createInstance()), false)); + this.addAbility(new DealtDamageAndDiedTriggeredAbility(new AddCountersSourceEffect(CounterType.P2P2.createInstance()), false)); // {tap}: Regenerate another target Vampire. Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new RegenerateTargetEffect(), new TapSourceCost()); diff --git a/Mage.Sets/src/mage/cards/b/BindingAgony.java b/Mage.Sets/src/mage/cards/b/BindingAgony.java index aa785df1dc2..5b8ea3ca688 100644 --- a/Mage.Sets/src/mage/cards/b/BindingAgony.java +++ b/Mage.Sets/src/mage/cards/b/BindingAgony.java @@ -29,7 +29,7 @@ package mage.cards.b; import java.util.UUID; import mage.abilities.Ability; -import mage.abilities.common.DamageDealtToAttachedTriggeredAbility; +import mage.abilities.common.DealtDamageAttachedTriggeredAbility; import mage.abilities.dynamicvalue.common.NumericSetToEffectValues; import mage.abilities.effects.Effect; import mage.abilities.effects.common.AttachEffect; @@ -63,7 +63,7 @@ public class BindingAgony extends CardImpl { // Whenever enchanted creature is dealt damage, Binding Agony deals that much damage to that creature's controller. Effect effect = new DamageTargetEffect(new NumericSetToEffectValues("that much", "damage")); effect.setText("{this} deals that much damage to that creature's controller"); - this.addAbility(new DamageDealtToAttachedTriggeredAbility(Zone.BATTLEFIELD, effect, false, SetTargetPointer.PLAYER)); + this.addAbility(new DealtDamageAttachedTriggeredAbility(Zone.BATTLEFIELD, effect, false, SetTargetPointer.PLAYER)); } public BindingAgony(final BindingAgony card) { diff --git a/Mage.Sets/src/mage/cards/b/BloodCultist.java b/Mage.Sets/src/mage/cards/b/BloodCultist.java index 87c258c8692..40964cc35ea 100644 --- a/Mage.Sets/src/mage/cards/b/BloodCultist.java +++ b/Mage.Sets/src/mage/cards/b/BloodCultist.java @@ -30,7 +30,7 @@ package mage.cards.b; import java.util.UUID; import mage.MageInt; import mage.abilities.Ability; -import mage.abilities.common.DiesAndDealtDamageThisTurnTriggeredAbility; +import mage.abilities.common.DealtDamageAndDiedTriggeredAbility; import mage.abilities.common.SimpleActivatedAbility; import mage.abilities.costs.common.TapSourceCost; import mage.abilities.effects.common.DamageTargetEffect; @@ -61,7 +61,7 @@ public class BloodCultist extends CardImpl { ability.addTarget(new TargetCreaturePermanent()); this.addAbility(ability); // Whenever a creature dealt damage by Blood Cultist this turn dies, put a +1/+1 counter on Blood Cultist. - this.addAbility(new DiesAndDealtDamageThisTurnTriggeredAbility(new AddCountersSourceEffect(CounterType.P1P1.createInstance()))); + this.addAbility(new DealtDamageAndDiedTriggeredAbility(new AddCountersSourceEffect(CounterType.P1P1.createInstance()))); } public BloodCultist(final BloodCultist card) { diff --git a/Mage.Sets/src/mage/cards/b/BrimazKingOfOreskos.java b/Mage.Sets/src/mage/cards/b/BrimazKingOfOreskos.java index bec5c8b334f..8a3d6149b8a 100644 --- a/Mage.Sets/src/mage/cards/b/BrimazKingOfOreskos.java +++ b/Mage.Sets/src/mage/cards/b/BrimazKingOfOreskos.java @@ -31,7 +31,7 @@ import java.util.UUID; import mage.MageInt; import mage.abilities.Ability; import mage.abilities.common.AttacksTriggeredAbility; -import mage.abilities.common.BlocksCreatureTriggeredAbility; +import mage.abilities.common.BlocksTriggeredAbility; import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.common.CreateTokenEffect; import mage.abilities.keyword.VigilanceAbility; @@ -53,7 +53,7 @@ import mage.game.permanent.token.CatSoldierCreatureToken; public class BrimazKingOfOreskos extends CardImpl { public BrimazKingOfOreskos(UUID ownerId, CardSetInfo setInfo) { - super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}{W}"); + super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{W}{W}"); this.supertype.add("Legendary"); this.subtype.add("Cat"); this.subtype.add("Soldier"); @@ -68,7 +68,7 @@ public class BrimazKingOfOreskos extends CardImpl { this.addAbility(new AttacksTriggeredAbility(new CreateTokenEffect(new CatSoldierCreatureToken(), 1, false, true), false)); // Whenever Brimaz blocks a creature, create a 1/1 white Cat Soldier creature token with vigilance blocking that creature. - this.addAbility(new BlocksCreatureTriggeredAbility(new BrimazKingOfOreskosEffect(), false, true)); + this.addAbility(new BlocksTriggeredAbility(new BrimazKingOfOreskosEffect(), false, true)); } public BrimazKingOfOreskos(final BrimazKingOfOreskos card) { diff --git a/Mage.Sets/src/mage/cards/b/BushiTenderfoot.java b/Mage.Sets/src/mage/cards/b/BushiTenderfoot.java index 8ee95565183..6b6425e0602 100644 --- a/Mage.Sets/src/mage/cards/b/BushiTenderfoot.java +++ b/Mage.Sets/src/mage/cards/b/BushiTenderfoot.java @@ -32,7 +32,7 @@ package mage.cards.b; import java.util.UUID; import mage.MageInt; -import mage.abilities.common.DiesAndDealtDamageThisTurnTriggeredAbility; +import mage.abilities.common.DealtDamageAndDiedTriggeredAbility; import mage.abilities.effects.Effect; import mage.abilities.effects.common.FlipSourceEffect; import mage.abilities.keyword.BushidoAbility; @@ -68,7 +68,7 @@ public class BushiTenderfoot extends CardImpl { // When that creature is put into a graveyard this turn, flip Initiate of Blood. Effect effect = new FlipSourceEffect(new KenzoTheHardhearted()); effect.setText("flip {this}"); - this.addAbility(new DiesAndDealtDamageThisTurnTriggeredAbility(effect)); + this.addAbility(new DealtDamageAndDiedTriggeredAbility(effect)); } public BushiTenderfoot(final BushiTenderfoot card) { diff --git a/Mage.Sets/src/mage/cards/c/ChampionOfLambholt.java b/Mage.Sets/src/mage/cards/c/ChampionOfLambholt.java index e1a9b940f5c..564ff597cea 100644 --- a/Mage.Sets/src/mage/cards/c/ChampionOfLambholt.java +++ b/Mage.Sets/src/mage/cards/c/ChampionOfLambholt.java @@ -30,7 +30,6 @@ package mage.cards.c; import mage.constants.CardType; import mage.MageInt; import mage.abilities.Ability; -import mage.abilities.common.EntersAnotherCreatureYourControlTriggeredAbility; import mage.abilities.common.SimpleStaticAbility; import mage.abilities.effects.RestrictionEffect; import mage.abilities.effects.common.counter.AddCountersSourceEffect; @@ -43,14 +42,23 @@ import mage.game.Game; import mage.game.permanent.Permanent; import java.util.UUID; +import mage.abilities.common.EntersBattlefieldAllTriggeredAbility; +import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.permanent.AnotherPredicate; /** * @author noxx */ public class ChampionOfLambholt extends CardImpl { + private static FilterCreaturePermanent filter = new FilterCreaturePermanent("another creature"); + + static { + filter.add(new AnotherPredicate()); + } + public ChampionOfLambholt(UUID ownerId, CardSetInfo setInfo) { - super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}{G}"); + super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{G}{G}"); this.subtype.add("Human"); this.subtype.add("Warrior"); @@ -61,7 +69,8 @@ public class ChampionOfLambholt extends CardImpl { this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new ChampionOfLambholtEffect())); // Whenever another creature enters the battlefield under your control, put a +1/+1 counter on Champion of Lambholt. - this.addAbility(new EntersAnotherCreatureYourControlTriggeredAbility(new AddCountersSourceEffect(CounterType.P1P1.createInstance()))); + this.addAbility(new EntersBattlefieldAllTriggeredAbility(Zone.BATTLEFIELD, new AddCountersSourceEffect(CounterType.P1P1.createInstance()), filter, false, null, true)); + } public ChampionOfLambholt(final ChampionOfLambholt card) { @@ -87,20 +96,14 @@ class ChampionOfLambholtEffect extends RestrictionEffect { @Override public boolean applies(Permanent permanent, Ability source, Game game) { - Permanent sourcePermanent = game.getPermanent(source.getSourceId()); - if (sourcePermanent != null) { - return true; - } - return false; + return true; } @Override public boolean canBlock(Permanent attacker, Permanent blocker, Ability source, Game game) { - if (attacker != null && blocker != null) { - Permanent sourcePermanent = game.getPermanent(source.getSourceId()); - if (sourcePermanent != null && attacker.getControllerId().equals(sourcePermanent.getControllerId())) { - return blocker.getPower().getValue() >= sourcePermanent.getPower().getValue(); - } + Permanent sourcePermanent = game.getPermanent(source.getSourceId()); + if (sourcePermanent != null && attacker.getControllerId().equals(sourcePermanent.getControllerId())) { + return blocker.getPower().getValue() >= sourcePermanent.getPower().getValue(); } return true; } diff --git a/Mage.Sets/src/mage/cards/c/Cockatrice.java b/Mage.Sets/src/mage/cards/c/Cockatrice.java index 386a803abd1..d5e5e86e94d 100644 --- a/Mage.Sets/src/mage/cards/c/Cockatrice.java +++ b/Mage.Sets/src/mage/cards/c/Cockatrice.java @@ -29,7 +29,7 @@ package mage.cards.c; import java.util.UUID; import mage.MageInt; -import mage.abilities.common.BlocksOrBecomesBlockedByCreatureTriggeredAbility; +import mage.abilities.common.BlocksOrBecomesBlockedTriggeredAbility; import mage.abilities.common.delayed.AtTheEndOfCombatDelayedTriggeredAbility; import mage.abilities.effects.Effect; import mage.abilities.effects.common.CreateDelayedTriggeredAbilityEffect; @@ -55,7 +55,7 @@ public class Cockatrice extends CardImpl { } public Cockatrice(UUID ownerId, CardSetInfo setInfo) { - super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{G}{G}"); + super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{G}{G}"); this.subtype.add("Cockatrice"); this.power = new MageInt(2); @@ -63,11 +63,11 @@ public class Cockatrice extends CardImpl { // Flying this.addAbility(FlyingAbility.getInstance()); + // Whenever Cockatrice blocks or becomes blocked by a non-Wall creature, destroy that creature at end of combat. - Effect effect = new CreateDelayedTriggeredAbilityEffect( - new AtTheEndOfCombatDelayedTriggeredAbility(new DestroyTargetEffect()), true); + Effect effect = new CreateDelayedTriggeredAbilityEffect(new AtTheEndOfCombatDelayedTriggeredAbility(new DestroyTargetEffect()), true); effect.setText("destroy that creature at end of combat"); - this.addAbility(new BlocksOrBecomesBlockedByCreatureTriggeredAbility(effect, filter, false)); + this.addAbility(new BlocksOrBecomesBlockedTriggeredAbility(effect, filter, false)); } public Cockatrice(final Cockatrice card) { diff --git a/Mage.Sets/src/mage/cards/d/Deathgazer.java b/Mage.Sets/src/mage/cards/d/Deathgazer.java index 02d3e6c2404..4b5bf1a4b8c 100644 --- a/Mage.Sets/src/mage/cards/d/Deathgazer.java +++ b/Mage.Sets/src/mage/cards/d/Deathgazer.java @@ -30,7 +30,7 @@ package mage.cards.d; import java.util.UUID; import mage.MageInt; import mage.ObjectColor; -import mage.abilities.common.BlocksOrBecomesBlockedByCreatureTriggeredAbility; +import mage.abilities.common.BlocksOrBecomesBlockedTriggeredAbility; import mage.abilities.common.delayed.AtTheEndOfCombatDelayedTriggeredAbility; import mage.abilities.effects.Effect; import mage.abilities.effects.common.CreateDelayedTriggeredAbilityEffect; @@ -55,17 +55,16 @@ public class Deathgazer extends CardImpl { } public Deathgazer(UUID ownerId, CardSetInfo setInfo) { - super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{B}"); + super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{B}"); this.subtype.add("Lizard"); this.power = new MageInt(2); this.toughness = new MageInt(2); // Whenever Deathgazer blocks or becomes blocked by a nonblack creature, destroy that creature at end of combat. - Effect effect = new CreateDelayedTriggeredAbilityEffect( - new AtTheEndOfCombatDelayedTriggeredAbility(new DestroyTargetEffect()), true); + Effect effect = new CreateDelayedTriggeredAbilityEffect(new AtTheEndOfCombatDelayedTriggeredAbility(new DestroyTargetEffect()), true); effect.setText("destroy that creature at end of combat"); - this.addAbility(new BlocksOrBecomesBlockedByCreatureTriggeredAbility(effect, filter, false)); + this.addAbility(new BlocksOrBecomesBlockedTriggeredAbility(effect, filter, false)); } diff --git a/Mage.Sets/src/mage/cards/d/DenProtector.java b/Mage.Sets/src/mage/cards/d/DenProtector.java index 80bd99f3209..ae954b7b2a0 100644 --- a/Mage.Sets/src/mage/cards/d/DenProtector.java +++ b/Mage.Sets/src/mage/cards/d/DenProtector.java @@ -33,16 +33,13 @@ import mage.abilities.Ability; import mage.abilities.common.SimpleStaticAbility; import mage.abilities.common.TurnedFaceUpSourceTriggeredAbility; import mage.abilities.costs.mana.ManaCostsImpl; -import mage.abilities.effects.RestrictionEffect; import mage.abilities.effects.common.ReturnFromGraveyardToHandTargetEffect; +import mage.abilities.effects.common.combat.CantBeBlockedByCreaturesWithLessPowerEffect; import mage.abilities.keyword.MorphAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; -import mage.constants.Duration; import mage.constants.Zone; -import mage.game.Game; -import mage.game.permanent.Permanent; import mage.target.common.TargetCardInYourGraveyard; /** @@ -52,14 +49,14 @@ import mage.target.common.TargetCardInYourGraveyard; public class DenProtector extends CardImpl { public DenProtector(UUID ownerId, CardSetInfo setInfo) { - super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}"); + super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{G}"); this.subtype.add("Human"); this.subtype.add("Warrior"); this.power = new MageInt(2); this.toughness = new MageInt(1); // Creatures with power less than Den Protector's power can't block it. - this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new DenProtectorRestrictionEffect())); + this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new CantBeBlockedByCreaturesWithLessPowerEffect())); // Megamorph {1}{G} this.addAbility(new MorphAbility(this, new ManaCostsImpl("{1}{G}"), true)); @@ -80,30 +77,3 @@ public class DenProtector extends CardImpl { return new DenProtector(this); } } - -class DenProtectorRestrictionEffect extends RestrictionEffect { - - public DenProtectorRestrictionEffect() { - super(Duration.WhileOnBattlefield); - staticText = "Creatures with power less than {this}'s power can't block it"; - } - - public DenProtectorRestrictionEffect(final DenProtectorRestrictionEffect effect) { - super(effect); - } - - @Override - public boolean applies(Permanent permanent, Ability source, Game game) { - return permanent.getId().equals(source.getSourceId()); - } - - @Override - public boolean canBeBlocked(Permanent attacker, Permanent blocker, Ability source, Game game) { - return (blocker.getPower().getValue() >= attacker.getPower().getValue()); - } - - @Override - public DenProtectorRestrictionEffect copy() { - return new DenProtectorRestrictionEffect(this); - } -} diff --git a/Mage.Sets/src/mage/cards/d/DreadSlaver.java b/Mage.Sets/src/mage/cards/d/DreadSlaver.java index 961103e220b..7e5a6d1e4d8 100644 --- a/Mage.Sets/src/mage/cards/d/DreadSlaver.java +++ b/Mage.Sets/src/mage/cards/d/DreadSlaver.java @@ -36,7 +36,7 @@ import mage.constants.SubLayer; import mage.constants.Zone; import mage.MageInt; import mage.abilities.Ability; -import mage.abilities.common.DiesAndDealtDamageThisTurnTriggeredAbility; +import mage.abilities.common.DealtDamageAndDiedTriggeredAbility; import mage.abilities.effects.ContinuousEffect; import mage.abilities.effects.ContinuousEffectImpl; import mage.abilities.effects.OneShotEffect; @@ -63,7 +63,7 @@ public class DreadSlaver extends CardImpl { this.toughness = new MageInt(5); // Whenever a creature dealt damage by Dread Slaver this turn dies, return it to the battlefield under your control. That creature is a black Zombie in addition to its other colors and types. - this.addAbility(new DiesAndDealtDamageThisTurnTriggeredAbility(new DreadSlaverEffect(), false)); + this.addAbility(new DealtDamageAndDiedTriggeredAbility(new DreadSlaverEffect(), false)); } public DreadSlaver(final DreadSlaver card) { diff --git a/Mage.Sets/src/mage/cards/d/DreadSpecter.java b/Mage.Sets/src/mage/cards/d/DreadSpecter.java index b629652f6df..788ff32891f 100644 --- a/Mage.Sets/src/mage/cards/d/DreadSpecter.java +++ b/Mage.Sets/src/mage/cards/d/DreadSpecter.java @@ -30,7 +30,7 @@ package mage.cards.d; import java.util.UUID; import mage.MageInt; import mage.ObjectColor; -import mage.abilities.common.BlocksOrBecomesBlockedByCreatureTriggeredAbility; +import mage.abilities.common.BlocksOrBecomesBlockedTriggeredAbility; import mage.abilities.common.delayed.AtTheEndOfCombatDelayedTriggeredAbility; import mage.abilities.effects.Effect; import mage.abilities.effects.common.CreateDelayedTriggeredAbilityEffect; @@ -47,7 +47,7 @@ import mage.filter.predicate.mageobject.ColorPredicate; * @author djbrez */ public class DreadSpecter extends CardImpl { - + private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("nonblack creature"); static { @@ -55,16 +55,15 @@ public class DreadSpecter extends CardImpl { } public DreadSpecter(UUID ownerId, CardSetInfo setInfo) { - super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{B}"); + super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{B}"); this.subtype.add("Specter"); this.power = new MageInt(2); this.toughness = new MageInt(2); // Whenever Dread Specter blocks or becomes blocked by a nonblack creature, destroy that creature at end of combat. - Effect effect = new CreateDelayedTriggeredAbilityEffect( - new AtTheEndOfCombatDelayedTriggeredAbility(new DestroyTargetEffect()), true); + Effect effect = new CreateDelayedTriggeredAbilityEffect(new AtTheEndOfCombatDelayedTriggeredAbility(new DestroyTargetEffect()), true); effect.setText("destroy that creature at end of combat"); - this.addAbility(new BlocksOrBecomesBlockedByCreatureTriggeredAbility(effect, filter, false)); + this.addAbility(new BlocksOrBecomesBlockedTriggeredAbility(effect, filter, false)); } public DreadSpecter(final DreadSpecter card) { diff --git a/Mage.Sets/src/mage/cards/d/DruidsCall.java b/Mage.Sets/src/mage/cards/d/DruidsCall.java index 4b64b5dba0c..0d234a8d658 100644 --- a/Mage.Sets/src/mage/cards/d/DruidsCall.java +++ b/Mage.Sets/src/mage/cards/d/DruidsCall.java @@ -29,7 +29,7 @@ package mage.cards.d; import java.util.UUID; import mage.abilities.Ability; -import mage.abilities.common.DamageDealtToAttachedTriggeredAbility; +import mage.abilities.common.DealtDamageAttachedTriggeredAbility; import mage.abilities.dynamicvalue.common.NumericSetToEffectValues; import mage.abilities.effects.Effect; import mage.abilities.effects.common.AttachEffect; @@ -66,7 +66,7 @@ public class DruidsCall extends CardImpl { // Whenever enchanted creature is dealt damage, its controller creates that many 1/1 green Squirrel creature tokens. Effect effect = new CreateTokenTargetEffect(new SquirrelToken(), new NumericSetToEffectValues("that much", "damage")); effect.setText("its controller creates that many 1/1 green Squirrel creature tokens"); - this.addAbility(new DamageDealtToAttachedTriggeredAbility(Zone.BATTLEFIELD, effect, false, SetTargetPointer.PLAYER)); + this.addAbility(new DealtDamageAttachedTriggeredAbility(Zone.BATTLEFIELD, effect, false, SetTargetPointer.PLAYER)); } public DruidsCall(final DruidsCall card) { diff --git a/Mage.Sets/src/mage/cards/d/DwarvenSoldier.java b/Mage.Sets/src/mage/cards/d/DwarvenSoldier.java index 09ae958fcdf..8277b34a259 100644 --- a/Mage.Sets/src/mage/cards/d/DwarvenSoldier.java +++ b/Mage.Sets/src/mage/cards/d/DwarvenSoldier.java @@ -29,7 +29,7 @@ package mage.cards.d; import java.util.UUID; import mage.MageInt; -import mage.abilities.common.BlocksOrBecomesBlockedByCreatureTriggeredAbility; +import mage.abilities.common.BlocksOrBecomesBlockedTriggeredAbility; import mage.abilities.effects.common.continuous.BoostSourceEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; @@ -43,17 +43,15 @@ import mage.filter.common.FilterCreaturePermanent; */ public class DwarvenSoldier extends CardImpl { - private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Orc", "Orc creature"); - public DwarvenSoldier(UUID ownerId, CardSetInfo setInfo) { - super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{R}"); + super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{R}"); this.subtype.add("Dwarf"); this.subtype.add("Soldier"); this.power = new MageInt(2); this.toughness = new MageInt(1); // Whenever Dwarven Soldier blocks or becomes blocked by one or more Orcs, Dwarven Soldier gets +0/+2 until end of turn. - this.addAbility(new BlocksOrBecomesBlockedByCreatureTriggeredAbility(new BoostSourceEffect(0, 2, Duration.EndOfTurn), filter, false)); + this.addAbility(new BlocksOrBecomesBlockedTriggeredAbility(new BoostSourceEffect(0, 2, Duration.EndOfTurn), new FilterCreaturePermanent("Orc", "Orc creature"), false)); } public DwarvenSoldier(final DwarvenSoldier card) { diff --git a/Mage.Sets/src/mage/cards/e/EngulfingSlagwurm.java b/Mage.Sets/src/mage/cards/e/EngulfingSlagwurm.java index c3e90c1ec50..2b030ae2ab6 100644 --- a/Mage.Sets/src/mage/cards/e/EngulfingSlagwurm.java +++ b/Mage.Sets/src/mage/cards/e/EngulfingSlagwurm.java @@ -25,13 +25,12 @@ * authors and should not be interpreted as representing official policies, either expressed * or implied, of BetaSteward_at_googlemail.com. */ - package mage.cards.e; import java.util.UUID; import mage.MageInt; import mage.abilities.Ability; -import mage.abilities.common.BlocksOrBecomesBlockedByCreatureTriggeredAbility; +import mage.abilities.common.BlocksOrBecomesBlockedTriggeredAbility; import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.common.DestroyTargetEffect; import mage.cards.CardImpl; @@ -48,20 +47,20 @@ import mage.players.Player; */ public class EngulfingSlagwurm extends CardImpl { - public EngulfingSlagwurm (UUID ownerId, CardSetInfo setInfo) { - super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{5}{G}{G}"); + public EngulfingSlagwurm(UUID ownerId, CardSetInfo setInfo) { + super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{5}{G}{G}"); this.subtype.add("Wurm"); this.power = new MageInt(7); this.toughness = new MageInt(7); // Whenever Engulfing Slagwurm blocks or becomes blocked by a creature, destroy that creature. You gain life equal to that creature's toughness. - Ability ability = new BlocksOrBecomesBlockedByCreatureTriggeredAbility(new DestroyTargetEffect(), false); + Ability ability = new BlocksOrBecomesBlockedTriggeredAbility(new DestroyTargetEffect(), false); ability.addEffect(new EngulfingSlagwurmEffect()); this.addAbility(ability); } - public EngulfingSlagwurm (final EngulfingSlagwurm card) { + public EngulfingSlagwurm(final EngulfingSlagwurm card) { super(card); } @@ -73,6 +72,7 @@ public class EngulfingSlagwurm extends CardImpl { } class EngulfingSlagwurmEffect extends OneShotEffect { + EngulfingSlagwurmEffect() { super(Outcome.GainLife); staticText = "You gain life equal to that creature's toughness"; diff --git a/Mage.Sets/src/mage/cards/f/FlailingDrake.java b/Mage.Sets/src/mage/cards/f/FlailingDrake.java index b4d4032aa99..28b4f1ca451 100644 --- a/Mage.Sets/src/mage/cards/f/FlailingDrake.java +++ b/Mage.Sets/src/mage/cards/f/FlailingDrake.java @@ -30,7 +30,7 @@ package mage.cards.f; import java.util.UUID; import mage.MageInt; import mage.abilities.Ability; -import mage.abilities.common.BlocksOrBecomesBlockedByCreatureTriggeredAbility; +import mage.abilities.common.BlocksOrBecomesBlockedTriggeredAbility; import mage.abilities.effects.Effect; import mage.abilities.effects.common.continuous.BoostTargetEffect; import mage.abilities.keyword.FlyingAbility; @@ -46,7 +46,7 @@ import mage.constants.Duration; public class FlailingDrake extends CardImpl { public FlailingDrake(UUID ownerId, CardSetInfo setInfo) { - super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{G}"); + super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{G}"); this.subtype.add("Drake"); this.power = new MageInt(2); this.toughness = new MageInt(3); @@ -56,7 +56,7 @@ public class FlailingDrake extends CardImpl { // Whenever Flailing Drake blocks or becomes blocked by a creature, that creature gets +1/+1 until end of turn. Effect effect = new BoostTargetEffect(+1, +1, Duration.EndOfTurn); effect.setText("that creature gets +1/+1 until end of turn"); - Ability ability = new BlocksOrBecomesBlockedByCreatureTriggeredAbility(effect, false); + Ability ability = new BlocksOrBecomesBlockedTriggeredAbility(effect, false); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/f/FlameheartWerewolf.java b/Mage.Sets/src/mage/cards/f/FlameheartWerewolf.java index 6755fe20ac7..bb3430b6b7c 100644 --- a/Mage.Sets/src/mage/cards/f/FlameheartWerewolf.java +++ b/Mage.Sets/src/mage/cards/f/FlameheartWerewolf.java @@ -31,7 +31,7 @@ import java.util.UUID; import mage.MageInt; import mage.abilities.TriggeredAbility; import mage.abilities.common.BeginningOfUpkeepTriggeredAbility; -import mage.abilities.common.BlocksOrBecomesBlockedByCreatureTriggeredAbility; +import mage.abilities.common.BlocksOrBecomesBlockedTriggeredAbility; import mage.abilities.condition.common.TwoOrMoreSpellsWereCastLastTurnCondition; import mage.abilities.decorator.ConditionalTriggeredAbility; import mage.abilities.effects.common.DamageTargetEffect; @@ -49,7 +49,7 @@ import mage.constants.TargetController; public class FlameheartWerewolf extends CardImpl { public FlameheartWerewolf(UUID ownerId, CardSetInfo setInfo) { - super(ownerId,setInfo,new CardType[]{CardType.CREATURE},""); + super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, ""); this.subtype.add("Werewolf"); this.power = new MageInt(3); this.toughness = new MageInt(2); @@ -60,7 +60,7 @@ public class FlameheartWerewolf extends CardImpl { this.transformable = true; // Whenever Flameheart Werewolf blocks or becomes blocked by a creature, Flameheart Werewolf deals 2 damage to that creature. - this.addAbility(new BlocksOrBecomesBlockedByCreatureTriggeredAbility(new DamageTargetEffect(2, true, "that creature"), false)); + this.addAbility(new BlocksOrBecomesBlockedTriggeredAbility(new DamageTargetEffect(2, true, "that creature"), false)); // At the beginning of each upkeep, if a player cast two or more spells last turn, transform Flameheart Werewolf. TriggeredAbility ability = new BeginningOfUpkeepTriggeredAbility(new TransformSourceEffect(false), TargetController.ANY, false); diff --git a/Mage.Sets/src/mage/cards/f/FrozenSolid.java b/Mage.Sets/src/mage/cards/f/FrozenSolid.java index c28062ab8ae..d500ccab3f4 100644 --- a/Mage.Sets/src/mage/cards/f/FrozenSolid.java +++ b/Mage.Sets/src/mage/cards/f/FrozenSolid.java @@ -29,7 +29,7 @@ package mage.cards.f; import java.util.UUID; import mage.abilities.Ability; -import mage.abilities.common.DamageDealtToAttachedTriggeredAbility; +import mage.abilities.common.DealtDamageAttachedTriggeredAbility; import mage.abilities.common.SimpleStaticAbility; import mage.abilities.effects.common.AttachEffect; import mage.abilities.effects.common.DestroyAttachedEffect; @@ -62,7 +62,7 @@ public class FrozenSolid extends CardImpl { // Enchanted creature doesn't untap during its controller's untap step. this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new DontUntapInControllersUntapStepEnchantedEffect())); // When enchanted creature is dealt damage, destroy it. - this.addAbility(new DamageDealtToAttachedTriggeredAbility(new DestroyAttachedEffect("it"), false)); + this.addAbility(new DealtDamageAttachedTriggeredAbility(new DestroyAttachedEffect("it"), false)); } public FrozenSolid(final FrozenSolid card) { diff --git a/Mage.Sets/src/mage/cards/g/GarzaZolPlagueQueen.java b/Mage.Sets/src/mage/cards/g/GarzaZolPlagueQueen.java index 2ff37af5b79..a1ddb14411d 100644 --- a/Mage.Sets/src/mage/cards/g/GarzaZolPlagueQueen.java +++ b/Mage.Sets/src/mage/cards/g/GarzaZolPlagueQueen.java @@ -30,7 +30,7 @@ package mage.cards.g; import java.util.UUID; import mage.MageInt; import mage.abilities.common.DealsCombatDamageToAPlayerTriggeredAbility; -import mage.abilities.common.DiesAndDealtDamageThisTurnTriggeredAbility; +import mage.abilities.common.DealtDamageAndDiedTriggeredAbility; import mage.abilities.effects.common.DrawCardSourceControllerEffect; import mage.abilities.effects.common.counter.AddCountersSourceEffect; import mage.abilities.keyword.FlyingAbility; @@ -60,7 +60,7 @@ public class GarzaZolPlagueQueen extends CardImpl { this.addAbility(HasteAbility.getInstance()); // Whenever a creature dealt damage by Garza Zol, Plague Queen this turn dies, put a +1/+1 counter on Garza Zol. - this.addAbility(new DiesAndDealtDamageThisTurnTriggeredAbility(new AddCountersSourceEffect(CounterType.P1P1.createInstance()))); + this.addAbility(new DealtDamageAndDiedTriggeredAbility(new AddCountersSourceEffect(CounterType.P1P1.createInstance()))); // Whenever Garza Zol deals combat damage to a player, you may draw a card. this.addAbility(new DealsCombatDamageToAPlayerTriggeredAbility(new DrawCardSourceControllerEffect(1), true)); diff --git a/Mage.Sets/src/mage/cards/g/GoblinFlotilla.java b/Mage.Sets/src/mage/cards/g/GoblinFlotilla.java index f2f5288153e..708cff45934 100644 --- a/Mage.Sets/src/mage/cards/g/GoblinFlotilla.java +++ b/Mage.Sets/src/mage/cards/g/GoblinFlotilla.java @@ -30,7 +30,7 @@ package mage.cards.g; import java.util.UUID; import mage.MageInt; import mage.abilities.common.BeginningOfCombatTriggeredAbility; -import mage.abilities.common.BlocksOrBecomesBlockedByCreatureTriggeredAbility; +import mage.abilities.common.BlocksOrBecomesBlockedTriggeredAbility; import mage.abilities.costs.mana.ManaCostsImpl; import mage.abilities.effects.common.continuous.GainAbilitySourceEffect; import mage.abilities.effects.common.continuous.GainAbilityTargetEffect; @@ -50,18 +50,24 @@ import mage.abilities.effects.common.DoUnlessControllerPaysEffect; public class GoblinFlotilla extends CardImpl { public GoblinFlotilla(UUID ownerId, CardSetInfo setInfo) { - super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}"); + super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{R}"); this.subtype.add("Goblin"); + this.power = new MageInt(2); this.toughness = new MageInt(2); // Islandwalk this.addAbility(new IslandwalkAbility()); // At the beginning of each combat, unless you pay {R}, whenever Goblin Flotilla blocks or becomes blocked by a creature this combat, that creature gains first strike until end of turn. - this.addAbility(new BeginningOfCombatTriggeredAbility(new DoUnlessControllerPaysEffect( - new GainAbilitySourceEffect(new BlocksOrBecomesBlockedByCreatureTriggeredAbility(new GainAbilityTargetEffect(FirstStrikeAbility.getInstance(), Duration.EndOfTurn, "Blocks or Blocked by Goblin Flotilla"), false), Duration.EndOfCombat) - //new GoblinFlotillaEffect() - , new ManaCostsImpl("{R}"), "Pay Goblin Flotilla combat effect?"), TargetController.ANY, false)); + this.addAbility(new BeginningOfCombatTriggeredAbility( + new DoUnlessControllerPaysEffect( + new GainAbilitySourceEffect(new BlocksOrBecomesBlockedTriggeredAbility(new GainAbilityTargetEffect(FirstStrikeAbility.getInstance(), Duration.EndOfTurn, "Blocks or Blocked by Goblin Flotilla"), false), Duration.EndOfCombat), + new ManaCostsImpl("{R}"), + "Pay Goblin Flotilla combat effect?" + ), + TargetController.ANY, + false + )); } public GoblinFlotilla(final GoblinFlotilla card) { @@ -73,19 +79,3 @@ public class GoblinFlotilla extends CardImpl { return new GoblinFlotilla(this); } } -/* -class GoblinFlotillaEffect extends OneShotEffect { - GoblinFlotillaEffect() { - super(Outcome.BoostCreature); - staticText = "unless you pay {R}, whenever Goblin Flotilla blocks or becomes blocked by a creature this combat, that creature gains first strike until end of turn."; - } - - GoblinFlotillaEffect(final GoblinFlotillaEffect effect) { - super(effect); - } - - @Override - public boolean apply(Game game, Ability source) { - new GainAbilitySourceEffect(new BlocksOrBecomesBlockedByCreatureTriggeredAbility(new GainAbilityTargetEffect(FirstStrikeAbility.getInstance(), Duration.EndOfTurn), false), Duration.EndOfCombat); - } -}*/ \ No newline at end of file diff --git a/Mage.Sets/src/mage/cards/g/GoldnightCommander.java b/Mage.Sets/src/mage/cards/g/GoldnightCommander.java index 10fca774033..ab2e5db8c50 100644 --- a/Mage.Sets/src/mage/cards/g/GoldnightCommander.java +++ b/Mage.Sets/src/mage/cards/g/GoldnightCommander.java @@ -27,23 +27,31 @@ */ package mage.cards.g; +import java.util.UUID; import mage.constants.CardType; import mage.MageInt; -import mage.abilities.common.EntersAnotherCreatureYourControlTriggeredAbility; import mage.abilities.effects.common.continuous.BoostControlledEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.Duration; - -import java.util.UUID; +import mage.abilities.common.EntersBattlefieldAllTriggeredAbility; +import mage.constants.Zone; +import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.permanent.AnotherPredicate; /** * @author Loki */ public class GoldnightCommander extends CardImpl { + private static FilterCreaturePermanent filter = new FilterCreaturePermanent("another creature"); + + static { + filter.add(new AnotherPredicate()); + } + public GoldnightCommander(UUID ownerId, CardSetInfo setInfo) { - super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{W}"); + super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{W}"); this.subtype.add("Human"); this.subtype.add("Cleric"); this.subtype.add("Soldier"); @@ -52,7 +60,7 @@ public class GoldnightCommander extends CardImpl { this.toughness = new MageInt(2); // Whenever another creature enters the battlefield under your control, creatures you control get +1/+1 until end of turn. - this.addAbility(new EntersAnotherCreatureYourControlTriggeredAbility(new BoostControlledEffect(1, 1, Duration.EndOfTurn))); + this.addAbility(new EntersBattlefieldAllTriggeredAbility(Zone.BATTLEFIELD, new BoostControlledEffect(1, 1, Duration.EndOfTurn), filter, false, null, true)); } public GoldnightCommander(final GoldnightCommander card) { @@ -63,4 +71,4 @@ public class GoldnightCommander extends CardImpl { public GoldnightCommander copy() { return new GoldnightCommander(this); } -} \ No newline at end of file +} diff --git a/Mage.Sets/src/mage/cards/g/GorgonRecluse.java b/Mage.Sets/src/mage/cards/g/GorgonRecluse.java index 4b6353b9c4e..fda81d4cb08 100644 --- a/Mage.Sets/src/mage/cards/g/GorgonRecluse.java +++ b/Mage.Sets/src/mage/cards/g/GorgonRecluse.java @@ -30,7 +30,7 @@ package mage.cards.g; import java.util.UUID; import mage.MageInt; import mage.ObjectColor; -import mage.abilities.common.BlocksOrBecomesBlockedByCreatureTriggeredAbility; +import mage.abilities.common.BlocksOrBecomesBlockedTriggeredAbility; import mage.abilities.common.delayed.AtTheEndOfCombatDelayedTriggeredAbility; import mage.abilities.costs.mana.ManaCostsImpl; import mage.abilities.effects.Effect; @@ -57,16 +57,16 @@ public class GorgonRecluse extends CardImpl { } public GorgonRecluse(UUID ownerId, CardSetInfo setInfo) { - super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{B}{B}"); + super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{B}{B}"); this.subtype.add("Gorgon"); this.power = new MageInt(2); this.toughness = new MageInt(4); // Whenever Gorgon Recluse blocks or becomes blocked by a nonblack creature, destroy that creature at end of combat. - Effect effect = new CreateDelayedTriggeredAbilityEffect( - new AtTheEndOfCombatDelayedTriggeredAbility(new DestroyTargetEffect()), true); + Effect effect = new CreateDelayedTriggeredAbilityEffect(new AtTheEndOfCombatDelayedTriggeredAbility(new DestroyTargetEffect()), true); effect.setText("destroy that creature at end of combat"); - this.addAbility(new BlocksOrBecomesBlockedByCreatureTriggeredAbility(effect, filter, false)); + this.addAbility(new BlocksOrBecomesBlockedTriggeredAbility(effect, filter, false)); + // Madness {B}{B} this.addAbility(new MadnessAbility(this, new ManaCostsImpl("{B}{B}"))); } diff --git a/Mage.Sets/src/mage/cards/g/GreenbeltDruid.java b/Mage.Sets/src/mage/cards/g/GreenbeltDruid.java deleted file mode 100644 index cf3be424f4b..00000000000 --- a/Mage.Sets/src/mage/cards/g/GreenbeltDruid.java +++ /dev/null @@ -1,64 +0,0 @@ -/* - * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, are - * permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this list of - * conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, this list - * of conditions and the following disclaimer in the documentation and/or other materials - * provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON - * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF - * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * The views and conclusions contained in the software and documentation are those of the - * authors and should not be interpreted as representing official policies, either expressed - * or implied, of BetaSteward_at_googlemail.com. - */ -package mage.cards.g; - -import java.util.UUID; -import mage.MageInt; -import mage.abilities.mana.GreenManaAbility; -import mage.cards.CardImpl; -import mage.cards.CardSetInfo; -import mage.constants.CardType; - -/** - * - * @author Styxo - */ -public class GreenbeltDruid extends CardImpl { - - public GreenbeltDruid(UUID ownerId, CardSetInfo setInfo) { - super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{G}"); - - this.subtype.add("Elf"); - this.subtype.add("Druid"); - this.power = new MageInt(1); - this.toughness = new MageInt(3); - - // {T}: Add G to your mana pool. - this.addAbility(new GreenManaAbility()); - - } - - public GreenbeltDruid(final GreenbeltDruid card) { - super(card); - } - - @Override - public GreenbeltDruid copy() { - return new GreenbeltDruid(this); - } -} diff --git a/Mage.Sets/src/mage/cards/g/GriffinProtector.java b/Mage.Sets/src/mage/cards/g/GriffinProtector.java index 3f2ddb93cf0..08db606a29f 100644 --- a/Mage.Sets/src/mage/cards/g/GriffinProtector.java +++ b/Mage.Sets/src/mage/cards/g/GriffinProtector.java @@ -28,15 +28,17 @@ package mage.cards.g; import java.util.UUID; - import mage.constants.CardType; import mage.MageInt; -import mage.abilities.common.EntersAnotherCreatureYourControlTriggeredAbility; +import mage.abilities.common.EntersBattlefieldAllTriggeredAbility; import mage.abilities.effects.common.continuous.BoostSourceEffect; import mage.abilities.keyword.FlyingAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.Duration; +import mage.constants.Zone; +import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.permanent.AnotherPredicate; /** * @@ -44,8 +46,14 @@ import mage.constants.Duration; */ public class GriffinProtector extends CardImpl { + private static FilterCreaturePermanent filter = new FilterCreaturePermanent("another creature"); + + static { + filter.add(new AnotherPredicate()); + } + public GriffinProtector(UUID ownerId, CardSetInfo setInfo) { - super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{W}"); + super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{W}"); this.subtype.add("Griffin"); this.power = new MageInt(2); @@ -53,8 +61,10 @@ public class GriffinProtector extends CardImpl { // Flying this.addAbility(FlyingAbility.getInstance()); + // Whenever another creature enters the battlefield under your control, Griffin Protector gets +1/+1 until end of turn. - this.addAbility(new EntersAnotherCreatureYourControlTriggeredAbility(new BoostSourceEffect(1, 1, Duration.EndOfTurn))); + this.addAbility(new EntersBattlefieldAllTriggeredAbility(Zone.BATTLEFIELD, new BoostSourceEffect(1, 1, Duration.EndOfTurn), filter, false, null, true)); + } public GriffinProtector(final GriffinProtector card) { diff --git a/Mage.Sets/src/mage/cards/g/GuerrillaTactics.java b/Mage.Sets/src/mage/cards/g/GuerrillaTactics.java index 3e1ef4d13f6..782490da4f3 100644 --- a/Mage.Sets/src/mage/cards/g/GuerrillaTactics.java +++ b/Mage.Sets/src/mage/cards/g/GuerrillaTactics.java @@ -29,7 +29,7 @@ package mage.cards.g; import java.util.UUID; import mage.abilities.Ability; -import mage.abilities.common.DiscardedByOpponentTrigger; +import mage.abilities.common.DiscardedByOpponentTriggerAbility; import mage.abilities.effects.common.DamageTargetEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; @@ -50,7 +50,7 @@ public class GuerrillaTactics extends CardImpl { this.getSpellAbility().addTarget(new TargetCreatureOrPlayer()); // When a spell or ability an opponent controls causes you to discard Guerrilla Tactics, Guerrilla Tactics deals 4 damage to target creature or player. - Ability ability = new DiscardedByOpponentTrigger(new DamageTargetEffect(4)); + Ability ability = new DiscardedByOpponentTriggerAbility(new DamageTargetEffect(4)); ability.addTarget(new TargetCreatureOrPlayer()); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/h/HealerOfThePride.java b/Mage.Sets/src/mage/cards/h/HealerOfThePride.java index ac912e08825..b19844cfd54 100644 --- a/Mage.Sets/src/mage/cards/h/HealerOfThePride.java +++ b/Mage.Sets/src/mage/cards/h/HealerOfThePride.java @@ -30,10 +30,13 @@ package mage.cards.h; import java.util.UUID; import mage.constants.CardType; import mage.MageInt; -import mage.abilities.common.EntersAnotherCreatureYourControlTriggeredAbility; +import mage.abilities.common.EntersBattlefieldAllTriggeredAbility; import mage.abilities.effects.common.GainLifeEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; +import mage.constants.Zone; +import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.permanent.AnotherPredicate; /** * @@ -41,8 +44,14 @@ import mage.cards.CardSetInfo; */ public class HealerOfThePride extends CardImpl { + private static FilterCreaturePermanent filter = new FilterCreaturePermanent("another creature"); + + static { + filter.add(new AnotherPredicate()); + } + public HealerOfThePride(UUID ownerId, CardSetInfo setInfo) { - super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{W}"); + super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{W}"); this.subtype.add("Cat"); this.subtype.add("Cleric"); @@ -50,7 +59,8 @@ public class HealerOfThePride extends CardImpl { this.toughness = new MageInt(3); // Whenever another creature enters the battlefield under your control, you gain 2 life. - this.addAbility(new EntersAnotherCreatureYourControlTriggeredAbility(new GainLifeEffect(2))); + this.addAbility(new EntersBattlefieldAllTriggeredAbility(Zone.BATTLEFIELD, new GainLifeEffect(2), filter, false, null, true)); + } public HealerOfThePride(final HealerOfThePride card) { diff --git a/Mage.Sets/src/mage/cards/i/InfernoElemental.java b/Mage.Sets/src/mage/cards/i/InfernoElemental.java index a1c4f358ba2..08078da7aea 100644 --- a/Mage.Sets/src/mage/cards/i/InfernoElemental.java +++ b/Mage.Sets/src/mage/cards/i/InfernoElemental.java @@ -30,7 +30,7 @@ package mage.cards.i; import java.util.UUID; import mage.constants.CardType; import mage.MageInt; -import mage.abilities.common.BlocksOrBecomesBlockedByCreatureTriggeredAbility; +import mage.abilities.common.BlocksOrBecomesBlockedTriggeredAbility; import mage.abilities.effects.common.DamageTargetEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; @@ -42,14 +42,14 @@ import mage.cards.CardSetInfo; public class InfernoElemental extends CardImpl { public InfernoElemental(UUID ownerId, CardSetInfo setInfo) { - super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{R}{R}"); + super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{R}{R}"); this.subtype.add("Elemental"); this.power = new MageInt(4); this.toughness = new MageInt(4); // Whenever Inferno Elemental blocks or becomes blocked by a creature, Inferno Elemental deals 3 damage to that creature. - this.addAbility(new BlocksOrBecomesBlockedByCreatureTriggeredAbility(new DamageTargetEffect(3, true, "that creature"), false)); + this.addAbility(new BlocksOrBecomesBlockedTriggeredAbility(new DamageTargetEffect(3, true, "that creature"), false)); } public InfernoElemental(final InfernoElemental card) { diff --git a/Mage.Sets/src/mage/cards/i/InitiateOfBlood.java b/Mage.Sets/src/mage/cards/i/InitiateOfBlood.java index dbdfb72f907..525a567cb68 100644 --- a/Mage.Sets/src/mage/cards/i/InitiateOfBlood.java +++ b/Mage.Sets/src/mage/cards/i/InitiateOfBlood.java @@ -32,7 +32,7 @@ package mage.cards.i; import mage.constants.Zone; import mage.MageInt; import mage.abilities.Ability; -import mage.abilities.common.DiesAndDealtDamageThisTurnTriggeredAbility; +import mage.abilities.common.DealtDamageAndDiedTriggeredAbility; import mage.abilities.common.SimpleActivatedAbility; import mage.abilities.costs.common.TapSourceCost; import mage.abilities.effects.common.DamageTargetEffect; @@ -74,7 +74,7 @@ public class InitiateOfBlood extends CardImpl { this.addAbility(ability); // When that creature is put into a graveyard this turn, flip Initiate of Blood. - this.addAbility(new DiesAndDealtDamageThisTurnTriggeredAbility(new FlipSourceEffect(new GokaTheUnjust()))); + this.addAbility(new DealtDamageAndDiedTriggeredAbility(new FlipSourceEffect(new GokaTheUnjust()))); } diff --git a/Mage.Sets/src/mage/cards/i/InspirationalMonuments.java b/Mage.Sets/src/mage/cards/i/InspiringStatuary.java similarity index 88% rename from Mage.Sets/src/mage/cards/i/InspirationalMonuments.java rename to Mage.Sets/src/mage/cards/i/InspiringStatuary.java index b6f0024adfd..e1c3671d2c6 100644 --- a/Mage.Sets/src/mage/cards/i/InspirationalMonuments.java +++ b/Mage.Sets/src/mage/cards/i/InspiringStatuary.java @@ -43,7 +43,7 @@ import mage.filter.predicate.mageobject.CardTypePredicate; * * @author Styxo */ -public class InspirationalMonuments extends CardImpl { +public class InspiringStatuary extends CardImpl { private static final FilterSpell filter = new FilterSpell("non-artifact spells you cast"); @@ -51,7 +51,7 @@ public class InspirationalMonuments extends CardImpl { filter.add(Predicates.not(new CardTypePredicate(CardType.ARTIFACT))); } - public InspirationalMonuments(UUID ownerId, CardSetInfo setInfo) { + public InspiringStatuary(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{3}"); // Non-artifact spells you cast have improvise. @@ -59,12 +59,12 @@ public class InspirationalMonuments extends CardImpl { } - public InspirationalMonuments(final InspirationalMonuments card) { + public InspiringStatuary(final InspiringStatuary card) { super(card); } @Override - public InspirationalMonuments copy() { - return new InspirationalMonuments(this); + public InspiringStatuary copy() { + return new InspiringStatuary(this); } } diff --git a/Mage.Sets/src/mage/cards/k/KaijinOfTheVanishingTouch.java b/Mage.Sets/src/mage/cards/k/KaijinOfTheVanishingTouch.java index c981f49a05a..1d2edb9eff6 100644 --- a/Mage.Sets/src/mage/cards/k/KaijinOfTheVanishingTouch.java +++ b/Mage.Sets/src/mage/cards/k/KaijinOfTheVanishingTouch.java @@ -29,7 +29,7 @@ package mage.cards.k; import java.util.UUID; import mage.MageInt; -import mage.abilities.common.BlocksCreatureTriggeredAbility; +import mage.abilities.common.BlocksTriggeredAbility; import mage.abilities.common.delayed.AtTheEndOfCombatDelayedTriggeredAbility; import mage.abilities.effects.Effect; import mage.abilities.effects.common.CreateDelayedTriggeredAbilityEffect; @@ -46,19 +46,19 @@ import mage.constants.CardType; public class KaijinOfTheVanishingTouch extends CardImpl { public KaijinOfTheVanishingTouch(UUID ownerId, CardSetInfo setInfo) { - super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{U}"); + super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{U}"); this.subtype.add("Spirit"); this.power = new MageInt(0); this.toughness = new MageInt(3); - // Defender (This creature can't attack.) + // Defender this.addAbility(DefenderAbility.getInstance()); - // Whenever Kaijin of the Vanishing Touch blocks a creature, return that creature to its owner's hand at end of combat. (Return it only if it's on the battlefield.) + + // Whenever Kaijin of the Vanishing Touch blocks a creature, return that creature to its owner's hand at end of combat. Effect effect = new ReturnToHandTargetEffect(); effect.setText("return that creature to its owner's hand at end of combat"); - this.addAbility(new BlocksCreatureTriggeredAbility(new CreateDelayedTriggeredAbilityEffect( - new AtTheEndOfCombatDelayedTriggeredAbility(effect)), false, true)); + this.addAbility(new BlocksTriggeredAbility(new CreateDelayedTriggeredAbilityEffect(new AtTheEndOfCombatDelayedTriggeredAbility(effect)), false, true)); } public KaijinOfTheVanishingTouch(final KaijinOfTheVanishingTouch card) { diff --git a/Mage.Sets/src/mage/cards/k/KessigForgemaster.java b/Mage.Sets/src/mage/cards/k/KessigForgemaster.java index 878c7d14f3d..74079a54881 100644 --- a/Mage.Sets/src/mage/cards/k/KessigForgemaster.java +++ b/Mage.Sets/src/mage/cards/k/KessigForgemaster.java @@ -31,7 +31,7 @@ import java.util.UUID; import mage.MageInt; import mage.abilities.TriggeredAbility; import mage.abilities.common.BeginningOfUpkeepTriggeredAbility; -import mage.abilities.common.BlocksOrBecomesBlockedByCreatureTriggeredAbility; +import mage.abilities.common.BlocksOrBecomesBlockedTriggeredAbility; import mage.abilities.condition.common.NoSpellsWereCastLastTurnCondition; import mage.abilities.decorator.ConditionalTriggeredAbility; import mage.abilities.effects.common.DamageTargetEffect; @@ -50,7 +50,7 @@ import mage.constants.TargetController; public class KessigForgemaster extends CardImpl { public KessigForgemaster(UUID ownerId, CardSetInfo setInfo) { - super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{R}"); + super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{R}"); this.subtype.add("Human"); this.subtype.add("Shaman"); this.subtype.add("Werewolf"); @@ -61,7 +61,7 @@ public class KessigForgemaster extends CardImpl { this.secondSideCardClazz = FlameheartWerewolf.class; // Whenever Kessig Forgemaster blocks or becomes blocked by a creature, Kessig Forgemaster deals 1 damage to that creature. - this.addAbility(new BlocksOrBecomesBlockedByCreatureTriggeredAbility(new DamageTargetEffect(1, true, "that creature"), false)); + this.addAbility(new BlocksOrBecomesBlockedTriggeredAbility(new DamageTargetEffect(1, true, "that creature"), false)); // At the beginning of each upkeep, if no spells were cast last turn, transform Kessig Forgemaster. this.addAbility(new TransformAbility()); diff --git a/Mage.Sets/src/mage/cards/l/LoyalSentry.java b/Mage.Sets/src/mage/cards/l/LoyalSentry.java index 4d3352c147a..c8a146c5b62 100644 --- a/Mage.Sets/src/mage/cards/l/LoyalSentry.java +++ b/Mage.Sets/src/mage/cards/l/LoyalSentry.java @@ -25,7 +25,6 @@ * authors and should not be interpreted as representing official policies, either expressed * or implied, of BetaSteward_at_googlemail.com. */ - package mage.cards.l; import java.util.UUID; @@ -33,7 +32,7 @@ import java.util.UUID; import mage.constants.CardType; import mage.MageInt; import mage.abilities.Ability; -import mage.abilities.common.BlocksCreatureTriggeredAbility; +import mage.abilities.common.BlocksTriggeredAbility; import mage.abilities.effects.OneShotEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; @@ -47,8 +46,8 @@ import mage.game.permanent.Permanent; */ public class LoyalSentry extends CardImpl { - public LoyalSentry (UUID ownerId, CardSetInfo setInfo) { - super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{W}"); + public LoyalSentry(UUID ownerId, CardSetInfo setInfo) { + super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{W}"); this.subtype.add("Human"); this.subtype.add("Soldier"); @@ -56,10 +55,10 @@ public class LoyalSentry extends CardImpl { this.toughness = new MageInt(1); // When Loyal Sentry blocks a creature, destroy that creature and Loyal Sentry. - this.addAbility(new BlocksCreatureTriggeredAbility(new LoyalSentryEffect(), false, true)); + this.addAbility(new BlocksTriggeredAbility(new LoyalSentryEffect(), false, true)); } - public LoyalSentry (final LoyalSentry card) { + public LoyalSentry(final LoyalSentry card) { super(card); } @@ -70,6 +69,7 @@ public class LoyalSentry extends CardImpl { } class LoyalSentryEffect extends OneShotEffect { + LoyalSentryEffect() { super(Outcome.DestroyPermanent); staticText = "destroy that creature and {this}"; @@ -81,7 +81,7 @@ class LoyalSentryEffect extends OneShotEffect { @Override public boolean apply(Game game, Ability source) { - Permanent p = game.getPermanent(getTargetPointer().getFirst(game, source)); + Permanent p = game.getPermanent(getTargetPointer().getFirst(game, source)); if (p != null) { p.destroy(source.getSourceId(), game, false); } diff --git a/Mage.Sets/src/mage/cards/m/Meglonoth.java b/Mage.Sets/src/mage/cards/m/Meglonoth.java index 87df8fd1480..0215248f7dc 100644 --- a/Mage.Sets/src/mage/cards/m/Meglonoth.java +++ b/Mage.Sets/src/mage/cards/m/Meglonoth.java @@ -30,7 +30,7 @@ package mage.cards.m; import java.util.UUID; import mage.MageInt; import mage.abilities.Ability; -import mage.abilities.common.BlocksCreatureTriggeredAbility; +import mage.abilities.common.BlocksTriggeredAbility; import mage.abilities.effects.OneShotEffect; import mage.abilities.keyword.TrampleAbility; import mage.abilities.keyword.VigilanceAbility; @@ -48,7 +48,7 @@ import mage.game.permanent.Permanent; public class Meglonoth extends CardImpl { public Meglonoth(UUID ownerId, CardSetInfo setInfo) { - super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{R}{G}{W}"); + super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{R}{G}{W}"); this.subtype.add("Beast"); this.power = new MageInt(6); @@ -61,7 +61,7 @@ public class Meglonoth extends CardImpl { this.addAbility(TrampleAbility.getInstance()); // Whenever Meglonoth blocks a creature, Meglonoth deals damage to that creature's controller equal to Meglonoth's power. - this.addAbility(new BlocksCreatureTriggeredAbility(new MeglonothEffect(), false, true)); + this.addAbility(new BlocksTriggeredAbility(new MeglonothEffect(), false, true)); } diff --git a/Mage.Sets/src/mage/cards/m/Metrognome.java b/Mage.Sets/src/mage/cards/m/Metrognome.java index d903b47888d..24dd4b68595 100644 --- a/Mage.Sets/src/mage/cards/m/Metrognome.java +++ b/Mage.Sets/src/mage/cards/m/Metrognome.java @@ -30,7 +30,7 @@ package mage.cards.m; import java.util.UUID; import mage.MageInt; import mage.abilities.Ability; -import mage.abilities.common.DiscardedByOpponentTrigger; +import mage.abilities.common.DiscardedByOpponentTriggerAbility; import mage.abilities.common.SimpleActivatedAbility; import mage.abilities.costs.common.TapSourceCost; import mage.abilities.costs.mana.ManaCostsImpl; @@ -51,7 +51,7 @@ public class Metrognome extends CardImpl { super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{4}"); // When a spell or ability an opponent controls causes you to discard Metrognome, create four 1/1 colorless Gnome artifact creature tokens. - this.addAbility(new DiscardedByOpponentTrigger(new CreateTokenEffect(new GnomeToken(), 4))); + this.addAbility(new DiscardedByOpponentTriggerAbility(new CreateTokenEffect(new GnomeToken(), 4))); // {4}, {tap}: Create a 1/1 colorless Gnome artifact creature token. Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new CreateTokenEffect(new GnomeToken()), new ManaCostsImpl("{4}")); diff --git a/Mage.Sets/src/mage/cards/m/MireBlight.java b/Mage.Sets/src/mage/cards/m/MireBlight.java index fbb2304e8db..c0105ad6e22 100644 --- a/Mage.Sets/src/mage/cards/m/MireBlight.java +++ b/Mage.Sets/src/mage/cards/m/MireBlight.java @@ -29,7 +29,7 @@ package mage.cards.m; import java.util.UUID; import mage.abilities.Ability; -import mage.abilities.common.DamageDealtToAttachedTriggeredAbility; +import mage.abilities.common.DealtDamageAttachedTriggeredAbility; import mage.abilities.effects.common.AttachEffect; import mage.abilities.effects.common.DestroyAttachedEffect; import mage.abilities.keyword.EnchantAbility; @@ -58,7 +58,7 @@ public class MireBlight extends CardImpl { Ability ability = new EnchantAbility(auraTarget.getTargetName()); this.addAbility(ability); // When enchanted creature is dealt damage, destroy it. - this.addAbility(new DamageDealtToAttachedTriggeredAbility(new DestroyAttachedEffect("it"), false)); + this.addAbility(new DealtDamageAttachedTriggeredAbility(new DestroyAttachedEffect("it"), false)); } public MireBlight(final MireBlight card) { diff --git a/Mage.Sets/src/mage/cards/m/MortalWound.java b/Mage.Sets/src/mage/cards/m/MortalWound.java index b00615d5f41..664138ab8ae 100644 --- a/Mage.Sets/src/mage/cards/m/MortalWound.java +++ b/Mage.Sets/src/mage/cards/m/MortalWound.java @@ -29,7 +29,7 @@ package mage.cards.m; import java.util.UUID; import mage.abilities.Ability; -import mage.abilities.common.DamageDealtToAttachedTriggeredAbility; +import mage.abilities.common.DealtDamageAttachedTriggeredAbility; import mage.abilities.effects.common.AttachEffect; import mage.abilities.effects.common.DestroyAttachedEffect; import mage.abilities.keyword.EnchantAbility; @@ -57,7 +57,7 @@ public class MortalWound extends CardImpl { Ability ability = new EnchantAbility(auraTarget.getTargetName()); this.addAbility(ability); // When enchanted creature is dealt damage, destroy it. - this.addAbility(new DamageDealtToAttachedTriggeredAbility(new DestroyAttachedEffect("it"), false)); + this.addAbility(new DealtDamageAttachedTriggeredAbility(new DestroyAttachedEffect("it"), false)); } public MortalWound(final MortalWound card) { diff --git a/Mage.Sets/src/mage/cards/p/PredatorOoze.java b/Mage.Sets/src/mage/cards/p/PredatorOoze.java index 138ffa867d0..5536dde88c4 100644 --- a/Mage.Sets/src/mage/cards/p/PredatorOoze.java +++ b/Mage.Sets/src/mage/cards/p/PredatorOoze.java @@ -31,7 +31,7 @@ import java.util.UUID; import mage.constants.CardType; import mage.MageInt; import mage.abilities.common.AttacksTriggeredAbility; -import mage.abilities.common.DiesAndDealtDamageThisTurnTriggeredAbility; +import mage.abilities.common.DealtDamageAndDiedTriggeredAbility; import mage.abilities.effects.common.counter.AddCountersSourceEffect; import mage.abilities.keyword.IndestructibleAbility; import mage.cards.CardImpl; @@ -58,7 +58,7 @@ public class PredatorOoze extends CardImpl { this.addAbility(new AttacksTriggeredAbility(new AddCountersSourceEffect(CounterType.P1P1.createInstance()), false)); // Whenever a creature dealt damage by Predator Ooze this turn dies, put a +1/+1 counter on Predator Ooze. - this.addAbility(new DiesAndDealtDamageThisTurnTriggeredAbility(new AddCountersSourceEffect(CounterType.P1P1.createInstance()))); + this.addAbility(new DealtDamageAndDiedTriggeredAbility(new AddCountersSourceEffect(CounterType.P1P1.createInstance()))); } public PredatorOoze(final PredatorOoze card) { diff --git a/Mage.Sets/src/mage/cards/q/Quagnoth.java b/Mage.Sets/src/mage/cards/q/Quagnoth.java index 1a2c7b6a221..f95379bfa77 100644 --- a/Mage.Sets/src/mage/cards/q/Quagnoth.java +++ b/Mage.Sets/src/mage/cards/q/Quagnoth.java @@ -29,7 +29,7 @@ package mage.cards.q; import java.util.UUID; import mage.MageInt; -import mage.abilities.common.DiscardedByOpponentTrigger; +import mage.abilities.common.DiscardedByOpponentTriggerAbility; import mage.abilities.effects.common.ReturnToHandSourceEffect; import mage.abilities.keyword.ShroudAbility; import mage.abilities.keyword.SplitSecondAbility; @@ -56,7 +56,7 @@ public class Quagnoth extends CardImpl { this.addAbility(ShroudAbility.getInstance()); // When a spell or ability an opponent controls causes you to discard Quagnoth, return it to your hand. - this.addAbility(new DiscardedByOpponentTrigger(new ReturnToHandSourceEffect())); + this.addAbility(new DiscardedByOpponentTriggerAbility(new ReturnToHandSourceEffect())); } public Quagnoth(final Quagnoth card) { diff --git a/Mage.Sets/src/mage/cards/r/RaggedVeins.java b/Mage.Sets/src/mage/cards/r/RaggedVeins.java index bcb8890ec2d..468b2ec06dc 100644 --- a/Mage.Sets/src/mage/cards/r/RaggedVeins.java +++ b/Mage.Sets/src/mage/cards/r/RaggedVeins.java @@ -29,7 +29,7 @@ package mage.cards.r; import java.util.UUID; -import mage.abilities.common.DamageDealtToAttachedTriggeredAbility; +import mage.abilities.common.DealtDamageAttachedTriggeredAbility; import mage.abilities.dynamicvalue.common.NumericSetToEffectValues; import mage.abilities.effects.Effect; import mage.abilities.effects.common.AttachEffect; @@ -68,7 +68,7 @@ public class RaggedVeins extends CardImpl { // Whenever enchanted creature is dealt damage, its controller loses that much life. Effect effect = new LoseLifeTargetEffect(new NumericSetToEffectValues("that much", "damage")); effect.setText("its controller loses that much life"); - this.addAbility(new DamageDealtToAttachedTriggeredAbility(Zone.BATTLEFIELD, effect, false, SetTargetPointer.PLAYER)); + this.addAbility(new DealtDamageAttachedTriggeredAbility(Zone.BATTLEFIELD, effect, false, SetTargetPointer.PLAYER)); } public RaggedVeins(final RaggedVeins card) { diff --git a/Mage.Sets/src/mage/cards/r/RepentantVampire.java b/Mage.Sets/src/mage/cards/r/RepentantVampire.java index 28a84556100..bcece9407cc 100644 --- a/Mage.Sets/src/mage/cards/r/RepentantVampire.java +++ b/Mage.Sets/src/mage/cards/r/RepentantVampire.java @@ -31,7 +31,7 @@ import java.util.UUID; import mage.MageInt; import mage.ObjectColor; import mage.abilities.Ability; -import mage.abilities.common.DiesAndDealtDamageThisTurnTriggeredAbility; +import mage.abilities.common.DealtDamageAndDiedTriggeredAbility; import mage.abilities.common.SimpleActivatedAbility; import mage.abilities.common.SimpleStaticAbility; import mage.abilities.condition.common.CardsInControllerGraveCondition; @@ -74,7 +74,7 @@ public class RepentantVampire extends CardImpl { // Flying this.addAbility(FlyingAbility.getInstance()); // Whenever a creature dealt damage by Repentant Vampire this turn dies, put a +1/+1 counter on Repentant Vampire. - this.addAbility(new DiesAndDealtDamageThisTurnTriggeredAbility(new AddCountersSourceEffect(CounterType.P1P1.createInstance()), false)); + this.addAbility(new DealtDamageAndDiedTriggeredAbility(new AddCountersSourceEffect(CounterType.P1P1.createInstance()), false)); // Threshold - As long as seven or more cards are in your graveyard, Repentant Vampire is white and has "{tap}: Destroy target black creature." Ability ability = new SimpleStaticAbility(Zone.BATTLEFIELD, new ConditionalContinuousEffect( new BecomesColorSourceEffect(ObjectColor.WHITE, Duration.WhileOnBattlefield), diff --git a/Mage.Sets/src/mage/cards/r/RockBasilisk.java b/Mage.Sets/src/mage/cards/r/RockBasilisk.java index 2231edfcae2..d3b13a60a6b 100644 --- a/Mage.Sets/src/mage/cards/r/RockBasilisk.java +++ b/Mage.Sets/src/mage/cards/r/RockBasilisk.java @@ -29,7 +29,7 @@ package mage.cards.r; import java.util.UUID; import mage.MageInt; -import mage.abilities.common.BlocksOrBecomesBlockedByCreatureTriggeredAbility; +import mage.abilities.common.BlocksOrBecomesBlockedTriggeredAbility; import mage.abilities.common.delayed.AtTheEndOfCombatDelayedTriggeredAbility; import mage.abilities.effects.Effect; import mage.abilities.effects.common.CreateDelayedTriggeredAbilityEffect; @@ -54,7 +54,7 @@ public class RockBasilisk extends CardImpl { } public RockBasilisk(UUID ownerId, CardSetInfo setInfo) { - super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{R}{G}"); + super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{R}{G}"); this.subtype.add("Basilisk"); this.power = new MageInt(4); @@ -64,7 +64,7 @@ public class RockBasilisk extends CardImpl { Effect effect = new CreateDelayedTriggeredAbilityEffect( new AtTheEndOfCombatDelayedTriggeredAbility(new DestroyTargetEffect()), true); effect.setText("destroy that creature at end of combat"); - this.addAbility(new BlocksOrBecomesBlockedByCreatureTriggeredAbility(effect, filter, false)); + this.addAbility(new BlocksOrBecomesBlockedTriggeredAbility(effect, filter, false)); } public RockBasilisk(final RockBasilisk card) { diff --git a/Mage.Sets/src/mage/cards/r/RotWolf.java b/Mage.Sets/src/mage/cards/r/RotWolf.java index f4304245ee7..efdb93cb9e3 100644 --- a/Mage.Sets/src/mage/cards/r/RotWolf.java +++ b/Mage.Sets/src/mage/cards/r/RotWolf.java @@ -30,7 +30,7 @@ package mage.cards.r; import java.util.UUID; import mage.constants.CardType; import mage.MageInt; -import mage.abilities.common.DiesAndDealtDamageThisTurnTriggeredAbility; +import mage.abilities.common.DealtDamageAndDiedTriggeredAbility; import mage.abilities.effects.common.DrawCardSourceControllerEffect; import mage.abilities.keyword.InfectAbility; import mage.cards.CardImpl; @@ -51,7 +51,7 @@ public class RotWolf extends CardImpl { this.addAbility(InfectAbility.getInstance()); // Whenever a creature dealt damage by Rot Wolf this turn dies, you may draw a card. - this.addAbility(new DiesAndDealtDamageThisTurnTriggeredAbility(new DrawCardSourceControllerEffect(1), true)); + this.addAbility(new DealtDamageAndDiedTriggeredAbility(new DrawCardSourceControllerEffect(1), true)); } public RotWolf(final RotWolf card) { diff --git a/Mage.Sets/src/mage/cards/s/SengirBats.java b/Mage.Sets/src/mage/cards/s/SengirBats.java index af01e4b9fbd..b22f50b61c4 100644 --- a/Mage.Sets/src/mage/cards/s/SengirBats.java +++ b/Mage.Sets/src/mage/cards/s/SengirBats.java @@ -29,7 +29,7 @@ package mage.cards.s; import java.util.UUID; import mage.MageInt; -import mage.abilities.common.DiesAndDealtDamageThisTurnTriggeredAbility; +import mage.abilities.common.DealtDamageAndDiedTriggeredAbility; import mage.abilities.effects.common.counter.AddCountersSourceEffect; import mage.abilities.keyword.FlyingAbility; import mage.cards.CardImpl; @@ -52,7 +52,7 @@ public class SengirBats extends CardImpl { // Flying this.addAbility(FlyingAbility.getInstance()); // Whenever a creature dealt damage by Sengir Bats this turn dies, put a +1/+1 counter on Sengir Bats. - this.addAbility(new DiesAndDealtDamageThisTurnTriggeredAbility(new AddCountersSourceEffect(CounterType.P1P1.createInstance()), false)); + this.addAbility(new DealtDamageAndDiedTriggeredAbility(new AddCountersSourceEffect(CounterType.P1P1.createInstance()), false)); } public SengirBats(final SengirBats card) { diff --git a/Mage.Sets/src/mage/cards/s/SengirVampire.java b/Mage.Sets/src/mage/cards/s/SengirVampire.java index 57573ac24ee..c4a96688049 100644 --- a/Mage.Sets/src/mage/cards/s/SengirVampire.java +++ b/Mage.Sets/src/mage/cards/s/SengirVampire.java @@ -29,7 +29,7 @@ package mage.cards.s; import mage.constants.CardType; import mage.MageInt; -import mage.abilities.common.DiesAndDealtDamageThisTurnTriggeredAbility; +import mage.abilities.common.DealtDamageAndDiedTriggeredAbility; import mage.abilities.effects.common.counter.AddCountersSourceEffect; import mage.abilities.keyword.FlyingAbility; import mage.cards.CardImpl; @@ -53,7 +53,7 @@ public class SengirVampire extends CardImpl { this.addAbility(FlyingAbility.getInstance()); // Whenever a creature dealt damage by Sengir Vampire this turn dies, put a +1/+1 counter on Sengir Vampire. - this.addAbility(new DiesAndDealtDamageThisTurnTriggeredAbility(new AddCountersSourceEffect(CounterType.P1P1.createInstance()), false)); + this.addAbility(new DealtDamageAndDiedTriggeredAbility(new AddCountersSourceEffect(CounterType.P1P1.createInstance()), false)); } public SengirVampire(final SengirVampire card) { diff --git a/Mage.Sets/src/mage/cards/s/ShapeStealer.java b/Mage.Sets/src/mage/cards/s/ShapeStealer.java index 9e3c38099ba..9be0484223f 100644 --- a/Mage.Sets/src/mage/cards/s/ShapeStealer.java +++ b/Mage.Sets/src/mage/cards/s/ShapeStealer.java @@ -30,7 +30,7 @@ package mage.cards.s; import java.util.UUID; import mage.MageInt; import mage.abilities.Ability; -import mage.abilities.common.BlocksOrBecomesBlockedByCreatureTriggeredAbility; +import mage.abilities.common.BlocksOrBecomesBlockedTriggeredAbility; import mage.abilities.effects.ContinuousEffect; import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.common.continuous.SetPowerToughnessSourceEffect; @@ -51,7 +51,7 @@ import mage.players.Player; public class ShapeStealer extends CardImpl { public ShapeStealer(UUID ownerId, CardSetInfo setInfo) { - super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{U}{U}"); + super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{U}{U}"); this.subtype.add("Shapeshifter"); this.subtype.add("Spirit"); this.power = new MageInt(1); @@ -62,7 +62,7 @@ public class ShapeStealer extends CardImpl { // each one in succession. The first trigger put on the stack will be the last to resolve, // so that will set Shape Stealer's final power and toughness. // Whenever Shape Stealer blocks or becomes blocked by a creature, change Shape Stealer's base power and toughness to that creature's power and toughness until end of turn. - this.addAbility(new BlocksOrBecomesBlockedByCreatureTriggeredAbility(new ShapeStealerEffect(), false)); + this.addAbility(new BlocksOrBecomesBlockedTriggeredAbility(new ShapeStealerEffect(), false)); } public ShapeStealer(final ShapeStealer card) { diff --git a/Mage.Sets/src/mage/cards/s/ShieldOfTheRighteous.java b/Mage.Sets/src/mage/cards/s/ShieldOfTheRighteous.java index d8b9169f8d0..01418b7b6f7 100644 --- a/Mage.Sets/src/mage/cards/s/ShieldOfTheRighteous.java +++ b/Mage.Sets/src/mage/cards/s/ShieldOfTheRighteous.java @@ -28,7 +28,7 @@ package mage.cards.s; import java.util.UUID; -import mage.abilities.common.BlocksCreatureAttachedTriggeredAbility; +import mage.abilities.common.BlocksAttachedTriggeredAbility; import mage.abilities.common.SimpleStaticAbility; import mage.abilities.costs.mana.GenericManaCost; import mage.abilities.effects.common.DontUntapInControllersNextUntapStepTargetEffect; @@ -51,16 +51,16 @@ import mage.target.common.TargetControlledCreaturePermanent; public class ShieldOfTheRighteous extends CardImpl { public ShieldOfTheRighteous(UUID ownerId, CardSetInfo setInfo) { - super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{W}{U}"); + super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{W}{U}"); this.subtype.add("Equipment"); // Equipped creature gets +0/+2 and has vigilance. this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new BoostEquippedEffect(0, 2))); this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new GainAbilityAttachedEffect(VigilanceAbility.getInstance(), AttachmentType.EQUIPMENT))); - + // Whenever equipped creature blocks a creature, that creature doesn't untap during its controller's next untap step. - this.addAbility(new BlocksCreatureAttachedTriggeredAbility(new DontUntapInControllersNextUntapStepTargetEffect("that creature"), "equipped", false, false, true)); - + this.addAbility(new BlocksAttachedTriggeredAbility(new DontUntapInControllersNextUntapStepTargetEffect("that creature"), "equipped", false, false, true)); + // Equip {2} this.addAbility(new EquipAbility(Outcome.AddAbility, new GenericManaCost(2), new TargetControlledCreaturePermanent())); } diff --git a/Mage.Sets/src/mage/cards/s/SlaveI.java b/Mage.Sets/src/mage/cards/s/SlaveI.java index 981209d27bd..dd7d3f6c30a 100644 --- a/Mage.Sets/src/mage/cards/s/SlaveI.java +++ b/Mage.Sets/src/mage/cards/s/SlaveI.java @@ -29,7 +29,7 @@ package mage.cards.s; import java.util.UUID; import mage.MageInt; -import mage.abilities.common.DiesAndDealtDamageThisTurnTriggeredAbility; +import mage.abilities.common.DealtDamageAndDiedTriggeredAbility; import mage.abilities.effects.common.counter.AddCountersSourceEffect; import mage.abilities.keyword.FirstStrikeAbility; import mage.abilities.keyword.SpaceflightAbility; @@ -58,7 +58,7 @@ public class SlaveI extends CardImpl { this.addAbility(SpaceflightAbility.getInstance()); // Whenever a creature dealt damage by Slave I this turn dies, put two +1/+1 counters on Slave I. - this.addAbility(new DiesAndDealtDamageThisTurnTriggeredAbility(new AddCountersSourceEffect(CounterType.P1P1.createInstance(2)), false)); + this.addAbility(new DealtDamageAndDiedTriggeredAbility(new AddCountersSourceEffect(CounterType.P1P1.createInstance(2)), false)); } diff --git a/Mage.Sets/src/mage/cards/s/SoulCollector.java b/Mage.Sets/src/mage/cards/s/SoulCollector.java index 6633d3f24fa..990286ca835 100644 --- a/Mage.Sets/src/mage/cards/s/SoulCollector.java +++ b/Mage.Sets/src/mage/cards/s/SoulCollector.java @@ -29,7 +29,7 @@ package mage.cards.s; import java.util.UUID; import mage.MageInt; -import mage.abilities.common.DiesAndDealtDamageThisTurnTriggeredAbility; +import mage.abilities.common.DealtDamageAndDiedTriggeredAbility; import mage.abilities.keyword.FlyingAbility; import mage.abilities.costs.mana.ManaCostsImpl; import mage.abilities.effects.common.ReturnToBattlefieldUnderYourControlTargetEffect; @@ -53,7 +53,7 @@ public class SoulCollector extends CardImpl { // Flying this.addAbility(FlyingAbility.getInstance()); // Whenever a creature dealt damage by Soul Collector this turn dies, return that card to the battlefield under your control. - this.addAbility(new DiesAndDealtDamageThisTurnTriggeredAbility(new ReturnToBattlefieldUnderYourControlTargetEffect(false))); + this.addAbility(new DealtDamageAndDiedTriggeredAbility(new ReturnToBattlefieldUnderYourControlTargetEffect(false))); // Morph {B}{B}{B} this.addAbility(new MorphAbility(this, new ManaCostsImpl("{B}{B}{B}"))); } diff --git a/Mage.Sets/src/mage/cards/s/SoulLink.java b/Mage.Sets/src/mage/cards/s/SoulLink.java index 86c0d126236..be19a989582 100644 --- a/Mage.Sets/src/mage/cards/s/SoulLink.java +++ b/Mage.Sets/src/mage/cards/s/SoulLink.java @@ -30,7 +30,7 @@ package mage.cards.s; import java.util.UUID; import mage.abilities.Ability; import mage.abilities.common.DealsDamageAttachedTriggeredAbility; -import mage.abilities.common.DamageDealtToAttachedTriggeredAbility; +import mage.abilities.common.DealtDamageAttachedTriggeredAbility; import mage.abilities.dynamicvalue.common.NumericSetToEffectValues; import mage.abilities.effects.common.AttachEffect; import mage.abilities.effects.common.GainLifeEffect; @@ -63,7 +63,7 @@ public class SoulLink extends CardImpl { this.addAbility(new DealsDamageAttachedTriggeredAbility(Zone.BATTLEFIELD, new GainLifeEffect(new NumericSetToEffectValues("that much", "damage")), false)); // Whenever enchanted creature is dealt damage, you gain that much life. - this.addAbility(new DamageDealtToAttachedTriggeredAbility(new GainLifeEffect(new NumericSetToEffectValues("that much", "damage")), false)); + this.addAbility(new DealtDamageAttachedTriggeredAbility(new GainLifeEffect(new NumericSetToEffectValues("that much", "damage")), false)); } public SoulLink(final SoulLink card) { diff --git a/Mage.Sets/src/mage/cards/s/SoulsAttendant.java b/Mage.Sets/src/mage/cards/s/SoulsAttendant.java index 57571a83ce4..a8afb63e387 100644 --- a/Mage.Sets/src/mage/cards/s/SoulsAttendant.java +++ b/Mage.Sets/src/mage/cards/s/SoulsAttendant.java @@ -27,14 +27,16 @@ */ package mage.cards.s; +import java.util.UUID; import mage.constants.CardType; import mage.MageInt; -import mage.abilities.common.AnotherCreatureEntersBattlefieldTriggeredAbility; import mage.abilities.effects.common.GainLifeEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; - -import java.util.UUID; +import mage.abilities.common.EntersBattlefieldAllTriggeredAbility; +import mage.constants.Zone; +import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.permanent.AnotherPredicate; /** * @@ -42,8 +44,14 @@ import java.util.UUID; */ public class SoulsAttendant extends CardImpl { + private static FilterCreaturePermanent filter = new FilterCreaturePermanent("another creature"); + + static { + filter.add(new AnotherPredicate()); + } + public SoulsAttendant(UUID ownerId, CardSetInfo setInfo) { - super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{W}"); + super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{W}"); this.subtype.add("Human"); this.subtype.add("Cleric"); @@ -51,7 +59,7 @@ public class SoulsAttendant extends CardImpl { this.toughness = new MageInt(1); // Whenever another creature enters the battlefield, you may gain 1 life. - this.addAbility(new AnotherCreatureEntersBattlefieldTriggeredAbility(new GainLifeEffect(1), true)); + this.addAbility(new EntersBattlefieldAllTriggeredAbility(Zone.BATTLEFIELD, new GainLifeEffect(1), filter, true)); } public SoulsAttendant(final SoulsAttendant card) { @@ -63,4 +71,3 @@ public class SoulsAttendant extends CardImpl { return new SoulsAttendant(this); } } - diff --git a/Mage.Sets/src/mage/cards/s/SpitefulShadows.java b/Mage.Sets/src/mage/cards/s/SpitefulShadows.java index 28326d06e7a..80021aeda5f 100644 --- a/Mage.Sets/src/mage/cards/s/SpitefulShadows.java +++ b/Mage.Sets/src/mage/cards/s/SpitefulShadows.java @@ -29,7 +29,7 @@ package mage.cards.s; import java.util.UUID; import mage.abilities.Ability; -import mage.abilities.common.DamageDealtToAttachedTriggeredAbility; +import mage.abilities.common.DealtDamageAttachedTriggeredAbility; import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.common.AttachEffect; import mage.abilities.keyword.EnchantAbility; @@ -63,7 +63,7 @@ public class SpitefulShadows extends CardImpl { this.addAbility(new EnchantAbility(auraTarget.getTargetName())); // Whenever enchanted creature is dealt damage, it deals that much damage to its controller. - this.addAbility(new DamageDealtToAttachedTriggeredAbility(Zone.BATTLEFIELD, new SpitefulShadowsEffect(), + this.addAbility(new DealtDamageAttachedTriggeredAbility(Zone.BATTLEFIELD, new SpitefulShadowsEffect(), false, SetTargetPointer.PERMANENT)); } diff --git a/Mage.Sets/src/mage/cards/t/TalruumChampion.java b/Mage.Sets/src/mage/cards/t/TalruumChampion.java index 03502e4b330..87b49785c0b 100644 --- a/Mage.Sets/src/mage/cards/t/TalruumChampion.java +++ b/Mage.Sets/src/mage/cards/t/TalruumChampion.java @@ -29,7 +29,7 @@ package mage.cards.t; import java.util.UUID; import mage.MageInt; -import mage.abilities.common.BlocksOrBecomesBlockedByCreatureTriggeredAbility; +import mage.abilities.common.BlocksOrBecomesBlockedTriggeredAbility; import mage.abilities.effects.Effect; import mage.abilities.effects.common.continuous.LoseAbilityTargetEffect; import mage.abilities.keyword.FirstStrikeAbility; @@ -45,7 +45,7 @@ import mage.constants.Duration; public class TalruumChampion extends CardImpl { public TalruumChampion(UUID ownerId, CardSetInfo setInfo) { - super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{R}"); + super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{R}"); this.subtype.add("Minotaur"); this.power = new MageInt(3); this.toughness = new MageInt(3); @@ -56,7 +56,7 @@ public class TalruumChampion extends CardImpl { // Whenever Talruum Champion blocks or becomes blocked by a creature, that creature loses first strike until end of turn. Effect effect = new LoseAbilityTargetEffect(FirstStrikeAbility.getInstance(), Duration.EndOfTurn); effect.setText("that creature loses first strike until end of turn"); - this.addAbility(new BlocksOrBecomesBlockedByCreatureTriggeredAbility(effect, false)); + this.addAbility(new BlocksOrBecomesBlockedTriggeredAbility(effect, false)); } public TalruumChampion(final TalruumChampion card) { diff --git a/Mage.Sets/src/mage/cards/t/TangleAsp.java b/Mage.Sets/src/mage/cards/t/TangleAsp.java index 636de5c1ce6..7aeb22a6ef4 100644 --- a/Mage.Sets/src/mage/cards/t/TangleAsp.java +++ b/Mage.Sets/src/mage/cards/t/TangleAsp.java @@ -29,7 +29,7 @@ package mage.cards.t; import java.util.UUID; import mage.MageInt; -import mage.abilities.common.BlocksOrBecomesBlockedByCreatureTriggeredAbility; +import mage.abilities.common.BlocksOrBecomesBlockedTriggeredAbility; import mage.abilities.common.delayed.AtTheEndOfCombatDelayedTriggeredAbility; import mage.abilities.effects.Effect; import mage.abilities.effects.common.CreateDelayedTriggeredAbilityEffect; @@ -45,7 +45,7 @@ import mage.constants.CardType; public class TangleAsp extends CardImpl { public TangleAsp(UUID ownerId, CardSetInfo setInfo) { - super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}"); + super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{G}"); this.subtype.add("Snake"); this.color.setGreen(true); @@ -53,10 +53,9 @@ public class TangleAsp extends CardImpl { this.toughness = new MageInt(2); // Whenever Tangle Asp blocks or becomes blocked by a creature, destroy that creature at end of combat. - Effect effect = new CreateDelayedTriggeredAbilityEffect( - new AtTheEndOfCombatDelayedTriggeredAbility(new DestroyTargetEffect()), true); + Effect effect = new CreateDelayedTriggeredAbilityEffect(new AtTheEndOfCombatDelayedTriggeredAbility(new DestroyTargetEffect()), true); effect.setText("destroy that creature at end of combat"); - this.addAbility(new BlocksOrBecomesBlockedByCreatureTriggeredAbility(effect, false)); + this.addAbility(new BlocksOrBecomesBlockedTriggeredAbility(effect, false)); } public TangleAsp(final TangleAsp card) { diff --git a/Mage.Sets/src/mage/cards/t/ThicketBasilisk.java b/Mage.Sets/src/mage/cards/t/ThicketBasilisk.java index bbac78967f6..08c1b342358 100644 --- a/Mage.Sets/src/mage/cards/t/ThicketBasilisk.java +++ b/Mage.Sets/src/mage/cards/t/ThicketBasilisk.java @@ -29,7 +29,7 @@ package mage.cards.t; import java.util.UUID; import mage.MageInt; -import mage.abilities.common.BlocksOrBecomesBlockedByCreatureTriggeredAbility; +import mage.abilities.common.BlocksOrBecomesBlockedTriggeredAbility; import mage.abilities.common.delayed.AtTheEndOfCombatDelayedTriggeredAbility; import mage.abilities.effects.Effect; import mage.abilities.effects.common.CreateDelayedTriggeredAbilityEffect; @@ -54,17 +54,16 @@ public class ThicketBasilisk extends CardImpl { } public ThicketBasilisk(UUID ownerId, CardSetInfo setInfo) { - super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{G}{G}"); + super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{G}{G}"); this.subtype.add("Basilisk"); this.power = new MageInt(2); this.toughness = new MageInt(4); // Whenever Thicket Basilisk blocks or becomes blocked by a non-Wall creature, destroy that creature at end of combat. - Effect effect = new CreateDelayedTriggeredAbilityEffect( - new AtTheEndOfCombatDelayedTriggeredAbility(new DestroyTargetEffect()), true); + Effect effect = new CreateDelayedTriggeredAbilityEffect(new AtTheEndOfCombatDelayedTriggeredAbility(new DestroyTargetEffect()), true); effect.setText("destroy that creature at end of combat"); - this.addAbility(new BlocksOrBecomesBlockedByCreatureTriggeredAbility(effect, filter, false)); + this.addAbility(new BlocksOrBecomesBlockedTriggeredAbility(effect, filter, false)); } public ThicketBasilisk(final ThicketBasilisk card) { diff --git a/Mage.Sets/src/mage/cards/t/TreefolkMystic.java b/Mage.Sets/src/mage/cards/t/TreefolkMystic.java index d6010e7d11d..d042b636718 100644 --- a/Mage.Sets/src/mage/cards/t/TreefolkMystic.java +++ b/Mage.Sets/src/mage/cards/t/TreefolkMystic.java @@ -34,7 +34,7 @@ import mage.constants.CardType; import mage.MageInt; import mage.abilities.Ability; import mage.abilities.Mode; -import mage.abilities.common.BlocksOrBecomesBlockedByCreatureTriggeredAbility; +import mage.abilities.common.BlocksOrBecomesBlockedTriggeredAbility; import mage.abilities.effects.OneShotEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; @@ -49,14 +49,14 @@ import mage.game.permanent.Permanent; public class TreefolkMystic extends CardImpl { public TreefolkMystic(UUID ownerId, CardSetInfo setInfo) { - super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{G}"); + super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{G}"); this.subtype.add("Treefolk"); this.power = new MageInt(2); this.toughness = new MageInt(4); // Whenever Treefolk Mystic blocks or becomes blocked by a creature, destroy all Auras attached to that creature. - this.addAbility(new BlocksOrBecomesBlockedByCreatureTriggeredAbility(new TreefolkMysticEffect(), false)); + this.addAbility(new BlocksOrBecomesBlockedTriggeredAbility(new TreefolkMysticEffect(), false)); } public TreefolkMystic(final TreefolkMystic card) { @@ -71,8 +71,6 @@ public class TreefolkMystic extends CardImpl { class TreefolkMysticEffect extends OneShotEffect { - - public TreefolkMysticEffect() { super(Outcome.DestroyPermanent); } @@ -89,15 +87,12 @@ class TreefolkMysticEffect extends OneShotEffect { @Override public boolean apply(Game game, Ability source) { Permanent permanent = game.getPermanent(source.getFirstTarget()); - if(permanent != null) - { + if (permanent != null) { LinkedList attachments = new LinkedList(); attachments.addAll(permanent.getAttachments()); - for(UUID uuid : attachments) - { + for (UUID uuid : attachments) { Permanent aura = game.getPermanent(uuid); - if(aura != null && aura.getSubtype(game).contains("Aura")) - { + if (aura != null && aura.getSubtype(game).contains("Aura")) { aura.destroy(source.getSourceId(), game, false); } } diff --git a/Mage.Sets/src/mage/cards/v/VampiricDragon.java b/Mage.Sets/src/mage/cards/v/VampiricDragon.java index 8e69527967b..5336e0c4581 100644 --- a/Mage.Sets/src/mage/cards/v/VampiricDragon.java +++ b/Mage.Sets/src/mage/cards/v/VampiricDragon.java @@ -30,7 +30,7 @@ package mage.cards.v; import java.util.UUID; import mage.MageInt; import mage.abilities.Ability; -import mage.abilities.common.DiesAndDealtDamageThisTurnTriggeredAbility; +import mage.abilities.common.DealtDamageAndDiedTriggeredAbility; import mage.abilities.common.SimpleActivatedAbility; import mage.abilities.costs.mana.ManaCostsImpl; import mage.abilities.effects.common.DamageTargetEffect; @@ -61,7 +61,7 @@ public class VampiricDragon extends CardImpl { this.addAbility(FlyingAbility.getInstance()); // Whenever a creature dealt damage by Vampiric Dragon this turn dies, put a +1/+1 counter on Vampiric Dragon. - this.addAbility(new DiesAndDealtDamageThisTurnTriggeredAbility(new AddCountersSourceEffect(CounterType.P1P1.createInstance()), false)); + this.addAbility(new DealtDamageAndDiedTriggeredAbility(new AddCountersSourceEffect(CounterType.P1P1.createInstance()), false)); // {1}{R}: Vampiric Dragon deals 1 damage to target creature. Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DamageTargetEffect(1), new ManaCostsImpl("{1}{R}")); diff --git a/Mage.Sets/src/mage/cards/v/VampiricEmbrace.java b/Mage.Sets/src/mage/cards/v/VampiricEmbrace.java index ee15a32fb01..faa58d2e118 100644 --- a/Mage.Sets/src/mage/cards/v/VampiricEmbrace.java +++ b/Mage.Sets/src/mage/cards/v/VampiricEmbrace.java @@ -29,7 +29,7 @@ package mage.cards.v; import java.util.UUID; import mage.abilities.Ability; -import mage.abilities.common.DiesAndDealtDamageThisTurnTriggeredAbility; +import mage.abilities.common.DealtDamageAndDiedTriggeredAbility; import mage.abilities.common.SimpleStaticAbility; import mage.abilities.effects.Effect; import mage.abilities.effects.common.AttachEffect; @@ -71,7 +71,7 @@ public class VampiricEmbrace extends CardImpl { ability.addEffect(effect); this.addAbility(ability); // Whenever a creature dealt damage by enchanted creature this turn dies, put a +1/+1 counter on that creature. - this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new GainAbilityAttachedEffect(new DiesAndDealtDamageThisTurnTriggeredAbility(new AddCountersSourceEffect(CounterType.P1P1.createInstance()), false), AttachmentType.AURA))); + this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new GainAbilityAttachedEffect(new DealtDamageAndDiedTriggeredAbility(new AddCountersSourceEffect(CounterType.P1P1.createInstance()), false), AttachmentType.AURA))); } public VampiricEmbrace(final VampiricEmbrace card) { diff --git a/Mage.Sets/src/mage/cards/v/VampiricSliver.java b/Mage.Sets/src/mage/cards/v/VampiricSliver.java index cc8541ecc84..3e16bea886f 100644 --- a/Mage.Sets/src/mage/cards/v/VampiricSliver.java +++ b/Mage.Sets/src/mage/cards/v/VampiricSliver.java @@ -29,7 +29,7 @@ package mage.cards.v; import java.util.UUID; import mage.MageInt; -import mage.abilities.common.DiesAndDealtDamageThisTurnTriggeredAbility; +import mage.abilities.common.DealtDamageAndDiedTriggeredAbility; import mage.abilities.common.SimpleStaticAbility; import mage.abilities.effects.common.continuous.GainAbilityAllEffect; import mage.abilities.effects.common.counter.AddCountersSourceEffect; @@ -63,7 +63,7 @@ public class VampiricSliver extends CardImpl { // All Sliver creatures have "Whenever a creature dealt damage by this creature this turn dies, put a +1/+1 counter on this creature." this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new GainAbilityAllEffect( - new DiesAndDealtDamageThisTurnTriggeredAbility(new AddCountersSourceEffect(CounterType.P1P1.createInstance())), Duration.WhileOnBattlefield, + new DealtDamageAndDiedTriggeredAbility(new AddCountersSourceEffect(CounterType.P1P1.createInstance())), Duration.WhileOnBattlefield, filter, "All Sliver creatures have \"Whenever a creature dealt damage by this creature this turn dies, put a +1/+1 counter on this creature.\""))); } diff --git a/Mage.Sets/src/mage/cards/v/VeinDrinker.java b/Mage.Sets/src/mage/cards/v/VeinDrinker.java index cf77557cdf5..086a3a26552 100644 --- a/Mage.Sets/src/mage/cards/v/VeinDrinker.java +++ b/Mage.Sets/src/mage/cards/v/VeinDrinker.java @@ -31,7 +31,7 @@ import java.util.UUID; import mage.MageInt; import mage.abilities.Ability; -import mage.abilities.common.DiesAndDealtDamageThisTurnTriggeredAbility; +import mage.abilities.common.DealtDamageAndDiedTriggeredAbility; import mage.abilities.common.SimpleActivatedAbility; import mage.abilities.costs.common.TapSourceCost; import mage.abilities.costs.mana.ManaCostsImpl; @@ -66,7 +66,7 @@ public class VeinDrinker extends CardImpl { ability.addTarget(new TargetCreaturePermanent()); this.addAbility(ability); // Whenever a creature dealt damage by Vein Drinker this turn dies, put a +1/+1 counter on Vein Drinker. - this.addAbility(new DiesAndDealtDamageThisTurnTriggeredAbility(new AddCountersSourceEffect(CounterType.P1P1.createInstance()))); + this.addAbility(new DealtDamageAndDiedTriggeredAbility(new AddCountersSourceEffect(CounterType.P1P1.createInstance()))); } public VeinDrinker(final VeinDrinker card) { diff --git a/Mage.Sets/src/mage/cards/v/VenomousDragonfly.java b/Mage.Sets/src/mage/cards/v/VenomousDragonfly.java index f44df58f3d1..9c202e1d6ae 100644 --- a/Mage.Sets/src/mage/cards/v/VenomousDragonfly.java +++ b/Mage.Sets/src/mage/cards/v/VenomousDragonfly.java @@ -29,7 +29,7 @@ package mage.cards.v; import java.util.UUID; import mage.MageInt; -import mage.abilities.common.BlocksOrBecomesBlockedByCreatureTriggeredAbility; +import mage.abilities.common.BlocksOrBecomesBlockedTriggeredAbility; import mage.abilities.common.delayed.AtTheEndOfCombatDelayedTriggeredAbility; import mage.abilities.effects.Effect; import mage.abilities.effects.common.CreateDelayedTriggeredAbilityEffect; @@ -46,7 +46,7 @@ import mage.constants.CardType; public class VenomousDragonfly extends CardImpl { public VenomousDragonfly(UUID ownerId, CardSetInfo setInfo) { - super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{G}"); + super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{G}"); this.subtype.add("Insect"); this.power = new MageInt(1); this.toughness = new MageInt(1); @@ -55,10 +55,9 @@ public class VenomousDragonfly extends CardImpl { this.addAbility(FlyingAbility.getInstance()); // Whenever Venomous Dragonfly blocks or becomes blocked by a creature, destroy that creature at end of combat. - Effect effect = new CreateDelayedTriggeredAbilityEffect( - new AtTheEndOfCombatDelayedTriggeredAbility(new DestroyTargetEffect())); + Effect effect = new CreateDelayedTriggeredAbilityEffect(new AtTheEndOfCombatDelayedTriggeredAbility(new DestroyTargetEffect())); effect.setText("destroy that creature at end of combat"); - this.addAbility(new BlocksOrBecomesBlockedByCreatureTriggeredAbility(effect, false)); + this.addAbility(new BlocksOrBecomesBlockedTriggeredAbility(effect, false)); } public VenomousDragonfly(final VenomousDragonfly card) { diff --git a/Mage.Sets/src/mage/cards/v/VertigoSpawn.java b/Mage.Sets/src/mage/cards/v/VertigoSpawn.java index 1c0af6f2fd5..e2f2a731d74 100644 --- a/Mage.Sets/src/mage/cards/v/VertigoSpawn.java +++ b/Mage.Sets/src/mage/cards/v/VertigoSpawn.java @@ -30,7 +30,7 @@ package mage.cards.v; import java.util.UUID; import mage.MageInt; import mage.abilities.Ability; -import mage.abilities.common.BlocksCreatureTriggeredAbility; +import mage.abilities.common.BlocksTriggeredAbility; import mage.abilities.effects.common.DontUntapInControllersNextUntapStepTargetEffect; import mage.abilities.effects.common.TapTargetEffect; import mage.abilities.keyword.DefenderAbility; @@ -45,7 +45,7 @@ import mage.constants.CardType; public class VertigoSpawn extends CardImpl { public VertigoSpawn(UUID ownerId, CardSetInfo setInfo) { - super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{U}"); + super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{U}"); this.subtype.add("Illusion"); this.power = new MageInt(0); this.toughness = new MageInt(3); @@ -54,7 +54,7 @@ public class VertigoSpawn extends CardImpl { this.addAbility(DefenderAbility.getInstance()); // Whenever Vertigo Spawn blocks a creature, tap that creature. That creature doesn't untap during its controller's next untap step. - Ability ability = new BlocksCreatureTriggeredAbility(new TapTargetEffect("that creature"), false, true); + Ability ability = new BlocksTriggeredAbility(new TapTargetEffect("that creature"), false, true); ability.addEffect(new DontUntapInControllersNextUntapStepTargetEffect("that creature")); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/w/WallOfFrost.java b/Mage.Sets/src/mage/cards/w/WallOfFrost.java index 5c1d5f1ecce..5cbbdb78336 100644 --- a/Mage.Sets/src/mage/cards/w/WallOfFrost.java +++ b/Mage.Sets/src/mage/cards/w/WallOfFrost.java @@ -30,7 +30,7 @@ package mage.cards.w; import java.util.UUID; import mage.constants.CardType; import mage.MageInt; -import mage.abilities.common.BlocksCreatureTriggeredAbility; +import mage.abilities.common.BlocksTriggeredAbility; import mage.abilities.effects.common.DontUntapInControllersNextUntapStepTargetEffect; import mage.abilities.keyword.DefenderAbility; import mage.cards.CardImpl; @@ -42,15 +42,17 @@ import mage.cards.CardSetInfo; public class WallOfFrost extends CardImpl { public WallOfFrost(UUID ownerId, CardSetInfo setInfo) { - super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{U}{U}"); + super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{U}{U}"); this.subtype.add("Wall"); this.power = new MageInt(0); this.toughness = new MageInt(7); + // Defender this.addAbility(DefenderAbility.getInstance()); + // Whenever Wall of Frost blocks a creature, that creature doesn't untap during its controller's next untap step. - this.addAbility(new BlocksCreatureTriggeredAbility(new DontUntapInControllersNextUntapStepTargetEffect("that creature"), false, true)); + this.addAbility(new BlocksTriggeredAbility(new DontUntapInControllersNextUntapStepTargetEffect("that creature"), false, true)); } public WallOfFrost(final WallOfFrost card) { diff --git a/Mage.Sets/src/mage/cards/w/WallOfTears.java b/Mage.Sets/src/mage/cards/w/WallOfTears.java index 18c0f154e7d..24e044119a3 100644 --- a/Mage.Sets/src/mage/cards/w/WallOfTears.java +++ b/Mage.Sets/src/mage/cards/w/WallOfTears.java @@ -29,7 +29,7 @@ package mage.cards.w; import java.util.UUID; import mage.MageInt; -import mage.abilities.common.BlocksCreatureTriggeredAbility; +import mage.abilities.common.BlocksTriggeredAbility; import mage.abilities.common.delayed.AtTheEndOfCombatDelayedTriggeredAbility; import mage.abilities.effects.Effect; import mage.abilities.effects.common.CreateDelayedTriggeredAbilityEffect; @@ -46,18 +46,18 @@ import mage.constants.CardType; public class WallOfTears extends CardImpl { public WallOfTears(UUID ownerId, CardSetInfo setInfo) { - super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{U}"); + super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{U}"); this.subtype.add("Wall"); this.power = new MageInt(0); this.toughness = new MageInt(4); // Defender this.addAbility(DefenderAbility.getInstance()); + // Whenever Wall of Tears blocks a creature, return that creature to its owner's hand at end of combat. Effect effect = new ReturnToHandTargetEffect(); effect.setText("return that creature to its owner's hand at end of combat"); - this.addAbility(new BlocksCreatureTriggeredAbility(new CreateDelayedTriggeredAbilityEffect( - new AtTheEndOfCombatDelayedTriggeredAbility(effect)), false, true)); + this.addAbility(new BlocksTriggeredAbility(new CreateDelayedTriggeredAbilityEffect(new AtTheEndOfCombatDelayedTriggeredAbility(effect)), false, true)); } public WallOfTears(final WallOfTears card) { diff --git a/Mage.Sets/src/mage/cards/w/WitherscaleWurm.java b/Mage.Sets/src/mage/cards/w/WitherscaleWurm.java index ab36c6502fd..d5506f36ea2 100644 --- a/Mage.Sets/src/mage/cards/w/WitherscaleWurm.java +++ b/Mage.Sets/src/mage/cards/w/WitherscaleWurm.java @@ -29,7 +29,7 @@ package mage.cards.w; import java.util.UUID; import mage.MageInt; -import mage.abilities.common.BlocksOrBecomesBlockedByCreatureTriggeredAbility; +import mage.abilities.common.BlocksOrBecomesBlockedTriggeredAbility; import mage.abilities.common.DealsDamageToOpponentTriggeredAbility; import mage.abilities.effects.Effect; import mage.abilities.effects.common.RemoveAllCountersSourceEffect; @@ -48,7 +48,7 @@ import mage.counters.CounterType; public class WitherscaleWurm extends CardImpl { public WitherscaleWurm(UUID ownerId, CardSetInfo setInfo) { - super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{G}{G}"); + super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{G}{G}"); this.subtype.add("Wurm"); this.power = new MageInt(9); @@ -57,7 +57,7 @@ public class WitherscaleWurm extends CardImpl { // Whenever Witherscale Wurm blocks or becomes blocked by a creature, that creature gains wither until end of turn. Effect effect = new GainAbilityTargetEffect(WitherAbility.getInstance(), Duration.EndOfTurn); effect.setText("that creature gains wither until end of turn"); - this.addAbility(new BlocksOrBecomesBlockedByCreatureTriggeredAbility(effect, false)); + this.addAbility(new BlocksOrBecomesBlockedTriggeredAbility(effect, false)); // Whenever Witherscale Wurm deals damage to an opponent, remove all -1/-1 counters from it. this.addAbility(new DealsDamageToOpponentTriggeredAbility(new RemoveAllCountersSourceEffect(CounterType.M1M1), false)); diff --git a/Mage.Sets/src/mage/cards/z/ZurgoHelmsmasher.java b/Mage.Sets/src/mage/cards/z/ZurgoHelmsmasher.java index ce998ef1a82..e1e1aebff2b 100644 --- a/Mage.Sets/src/mage/cards/z/ZurgoHelmsmasher.java +++ b/Mage.Sets/src/mage/cards/z/ZurgoHelmsmasher.java @@ -30,7 +30,7 @@ package mage.cards.z; import java.util.UUID; import mage.MageInt; import mage.abilities.common.AttacksEachCombatStaticAbility; -import mage.abilities.common.DiesAndDealtDamageThisTurnTriggeredAbility; +import mage.abilities.common.DealtDamageAndDiedTriggeredAbility; import mage.abilities.common.SimpleStaticAbility; import mage.abilities.condition.common.MyTurnCondition; import mage.abilities.decorator.ConditionalContinuousEffect; @@ -71,7 +71,7 @@ public class ZurgoHelmsmasher extends CardImpl { "{this} has indestructible as long as it's your turn"))); // Whenever a creature dealt damage by Zurgo Helmsmasher this turn dies, put a +1/+1 counter on Zurgo Helmsmasher. - this.addAbility(new DiesAndDealtDamageThisTurnTriggeredAbility(new AddCountersSourceEffect(CounterType.P1P1.createInstance()), false)); + this.addAbility(new DealtDamageAndDiedTriggeredAbility(new AddCountersSourceEffect(CounterType.P1P1.createInstance()), false)); } public ZurgoHelmsmasher(final ZurgoHelmsmasher card) { diff --git a/Mage.Sets/src/mage/sets/AetherRevolt.java b/Mage.Sets/src/mage/sets/AetherRevolt.java index 39340976d27..65d73ab4100 100644 --- a/Mage.Sets/src/mage/sets/AetherRevolt.java +++ b/Mage.Sets/src/mage/sets/AetherRevolt.java @@ -89,7 +89,6 @@ public class AetherRevolt extends ExpansionSet { cards.add(new SetCardInfo("Freejam Regent", 81, Rarity.RARE, mage.cards.f.FreejamRegent.class)); cards.add(new SetCardInfo("Glint-Sleeve Siphoner", 62, Rarity.RARE, mage.cards.g.GlintSleeveSiphoner.class)); cards.add(new SetCardInfo("Gonti's Aether Heart", 152, Rarity.MYTHIC, mage.cards.g.GontisAetherHeart.class)); - cards.add(new SetCardInfo("Greenbelt Druid", 106, Rarity.COMMON, mage.cards.g.GreenbeltDruid.class)); cards.add(new SetCardInfo("Greenbelt Rampager", 107, Rarity.RARE, mage.cards.g.GreenbeltRampager.class)); cards.add(new SetCardInfo("Greenwheel Liberator", 108, Rarity.RARE, mage.cards.g.GreenwheelLiberator.class)); cards.add(new SetCardInfo("Heart of Kiran", 153, Rarity.MYTHIC, mage.cards.h.HeartOfKiran.class)); diff --git a/Mage/src/main/java/mage/abilities/common/AnotherCreatureEntersBattlefieldTriggeredAbility.java b/Mage/src/main/java/mage/abilities/common/AnotherCreatureEntersBattlefieldTriggeredAbility.java deleted file mode 100644 index accd6b22057..00000000000 --- a/Mage/src/main/java/mage/abilities/common/AnotherCreatureEntersBattlefieldTriggeredAbility.java +++ /dev/null @@ -1,53 +0,0 @@ -package mage.abilities.common; - -import mage.abilities.TriggeredAbilityImpl; -import mage.abilities.effects.Effect; -import mage.constants.CardType; -import mage.constants.Zone; -import mage.game.Game; -import mage.game.events.GameEvent; -import mage.game.permanent.Permanent; - -public class AnotherCreatureEntersBattlefieldTriggeredAbility extends TriggeredAbilityImpl { - - public AnotherCreatureEntersBattlefieldTriggeredAbility(Effect effect) { - this(effect, false); - } - - public AnotherCreatureEntersBattlefieldTriggeredAbility(Effect effect, boolean optional) { - super(Zone.BATTLEFIELD, effect, optional); - } - - public AnotherCreatureEntersBattlefieldTriggeredAbility(AnotherCreatureEntersBattlefieldTriggeredAbility ability) { - super(ability); - } - - @Override - public boolean checkEventType(GameEvent event, Game game) { - return event.getType() == GameEvent.EventType.ENTERS_THE_BATTLEFIELD; - } - - @Override - public boolean checkTrigger(GameEvent event, Game game) { - if (event.getTargetId() != this.getSourceId()) { - Permanent permanent = game.getPermanentEntering(event.getTargetId()); - if (permanent == null) { - permanent = game.getPermanent(event.getTargetId()); - } - if (permanent != null && permanent.getCardType().contains(CardType.CREATURE)) { - return true; - } - } - return false; - } - - @Override - public String getRule() { - return "Whenever another creature enters the battlefield, " + super.getRule(); - } - - @Override - public AnotherCreatureEntersBattlefieldTriggeredAbility copy() { - return new AnotherCreatureEntersBattlefieldTriggeredAbility(this); - } -} diff --git a/Mage/src/main/java/mage/abilities/common/BlocksAttachedTriggeredAbility.java b/Mage/src/main/java/mage/abilities/common/BlocksAttachedTriggeredAbility.java index 68ced30c5ff..8af604d14f2 100644 --- a/Mage/src/main/java/mage/abilities/common/BlocksAttachedTriggeredAbility.java +++ b/Mage/src/main/java/mage/abilities/common/BlocksAttachedTriggeredAbility.java @@ -33,22 +33,38 @@ import mage.constants.Zone; import mage.game.Game; import mage.game.events.GameEvent; import mage.game.permanent.Permanent; +import mage.target.targetpointer.FixedTarget; /** * * @author garnold */ -public class BlocksAttachedTriggeredAbility extends TriggeredAbilityImpl{ - - private final String attachedDescription; +public class BlocksAttachedTriggeredAbility extends TriggeredAbilityImpl { + + private boolean setFixedTargetPointer; + private String attachedDescription; + private boolean setFixedTargetPointerToBlocked; public BlocksAttachedTriggeredAbility(Effect effect, String attachedDescription, boolean optional) { + this(effect, attachedDescription, optional, false); + } + + public BlocksAttachedTriggeredAbility(Effect effect, String attachedDescription, boolean optional, boolean setFixedTargetPointer) { super(Zone.BATTLEFIELD, effect, optional); + this.setFixedTargetPointer = setFixedTargetPointer; this.attachedDescription = attachedDescription; } + public BlocksAttachedTriggeredAbility(Effect effect, String attachedDescription, boolean optional, boolean setFixedTargetPointer, boolean setFixedTargetPointerToBlocked) { + super(Zone.BATTLEFIELD, effect, optional); + this.setFixedTargetPointer = setFixedTargetPointer; + this.attachedDescription = attachedDescription; + this.setFixedTargetPointerToBlocked = setFixedTargetPointerToBlocked; + } + public BlocksAttachedTriggeredAbility(final BlocksAttachedTriggeredAbility ability) { super(ability); + this.setFixedTargetPointer = ability.setFixedTargetPointer; this.attachedDescription = ability.attachedDescription; } @@ -59,13 +75,23 @@ public class BlocksAttachedTriggeredAbility extends TriggeredAbilityImpl{ @Override public boolean checkEventType(GameEvent event, Game game) { - return event.getType() == GameEvent.EventType.DECLARED_BLOCKERS; + return event.getType() == GameEvent.EventType.BLOCKER_DECLARED; } @Override public boolean checkTrigger(GameEvent event, Game game) { - Permanent attachment = game.getPermanent(this.getSourceId()); - if (attachment != null && attachment.getAttachedTo() != null && game.getCombat().getBlockers().contains(attachment.getAttachedTo())) { + Permanent p = game.getPermanent(event.getSourceId()); + if (p != null && p.getAttachments().contains(this.getSourceId())) { + if (setFixedTargetPointer) { + for (Effect effect : this.getEffects()) { + effect.setTargetPointer(new FixedTarget(event.getPlayerId())); + } + } + if (setFixedTargetPointerToBlocked) { + for (Effect effect : this.getEffects()) { + effect.setTargetPointer(new FixedTarget(event.getTargetId())); + } + } return true; } return false; @@ -73,6 +99,6 @@ public class BlocksAttachedTriggeredAbility extends TriggeredAbilityImpl{ @Override public String getRule() { - return "Whenever " + attachedDescription + " creature blocks, " + super.getRule(); + return "Whenever " + attachedDescription + " creature blocks" + (setFixedTargetPointerToBlocked ? " a creature, " : ", ") + super.getRule(); } } diff --git a/Mage/src/main/java/mage/abilities/common/BlocksCreatureAttachedTriggeredAbility.java b/Mage/src/main/java/mage/abilities/common/BlocksCreatureAttachedTriggeredAbility.java deleted file mode 100644 index 4db8852a421..00000000000 --- a/Mage/src/main/java/mage/abilities/common/BlocksCreatureAttachedTriggeredAbility.java +++ /dev/null @@ -1,105 +0,0 @@ -/* - * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, are - * permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this list of - * conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, this list - * of conditions and the following disclaimer in the documentation and/or other materials - * provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON - * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF - * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * The views and conclusions contained in the software and documentation are those of the - * authors and should not be interpreted as representing official policies, either expressed - * or implied, of BetaSteward_at_googlemail.com. - */ - -package mage.abilities.common; - -import mage.abilities.TriggeredAbilityImpl; -import mage.abilities.effects.Effect; -import mage.constants.Zone; -import mage.game.Game; -import mage.game.events.GameEvent; -import mage.game.permanent.Permanent; -import mage.target.targetpointer.FixedTarget; - -/** - * - * @author LevelX2 - */ - -public class BlocksCreatureAttachedTriggeredAbility extends TriggeredAbilityImpl{ - private boolean setFixedTargetPointer; - private String attachedDescription; - private boolean setFixedTargetPointerToBlocked; - - public BlocksCreatureAttachedTriggeredAbility(Effect effect, String attachedDescription, boolean optional) { - this(effect, attachedDescription, optional, false); - } - - public BlocksCreatureAttachedTriggeredAbility(Effect effect, String attachedDescription, boolean optional, boolean setFixedTargetPointer) { - super(Zone.BATTLEFIELD, effect, optional); - this.setFixedTargetPointer = setFixedTargetPointer; - this.attachedDescription = attachedDescription; - } - - public BlocksCreatureAttachedTriggeredAbility(Effect effect, String attachedDescription, boolean optional, boolean setFixedTargetPointer, boolean setFixedTargetPointerToBlocked) { - super(Zone.BATTLEFIELD, effect, optional); - this.setFixedTargetPointer = setFixedTargetPointer; - this.attachedDescription = attachedDescription; - this.setFixedTargetPointerToBlocked = setFixedTargetPointerToBlocked; - } - - public BlocksCreatureAttachedTriggeredAbility(final BlocksCreatureAttachedTriggeredAbility ability) { - super(ability); - this.setFixedTargetPointer = ability.setFixedTargetPointer; - this.attachedDescription = ability.attachedDescription; - } - - @Override - public BlocksCreatureAttachedTriggeredAbility copy() { - return new BlocksCreatureAttachedTriggeredAbility(this); - } - - @Override - public boolean checkEventType(GameEvent event, Game game) { - return event.getType() == GameEvent.EventType.BLOCKER_DECLARED; - } - - @Override - public boolean checkTrigger(GameEvent event, Game game) { - Permanent p = game.getPermanent(event.getSourceId()); - if (p != null && p.getAttachments().contains(this.getSourceId())) { - if (setFixedTargetPointer) { - for (Effect effect : this.getEffects()) { - effect.setTargetPointer(new FixedTarget(event.getPlayerId())); - } - } - if (setFixedTargetPointerToBlocked) { - for (Effect effect : this.getEffects()) { - effect.setTargetPointer(new FixedTarget(event.getTargetId())); - } - } - return true; - } - return false; - } - - @Override - public String getRule() { - return "Whenever " + attachedDescription + " creature blocks a creature, " + super.getRule(); - } -} diff --git a/Mage/src/main/java/mage/abilities/common/BlocksCreatureTriggeredAbility.java b/Mage/src/main/java/mage/abilities/common/BlocksCreatureTriggeredAbility.java deleted file mode 100644 index b2af041fc58..00000000000 --- a/Mage/src/main/java/mage/abilities/common/BlocksCreatureTriggeredAbility.java +++ /dev/null @@ -1,86 +0,0 @@ -/* - * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, are - * permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this list of - * conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, this list - * of conditions and the following disclaimer in the documentation and/or other materials - * provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON - * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF - * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * The views and conclusions contained in the software and documentation are those of the - * authors and should not be interpreted as representing official policies, either expressed - * or implied, of BetaSteward_at_googlemail.com. - */ -package mage.abilities.common; - -import mage.constants.Zone; -import mage.abilities.TriggeredAbilityImpl; -import mage.abilities.effects.Effect; -import mage.game.Game; -import mage.game.events.GameEvent; -import mage.target.targetpointer.FixedTarget; - -/** - * - * @author LevelX2 - */ -public class BlocksCreatureTriggeredAbility extends TriggeredAbilityImpl { - - private boolean setTargetPointer; - - public BlocksCreatureTriggeredAbility(Effect effect, boolean optional) { - this(effect, optional, false); - } - - public BlocksCreatureTriggeredAbility(Effect effect, boolean optional, boolean setTargetPointer) { - super(Zone.BATTLEFIELD, effect, optional); - this.setTargetPointer = setTargetPointer; - } - - public BlocksCreatureTriggeredAbility(final BlocksCreatureTriggeredAbility ability) { - super(ability); - this.setTargetPointer = ability.setTargetPointer; - } - - @Override - public boolean checkEventType(GameEvent event, Game game) { - return event.getType() == GameEvent.EventType.BLOCKER_DECLARED; - } - - @Override - public boolean checkTrigger(GameEvent event, Game game) { - if (event.getSourceId().equals(this.getSourceId())) { - if (setTargetPointer) { - for (Effect effect : this.getEffects()) { - effect.setTargetPointer(new FixedTarget(event.getTargetId())); - } - } - return true; - } - return false; - } - - @Override - public String getRule() { - return "Whenever {this} blocks a creature, " + super.getRule(); - } - - @Override - public BlocksCreatureTriggeredAbility copy() { - return new BlocksCreatureTriggeredAbility(this); - } -} diff --git a/Mage/src/main/java/mage/abilities/common/BlocksOrBecomesBlockedByCreatureTriggeredAbility.java b/Mage/src/main/java/mage/abilities/common/BlocksOrBecomesBlockedByCreatureTriggeredAbility.java deleted file mode 100644 index c09656b951c..00000000000 --- a/Mage/src/main/java/mage/abilities/common/BlocksOrBecomesBlockedByCreatureTriggeredAbility.java +++ /dev/null @@ -1,112 +0,0 @@ -/* - * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, are - * permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this list of - * conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, this list - * of conditions and the following disclaimer in the documentation and/or other materials - * provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON - * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF - * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * The views and conclusions contained in the software and documentation are those of the - * authors and should not be interpreted as representing official policies, either expressed - * or implied, of BetaSteward_at_googlemail.com. - */ -package mage.abilities.common; - -import mage.constants.Zone; -import mage.abilities.TriggeredAbilityImpl; -import mage.abilities.effects.Effect; -import mage.filter.FilterPermanent; -import mage.filter.common.FilterCreaturePermanent; -import mage.game.Game; -import mage.game.events.GameEvent; -import mage.game.permanent.Permanent; -import mage.target.targetpointer.FixedTarget; - -/** - * - * @author North - */ -public class BlocksOrBecomesBlockedByCreatureTriggeredAbility extends TriggeredAbilityImpl { - - // note that this is using the Filter#match(E e, Game game), - // not FilterInPlay#(E o, UUID sourceId, UUID playerId, Game game) - // this triggers on both blocked and blocking, so source and player don't have a consistent definition - protected FilterPermanent filter; - protected String rule; - - public BlocksOrBecomesBlockedByCreatureTriggeredAbility(Effect effect, boolean optional) { - this(effect, new FilterCreaturePermanent(), optional, null); - } - - public BlocksOrBecomesBlockedByCreatureTriggeredAbility(Effect effect, FilterPermanent filter, boolean optional) { - this(effect, filter, optional, null); - } - - public BlocksOrBecomesBlockedByCreatureTriggeredAbility(Effect effect, FilterPermanent filter, boolean optional, String rule) { - super(Zone.BATTLEFIELD, effect, optional); - this.filter = filter; - this.rule = rule; - } - - public BlocksOrBecomesBlockedByCreatureTriggeredAbility(final BlocksOrBecomesBlockedByCreatureTriggeredAbility ability) { - super(ability); - this.filter = ability.filter; - this.rule = ability.rule; - } - - @Override - public boolean checkEventType(GameEvent event, Game game) { - return event.getType() == GameEvent.EventType.BLOCKER_DECLARED; - } - - @Override - public boolean checkTrigger(GameEvent event, Game game) { - if (event.getSourceId().equals(this.getSourceId())) { - Permanent blocked = game.getPermanent(event.getTargetId()); - if (blocked != null && filter.match(blocked, game)) { - for (Effect effect : this.getEffects()) { - effect.setTargetPointer(new FixedTarget(event.getTargetId())); - } - return true; - } - } - if (event.getTargetId().equals(this.getSourceId())) { - Permanent blocker = game.getPermanent(event.getSourceId()); - if (blocker != null && filter.match(blocker, game)) { - for (Effect effect : this.getEffects()) { - effect.setTargetPointer(new FixedTarget(event.getSourceId())); - } - return true; - } - } - return false; - } - - @Override - public String getRule() { - if (rule != null) { - return rule; - } - return "Whenever {this} blocks or becomes blocked by a " + filter.getMessage() + ", " + super.getRule(); - } - - @Override - public BlocksOrBecomesBlockedByCreatureTriggeredAbility copy() { - return new BlocksOrBecomesBlockedByCreatureTriggeredAbility(this); - } -} diff --git a/Mage/src/main/java/mage/abilities/common/BlocksOrBecomesBlockedTriggeredAbility.java b/Mage/src/main/java/mage/abilities/common/BlocksOrBecomesBlockedTriggeredAbility.java index bdc8c060d69..4bdb8c31bad 100644 --- a/Mage/src/main/java/mage/abilities/common/BlocksOrBecomesBlockedTriggeredAbility.java +++ b/Mage/src/main/java/mage/abilities/common/BlocksOrBecomesBlockedTriggeredAbility.java @@ -30,9 +30,12 @@ package mage.abilities.common; import mage.constants.Zone; import mage.abilities.TriggeredAbilityImpl; import mage.abilities.effects.Effect; +import mage.filter.FilterPermanent; +import mage.filter.common.FilterCreaturePermanent; import mage.game.Game; import mage.game.events.GameEvent; -import mage.game.events.GameEvent.EventType; +import mage.game.permanent.Permanent; +import mage.target.targetpointer.FixedTarget; /** * @@ -40,33 +43,75 @@ import mage.game.events.GameEvent.EventType; */ public class BlocksOrBecomesBlockedTriggeredAbility extends TriggeredAbilityImpl { + protected FilterPermanent filter; + protected String rule; + protected boolean setTargetPointer; + public BlocksOrBecomesBlockedTriggeredAbility(Effect effect, boolean optional) { + this(effect, new FilterCreaturePermanent(), optional, null, false); + } + + public BlocksOrBecomesBlockedTriggeredAbility(Effect effect, FilterPermanent filter, boolean optional) { + this(effect, filter, optional, null, true); + } + + public BlocksOrBecomesBlockedTriggeredAbility(Effect effect, FilterPermanent filter, boolean optional, String rule) { + this(effect, filter, optional, rule, true); + } + + public BlocksOrBecomesBlockedTriggeredAbility(Effect effect, FilterPermanent filter, boolean optional, String rule, boolean setTargetPointer) { super(Zone.BATTLEFIELD, effect, optional); + this.filter = filter; + this.rule = rule; + this.setTargetPointer = setTargetPointer; } public BlocksOrBecomesBlockedTriggeredAbility(final BlocksOrBecomesBlockedTriggeredAbility ability) { super(ability); + this.filter = ability.filter; + this.rule = ability.rule; + this.setTargetPointer = ability.setTargetPointer; + } @Override public boolean checkEventType(GameEvent event, Game game) { - return event.getType() == GameEvent.EventType.BLOCKER_DECLARED || event.getType() == GameEvent.EventType.CREATURE_BLOCKED; + return event.getType() == GameEvent.EventType.BLOCKER_DECLARED; } @Override public boolean checkTrigger(GameEvent event, Game game) { - if (event.getType() == EventType.BLOCKER_DECLARED && event.getSourceId().equals(this.getSourceId())) { - return true; + if (event.getSourceId().equals(this.getSourceId())) { + Permanent blocked = game.getPermanent(event.getTargetId()); + if (blocked != null && filter.match(blocked, game)) { + if (setTargetPointer) { + for (Effect effect : this.getEffects()) { + effect.setTargetPointer(new FixedTarget(event.getTargetId())); + } + } + return true; + } } - if (event.getType() == EventType.CREATURE_BLOCKED && event.getTargetId().equals(this.getSourceId())) { - return true; + if (event.getTargetId().equals(this.getSourceId())) { + Permanent blocker = game.getPermanent(event.getSourceId()); + if (blocker != null && filter.match(blocker, game)) { + if (setTargetPointer) { + for (Effect effect : this.getEffects()) { + effect.setTargetPointer(new FixedTarget(event.getSourceId())); + } + } + return true; + } } return false; } @Override public String getRule() { - return "Whenever {this} blocks or becomes blocked, " + super.getRule(); + if (rule != null) { + return rule; + } + return "Whenever {this} blocks or becomes blocked" + (setTargetPointer ? " by a " + filter.getMessage() : "") + ", " + super.getRule(); } @Override diff --git a/Mage/src/main/java/mage/abilities/common/BlocksTriggeredAbility.java b/Mage/src/main/java/mage/abilities/common/BlocksTriggeredAbility.java index b5aeee27011..d82fe4c8ba2 100644 --- a/Mage/src/main/java/mage/abilities/common/BlocksTriggeredAbility.java +++ b/Mage/src/main/java/mage/abilities/common/BlocksTriggeredAbility.java @@ -32,7 +32,7 @@ import mage.abilities.TriggeredAbilityImpl; import mage.abilities.effects.Effect; import mage.game.Game; import mage.game.events.GameEvent; -import mage.game.events.GameEvent.EventType; +import mage.target.targetpointer.FixedTarget; /** * @@ -40,26 +40,35 @@ import mage.game.events.GameEvent.EventType; */ public class BlocksTriggeredAbility extends TriggeredAbilityImpl { + private boolean setTargetPointer; + public BlocksTriggeredAbility(Effect effect, boolean optional) { this(effect, optional, false); } - public BlocksTriggeredAbility(Effect effect, boolean optional, boolean fixedTargetPointer) { + public BlocksTriggeredAbility(Effect effect, boolean optional, boolean setTargetPointer) { super(Zone.BATTLEFIELD, effect, optional); + this.setTargetPointer = setTargetPointer; } public BlocksTriggeredAbility(final BlocksTriggeredAbility ability) { super(ability); + this.setTargetPointer = ability.setTargetPointer; } @Override public boolean checkEventType(GameEvent event, Game game) { - return event.getType() == EventType.DECLARED_BLOCKERS; + return event.getType() == GameEvent.EventType.BLOCKER_DECLARED; } - + @Override public boolean checkTrigger(GameEvent event, Game game) { - if (game.getCombat().getBlockers().contains(this.getSourceId())) { + if (event.getSourceId().equals(this.getSourceId())) { + if (setTargetPointer) { + for (Effect effect : this.getEffects()) { + effect.setTargetPointer(new FixedTarget(event.getTargetId())); + } + } return true; } return false; @@ -67,11 +76,11 @@ public class BlocksTriggeredAbility extends TriggeredAbilityImpl { @Override public String getRule() { - return "Whenever {this} blocks, " + super.getRule(); + return "Whenever {this} blocks" + (setTargetPointer ? " a creature, " : ", ") + super.getRule(); } @Override public BlocksTriggeredAbility copy() { return new BlocksTriggeredAbility(this); } -} \ No newline at end of file +} diff --git a/Mage/src/main/java/mage/abilities/common/DiesAndDealtDamageThisTurnTriggeredAbility.java b/Mage/src/main/java/mage/abilities/common/DealtDamageAndDiedTriggeredAbility.java similarity index 77% rename from Mage/src/main/java/mage/abilities/common/DiesAndDealtDamageThisTurnTriggeredAbility.java rename to Mage/src/main/java/mage/abilities/common/DealtDamageAndDiedTriggeredAbility.java index 03ff9084e0e..1f85c92c0ea 100644 --- a/Mage/src/main/java/mage/abilities/common/DiesAndDealtDamageThisTurnTriggeredAbility.java +++ b/Mage/src/main/java/mage/abilities/common/DealtDamageAndDiedTriggeredAbility.java @@ -10,23 +10,23 @@ import mage.game.events.GameEvent; import mage.game.events.ZoneChangeEvent; import mage.target.targetpointer.FixedTarget; -public class DiesAndDealtDamageThisTurnTriggeredAbility extends TriggeredAbilityImpl { +public class DealtDamageAndDiedTriggeredAbility extends TriggeredAbilityImpl { - public DiesAndDealtDamageThisTurnTriggeredAbility(Effect effect) { + public DealtDamageAndDiedTriggeredAbility(Effect effect) { this(effect, false); } - public DiesAndDealtDamageThisTurnTriggeredAbility(Effect effect, boolean optional) { + public DealtDamageAndDiedTriggeredAbility(Effect effect, boolean optional) { super(Zone.ALL, effect, optional); } - public DiesAndDealtDamageThisTurnTriggeredAbility(final DiesAndDealtDamageThisTurnTriggeredAbility ability) { + public DealtDamageAndDiedTriggeredAbility(final DealtDamageAndDiedTriggeredAbility ability) { super(ability); } @Override - public DiesAndDealtDamageThisTurnTriggeredAbility copy() { - return new DiesAndDealtDamageThisTurnTriggeredAbility(this); + public DealtDamageAndDiedTriggeredAbility copy() { + return new DealtDamageAndDiedTriggeredAbility(this); } @Override diff --git a/Mage/src/main/java/mage/abilities/common/DamageDealtToAttachedTriggeredAbility.java b/Mage/src/main/java/mage/abilities/common/DealtDamageAttachedTriggeredAbility.java similarity index 87% rename from Mage/src/main/java/mage/abilities/common/DamageDealtToAttachedTriggeredAbility.java rename to Mage/src/main/java/mage/abilities/common/DealtDamageAttachedTriggeredAbility.java index 90e4b5fb267..6ba3bc89f47 100644 --- a/Mage/src/main/java/mage/abilities/common/DamageDealtToAttachedTriggeredAbility.java +++ b/Mage/src/main/java/mage/abilities/common/DealtDamageAttachedTriggeredAbility.java @@ -42,27 +42,27 @@ import mage.target.targetpointer.FixedTarget; * * @author LoneFox */ -public class DamageDealtToAttachedTriggeredAbility extends TriggeredAbilityImpl { +public class DealtDamageAttachedTriggeredAbility extends TriggeredAbilityImpl { protected SetTargetPointer setTargetPointer; - public DamageDealtToAttachedTriggeredAbility(Effect effect, boolean optional) { + public DealtDamageAttachedTriggeredAbility(Effect effect, boolean optional) { this(Zone.BATTLEFIELD, effect, optional, SetTargetPointer.NONE); } - public DamageDealtToAttachedTriggeredAbility(Zone zone, Effect effect, boolean optional, SetTargetPointer setTargetPointer) { + public DealtDamageAttachedTriggeredAbility(Zone zone, Effect effect, boolean optional, SetTargetPointer setTargetPointer) { super(zone, effect, optional); this.setTargetPointer = setTargetPointer; } - public DamageDealtToAttachedTriggeredAbility(final DamageDealtToAttachedTriggeredAbility ability) { + public DealtDamageAttachedTriggeredAbility(final DealtDamageAttachedTriggeredAbility ability) { super(ability); this.setTargetPointer = ability.setTargetPointer; } @Override - public DamageDealtToAttachedTriggeredAbility copy() { - return new DamageDealtToAttachedTriggeredAbility(this); + public DealtDamageAttachedTriggeredAbility copy() { + return new DealtDamageAttachedTriggeredAbility(this); } @Override diff --git a/Mage/src/main/java/mage/abilities/common/DiscardedByOpponentTrigger.java b/Mage/src/main/java/mage/abilities/common/DiscardedByOpponentTriggerAbility.java similarity index 84% rename from Mage/src/main/java/mage/abilities/common/DiscardedByOpponentTrigger.java rename to Mage/src/main/java/mage/abilities/common/DiscardedByOpponentTriggerAbility.java index e78ddd819b3..5f143b7dc0c 100644 --- a/Mage/src/main/java/mage/abilities/common/DiscardedByOpponentTrigger.java +++ b/Mage/src/main/java/mage/abilities/common/DiscardedByOpponentTriggerAbility.java @@ -39,23 +39,23 @@ import mage.game.stack.StackObject; * * @author Styxo */ -public class DiscardedByOpponentTrigger extends TriggeredAbilityImpl { +public class DiscardedByOpponentTriggerAbility extends TriggeredAbilityImpl { - public DiscardedByOpponentTrigger(Effect effect) { + public DiscardedByOpponentTriggerAbility(Effect effect) { this(effect, false); } - public DiscardedByOpponentTrigger(Effect effect, boolean optional) { + public DiscardedByOpponentTriggerAbility(Effect effect, boolean optional) { super(Zone.GRAVEYARD, effect, optional); } - public DiscardedByOpponentTrigger(final DiscardedByOpponentTrigger ability) { + public DiscardedByOpponentTriggerAbility(final DiscardedByOpponentTriggerAbility ability) { super(ability); } @Override - public DiscardedByOpponentTrigger copy() { - return new DiscardedByOpponentTrigger(this); + public DiscardedByOpponentTriggerAbility copy() { + return new DiscardedByOpponentTriggerAbility(this); } @Override diff --git a/Mage/src/main/java/mage/abilities/common/EntersAnotherCreatureYourControlTriggeredAbility.java b/Mage/src/main/java/mage/abilities/common/EntersAnotherCreatureYourControlTriggeredAbility.java deleted file mode 100644 index a1ffb51f7c2..00000000000 --- a/Mage/src/main/java/mage/abilities/common/EntersAnotherCreatureYourControlTriggeredAbility.java +++ /dev/null @@ -1,77 +0,0 @@ -/* -* Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved. -* -* Redistribution and use in source and binary forms, with or without modification, are -* permitted provided that the following conditions are met: -* -* 1. Redistributions of source code must retain the above copyright notice, this list of -* conditions and the following disclaimer. -* -* 2. Redistributions in binary form must reproduce the above copyright notice, this list -* of conditions and the following disclaimer in the documentation and/or other materials -* provided with the distribution. -* -* THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED -* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND -* FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR -* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR -* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR -* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON -* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF -* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -* -* The views and conclusions contained in the software and documentation are those of the -* authors and should not be interpreted as representing official policies, either expressed -* or implied, of BetaSteward_at_googlemail.com. -*/ - -package mage.abilities.common; - -import mage.constants.Zone; -import mage.abilities.effects.Effect; -import mage.constants.CardType; -import mage.game.Game; -import mage.game.events.GameEvent; -import mage.game.permanent.Permanent; - -/** - * - * @author noxx - */ -public class EntersAnotherCreatureYourControlTriggeredAbility extends ZoneChangeTriggeredAbility { - - public EntersAnotherCreatureYourControlTriggeredAbility(Effect effect) { - this(effect, false); - } - - public EntersAnotherCreatureYourControlTriggeredAbility(Effect effect, boolean optional) { - super(Zone.BATTLEFIELD, effect, "Whenever another creature enters the battlefield under your control, ", optional); - } - - public EntersAnotherCreatureYourControlTriggeredAbility(EntersAnotherCreatureYourControlTriggeredAbility ability) { - super(ability); - } - - @Override - public boolean checkEventType(GameEvent event, Game game) { - return event.getType() == GameEvent.EventType.ENTERS_THE_BATTLEFIELD; - } - - @Override - public boolean checkTrigger(GameEvent event, Game game) { - if (!event.getTargetId().equals(this.getSourceId())) { - Permanent permanent = game.getPermanent(event.getTargetId()); - if (permanent != null && permanent.getCardType().contains(CardType.CREATURE) && permanent.getControllerId().equals(this.getControllerId())) { - return true; - } - } - return false; - } - - @Override - public EntersAnotherCreatureYourControlTriggeredAbility copy() { - return new EntersAnotherCreatureYourControlTriggeredAbility(this); - } - -} diff --git a/Mage/src/main/java/mage/abilities/effects/common/combat/CantBeBlockedByCreaturesWithGreaterPowerEffect.java b/Mage/src/main/java/mage/abilities/effects/common/combat/CantBeBlockedByCreaturesWithGreaterPowerEffect.java index 6462fa6a95d..f4877ec0521 100644 --- a/Mage/src/main/java/mage/abilities/effects/common/combat/CantBeBlockedByCreaturesWithGreaterPowerEffect.java +++ b/Mage/src/main/java/mage/abilities/effects/common/combat/CantBeBlockedByCreaturesWithGreaterPowerEffect.java @@ -37,7 +37,6 @@ import mage.game.permanent.Permanent; * * @author LevelX2 */ - public class CantBeBlockedByCreaturesWithGreaterPowerEffect extends RestrictionEffect { public CantBeBlockedByCreaturesWithGreaterPowerEffect() { @@ -51,18 +50,12 @@ public class CantBeBlockedByCreaturesWithGreaterPowerEffect extends RestrictionE @Override public boolean applies(Permanent permanent, Ability source, Game game) { - if (permanent.getId().equals(source.getSourceId())) { - return true; - } - return false; + return permanent.getId().equals(source.getSourceId()); } @Override public boolean canBeBlocked(Permanent attacker, Permanent blocker, Ability source, Game game) { - if (blocker.getPower().getValue() > attacker.getPower().getValue()) { - return false; - } - return true; + return blocker.getPower().getValue() <= attacker.getPower().getValue(); } @Override diff --git a/Mage/src/main/java/mage/abilities/effects/common/combat/CantBeBlockedByCreaturesWithLessPowerEffect.java b/Mage/src/main/java/mage/abilities/effects/common/combat/CantBeBlockedByCreaturesWithLessPowerEffect.java index 3e9d6f54e71..d4801b1faa5 100644 --- a/Mage/src/main/java/mage/abilities/effects/common/combat/CantBeBlockedByCreaturesWithLessPowerEffect.java +++ b/Mage/src/main/java/mage/abilities/effects/common/combat/CantBeBlockedByCreaturesWithLessPowerEffect.java @@ -50,18 +50,12 @@ public class CantBeBlockedByCreaturesWithLessPowerEffect extends RestrictionEffe @Override public boolean applies(Permanent permanent, Ability source, Game game) { - if (permanent.getId().equals(source.getSourceId())) { - return true; - } - return false; + return permanent.getId().equals(source.getSourceId()); } @Override public boolean canBeBlocked(Permanent attacker, Permanent blocker, Ability source, Game game) { - if (blocker.getPower().getValue() < attacker.getPower().getValue()) { - return false; - } - return true; + return (blocker.getPower().getValue() >= attacker.getPower().getValue()); } @Override