From 9d4714507af67ba696ad5aeb36f7183d55418cf2 Mon Sep 17 00:00:00 2001 From: Loki Date: Mon, 30 Jul 2012 22:34:47 +1200 Subject: [PATCH] rewrite fix for Ring of Evos Isle more generic --- .../mage/sets/magic2013/RingOfEvosIsle.java | 34 +------------- .../continious/GainAbilityAttachedEffect.java | 47 ++++++++++++++----- 2 files changed, 36 insertions(+), 45 deletions(-) diff --git a/Mage.Sets/src/mage/sets/magic2013/RingOfEvosIsle.java b/Mage.Sets/src/mage/sets/magic2013/RingOfEvosIsle.java index dcb60c67f08..5fa17744dc4 100644 --- a/Mage.Sets/src/mage/sets/magic2013/RingOfEvosIsle.java +++ b/Mage.Sets/src/mage/sets/magic2013/RingOfEvosIsle.java @@ -42,6 +42,7 @@ import mage.abilities.costs.mana.GenericManaCost; import mage.abilities.decorator.ConditionalTriggeredAbility; import mage.abilities.effects.Effect; import mage.abilities.effects.OneShotEffect; +import mage.abilities.effects.common.continious.GainAbilityAttachedEffect; import mage.abilities.effects.common.continious.GainAbilitySourceEffect; import mage.abilities.effects.common.counter.AddPlusOneCountersAttachedEffect; import mage.abilities.keyword.EquipAbility; @@ -70,7 +71,7 @@ public class RingOfEvosIsle extends CardImpl { this.subtype.add("Equipment"); // {2}: Equipped creature gains hexproof until end of turn. - this.addAbility(new SimpleActivatedAbility(Constants.Zone.BATTLEFIELD, new RingOfEvosIsleEffect(), new GenericManaCost(2))); + this.addAbility(new SimpleActivatedAbility(Constants.Zone.BATTLEFIELD, new GainAbilityAttachedEffect(HexproofAbility.getInstance(), Constants.AttachmentType.EQUIPMENT, Constants.Duration.EndOfTurn), new GenericManaCost(2))); // At the beginning of your upkeep, put a +1/+1 counter on equipped creature if it's blue. TriggeredAbility triggeredAbility = new BeginningOfUpkeepTriggeredAbility(Constants.Zone.BATTLEFIELD, new AddPlusOneCountersAttachedEffect(1), Constants.TargetController.YOU, false); @@ -90,34 +91,3 @@ public class RingOfEvosIsle extends CardImpl { return new RingOfEvosIsle(this); } } - -class RingOfEvosIsleEffect extends OneShotEffect { - - RingOfEvosIsleEffect() { - super(Constants.Outcome.BoostCreature); - staticText = "Equipped creature gains hexproof until end of turn"; - } - - RingOfEvosIsleEffect(final RingOfEvosIsleEffect effect) { - super(effect); - } - - @Override - public boolean apply(Game game, Ability source) { - Permanent equipment = game.getPermanent(source.getSourceId()); - if (equipment != null) { - Permanent equipped = game.getPermanent(equipment.getAttachedTo()); - if (equipped != null) { - Effect effect = new GainAbilitySourceEffect(HexproofAbility.getInstance(), Constants.Duration.EndOfTurn); - equipped.addAbility(new SimpleStaticAbility(Constants.Zone.BATTLEFIELD, effect), game); - return true; - } - } - return false; - } - - @Override - public RingOfEvosIsleEffect copy() { - return new RingOfEvosIsleEffect(this); - } -} diff --git a/Mage/src/mage/abilities/effects/common/continious/GainAbilityAttachedEffect.java b/Mage/src/mage/abilities/effects/common/continious/GainAbilityAttachedEffect.java index 66b89bdc298..43f800da30b 100644 --- a/Mage/src/mage/abilities/effects/common/continious/GainAbilityAttachedEffect.java +++ b/Mage/src/mage/abilities/effects/common/continious/GainAbilityAttachedEffect.java @@ -37,21 +37,25 @@ import mage.abilities.Ability; import mage.abilities.effects.ContinuousEffectImpl; import mage.game.Game; import mage.game.permanent.Permanent; +import mage.target.targetpointer.FixedTarget; /** - * * @author BetaSteward_at_googlemail.com */ public class GainAbilityAttachedEffect extends ContinuousEffectImpl { protected Ability ability; protected AttachmentType attachmentType; - + protected boolean fixedTarget = false; + public GainAbilityAttachedEffect(Ability ability, AttachmentType attachmentType, Duration duration) { - super(Duration.WhileOnBattlefield, Layer.AbilityAddingRemovingEffects_6, SubLayer.NA, Outcome.AddAbility); + super(duration, Layer.AbilityAddingRemovingEffects_6, SubLayer.NA, Outcome.AddAbility); this.ability = ability; this.attachmentType = attachmentType; this.duration = duration; + if (duration == Duration.EndOfTurn) { + fixedTarget = true; + } setText(); } @@ -66,6 +70,7 @@ public class GainAbilityAttachedEffect extends ContinuousEffectImpl