Fix bug #3775 and other cards with the same issue

This commit is contained in:
Evan Kranzler 2017-08-03 10:37:32 -04:00
parent f22c8672fb
commit 145415cadf
24 changed files with 58 additions and 49 deletions

View file

@ -44,11 +44,11 @@ import mage.target.common.TargetCreaturePermanent;
public class AcceleratedMutation extends CardImpl {
public AcceleratedMutation(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{3}{G}{G}");
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{3}{G}{G}");
// Target creature gets +X/+X until end of turn, where X is the highest converted mana cost among permanents you control.
DynamicValue amount = new HighestConvertedManaCostValue();
this.getSpellAbility().addEffect(new BoostTargetEffect(amount, amount, Duration.EndOfTurn));
this.getSpellAbility().addEffect(new BoostTargetEffect(amount, amount, Duration.EndOfTurn, true));
this.getSpellAbility().addTarget(new TargetCreaturePermanent());
}

View file

@ -50,13 +50,14 @@ import mage.filter.predicate.permanent.ControllerPredicate;
public class AkroanHoplite extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("attacking creatures you control");
static {
filter.add(new ControllerPredicate(TargetController.YOU));
filter.add(new AttackingPredicate());
}
public AkroanHoplite(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{R}{W}");
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{R}{W}");
this.subtype.add(SubType.HUMAN);
this.subtype.add(SubType.SOLDIER);
@ -64,7 +65,7 @@ public class AkroanHoplite extends CardImpl {
this.toughness = new MageInt(2);
// Whenever Akroan Hoplite attacks, it gets +X/+0 until end of turn, where X is the number of attacking creatures you control.
this.addAbility(new AttacksTriggeredAbility(new BoostSourceEffect(new PermanentsOnBattlefieldCount(filter), new StaticValue(0), Duration.EndOfTurn), false));
this.addAbility(new AttacksTriggeredAbility(new BoostSourceEffect(new PermanentsOnBattlefieldCount(filter), new StaticValue(0), Duration.EndOfTurn, true), false));
}
public AkroanHoplite(final AkroanHoplite card) {

View file

@ -49,7 +49,7 @@ import mage.target.common.TargetCreaturePermanent;
public class AuriokBladewarden extends CardImpl {
public AuriokBladewarden(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}");
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{W}");
this.subtype.add(SubType.HUMAN);
this.subtype.add(SubType.SOLDIER);
@ -57,7 +57,7 @@ public class AuriokBladewarden extends CardImpl {
this.toughness = new MageInt(1);
// {tap}: Target creature gets +X/+X until end of turn, where X is Auriok Bladewarden's power.
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new BoostTargetEffect(new SourcePermanentPowerCount(), new SourcePermanentPowerCount(), Duration.EndOfTurn), new TapSourceCost());
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new BoostTargetEffect(new SourcePermanentPowerCount(), new SourcePermanentPowerCount(), Duration.EndOfTurn, true), new TapSourceCost());
ability.addTarget(new TargetCreaturePermanent());
this.addAbility(ability);
}

View file

@ -69,7 +69,7 @@ public class Berserk extends CardImpl {
Effect effect = new GainAbilityTargetEffect(TrampleAbility.getInstance(), Duration.EndOfTurn);
effect.setText("Target creature gains trample");
this.getSpellAbility().addEffect(effect);
effect = new BoostTargetEffect(new TargetPermanentPowerCount(), new StaticValue(0), Duration.EndOfTurn);
effect = new BoostTargetEffect(new TargetPermanentPowerCount(), new StaticValue(0), Duration.EndOfTurn, true);
effect.setText("and gets +X/+0 until end of turn, where X is its power");
this.getSpellAbility().addEffect(effect);
this.getSpellAbility().addEffect(new BerserkDestroyEffect());

View file

@ -145,7 +145,7 @@ class CustodyBattleUnlessPaysEffect extends OneShotEffect {
@Override
public boolean apply(Game game, Ability source) {
Player controller = game.getPlayer(source.getControllerId());
Permanent sourcePermanent = game.getPermanent(source.getSourceId());
Permanent sourcePermanent = game.getPermanentOrLKIBattlefield(source.getSourceId());
if (controller != null && sourcePermanent != null) {
String message = "sacrifice a land?";
message = CardUtil.replaceSourceName(message, sourcePermanent.getLogName());

View file

@ -62,7 +62,7 @@ public class DownhillCharge extends CardImpl {
// You may sacrifice a Mountain rather than pay Downhill Charge's mana cost.
this.addAbility(new AlternativeCostSourceAbility(new SacrificeTargetCost(new TargetControlledPermanent(filter))));
// Target creature gets +X/+0 until end of turn, where X is the number of Mountains you control.
Effect effect = new BoostTargetEffect(new PermanentsOnBattlefieldCount(filter), new StaticValue(0), Duration.EndOfTurn);
Effect effect = new BoostTargetEffect(new PermanentsOnBattlefieldCount(filter), new StaticValue(0), Duration.EndOfTurn, true);
effect.setText("Target creature gets +X/+0 until end of turn, where X is the number of Mountains you control.");
this.getSpellAbility().addEffect(effect);
this.getSpellAbility().addTarget(new TargetCreaturePermanent());

View file

@ -58,7 +58,7 @@ public class FeedingFrenzy extends CardImpl {
// Target creature gets -X/-X until end of turn, where X is the number of Zombies on the battlefield.
DynamicValue x = new PermanentsOnBattlefieldCount(filter, -1);
Effect effect = new BoostTargetEffect(x, x, Duration.EndOfTurn);
Effect effect = new BoostTargetEffect(x, x, Duration.EndOfTurn, true);
effect.setText("Target creature gets -X/-X until end of turn, where X is the number of Zombies on the battlefield");
this.getSpellAbility().addEffect(effect);
this.getSpellAbility().addTarget(new TargetCreaturePermanent());

View file

@ -61,7 +61,7 @@ public class GeneralTazri extends CardImpl {
}
public GeneralTazri(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{W}");
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{W}");
addSuperType(SuperType.LEGENDARY);
this.subtype.add("Human");
this.subtype.add("Ally");
@ -73,9 +73,11 @@ public class GeneralTazri extends CardImpl {
new TargetCardInLibrary(filter), true, true), true));
// {W}{U}{B}{R}{G}: Ally creatures you control get +X/+X until end of turn, where X is the number of colors among those creatures.
DynamicValue xValue = new GeneralTazriColorCount();
BoostControlledEffect effect = new BoostControlledEffect(xValue, xValue, Duration.EndOfTurn, new FilterCreaturePermanent(SubType.ALLY, "Ally creatures"), false);
effect.setLockedIn(true);
this.addAbility(new SimpleActivatedAbility(
Zone.BATTLEFIELD,
new BoostControlledEffect(xValue, xValue, Duration.EndOfTurn, new FilterCreaturePermanent(SubType.ALLY, "Ally creatures"), false),
effect,
new ManaCostsImpl("{W}{U}{B}{R}{G}")));
}

View file

@ -46,11 +46,11 @@ import mage.target.common.TargetCreaturePermanent;
public class GhoulsFeast extends CardImpl {
public GhoulsFeast(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{B}");
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{1}{B}");
// Target creature gets +X/+0 until end of turn, where X is the number of creature cards in your graveyard.
DynamicValue xValue = new CardsInControllerGraveyardCount(new FilterCreatureCard("creature card"));
this.getSpellAbility().addEffect(new BoostTargetEffect(xValue, new StaticValue(0), Duration.EndOfTurn));
this.getSpellAbility().addEffect(new BoostTargetEffect(xValue, new StaticValue(0), Duration.EndOfTurn, true));
this.getSpellAbility().addTarget(new TargetCreaturePermanent());
}

View file

@ -48,7 +48,7 @@ public class GreatDefender extends CardImpl {
// Target creature gets +0/+X until end of turn, where X is its converted mana cost.
this.getSpellAbility().addTarget(new TargetCreaturePermanent());
this.getSpellAbility().addEffect(new BoostTargetEffect(new StaticValue(0), new TargetConvertedManaCost(), Duration.EndOfTurn));
this.getSpellAbility().addEffect(new BoostTargetEffect(new StaticValue(0), new TargetConvertedManaCost(), Duration.EndOfTurn, true));
}
public GreatDefender(final GreatDefender card) {

View file

@ -49,12 +49,12 @@ import mage.game.Game;
/**
*
* @author jeffwadsworth
*
*/
public class HeartlashCinder extends CardImpl {
public HeartlashCinder(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("Warrior");
@ -63,12 +63,12 @@ public class HeartlashCinder extends CardImpl {
// Haste
this.addAbility(HasteAbility.getInstance());
// Chroma - When Heartlash Cinder enters the battlefield, it gets +X/+0 until end of turn, where X is the number of red mana symbols in the mana costs of permanents you control.
ContinuousEffect effect = new BoostSourceEffect(new ChromaHeartlashCinderCount(), new StaticValue(0), Duration.EndOfTurn);
ContinuousEffect effect = new BoostSourceEffect(new ChromaHeartlashCinderCount(), new StaticValue(0), Duration.EndOfTurn, true);
effect.setText("<i>Chroma</i> - When Heartlash Cinder enters the battlefield, it gets +X/+0 until end of turn, where X is the number of red mana symbols in the mana costs of permanents you control.");
this.addAbility(new EntersBattlefieldTriggeredAbility(effect, false, true));
}
public HeartlashCinder(final HeartlashCinder card) {

View file

@ -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.h;
import java.util.UUID;
@ -53,12 +52,13 @@ import mage.filter.predicate.permanent.ControllerPredicate;
public class HellkiteIgniter extends CardImpl {
private static final FilterArtifactPermanent filter = new FilterArtifactPermanent("artifact you control");
static {
filter.add(new ControllerPredicate(TargetController.YOU));
}
public HellkiteIgniter (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{5}{R}{R}");
public HellkiteIgniter(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{5}{R}{R}");
this.subtype.add("Dragon");
this.power = new MageInt(5);
@ -72,11 +72,12 @@ public class HellkiteIgniter extends CardImpl {
new BoostSourceEffect(
new PermanentsOnBattlefieldCount(filter),
new StaticValue(0),
Duration.EndOfTurn),
Duration.EndOfTurn,
true),
new ManaCostsImpl("{1}{R}")));
}
public HellkiteIgniter (final HellkiteIgniter card) {
public HellkiteIgniter(final HellkiteIgniter card) {
super(card);
}

View file

@ -54,12 +54,12 @@ import mage.target.targetpointer.FixedTarget;
public class JunkyoBell extends CardImpl {
public JunkyoBell(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{4}");
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{4}");
// At the beginning of your upkeep, you may have target creature you control get +X/+X until end of turn,
// where X is the number of creatures you control. If you do, sacrifice that creature at the beginning of the next end step.
PermanentsOnBattlefieldCount amount = new PermanentsOnBattlefieldCount(new FilterControlledCreaturePermanent());
Ability ability = new BeginningOfUpkeepTriggeredAbility(new BoostTargetEffect(amount, amount, Duration.EndOfTurn), TargetController.YOU, true);
Ability ability = new BeginningOfUpkeepTriggeredAbility(new BoostTargetEffect(amount, amount, Duration.EndOfTurn, true), TargetController.YOU, true);
ability.addTarget(new TargetControlledCreaturePermanent());
ability.addEffect(new JunkyoBellSacrificeEffect());
this.addAbility(ability);

View file

@ -71,7 +71,7 @@ public class KagemaroFirstToSuffer extends CardImpl {
Ability ability = new SimpleActivatedAbility(
Zone.BATTLEFIELD,
new BoostAllEffect(xMinusValue, xMinusValue, Duration.EndOfTurn, StaticFilters.FILTER_PERMANENT_CREATURE, false,
"All creatures get -X/-X until end of turn, where X is the number of cards in your hand"),
"All creatures get -X/-X until end of turn, where X is the number of cards in your hand", true),
new ManaCostsImpl("{B}")
);
ability.addCost(new SacrificeSourceCost());

View file

@ -63,7 +63,7 @@ public class LysAlanaScarblade extends CardImpl {
}
public LysAlanaScarblade(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}");
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{B}");
this.subtype.add("Elf");
this.subtype.add("Assassin");
this.power = new MageInt(1);
@ -71,7 +71,7 @@ public class LysAlanaScarblade extends CardImpl {
// {tap}, Discard an Elf card: Target creature gets -X/-X until end of turn, where X is the number of Elves you control.
SignInversionDynamicValue count = new SignInversionDynamicValue(new PermanentsOnBattlefieldCount(filter1));
Effect effect = new BoostTargetEffect(count, count, Duration.EndOfTurn);
Effect effect = new BoostTargetEffect(count, count, Duration.EndOfTurn, true);
effect.setText("target creature gets -X/-X until end of turn, where X is the number of Elves you control");
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, effect, new TapSourceCost());
ability.addCost(new DiscardCardCost(filter2));

View file

@ -62,7 +62,7 @@ public class MagmaSliver extends CardImpl {
this.toughness = new MageInt(3);
// All Slivers have "{tap}: Target Sliver creature gets +X/+0 until end of turn, where X is the number of Slivers on the battlefield."
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new BoostTargetEffect(new PermanentsOnBattlefieldCount(StaticFilters.FILTER_PERMANENT_CREATURE_SLIVERS), new StaticValue(0), Duration.EndOfTurn), new TapSourceCost());
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new BoostTargetEffect(new PermanentsOnBattlefieldCount(StaticFilters.FILTER_PERMANENT_CREATURE_SLIVERS), new StaticValue(0), Duration.EndOfTurn, true), new TapSourceCost());
Target target = new TargetCreaturePermanent(new FilterCreaturePermanent(SubType.SLIVER, "Sliver creature"));
ability.addTarget(target);
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new GainAbilityAllEffect(ability, Duration.WhileOnBattlefield, StaticFilters.FILTER_PERMANENT_CREATURE_SLIVERS)));

View file

@ -55,7 +55,7 @@ import mage.target.common.TargetCreaturePermanent;
public class OboroEnvoy extends CardImpl {
public OboroEnvoy(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{U}");
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{U}");
this.subtype.add("Moonfolk");
this.subtype.add("Wizard");
this.power = new MageInt(1);
@ -64,7 +64,7 @@ public class OboroEnvoy extends CardImpl {
// Flying
this.addAbility(FlyingAbility.getInstance());
// {2}, Return a land you control to its owner's hand: Target creature gets -X/-0 until end of turn, where X is the number of cards in your hand.
Effect effect = new BoostTargetEffect(new SignInversionDynamicValue(new CardsInControllerHandCount()), new StaticValue(-0), Duration.EndOfTurn);
Effect effect = new BoostTargetEffect(new SignInversionDynamicValue(new CardsInControllerHandCount()), new StaticValue(-0), Duration.EndOfTurn, true);
effect.setText("Target creature gets -X/-0 until end of turn, where X is the number of cards in your hand");
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, effect, new GenericManaCost(2));
ability.addCost(new ReturnToHandChosenControlledPermanentCost(new TargetControlledPermanent(new FilterControlledLandPermanent("a land"))));

View file

@ -52,7 +52,7 @@ import mage.filter.common.FilterAttackingCreature;
public class RabbleRouser extends CardImpl {
public RabbleRouser(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{R}");
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{R}");
this.subtype.add("Goblin");
this.subtype.add("Shaman");
@ -66,7 +66,7 @@ public class RabbleRouser extends CardImpl {
DynamicValue amount = new SourcePermanentPowerCount();
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD,
new BoostAllEffect(amount, new StaticValue(0), Duration.EndOfTurn, new FilterAttackingCreature(), false,
"Attacking creatures get +X/+0 until end of turn, where X is {this}'s power"),
"Attacking creatures get +X/+0 until end of turn, where X is {this}'s power", true),
new ManaCostsImpl("{R}"));
ability.addCost(new TapSourceCost());
this.addAbility(ability);

View file

@ -52,19 +52,19 @@ public class Rubblehulk extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledLandPermanent("lands you control");
public Rubblehulk(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("Elemental");
this.power = new MageInt(0);
this.toughness = new MageInt(0);
DynamicValue controlledLands = new PermanentsOnBattlefieldCount(filter);
// Rubblehulk's power and toughness are each equal to the number of lands you control.
this.addAbility(new SimpleStaticAbility(Zone.ALL, new SetPowerToughnessSourceEffect(controlledLands, Duration.EndOfGame)));
// Bloodrush - 1{R}{G}, Discard Rubblehulk: Target attacking creature gets +X/+X until end of turn, where X is the number of lands you control.
this.addAbility(new BloodrushAbility("{1}{R}{G}", new BoostTargetEffect(controlledLands,controlledLands, Duration.EndOfTurn)));
this.addAbility(new BloodrushAbility("{1}{R}{G}", new BoostTargetEffect(controlledLands, controlledLands, Duration.EndOfTurn, true)));
}
public Rubblehulk(final Rubblehulk card) {

View file

@ -49,7 +49,7 @@ import mage.constants.Zone;
public class SokenzanSpellblade extends CardImpl {
public SokenzanSpellblade(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("Ogre");
this.subtype.add("Samurai");
this.subtype.add("Shaman");
@ -60,7 +60,7 @@ public class SokenzanSpellblade extends CardImpl {
// Bushido 1
this.addAbility(new BushidoAbility(1));
// {1}{R}: Sokenzan Spellblade gets +X/+0 until end of turn, where X is the number of cards in your hand.
Effect effect = new BoostSourceEffect(new CardsInControllerHandCount(), new StaticValue(0), Duration.EndOfTurn);
Effect effect = new BoostSourceEffect(new CardsInControllerHandCount(), new StaticValue(0), Duration.EndOfTurn, true);
effect.setText("{this} gets +X/+0 until end of turn, where X is the number of cards in your hand");
this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD,
effect, new ManaCostsImpl("{1}{R}")

View file

@ -55,14 +55,16 @@ import mage.target.targetpointer.FixedTargets;
public class TearsOfRage extends CardImpl {
public TearsOfRage(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{R}{R}");
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{2}{R}{R}");
// Cast Tears of Rage only during the declare attackers step.
this.addAbility(new CastOnlyDuringPhaseStepSourceAbility(PhaseStep.DECLARE_ATTACKERS));
// Attacking creatures you control get +X/+0 until end of turn, where X is the number of attacking creatures. Sacrifice those creatures at the beginning of the next end step.
getSpellAbility().addEffect(new BoostControlledEffect(new AttackingCreatureCount("the number of attacking creatures"), new StaticValue(0),
Duration.EndOfTurn, new FilterAttackingCreature("Attacking creatures"), false));
BoostControlledEffect effect = new BoostControlledEffect(new AttackingCreatureCount("the number of attacking creatures"), new StaticValue(0),
Duration.EndOfTurn, new FilterAttackingCreature("Attacking creatures"), false);
effect.setLockedIn(true);
getSpellAbility().addEffect(effect);
getSpellAbility().addEffect(new TearsOfRageEffect());
}

View file

@ -54,7 +54,7 @@ public class VileDeacon extends CardImpl {
}
public VileDeacon(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}{B}");
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{B}{B}");
this.subtype.add("Human");
this.subtype.add("Cleric");
this.power = new MageInt(2);
@ -62,7 +62,7 @@ public class VileDeacon extends CardImpl {
// Whenever Vile Deacon attacks, it gets +X/+X until end of turn, where X is the number of Clerics on the battlefield.
PermanentsOnBattlefieldCount amount = new PermanentsOnBattlefieldCount(filter);
Effect effect = new BoostSourceEffect(amount, amount, Duration.EndOfTurn);
Effect effect = new BoostSourceEffect(amount, amount, Duration.EndOfTurn, true);
effect.setText("it gets +X/+X until end of turn, where X is the number of Clerics on the battlefield");
this.addAbility(new AttacksTriggeredAbility(effect, false));
}

View file

@ -53,11 +53,13 @@ import mage.target.common.TargetCreaturePermanent;
public class ViridianLorebearers extends CardImpl {
private static final FilterArtifactPermanent filter = new FilterArtifactPermanent("artifacts your opponents control");
static{
static {
filter.add(new ControllerPredicate(TargetController.OPPONENT));
}
public ViridianLorebearers(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("Elf");
this.subtype.add("Shaman");
@ -65,7 +67,7 @@ public class ViridianLorebearers extends CardImpl {
this.toughness = new MageInt(3);
// {3}{G}, {tap}: Target creature gets +X/+X until end of turn, where X is the number of artifacts your opponents control.
Effect effect = new BoostTargetEffect(new PermanentsOnBattlefieldCount(filter), new PermanentsOnBattlefieldCount(filter), Duration.EndOfTurn);
Effect effect = new BoostTargetEffect(new PermanentsOnBattlefieldCount(filter), new PermanentsOnBattlefieldCount(filter), Duration.EndOfTurn, true);
effect.setText("Target creature gets +X/+X until end of turn, where X is the number of artifacts your opponents control");
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, effect, new ManaCostsImpl("{3}{G}"));
ability.addTarget(new TargetCreaturePermanent());

View file

@ -57,8 +57,9 @@ public class WildBeastmaster extends CardImpl {
// Whenever Wild Beastmaster attacks, each other creature you control gets +X/+X until end of turn, where X is Wild Beastmaster's power.
SourcePermanentPowerCount creaturePower = new SourcePermanentPowerCount();
Effect effect = new BoostControlledEffect(creaturePower, creaturePower, Duration.EndOfTurn, StaticFilters.FILTER_PERMANENT_CREATURE, true, true);
BoostControlledEffect effect = new BoostControlledEffect(creaturePower, creaturePower, Duration.EndOfTurn, StaticFilters.FILTER_PERMANENT_CREATURE, true, true);
effect.setText(EFFECT_TEXT);
effect.setLockedIn(true);
this.addAbility(new AttacksTriggeredAbility(effect, false));
}