From e1a05a7e4b9a8f8fb906b60c37239a508e64c314 Mon Sep 17 00:00:00 2001 From: North Date: Fri, 1 Jul 2011 00:05:28 +0300 Subject: [PATCH] BoostEnchantedEffect enhanced with DynamicValue --- .../src/mage/sets/magic2011/EarthServant.java | 79 ++++--------------- .../sets/newphyrexia/DefensiveStance.java | 4 +- .../continious/BoostEnchantedEffect.java | 47 ++++++++--- .../abilities/keyword/EnchantAbility.java | 3 - 4 files changed, 53 insertions(+), 80 deletions(-) diff --git a/Mage.Sets/src/mage/sets/magic2011/EarthServant.java b/Mage.Sets/src/mage/sets/magic2011/EarthServant.java index f5f03c1d193..94323a63b57 100644 --- a/Mage.Sets/src/mage/sets/magic2011/EarthServant.java +++ b/Mage.Sets/src/mage/sets/magic2011/EarthServant.java @@ -31,35 +31,41 @@ package mage.sets.magic2011; import java.util.UUID; import mage.Constants.CardType; import mage.Constants.Duration; -import mage.Constants.Layer; -import mage.Constants.Outcome; import mage.Constants.Rarity; -import mage.Constants.SubLayer; +import mage.Constants.TargetController; import mage.Constants.Zone; import mage.MageInt; -import mage.abilities.Ability; import mage.abilities.common.SimpleStaticAbility; -import mage.abilities.effects.ContinuousEffectImpl; +import mage.abilities.dynamicvalue.common.PermanentsOnBattlefieldCount; +import mage.abilities.effects.common.continious.BoostSourceEffect; import mage.cards.CardImpl; import mage.filter.common.FilterLandPermanent; -import mage.game.Game; -import mage.game.permanent.Permanent; /** * - * @author BetaSteward_at_googlemail.com + * @author BetaSteward_at_googlemail.com, North */ public class EarthServant extends CardImpl { + private static final FilterLandPermanent filter = new FilterLandPermanent("Mountain you control"); + + static { + filter.getSubtype().add("Mountain"); + filter.setTargetController(TargetController.YOU); + } + public EarthServant(UUID ownerId) { super(ownerId, 134, "Earth Servant", Rarity.COMMON, new CardType[]{CardType.CREATURE}, "{5}{R}"); this.expansionSetCode = "M11"; this.subtype.add("Elemental"); + this.color.setRed(true); this.power = new MageInt(4); this.toughness = new MageInt(4); - this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new EarthServantEffect())); + this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new BoostSourceEffect(new PermanentsOnBattlefieldCount(filter, 0), + new PermanentsOnBattlefieldCount(filter, 1), + Duration.WhileOnBattlefield))); } public EarthServant(final EarthServant card) { @@ -72,58 +78,3 @@ public class EarthServant extends CardImpl { } } - -class EarthServantEffect extends ContinuousEffectImpl { - - private static final FilterLandPermanent filter = new FilterLandPermanent("Mountain"); - - static { - filter.getSubtype().add("Mountain"); - } - - public EarthServantEffect() { - super(Duration.WhileOnBattlefield, Outcome.BoostCreature); - } - - public EarthServantEffect(final EarthServantEffect effect) { - super(effect); - } - - @Override - public EarthServantEffect copy() { - return new EarthServantEffect(this); - } - - @Override - public boolean apply(Layer layer, SubLayer sublayer, Ability source, Game game) { - Permanent creature = game.getPermanent(source.getSourceId()); - if (creature != null) { - switch (layer) { - case PTChangingEffects_7: - if (sublayer == SubLayer.ModifyPT_7c) { - int amount = game.getBattlefield().countAll(filter, source.getControllerId()); - creature.addToughness(amount); - } - break; - } - return true; - } - return false; - } - - @Override - public boolean apply(Game game, Ability source) { - return false; - } - - @Override - public boolean hasLayer(Layer layer) { - return layer == layer.PTChangingEffects_7; - } - - @Override - public String getText(Ability source) { - return "Earth Servant gets +0/+1 for each Mountain you control"; - } - -} \ No newline at end of file diff --git a/Mage.Sets/src/mage/sets/newphyrexia/DefensiveStance.java b/Mage.Sets/src/mage/sets/newphyrexia/DefensiveStance.java index 7cd6ecd4bed..ae9da2bff65 100644 --- a/Mage.Sets/src/mage/sets/newphyrexia/DefensiveStance.java +++ b/Mage.Sets/src/mage/sets/newphyrexia/DefensiveStance.java @@ -33,7 +33,6 @@ import mage.Constants.Duration; import mage.Constants.Outcome; import mage.Constants.Rarity; import mage.Constants.Zone; -import mage.abilities.Ability; import mage.abilities.common.SimpleStaticAbility; import mage.abilities.effects.common.AttachEffect; import mage.abilities.effects.common.continious.BoostEnchantedEffect; @@ -58,8 +57,7 @@ public class DefensiveStance extends CardImpl { TargetPermanent auraTarget = new TargetCreaturePermanent(); this.getSpellAbility().addTarget(auraTarget); this.getSpellAbility().addEffect(new AttachEffect(Outcome.BoostCreature)); - Ability ability = new EnchantAbility(auraTarget.getTargetName()); - this.addAbility(ability); + this.addAbility(new EnchantAbility(auraTarget.getTargetName())); this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new BoostEnchantedEffect(-1, 1, Duration.WhileOnBattlefield))); } diff --git a/Mage/src/mage/abilities/effects/common/continious/BoostEnchantedEffect.java b/Mage/src/mage/abilities/effects/common/continious/BoostEnchantedEffect.java index 19507dfe0f5..fb76b2c3300 100644 --- a/Mage/src/mage/abilities/effects/common/continious/BoostEnchantedEffect.java +++ b/Mage/src/mage/abilities/effects/common/continious/BoostEnchantedEffect.java @@ -33,20 +33,30 @@ import mage.Constants.Layer; import mage.Constants.Outcome; import mage.Constants.SubLayer; import mage.abilities.Ability; +import mage.abilities.dynamicvalue.DynamicValue; +import mage.abilities.dynamicvalue.common.StaticValue; import mage.abilities.effects.ContinuousEffectImpl; import mage.game.Game; import mage.game.permanent.Permanent; /** * - * @author BetaSteward_at_googlemail.com + * @author BetaSteward_at_googlemail.com, North */ public class BoostEnchantedEffect extends ContinuousEffectImpl { - private int power; - private int toughness; + private DynamicValue power; + private DynamicValue toughness; - public BoostEnchantedEffect(int power, int toughness, Duration duration) { + public BoostEnchantedEffect(int power, int toughness) { + this(power, toughness, Duration.WhileOnBattlefield); + } + + public BoostEnchantedEffect(int power, int toughness, Duration duration) { + this(new StaticValue(power), new StaticValue(toughness), duration); + } + + public BoostEnchantedEffect(DynamicValue power, DynamicValue toughness, Duration duration) { super(duration, Layer.PTChangingEffects_7, SubLayer.ModifyPT_7c, Outcome.BoostCreature); this.power = power; this.toughness = toughness; @@ -54,8 +64,8 @@ public class BoostEnchantedEffect extends ContinuousEffectImpl 0) { + sb.append(" for each "); + } + sb.append(message); return sb.toString(); } diff --git a/Mage/src/mage/abilities/keyword/EnchantAbility.java b/Mage/src/mage/abilities/keyword/EnchantAbility.java index 800f3511613..d04fa935a07 100644 --- a/Mage/src/mage/abilities/keyword/EnchantAbility.java +++ b/Mage/src/mage/abilities/keyword/EnchantAbility.java @@ -28,11 +28,8 @@ package mage.abilities.keyword; -import mage.Constants.Outcome; import mage.Constants.Zone; import mage.abilities.StaticAbility; -import mage.abilities.effects.common.AttachEffect; -import mage.target.TargetPermanent; /** *