[MKM] Implement Magnetic Snuffler (#11789)

This commit is contained in:
Matthew Wilson 2024-02-15 05:16:59 +02:00 committed by GitHub
parent 190edf0c3a
commit 651744f378
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 90 additions and 0 deletions

View file

@ -0,0 +1,89 @@
package mage.cards.m;
import java.util.UUID;
import mage.MageInt;
import mage.abilities.Ability;
import mage.abilities.common.EntersBattlefieldTriggeredAbility;
import mage.abilities.common.SacrificePermanentTriggeredAbility;
import mage.abilities.effects.common.ReturnFromGraveyardToBattlefieldTargetEffect;
import mage.abilities.effects.common.counter.AddCountersSourceEffect;
import mage.constants.SubType;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.counters.CounterType;
import mage.filter.FilterCard;
import mage.filter.StaticFilters;
import mage.game.Game;
import mage.game.permanent.Permanent;
import mage.target.common.TargetCardInYourGraveyard;
/**
*
* @author DominionSpy
*/
public final class MagneticSnuffler extends CardImpl {
private static final FilterCard filter = new FilterCard("Equipment card from your graveyard");
static {
filter.add(SubType.EQUIPMENT.getPredicate());
}
public MagneticSnuffler(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT, CardType.CREATURE}, "{5}");
this.subtype.add(SubType.CONSTRUCT);
this.power = new MageInt(4);
this.toughness = new MageInt(4);
// When Magnetic Snuffler enters the battlefield, return target Equipment card from your graveyard to the battlefield attached to Magnetic Snuffler.
Ability ability = new EntersBattlefieldTriggeredAbility(new MagneticSnufflerEffect());
ability.addTarget(new TargetCardInYourGraveyard(filter));
this.addAbility(ability);
// Whenever you sacrifice an artifact, put a +1/+1 counter on Magnetic Snuffler.
this.addAbility(new SacrificePermanentTriggeredAbility(
new AddCountersSourceEffect(CounterType.P1P1.createInstance()),
StaticFilters.FILTER_PERMANENT_ARTIFACT));
}
private MagneticSnuffler(final MagneticSnuffler card) {
super(card);
}
@Override
public MagneticSnuffler copy() {
return new MagneticSnuffler(this);
}
}
class MagneticSnufflerEffect extends ReturnFromGraveyardToBattlefieldTargetEffect {
MagneticSnufflerEffect() {
super();
staticText = "return target Equipment card from your graveyard to the battlefield attached to {this}";
}
private MagneticSnufflerEffect(final MagneticSnufflerEffect effect) {
super(effect);
}
@Override
public MagneticSnufflerEffect copy() {
return new MagneticSnufflerEffect(this);
}
@Override
public boolean apply(Game game, Ability source) {
super.apply(game, source);
Permanent equipment = game.getPermanent(source.getFirstTarget());
Permanent creature = game.getPermanent(source.getSourceId());
if (equipment == null || creature == null) {
return false;
}
return creature.addAttachment(equipment.getId(), source, game);
}
}

View file

@ -151,6 +151,7 @@ public final class MurdersAtKarlovManor extends ExpansionSet {
cards.add(new SetCardInfo("Loxodon Eavesdropper", 168, Rarity.COMMON, mage.cards.l.LoxodonEavesdropper.class));
cards.add(new SetCardInfo("Lush Portico", 263, Rarity.RARE, mage.cards.l.LushPortico.class));
cards.add(new SetCardInfo("Macabre Reconstruction", 93, Rarity.COMMON, mage.cards.m.MacabreReconstruction.class));
cards.add(new SetCardInfo("Magnetic Snuffler", 254, Rarity.UNCOMMON, mage.cards.m.MagneticSnuffler.class));
cards.add(new SetCardInfo("Magnifying Glass", 255, Rarity.COMMON, mage.cards.m.MagnifyingGlass.class));
cards.add(new SetCardInfo("Make Your Move", 22, Rarity.COMMON, mage.cards.m.MakeYourMove.class));
cards.add(new SetCardInfo("Makeshift Binding", 23, Rarity.COMMON, mage.cards.m.MakeshiftBinding.class));