* Loreseeker's Stone - fixed that copies of the card don't increase the cost
-
package mage.cards.l;
import mage.abilities.Ability;
@@ -26,11 +25,8 @@ public final class LoreseekersStone extends CardImpl {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{6}");
// {3}, {T}: Draw three cards. This ability costs {1} more to activate for each card in your hand.
- // TODO: Make ability properly copiable
- Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DrawCardSourceControllerEffect(3).setText("Draw three cards. This ability costs {1} more to activate for each card in your hand"), new GenericManaCost(3));
- ability.addCost(new TapSourceCost());
- this.addAbility(ability);
- this.addAbility(new SimpleStaticAbility(Zone.ALL, new LoreseekersStoneCostIncreasingEffect(ability.getOriginalId())));
+ this.addAbility(new LoreseekersStoneActivatedAbility());
+ this.addAbility(new SimpleStaticAbility(Zone.ALL, new LoreseekersStoneCostIncreasingEffect()));
}
private LoreseekersStone(final LoreseekersStone card) {
@@ -43,18 +39,34 @@ public final class LoreseekersStone extends CardImpl {
}
}
-class LoreseekersStoneCostIncreasingEffect extends CostModificationEffectImpl {
+class LoreseekersStoneActivatedAbility extends SimpleActivatedAbility {
+
+ public LoreseekersStoneActivatedAbility() {
+ super(Zone.BATTLEFIELD,
+ new DrawCardSourceControllerEffect(3)
+ .setText("Draw three cards. This ability costs {1} more to activate for each card in your hand"),
+ new GenericManaCost(3));
+ this.addCost(new TapSourceCost());
+ }
+
+ private LoreseekersStoneActivatedAbility(final LoreseekersStoneActivatedAbility ability) {
+ super(ability);
+ }
- private final UUID originalId;
+ @Override
+ public LoreseekersStoneActivatedAbility copy() {
+ return new LoreseekersStoneActivatedAbility(this);
+ }
+}
- LoreseekersStoneCostIncreasingEffect(UUID originalId) {
+class LoreseekersStoneCostIncreasingEffect extends CostModificationEffectImpl {
+
+ LoreseekersStoneCostIncreasingEffect() {
super(Duration.EndOfGame, Outcome.Benefit, CostModificationType.INCREASE_COST);
- this.originalId = originalId;
}
private LoreseekersStoneCostIncreasingEffect(final LoreseekersStoneCostIncreasingEffect effect) {
super(effect);
- this.originalId = effect.originalId;
}
@Override
@@ -68,12 +80,11 @@ class LoreseekersStoneCostIncreasingEffect extends CostModificationEffectImpl {
@Override
public boolean applies(Ability abilityToModify, Ability source, Game game) {
- return abilityToModify.getOriginalId().equals(originalId);
+ return (abilityToModify instanceof LoreseekersStoneActivatedAbility) && abilityToModify.getSourceId().equals(source.getSourceId());
}
@Override
public LoreseekersStoneCostIncreasingEffect copy() {
return new LoreseekersStoneCostIncreasingEffect(this);
}
-
}
