diff --git a/Mage.Sets/src/mage/cards/r/RaidingSchemes.java b/Mage.Sets/src/mage/cards/r/RaidingSchemes.java new file mode 100644 index 00000000000..ed0b0b0bf1d --- /dev/null +++ b/Mage.Sets/src/mage/cards/r/RaidingSchemes.java @@ -0,0 +1,79 @@ +package mage.cards.r; + +import java.util.UUID; + +import mage.abilities.Ability; +import mage.abilities.common.SimpleStaticAbility; +import mage.abilities.effects.ContinuousEffectImpl; +import mage.abilities.keyword.ConspireAbility; +import mage.cards.CardImpl; +import mage.cards.CardSetInfo; +import mage.constants.CardType; +import mage.constants.Duration; +import mage.constants.Layer; +import mage.constants.Outcome; +import mage.constants.SubLayer; +import mage.filter.StaticFilters; +import mage.game.Game; +import mage.game.stack.Spell; +import mage.game.stack.StackObject; + +/** + * + * @author muz + */ +public final class RaidingSchemes extends CardImpl { + + public RaidingSchemes(UUID ownerId, CardSetInfo setInfo) { + super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{3}{R}{G}"); + + // Each noncreature spell you cast has conspire. + this.addAbility(new SimpleStaticAbility(new GainConspireEffect())); + } + + private RaidingSchemes(final RaidingSchemes card) { + super(card); + } + + @Override + public RaidingSchemes copy() { + return new RaidingSchemes(this); + } +} + +class GainConspireEffect extends ContinuousEffectImpl { + + private final ConspireAbility conspireAbility; + + public GainConspireEffect() { + super(Duration.WhileOnBattlefield, Layer.AbilityAddingRemovingEffects_6, SubLayer.NA, Outcome.AddAbility); + staticText = "Each noncreature spell you cast has conspire. (As you cast the spell, you may tap two untapped creatures you control that share a color with it. When you do, copy it and you may choose new targets for the copy.)"; + this.conspireAbility = new ConspireAbility(ConspireAbility.ConspireTargets.MORE); + } + + private GainConspireEffect(final GainConspireEffect effect) { + super(effect); + this.conspireAbility = effect.conspireAbility; + } + + @Override + public GainConspireEffect copy() { + return new GainConspireEffect(this); + } + + @Override + public boolean apply(Game game, Ability source) { + for (StackObject stackObject : game.getStack()) { + // only spells cast, so no copies of spells + if (!(stackObject instanceof Spell) || stackObject.isCopy() + || !stackObject.isControlledBy(source.getControllerId())) { + continue; + } + Spell spell = (Spell) stackObject; + if (StaticFilters.FILTER_SPELL_NON_CREATURE.match(stackObject, game)) { + game.getState().addOtherAbility(spell.getCard(), conspireAbility.setAddedById(source.getSourceId())); + } + } + return true; + } +} diff --git a/Mage.Sets/src/mage/sets/LorwynEclipsed.java b/Mage.Sets/src/mage/sets/LorwynEclipsed.java index 38af3acd03e..938a753e8f6 100644 --- a/Mage.Sets/src/mage/sets/LorwynEclipsed.java +++ b/Mage.Sets/src/mage/sets/LorwynEclipsed.java @@ -245,6 +245,8 @@ public final class LorwynEclipsed extends ExpansionSet { cards.add(new SetCardInfo("Prismatic Undercurrents", 189, Rarity.UNCOMMON, mage.cards.p.PrismaticUndercurrents.class)); cards.add(new SetCardInfo("Protective Response", 29, Rarity.UNCOMMON, mage.cards.p.ProtectiveResponse.class)); cards.add(new SetCardInfo("Puca's Eye", 259, Rarity.UNCOMMON, mage.cards.p.PucasEye.class)); + cards.add(new SetCardInfo("Raiding Schemes", 239, Rarity.RARE, mage.cards.r.RaidingSchemes.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Raiding Schemes", 377, Rarity.RARE, mage.cards.r.RaidingSchemes.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Pyrrhic Strike", 30, Rarity.UNCOMMON, mage.cards.p.PyrrhicStrike.class)); cards.add(new SetCardInfo("Reaping Willow", 240, Rarity.UNCOMMON, mage.cards.r.ReapingWillow.class)); cards.add(new SetCardInfo("Pummeler for Hire", 190, Rarity.UNCOMMON, mage.cards.p.PummelerForHire.class));