diff --git a/Mage.Sets/src/mage/sets/alarareborn/PutridLeech.java b/Mage.Sets/src/mage/sets/alarareborn/PutridLeech.java index 5d1159107be..7122e9f2bf2 100644 --- a/Mage.Sets/src/mage/sets/alarareborn/PutridLeech.java +++ b/Mage.Sets/src/mage/sets/alarareborn/PutridLeech.java @@ -34,7 +34,7 @@ import mage.constants.Duration; import mage.constants.Rarity; import mage.constants.Zone; import mage.MageInt; -import mage.abilities.common.ActivateOncePerTurnActivatedAbility; +import mage.abilities.common.LimitedTimesPerTurnActivatedAbility; import mage.abilities.costs.common.PayLifeCost; import mage.abilities.effects.common.continious.BoostSourceEffect; import mage.cards.CardImpl; @@ -55,7 +55,7 @@ public class PutridLeech extends CardImpl { this.subtype.add("Leech"); this.power = new MageInt(2); this.toughness = new MageInt(2); - this.addAbility(new ActivateOncePerTurnActivatedAbility(Zone.BATTLEFIELD, new BoostSourceEffect(2, 2, Duration.EndOfTurn), new PayLifeCost(2))); + this.addAbility(new LimitedTimesPerTurnActivatedAbility(Zone.BATTLEFIELD, new BoostSourceEffect(2, 2, Duration.EndOfTurn), new PayLifeCost(2))); } public PutridLeech(final PutridLeech card) { diff --git a/Mage.Sets/src/mage/sets/betrayersofkamigawa/PatronOfTheOrochi.java b/Mage.Sets/src/mage/sets/betrayersofkamigawa/PatronOfTheOrochi.java index 7a7b5474f1f..57988fcd88b 100644 --- a/Mage.Sets/src/mage/sets/betrayersofkamigawa/PatronOfTheOrochi.java +++ b/Mage.Sets/src/mage/sets/betrayersofkamigawa/PatronOfTheOrochi.java @@ -33,7 +33,7 @@ import mage.constants.CardType; import mage.constants.Rarity; import mage.MageInt; import mage.abilities.Ability; -import mage.abilities.common.ActivateOncePerTurnActivatedAbility; +import mage.abilities.common.LimitedTimesPerTurnActivatedAbility; import mage.abilities.effects.OneShotEffect; import mage.ObjectColor; import mage.abilities.costs.common.TapSourceCost; @@ -69,7 +69,7 @@ public class PatronOfTheOrochi extends CardImpl { this.addAbility(new OfferingAbility("Snake")); // {T}: Untap all Forests and all green creatures. Activate this ability only once each turn. - this.addAbility(new ActivateOncePerTurnActivatedAbility(Zone.BATTLEFIELD, new PatronOfTheOrochiEffect(), new TapSourceCost())); + this.addAbility(new LimitedTimesPerTurnActivatedAbility(Zone.BATTLEFIELD, new PatronOfTheOrochiEffect(), new TapSourceCost())); } diff --git a/Mage.Sets/src/mage/sets/bornofthegods/GraverobberSpider.java b/Mage.Sets/src/mage/sets/bornofthegods/GraverobberSpider.java index cd14eeec738..56ac5756144 100644 --- a/Mage.Sets/src/mage/sets/bornofthegods/GraverobberSpider.java +++ b/Mage.Sets/src/mage/sets/bornofthegods/GraverobberSpider.java @@ -30,7 +30,7 @@ package mage.sets.bornofthegods; import java.util.UUID; import mage.MageInt; import mage.abilities.Ability; -import mage.abilities.common.ActivateOncePerTurnActivatedAbility; +import mage.abilities.common.LimitedTimesPerTurnActivatedAbility; import mage.abilities.costs.mana.ManaCostsImpl; import mage.abilities.dynamicvalue.DynamicValue; import mage.abilities.dynamicvalue.common.CardsInControllerGraveyardCount; @@ -62,7 +62,7 @@ public class GraverobberSpider extends CardImpl { this.addAbility(ReachAbility.getInstance()); // {3}{B}: Graverobber Spider gets +X/+X until end of turn, where X is the number of creature cards in your graveyard. Activate this ability only once each turn. DynamicValue xValue = new CardsInControllerGraveyardCount(new FilterCreatureCard("creature cards")); - Ability ability = new ActivateOncePerTurnActivatedAbility(Zone.BATTLEFIELD, new BoostSourceEffect(xValue, xValue, Duration.EndOfTurn, true), new ManaCostsImpl("{3}{B}")); + Ability ability = new LimitedTimesPerTurnActivatedAbility(Zone.BATTLEFIELD, new BoostSourceEffect(xValue, xValue, Duration.EndOfTurn, true), new ManaCostsImpl("{3}{B}")); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/sets/championsofkamigawa/AkkiAvalanchers.java b/Mage.Sets/src/mage/sets/championsofkamigawa/AkkiAvalanchers.java index 641e9171583..cbd9b281504 100644 --- a/Mage.Sets/src/mage/sets/championsofkamigawa/AkkiAvalanchers.java +++ b/Mage.Sets/src/mage/sets/championsofkamigawa/AkkiAvalanchers.java @@ -34,7 +34,7 @@ import mage.constants.Duration; import mage.constants.Rarity; import mage.constants.Zone; import mage.MageInt; -import mage.abilities.common.ActivateOncePerTurnActivatedAbility; +import mage.abilities.common.LimitedTimesPerTurnActivatedAbility; import mage.abilities.costs.common.SacrificeTargetCost; import mage.abilities.effects.common.continious.BoostSourceEffect; import mage.cards.CardImpl; @@ -59,7 +59,7 @@ public class AkkiAvalanchers extends CardImpl { this.toughness = new MageInt(1); // Sacrifice a land: Akki Avalanchers gets +2/+0 until end of turn. Activate this ability only once each turn. - this.addAbility(new ActivateOncePerTurnActivatedAbility(Zone.BATTLEFIELD, new BoostSourceEffect(2, 0, Duration.EndOfTurn), new SacrificeTargetCost(new TargetControlledPermanent(filter)))); + this.addAbility(new LimitedTimesPerTurnActivatedAbility(Zone.BATTLEFIELD, new BoostSourceEffect(2, 0, Duration.EndOfTurn), new SacrificeTargetCost(new TargetControlledPermanent(filter)))); } public AkkiAvalanchers(final AkkiAvalanchers card) { diff --git a/Mage.Sets/src/mage/sets/championsofkamigawa/BrutalDeceiver.java b/Mage.Sets/src/mage/sets/championsofkamigawa/BrutalDeceiver.java index 544f97d2d47..14d515c231c 100644 --- a/Mage.Sets/src/mage/sets/championsofkamigawa/BrutalDeceiver.java +++ b/Mage.Sets/src/mage/sets/championsofkamigawa/BrutalDeceiver.java @@ -35,7 +35,7 @@ import mage.constants.Rarity; import mage.constants.Zone; import mage.MageInt; import mage.abilities.Ability; -import mage.abilities.common.ActivateOncePerTurnActivatedAbility; +import mage.abilities.common.LimitedTimesPerTurnActivatedAbility; import mage.abilities.costs.mana.GenericManaCost; import mage.abilities.common.SimpleActivatedAbility; import mage.abilities.costs.Cost; @@ -86,7 +86,7 @@ public class BrutalDeceiver extends CardImpl { } } -class BrutalDeceiverAbility extends ActivateOncePerTurnActivatedAbility { +class BrutalDeceiverAbility extends LimitedTimesPerTurnActivatedAbility { public BrutalDeceiverAbility(Zone zone, Effect effect, Cost cost) { super(zone, effect, cost); diff --git a/Mage.Sets/src/mage/sets/championsofkamigawa/CallousDeceiver.java b/Mage.Sets/src/mage/sets/championsofkamigawa/CallousDeceiver.java index 379b6f0af20..3e271647d3e 100644 --- a/Mage.Sets/src/mage/sets/championsofkamigawa/CallousDeceiver.java +++ b/Mage.Sets/src/mage/sets/championsofkamigawa/CallousDeceiver.java @@ -35,7 +35,7 @@ import mage.constants.Rarity; import mage.constants.Zone; import mage.MageInt; import mage.abilities.Ability; -import mage.abilities.common.ActivateOncePerTurnActivatedAbility; +import mage.abilities.common.LimitedTimesPerTurnActivatedAbility; import mage.abilities.costs.mana.GenericManaCost; import mage.abilities.common.SimpleActivatedAbility; import mage.abilities.costs.Cost; @@ -86,7 +86,7 @@ public class CallousDeceiver extends CardImpl { } -class CallousDeceiverAbility extends ActivateOncePerTurnActivatedAbility { +class CallousDeceiverAbility extends LimitedTimesPerTurnActivatedAbility { public CallousDeceiverAbility(Zone zone, Effect effect, Cost cost) { super(zone, effect, cost); diff --git a/Mage.Sets/src/mage/sets/championsofkamigawa/CruelDeceiver.java b/Mage.Sets/src/mage/sets/championsofkamigawa/CruelDeceiver.java index f011a24435e..ea5ee58dc8e 100644 --- a/Mage.Sets/src/mage/sets/championsofkamigawa/CruelDeceiver.java +++ b/Mage.Sets/src/mage/sets/championsofkamigawa/CruelDeceiver.java @@ -35,7 +35,7 @@ import mage.constants.Rarity; import mage.constants.Zone; import mage.MageInt; import mage.abilities.Ability; -import mage.abilities.common.ActivateOncePerTurnActivatedAbility; +import mage.abilities.common.LimitedTimesPerTurnActivatedAbility; import mage.abilities.common.SimpleActivatedAbility; import mage.abilities.costs.mana.GenericManaCost; import mage.abilities.costs.mana.ManaCostsImpl; @@ -70,7 +70,7 @@ public class CruelDeceiver extends CardImpl { this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new LookLibraryControllerEffect(), new GenericManaCost(1))); // {2}: Reveal the top card of your library. If it's a land card, Cruel Deceiver gains "Whenever Cruel Deceiver deals damage to a creature, destroy that creature" until end of turn. Activate this ability only once each turn. - this.addAbility(new ActivateOncePerTurnActivatedAbility(Zone.BATTLEFIELD, new CruelDeceiverEffect(), new ManaCostsImpl("{2}"))); + this.addAbility(new LimitedTimesPerTurnActivatedAbility(Zone.BATTLEFIELD, new CruelDeceiverEffect(), new ManaCostsImpl("{2}"))); } public CruelDeceiver(final CruelDeceiver card) { diff --git a/Mage.Sets/src/mage/sets/championsofkamigawa/FeralDeceiver.java b/Mage.Sets/src/mage/sets/championsofkamigawa/FeralDeceiver.java index 83a51ce5496..f2f48970752 100644 --- a/Mage.Sets/src/mage/sets/championsofkamigawa/FeralDeceiver.java +++ b/Mage.Sets/src/mage/sets/championsofkamigawa/FeralDeceiver.java @@ -34,7 +34,7 @@ import mage.constants.Rarity; import mage.constants.Zone; import mage.MageInt; import mage.abilities.Ability; -import mage.abilities.common.ActivateOncePerTurnActivatedAbility; +import mage.abilities.common.LimitedTimesPerTurnActivatedAbility; import mage.abilities.common.SimpleActivatedAbility; import mage.abilities.costs.Cost; import mage.abilities.costs.mana.GenericManaCost; @@ -85,7 +85,7 @@ public class FeralDeceiver extends CardImpl { } } -class FeralDeceiverAbility extends ActivateOncePerTurnActivatedAbility { +class FeralDeceiverAbility extends LimitedTimesPerTurnActivatedAbility { public FeralDeceiverAbility(Zone zone, Effect effect, Cost cost) { super(zone, effect, cost); diff --git a/Mage.Sets/src/mage/sets/championsofkamigawa/HarshDeceiver.java b/Mage.Sets/src/mage/sets/championsofkamigawa/HarshDeceiver.java index 089e774eec3..064ca446d25 100644 --- a/Mage.Sets/src/mage/sets/championsofkamigawa/HarshDeceiver.java +++ b/Mage.Sets/src/mage/sets/championsofkamigawa/HarshDeceiver.java @@ -35,7 +35,7 @@ import mage.constants.Rarity; import mage.constants.Zone; import mage.MageInt; import mage.abilities.Ability; -import mage.abilities.common.ActivateOncePerTurnActivatedAbility; +import mage.abilities.common.LimitedTimesPerTurnActivatedAbility; import mage.abilities.costs.mana.GenericManaCost; import mage.abilities.common.SimpleActivatedAbility; import mage.abilities.costs.Cost; @@ -85,7 +85,7 @@ public class HarshDeceiver extends CardImpl { } } -class HarshDeceiverAbility extends ActivateOncePerTurnActivatedAbility { +class HarshDeceiverAbility extends LimitedTimesPerTurnActivatedAbility { public HarshDeceiverAbility(Zone zone, Effect effect, Cost cost) { super(zone, effect, cost); diff --git a/Mage.Sets/src/mage/sets/conflux/ViashinoSlaughtermaster.java b/Mage.Sets/src/mage/sets/conflux/ViashinoSlaughtermaster.java index 07d65a8f111..d5175ef868b 100644 --- a/Mage.Sets/src/mage/sets/conflux/ViashinoSlaughtermaster.java +++ b/Mage.Sets/src/mage/sets/conflux/ViashinoSlaughtermaster.java @@ -32,7 +32,7 @@ import java.util.UUID; import mage.constants.CardType; import mage.constants.Rarity; import mage.MageInt; -import mage.abilities.common.ActivateOncePerTurnActivatedAbility; +import mage.abilities.common.LimitedTimesPerTurnActivatedAbility; import mage.abilities.costs.mana.ManaCostsImpl; import mage.abilities.effects.common.continious.BoostSourceEffect; import mage.abilities.keyword.DoubleStrikeAbility; @@ -58,7 +58,7 @@ public class ViashinoSlaughtermaster extends CardImpl { this.addAbility(DoubleStrikeAbility.getInstance()); // {B}{G}: Viashino Slaughtermaster gets +1/+1 until end of turn. Activate this ability only once each turn. - this.addAbility(new ActivateOncePerTurnActivatedAbility(Zone.BATTLEFIELD, new BoostSourceEffect(1, 1, Duration.EndOfTurn), new ManaCostsImpl("{B}{G}"))); + this.addAbility(new LimitedTimesPerTurnActivatedAbility(Zone.BATTLEFIELD, new BoostSourceEffect(1, 1, Duration.EndOfTurn), new ManaCostsImpl("{B}{G}"))); } public ViashinoSlaughtermaster(final ViashinoSlaughtermaster card) { diff --git a/Mage.Sets/src/mage/sets/darkascension/KrallenhordeKiller.java b/Mage.Sets/src/mage/sets/darkascension/KrallenhordeKiller.java index 64a4e4ffd3b..675550d7f8c 100644 --- a/Mage.Sets/src/mage/sets/darkascension/KrallenhordeKiller.java +++ b/Mage.Sets/src/mage/sets/darkascension/KrallenhordeKiller.java @@ -32,7 +32,7 @@ import java.util.UUID; import mage.constants.*; import mage.MageInt; import mage.abilities.TriggeredAbility; -import mage.abilities.common.ActivateOncePerTurnActivatedAbility; +import mage.abilities.common.LimitedTimesPerTurnActivatedAbility; import mage.abilities.common.BeginningOfUpkeepTriggeredAbility; import mage.abilities.condition.common.TwoOrMoreSpellsWereCastLastTurnCondition; import mage.abilities.costs.mana.ManaCostsImpl; @@ -60,7 +60,7 @@ public class KrallenhordeKiller extends CardImpl { this.canTransform = true; // {3}{G}: Krallenhorde Killer gets +4/+4 until end of turn. Activate this ability only once each turn. - this.addAbility(new ActivateOncePerTurnActivatedAbility(Zone.BATTLEFIELD, new BoostSourceEffect(4, 4, Duration.EndOfTurn), new ManaCostsImpl("{3}{G}"))); + this.addAbility(new LimitedTimesPerTurnActivatedAbility(Zone.BATTLEFIELD, new BoostSourceEffect(4, 4, Duration.EndOfTurn), new ManaCostsImpl("{3}{G}"))); // At the beginning of each upkeep, if a player cast two or more spells last turn, transform Krallenhorde Killer. TriggeredAbility ability = new BeginningOfUpkeepTriggeredAbility(new TransformSourceEffect(false), TargetController.ANY, false); diff --git a/Mage.Sets/src/mage/sets/darkascension/WolfbittenCaptive.java b/Mage.Sets/src/mage/sets/darkascension/WolfbittenCaptive.java index 84ab7fda3b9..ea3f8141e7f 100644 --- a/Mage.Sets/src/mage/sets/darkascension/WolfbittenCaptive.java +++ b/Mage.Sets/src/mage/sets/darkascension/WolfbittenCaptive.java @@ -32,7 +32,7 @@ import java.util.UUID; import mage.constants.*; import mage.MageInt; import mage.abilities.TriggeredAbility; -import mage.abilities.common.ActivateOncePerTurnActivatedAbility; +import mage.abilities.common.LimitedTimesPerTurnActivatedAbility; import mage.abilities.common.BeginningOfUpkeepTriggeredAbility; import mage.abilities.condition.common.NoSpellsWereCastLastTurnCondition; import mage.abilities.costs.mana.ManaCostsImpl; @@ -62,7 +62,7 @@ public class WolfbittenCaptive extends CardImpl { this.secondSideCard = new KrallenhordeKiller(ownerId); // {1}{G}: Wolfbitten Captive gets +2/+2 until end of turn. Activate this ability only once each turn. - this.addAbility(new ActivateOncePerTurnActivatedAbility(Zone.BATTLEFIELD, new BoostSourceEffect(2, 2, Duration.EndOfTurn), new ManaCostsImpl("{1}{G}"))); + this.addAbility(new LimitedTimesPerTurnActivatedAbility(Zone.BATTLEFIELD, new BoostSourceEffect(2, 2, Duration.EndOfTurn), new ManaCostsImpl("{1}{G}"))); // At the beginning of each upkeep, if no spells were cast last turn, transform Wolfbitten Captive. this.addAbility(new TransformAbility()); diff --git a/Mage.Sets/src/mage/sets/dragonsmaze/BeetleformMage.java b/Mage.Sets/src/mage/sets/dragonsmaze/BeetleformMage.java index fad8ce6603a..41b74910740 100644 --- a/Mage.Sets/src/mage/sets/dragonsmaze/BeetleformMage.java +++ b/Mage.Sets/src/mage/sets/dragonsmaze/BeetleformMage.java @@ -35,7 +35,7 @@ import mage.constants.Rarity; import mage.constants.Zone; import mage.MageInt; import mage.abilities.Ability; -import mage.abilities.common.ActivateOncePerTurnActivatedAbility; +import mage.abilities.common.LimitedTimesPerTurnActivatedAbility; import mage.abilities.costs.mana.ManaCostsImpl; import mage.abilities.effects.common.continious.BoostSourceEffect; import mage.abilities.effects.common.continious.GainAbilitySourceEffect; @@ -62,7 +62,7 @@ public class BeetleformMage extends CardImpl { this.toughness = new MageInt(2); // {G}{U}: Beetleform Mage gets +2/+2 and gains flying until end of turn. Activate this ability only once each turn. - Ability ability = new ActivateOncePerTurnActivatedAbility(Zone.BATTLEFIELD, new BoostSourceEffect(2,2, Duration.EndOfTurn), new ManaCostsImpl("{G}{U}")); + Ability ability = new LimitedTimesPerTurnActivatedAbility(Zone.BATTLEFIELD, new BoostSourceEffect(2,2, Duration.EndOfTurn), new ManaCostsImpl("{G}{U}")); ability.addEffect(new GainAbilitySourceEffect(FlyingAbility.getInstance(), Duration.EndOfTurn)); this.addAbility(ability); diff --git a/Mage.Sets/src/mage/sets/eventide/TwinbladeSlasher.java b/Mage.Sets/src/mage/sets/eventide/TwinbladeSlasher.java index bee84141b63..daebfa23c94 100644 --- a/Mage.Sets/src/mage/sets/eventide/TwinbladeSlasher.java +++ b/Mage.Sets/src/mage/sets/eventide/TwinbladeSlasher.java @@ -32,7 +32,7 @@ import java.util.UUID; import mage.constants.CardType; import mage.constants.Rarity; import mage.MageInt; -import mage.abilities.common.ActivateOncePerTurnActivatedAbility; +import mage.abilities.common.LimitedTimesPerTurnActivatedAbility; import mage.abilities.costs.mana.ManaCostsImpl; import mage.abilities.effects.common.continious.BoostSourceEffect; import mage.abilities.keyword.WitherAbility; @@ -55,7 +55,7 @@ public class TwinbladeSlasher extends CardImpl { this.power = new MageInt(1); this.toughness = new MageInt(1); this.addAbility(WitherAbility.getInstance()); - this.addAbility(new ActivateOncePerTurnActivatedAbility(Zone.BATTLEFIELD, new BoostSourceEffect(2, 2, Duration.EndOfTurn), new ManaCostsImpl("{1}{G}"))); + this.addAbility(new LimitedTimesPerTurnActivatedAbility(Zone.BATTLEFIELD, new BoostSourceEffect(2, 2, Duration.EndOfTurn), new ManaCostsImpl("{1}{G}"))); } public TwinbladeSlasher(final TwinbladeSlasher card) { diff --git a/Mage.Sets/src/mage/sets/gatecrash/FrilledOculus.java b/Mage.Sets/src/mage/sets/gatecrash/FrilledOculus.java index 601a4ad94b1..6e256109656 100644 --- a/Mage.Sets/src/mage/sets/gatecrash/FrilledOculus.java +++ b/Mage.Sets/src/mage/sets/gatecrash/FrilledOculus.java @@ -32,7 +32,7 @@ import java.util.UUID; import mage.constants.CardType; import mage.constants.Rarity; import mage.MageInt; -import mage.abilities.common.ActivateOncePerTurnActivatedAbility; +import mage.abilities.common.LimitedTimesPerTurnActivatedAbility; import mage.abilities.costs.mana.ManaCostsImpl; import mage.abilities.effects.common.continious.BoostSourceEffect; import mage.cards.CardImpl; @@ -55,7 +55,7 @@ public class FrilledOculus extends CardImpl { this.toughness = new MageInt(3); // {1}{G}: Frilled Oculus gets +2/+2 until end of turn. Activate this ability only once each turn. - this.addAbility(new ActivateOncePerTurnActivatedAbility(Zone.BATTLEFIELD, new BoostSourceEffect(2, 2, Duration.EndOfTurn), new ManaCostsImpl("{1}{G}"))); + this.addAbility(new LimitedTimesPerTurnActivatedAbility(Zone.BATTLEFIELD, new BoostSourceEffect(2, 2, Duration.EndOfTurn), new ManaCostsImpl("{1}{G}"))); } public FrilledOculus(final FrilledOculus card) { diff --git a/Mage.Sets/src/mage/sets/guildpact/GhorClanBloodscale.java b/Mage.Sets/src/mage/sets/guildpact/GhorClanBloodscale.java index 9a1eaae7aa8..dbc56dfb20e 100644 --- a/Mage.Sets/src/mage/sets/guildpact/GhorClanBloodscale.java +++ b/Mage.Sets/src/mage/sets/guildpact/GhorClanBloodscale.java @@ -32,7 +32,7 @@ import java.util.UUID; import mage.constants.CardType; import mage.constants.Rarity; import mage.MageInt; -import mage.abilities.common.ActivateOncePerTurnActivatedAbility; +import mage.abilities.common.LimitedTimesPerTurnActivatedAbility; import mage.abilities.costs.mana.ManaCostsImpl; import mage.abilities.effects.common.continious.BoostSourceEffect; import mage.abilities.keyword.FirstStrikeAbility; @@ -55,7 +55,7 @@ public class GhorClanBloodscale extends CardImpl { this.power = new MageInt(2); this.toughness = new MageInt(1); this.addAbility(FirstStrikeAbility.getInstance()); - this.addAbility(new ActivateOncePerTurnActivatedAbility(Zone.BATTLEFIELD, new BoostSourceEffect(2, 2, Duration.EndOfTurn), new ManaCostsImpl("{3}{G}"))); + this.addAbility(new LimitedTimesPerTurnActivatedAbility(Zone.BATTLEFIELD, new BoostSourceEffect(2, 2, Duration.EndOfTurn), new ManaCostsImpl("{3}{G}"))); } public GhorClanBloodscale(final GhorClanBloodscale card) { diff --git a/Mage.Sets/src/mage/sets/innistrad/DarkthicketWolf.java b/Mage.Sets/src/mage/sets/innistrad/DarkthicketWolf.java index 4757a09ec4f..f5afb79a19d 100644 --- a/Mage.Sets/src/mage/sets/innistrad/DarkthicketWolf.java +++ b/Mage.Sets/src/mage/sets/innistrad/DarkthicketWolf.java @@ -32,7 +32,7 @@ import java.util.UUID; import mage.constants.CardType; import mage.constants.Rarity; import mage.MageInt; -import mage.abilities.common.ActivateOncePerTurnActivatedAbility; +import mage.abilities.common.LimitedTimesPerTurnActivatedAbility; import mage.abilities.costs.mana.ManaCostsImpl; import mage.abilities.effects.common.continious.BoostSourceEffect; import mage.cards.CardImpl; @@ -55,7 +55,7 @@ public class DarkthicketWolf extends CardImpl { this.toughness = new MageInt(2); // {2}{G}: Darkthicket Wolf gets +2/+2 until end of turn. Activate this ability only once each turn. - this.addAbility(new ActivateOncePerTurnActivatedAbility(Zone.BATTLEFIELD, new BoostSourceEffect(2, 2, Duration.EndOfTurn), new ManaCostsImpl("{2}{G}"))); + this.addAbility(new LimitedTimesPerTurnActivatedAbility(Zone.BATTLEFIELD, new BoostSourceEffect(2, 2, Duration.EndOfTurn), new ManaCostsImpl("{2}{G}"))); } public DarkthicketWolf(final DarkthicketWolf card) { diff --git a/Mage.Sets/src/mage/sets/magic2012/Skinshifter.java b/Mage.Sets/src/mage/sets/magic2012/Skinshifter.java index 2b1c2524f91..9979225af78 100644 --- a/Mage.Sets/src/mage/sets/magic2012/Skinshifter.java +++ b/Mage.Sets/src/mage/sets/magic2012/Skinshifter.java @@ -35,7 +35,7 @@ import mage.constants.Zone; import mage.MageInt; import mage.abilities.Ability; import mage.abilities.Mode; -import mage.abilities.common.ActivateOncePerTurnActivatedAbility; +import mage.abilities.common.LimitedTimesPerTurnActivatedAbility; import mage.abilities.costs.mana.ManaCostsImpl; import mage.abilities.effects.common.continious.BecomesCreatureSourceEffect; import mage.abilities.keyword.FlyingAbility; @@ -59,7 +59,7 @@ public class Skinshifter extends CardImpl { this.power = new MageInt(1); this.toughness = new MageInt(1); - Ability ability = new ActivateOncePerTurnActivatedAbility(Zone.BATTLEFIELD, + Ability ability = new LimitedTimesPerTurnActivatedAbility(Zone.BATTLEFIELD, new BecomesCreatureSourceEffect(new RhinoToken(), "", Duration.EndOfTurn), new ManaCostsImpl("{G}")); diff --git a/Mage.Sets/src/mage/sets/odyssey/PulsatingIllusion.java b/Mage.Sets/src/mage/sets/odyssey/PulsatingIllusion.java index d76cdd17214..57395a7b3bb 100644 --- a/Mage.Sets/src/mage/sets/odyssey/PulsatingIllusion.java +++ b/Mage.Sets/src/mage/sets/odyssey/PulsatingIllusion.java @@ -29,7 +29,7 @@ package mage.sets.odyssey; import java.util.UUID; import mage.MageInt; -import mage.abilities.common.ActivateOncePerTurnActivatedAbility; +import mage.abilities.common.LimitedTimesPerTurnActivatedAbility; import mage.abilities.costs.common.DiscardTargetCost; import mage.abilities.effects.common.continious.BoostSourceEffect; import mage.abilities.keyword.FlyingAbility; @@ -58,7 +58,7 @@ public class PulsatingIllusion extends CardImpl { // Flying this.addAbility(FlyingAbility.getInstance()); // Discard a card: Pulsating Illusion gets +4/+4 until end of turn. Activate this ability only once each turn. - this.addAbility(new ActivateOncePerTurnActivatedAbility(Zone.BATTLEFIELD, new BoostSourceEffect(4, 4, Duration.EndOfTurn), new DiscardTargetCost(new TargetCardInHand()))); + this.addAbility(new LimitedTimesPerTurnActivatedAbility(Zone.BATTLEFIELD, new BoostSourceEffect(4, 4, Duration.EndOfTurn), new DiscardTargetCost(new TargetCardInHand()))); } public PulsatingIllusion(final PulsatingIllusion card) { diff --git a/Mage.Sets/src/mage/sets/scarsofmirrodin/SteelHellkite.java b/Mage.Sets/src/mage/sets/scarsofmirrodin/SteelHellkite.java index d75cb031ee9..4217e8380fc 100644 --- a/Mage.Sets/src/mage/sets/scarsofmirrodin/SteelHellkite.java +++ b/Mage.Sets/src/mage/sets/scarsofmirrodin/SteelHellkite.java @@ -30,7 +30,7 @@ package mage.sets.scarsofmirrodin; import mage.constants.*; import mage.MageInt; import mage.abilities.Ability; -import mage.abilities.common.ActivateOncePerTurnActivatedAbility; +import mage.abilities.common.LimitedTimesPerTurnActivatedAbility; import mage.abilities.common.SimpleActivatedAbility; import mage.abilities.costs.mana.GenericManaCost; import mage.abilities.costs.mana.ManaCostsImpl; @@ -66,7 +66,7 @@ public class SteelHellkite extends CardImpl { // {2}: Steel Hellkite gets +1/+0 until end of turn. this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new BoostSourceEffect(1, 0, Duration.EndOfTurn), new GenericManaCost(2))); // {X}: Destroy each nonland permanent with converted mana cost X whose controller was dealt combat damage by Steel Hellkite this turn. Activate this ability only once each turn. - this.addAbility(new ActivateOncePerTurnActivatedAbility(Zone.BATTLEFIELD, new SteelHellkiteDestroyEffect(), new ManaCostsImpl("{X}"))); + this.addAbility(new LimitedTimesPerTurnActivatedAbility(Zone.BATTLEFIELD, new SteelHellkiteDestroyEffect(), new ManaCostsImpl("{X}"))); this.addWatcher(new SteelHellkiteWatcher()); } diff --git a/Mage.Sets/src/mage/sets/scourge/WirewoodSymbiote.java b/Mage.Sets/src/mage/sets/scourge/WirewoodSymbiote.java index e64854be26d..3c78ce51f16 100644 --- a/Mage.Sets/src/mage/sets/scourge/WirewoodSymbiote.java +++ b/Mage.Sets/src/mage/sets/scourge/WirewoodSymbiote.java @@ -33,7 +33,7 @@ import mage.constants.Rarity; import mage.constants.Zone; import mage.MageInt; import mage.abilities.Ability; -import mage.abilities.common.ActivateOncePerTurnActivatedAbility; +import mage.abilities.common.LimitedTimesPerTurnActivatedAbility; import mage.abilities.costs.common.ReturnToHandTargetCost; import mage.abilities.effects.common.UntapTargetEffect; import mage.cards.CardImpl; @@ -64,7 +64,7 @@ public class WirewoodSymbiote extends CardImpl { this.toughness = new MageInt(1); // Return an Elf you control to its owner's hand: Untap target creature. Activate this ability only once each turn. - Ability ability = new ActivateOncePerTurnActivatedAbility(Zone.BATTLEFIELD, new UntapTargetEffect(), new ReturnToHandTargetCost(new TargetControlledPermanent(filter))); + Ability ability = new LimitedTimesPerTurnActivatedAbility(Zone.BATTLEFIELD, new UntapTargetEffect(), new ReturnToHandTargetCost(new TargetControlledPermanent(filter))); ability.addTarget(new TargetCreaturePermanent()); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/sets/shardsofalara/KnightOfTheSkywardEye.java b/Mage.Sets/src/mage/sets/shardsofalara/KnightOfTheSkywardEye.java index 9a0789f08df..02d175f17cd 100644 --- a/Mage.Sets/src/mage/sets/shardsofalara/KnightOfTheSkywardEye.java +++ b/Mage.Sets/src/mage/sets/shardsofalara/KnightOfTheSkywardEye.java @@ -34,7 +34,7 @@ import mage.constants.Duration; import mage.constants.Rarity; import mage.constants.Zone; import mage.MageInt; -import mage.abilities.common.ActivateOncePerTurnActivatedAbility; +import mage.abilities.common.LimitedTimesPerTurnActivatedAbility; import mage.abilities.costs.mana.ManaCostsImpl; import mage.abilities.effects.common.continious.BoostSourceEffect; import mage.cards.CardImpl; @@ -56,7 +56,7 @@ public class KnightOfTheSkywardEye extends CardImpl { this.toughness = new MageInt(2); // {3}{G}: Knight of the Skyward Eye gets +3/+3 until end of turn. Activate this ability only once each turn. - this.addAbility(new ActivateOncePerTurnActivatedAbility(Zone.BATTLEFIELD, new BoostSourceEffect(3, 3, Duration.EndOfTurn), new ManaCostsImpl("{3}{G}"))); + this.addAbility(new LimitedTimesPerTurnActivatedAbility(Zone.BATTLEFIELD, new BoostSourceEffect(3, 3, Duration.EndOfTurn), new ManaCostsImpl("{3}{G}"))); } diff --git a/Mage.Sets/src/mage/sets/tempest/Rootwalla.java b/Mage.Sets/src/mage/sets/tempest/Rootwalla.java index 47fe4cc2e80..1989597e726 100644 --- a/Mage.Sets/src/mage/sets/tempest/Rootwalla.java +++ b/Mage.Sets/src/mage/sets/tempest/Rootwalla.java @@ -32,7 +32,7 @@ import java.util.UUID; import mage.constants.CardType; import mage.constants.Rarity; import mage.MageInt; -import mage.abilities.common.ActivateOncePerTurnActivatedAbility; +import mage.abilities.common.LimitedTimesPerTurnActivatedAbility; import mage.abilities.costs.mana.ManaCostsImpl; import mage.abilities.effects.common.continious.BoostSourceEffect; import mage.cards.CardImpl; @@ -52,7 +52,7 @@ public class Rootwalla extends CardImpl { this.color.setGreen(true); this.power = new MageInt(2); this.toughness = new MageInt(2); - this.addAbility(new ActivateOncePerTurnActivatedAbility(Zone.BATTLEFIELD, new BoostSourceEffect(2, 2, Duration.EndOfTurn), new ManaCostsImpl("{1}{G}"))); + this.addAbility(new LimitedTimesPerTurnActivatedAbility(Zone.BATTLEFIELD, new BoostSourceEffect(2, 2, Duration.EndOfTurn), new ManaCostsImpl("{1}{G}"))); } public Rootwalla(final Rootwalla card) { diff --git a/Mage.Sets/src/mage/sets/theros/SetessanGriffin.java b/Mage.Sets/src/mage/sets/theros/SetessanGriffin.java index 835d49d388b..13af5c264e0 100644 --- a/Mage.Sets/src/mage/sets/theros/SetessanGriffin.java +++ b/Mage.Sets/src/mage/sets/theros/SetessanGriffin.java @@ -29,7 +29,7 @@ package mage.sets.theros; import java.util.UUID; import mage.MageInt; -import mage.abilities.common.ActivateOncePerTurnActivatedAbility; +import mage.abilities.common.LimitedTimesPerTurnActivatedAbility; import mage.abilities.costs.mana.ManaCostsImpl; import mage.abilities.effects.common.continious.BoostSourceEffect; import mage.abilities.keyword.FlyingAbility; @@ -57,7 +57,7 @@ public class SetessanGriffin extends CardImpl { // Flying this.addAbility(FlyingAbility.getInstance()); // {2}{G}{G}: Setessan Griffin gets +2/+2 until end of turn. Activate this ability only once each turn. - this.addAbility(new ActivateOncePerTurnActivatedAbility(Zone.BATTLEFIELD, new BoostSourceEffect(2,2, Duration.EndOfTurn), new ManaCostsImpl("{2}{G}{G}"))); + this.addAbility(new LimitedTimesPerTurnActivatedAbility(Zone.BATTLEFIELD, new BoostSourceEffect(2,2, Duration.EndOfTurn), new ManaCostsImpl("{2}{G}{G}"))); } public SetessanGriffin(final SetessanGriffin card) { diff --git a/Mage.Sets/src/mage/sets/timespiral/ScrybRanger.java b/Mage.Sets/src/mage/sets/timespiral/ScrybRanger.java index 7828a25dad4..f7076326231 100644 --- a/Mage.Sets/src/mage/sets/timespiral/ScrybRanger.java +++ b/Mage.Sets/src/mage/sets/timespiral/ScrybRanger.java @@ -31,7 +31,7 @@ import java.util.UUID; import mage.MageInt; import mage.ObjectColor; import mage.abilities.Ability; -import mage.abilities.common.ActivateOncePerTurnActivatedAbility; +import mage.abilities.common.LimitedTimesPerTurnActivatedAbility; import mage.abilities.costs.common.ReturnToHandTargetCost; import mage.abilities.effects.common.UntapTargetEffect; import mage.abilities.keyword.FlashAbility; @@ -77,7 +77,7 @@ public class ScrybRanger extends CardImpl { // protection from blue this.addAbility(new ProtectionAbility(filter)); // Return a Forest you control to its owner's hand: Untap target creature. Activate this ability only once each turn. - Ability ability = new ActivateOncePerTurnActivatedAbility(Zone.BATTLEFIELD, new UntapTargetEffect(), new ReturnToHandTargetCost(new TargetControlledPermanent(filterForest))); + Ability ability = new LimitedTimesPerTurnActivatedAbility(Zone.BATTLEFIELD, new UntapTargetEffect(), new ReturnToHandTargetCost(new TargetControlledPermanent(filterForest))); ability.addTarget(new TargetCreaturePermanent(1)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/sets/torment/BaskingRootwalla.java b/Mage.Sets/src/mage/sets/torment/BaskingRootwalla.java index 275b671e25e..3f2fc2ac09c 100644 --- a/Mage.Sets/src/mage/sets/torment/BaskingRootwalla.java +++ b/Mage.Sets/src/mage/sets/torment/BaskingRootwalla.java @@ -30,7 +30,7 @@ package mage.sets.torment; import mage.constants.CardType; import mage.constants.Rarity; import mage.MageInt; -import mage.abilities.common.ActivateOncePerTurnActivatedAbility; +import mage.abilities.common.LimitedTimesPerTurnActivatedAbility; import mage.abilities.costs.mana.ManaCostsImpl; import mage.abilities.effects.common.continious.BoostSourceEffect; import mage.abilities.keyword.MadnessAbility; @@ -56,7 +56,7 @@ public class BaskingRootwalla extends CardImpl { this.toughness = new MageInt(1); // {1}{G}: Basking Rootwalla gets +2/+2 until end of turn. Activate this ability only once each turn. - this.addAbility(new ActivateOncePerTurnActivatedAbility(Zone.BATTLEFIELD, + this.addAbility(new LimitedTimesPerTurnActivatedAbility(Zone.BATTLEFIELD, new BoostSourceEffect(2, 2, Duration.EndOfTurn), new ManaCostsImpl("{1}{G}"))); // Madness {0} diff --git a/Mage.Sets/src/mage/sets/visions/QuirionRanger.java b/Mage.Sets/src/mage/sets/visions/QuirionRanger.java index b240292681a..3ac129c2a08 100644 --- a/Mage.Sets/src/mage/sets/visions/QuirionRanger.java +++ b/Mage.Sets/src/mage/sets/visions/QuirionRanger.java @@ -33,7 +33,7 @@ import mage.constants.Rarity; import mage.constants.Zone; import mage.MageInt; import mage.abilities.Ability; -import mage.abilities.common.ActivateOncePerTurnActivatedAbility; +import mage.abilities.common.LimitedTimesPerTurnActivatedAbility; import mage.abilities.costs.common.ReturnToHandTargetCost; import mage.abilities.effects.common.UntapTargetEffect; import mage.cards.CardImpl; @@ -64,7 +64,7 @@ public class QuirionRanger extends CardImpl { this.toughness = new MageInt(1); // Return a Forest you control to its owner's hand: Untap target creature. Activate this ability only once each turn. - Ability ability = new ActivateOncePerTurnActivatedAbility(Zone.BATTLEFIELD, new UntapTargetEffect(), new ReturnToHandTargetCost(new TargetControlledPermanent(filter))); + Ability ability = new LimitedTimesPerTurnActivatedAbility(Zone.BATTLEFIELD, new UntapTargetEffect(), new ReturnToHandTargetCost(new TargetControlledPermanent(filter))); ability.addTarget(new TargetCreaturePermanent()); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/sets/visions/SpittingDrake.java b/Mage.Sets/src/mage/sets/visions/SpittingDrake.java index 615a169fa3b..94ad03b25dc 100644 --- a/Mage.Sets/src/mage/sets/visions/SpittingDrake.java +++ b/Mage.Sets/src/mage/sets/visions/SpittingDrake.java @@ -29,7 +29,7 @@ package mage.sets.visions; import java.util.UUID; import mage.MageInt; -import mage.abilities.common.ActivateOncePerTurnActivatedAbility; +import mage.abilities.common.LimitedTimesPerTurnActivatedAbility; import mage.abilities.costs.mana.ManaCostsImpl; import mage.abilities.effects.common.continious.BoostSourceEffect; import mage.abilities.keyword.FlyingAbility; @@ -57,7 +57,7 @@ public class SpittingDrake extends CardImpl { // Flying this.addAbility(FlyingAbility.getInstance()); // {R}: Spitting Drake gets +1/+0 until end of turn. Activate this ability only once each turn. - this.addAbility(new ActivateOncePerTurnActivatedAbility(Zone.BATTLEFIELD, new BoostSourceEffect(1, 0, Duration.EndOfTurn), new ManaCostsImpl("{R}"))); + this.addAbility(new LimitedTimesPerTurnActivatedAbility(Zone.BATTLEFIELD, new BoostSourceEffect(1, 0, Duration.EndOfTurn), new ManaCostsImpl("{R}"))); } public SpittingDrake(final SpittingDrake card) { diff --git a/Mage/src/mage/abilities/common/ActivateOncePerTurnActivatedAbility.java b/Mage/src/mage/abilities/common/LimitedTimesPerTurnActivatedAbility.java similarity index 60% rename from Mage/src/mage/abilities/common/ActivateOncePerTurnActivatedAbility.java rename to Mage/src/mage/abilities/common/LimitedTimesPerTurnActivatedAbility.java index f288a18ae10..a88eb500428 100644 --- a/Mage/src/mage/abilities/common/ActivateOncePerTurnActivatedAbility.java +++ b/Mage/src/mage/abilities/common/LimitedTimesPerTurnActivatedAbility.java @@ -40,26 +40,29 @@ import mage.util.CardUtil; * * @author BetaSteward_at_googlemail.com */ -public class ActivateOncePerTurnActivatedAbility extends ActivatedAbilityImpl { +public class LimitedTimesPerTurnActivatedAbility extends ActivatedAbilityImpl { - public ActivateOncePerTurnActivatedAbility(Zone zone, Effect effect, Cost cost) { - super(zone, effect, cost); + private int maxActivationsPerTurn; + + public LimitedTimesPerTurnActivatedAbility(Zone zone, Effect effect, Cost cost) { + this(zone, effect, cost, 1); } - public ActivateOncePerTurnActivatedAbility(ActivateOncePerTurnActivatedAbility ability) { + public LimitedTimesPerTurnActivatedAbility(Zone zone, Effect effect, Cost cost, int maxActivationsPerTurn) { + super(zone, effect, cost); + this.maxActivationsPerTurn = maxActivationsPerTurn; + } + + public LimitedTimesPerTurnActivatedAbility(LimitedTimesPerTurnActivatedAbility ability) { super(ability); + this.maxActivationsPerTurn = ability.maxActivationsPerTurn; } @Override public boolean canActivate(UUID playerId, Game game) { if (super.canActivate(playerId, game)) { - Boolean activated = (Boolean)game.getState().getValue(CardUtil.getCardZoneString("activated", sourceId, game)); - if (activated == null) { - return true; - } - else { - return !activated; - } + Integer activations = (Integer) game.getState().getValue(CardUtil.getCardZoneString("activations", sourceId, game)); + return activations == null || activations < maxActivationsPerTurn; } return false; } @@ -68,7 +71,13 @@ public class ActivateOncePerTurnActivatedAbility extends ActivatedAbilityImpl