Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
85 changes: 85 additions & 0 deletions Mage.Sets/src/mage/cards/s/SanarUnfinishedGenius.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,85 @@
package mage.cards.s;

import java.util.Objects;
import java.util.UUID;
import mage.MageInt;
import mage.abilities.Ability;
import mage.abilities.common.ActivateIfConditionActivatedAbility;
import mage.abilities.common.EntersPreparedAbility;
import mage.abilities.condition.Condition;
import mage.abilities.costs.common.TapSourceCost;
import mage.abilities.effects.common.CreateTokenEffect;
import mage.abilities.effects.common.search.SearchLibraryPutInHandEffect;
import mage.constants.SubType;
import mage.constants.SuperType;
import mage.filter.StaticFilters;
import mage.game.Game;
import mage.game.permanent.token.TreasureToken;
import mage.target.common.TargetCardInLibrary;
import mage.watchers.common.SpellsCastWatcher;
import mage.cards.CardSetInfo;
import mage.cards.PrepareCard;
import mage.constants.CardType;

/**
*
* @author muz
*/
public final class SanarUnfinishedGenius extends PrepareCard {

public SanarUnfinishedGenius(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{U}{R}", "Wild Idea", new CardType[]{CardType.SORCERY}, "{3}{U}{R}");

this.supertype.add(SuperType.LEGENDARY);
this.subtype.add(SubType.GOBLIN);
this.subtype.add(SubType.SORCERER);
this.power = new MageInt(0);
this.toughness = new MageInt(4);

// Sanar enters prepared.
this.addAbility(new EntersPreparedAbility());

// {T}: Create a Treasure token. Activate only if you've cast an instant or sorcery spell this turn.
Ability ability = new ActivateIfConditionActivatedAbility(
new CreateTokenEffect(new TreasureToken(), 1),
new TapSourceCost(),
SanarUnfinishedGeniusCondition.instance
);
this.addAbility(ability);

// Wild Idea
// Sorcery {3}{U}{R}
// Search your library for an instant or sorcery card, reveal it, put it into your hand, then shuffle.
this.getSpellCard().getSpellAbility().addEffect(new SearchLibraryPutInHandEffect(
new TargetCardInLibrary(StaticFilters.FILTER_CARD_INSTANT_OR_SORCERY), true
));
}

private SanarUnfinishedGenius(final SanarUnfinishedGenius card) {
super(card);
}

@Override
public SanarUnfinishedGenius copy() {
return new SanarUnfinishedGenius(this);
}
}

enum SanarUnfinishedGeniusCondition implements Condition {
instance;

@Override
public boolean apply(Game game, Ability source) {
SpellsCastWatcher watcher = game.getState().getWatcher(SpellsCastWatcher.class);
return watcher != null
&& watcher.getSpellsCastThisTurn(source.getControllerId())
.stream()
.filter(Objects::nonNull)
.anyMatch(spell -> spell.isInstantOrSorcery(game));
}

@Override
public String toString() {
return "you've cast an instant or sorcery spell this turn";
}
}
1 change: 1 addition & 0 deletions Mage.Sets/src/mage/sets/SecretsOfStrixhaven.java
Original file line number Diff line number Diff line change
Expand Up @@ -261,6 +261,7 @@ private SecretsOfStrixhaven() {
cards.add(new SetCardInfo("Root Manipulation", 222, Rarity.UNCOMMON, mage.cards.r.RootManipulation.class));
cards.add(new SetCardInfo("Rubble Rouser", 128, Rarity.COMMON, mage.cards.r.RubbleRouser.class));
cards.add(new SetCardInfo("Run Behind", 66, Rarity.COMMON, mage.cards.r.RunBehind.class));
cards.add(new SetCardInfo("Sanar, Unfinished Genius", 223, Rarity.UNCOMMON, mage.cards.s.SanarUnfinishedGenius.class));
cards.add(new SetCardInfo("Scolding Administrator", 224, Rarity.UNCOMMON, mage.cards.s.ScoldingAdministrator.class));
cards.add(new SetCardInfo("Seize the Spoils", 129, Rarity.COMMON, mage.cards.s.SeizeTheSpoils.class));
cards.add(new SetCardInfo("Send in the Pest", 100, Rarity.COMMON, mage.cards.s.SendInThePest.class));
Expand Down
Loading