1
0
Fork 0
mirror of https://github.com/correl/mage.git synced 2025-04-08 17:00:07 -09:00

[VOW] Implemented Cartographer's Survey

This commit is contained in:
Daniel Bomar 2021-11-04 15:20:01 -05:00
parent ca5318e814
commit 27957012c9
No known key found for this signature in database
GPG key ID: C86C8658F4023918
2 changed files with 74 additions and 0 deletions

View file

@ -0,0 +1,73 @@
package mage.cards.c;
import java.util.UUID;
import mage.abilities.Ability;
import mage.abilities.dynamicvalue.common.StaticValue;
import mage.abilities.effects.common.LookLibraryControllerEffect;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.cards.Cards;
import mage.cards.CardsImpl;
import mage.constants.CardType;
import mage.constants.Outcome;
import mage.constants.Zone;
import mage.filter.StaticFilters;
import mage.game.Game;
import mage.players.Player;
import mage.target.TargetCard;
/**
*
* @author weirddan455
*/
public final class CartographersSurvey extends CardImpl {
public CartographersSurvey(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{3}{G}");
// Look at the top seven cards of your library. Put up to two land cards from among them onto the battlefield tapped. Put the rest on the bottom of your library in a random order.
this.getSpellAbility().addEffect(new CartographersSurveyEffect());
}
private CartographersSurvey(final CartographersSurvey card) {
super(card);
}
@Override
public CartographersSurvey copy() {
return new CartographersSurvey(this);
}
}
class CartographersSurveyEffect extends LookLibraryControllerEffect {
public CartographersSurveyEffect() {
super(Outcome.PutLandInPlay, StaticValue.get(7), false, Zone.LIBRARY, false);
this.setBackInRandomOrder(true);
staticText = "Look at the top seven cards of your library. Put up to two land cards from among them onto the battlefield tapped. Put the rest on the bottom of your library in a random order";
}
private CartographersSurveyEffect(final CartographersSurveyEffect effect) {
super(effect);
}
@Override
public CartographersSurveyEffect copy() {
return new CartographersSurveyEffect(this);
}
@Override
protected void actionWithSelectedCards(Cards cards, Game game, Ability source) {
Player controller = game.getPlayer(source.getControllerId());
if (controller != null) {
TargetCard target = new TargetCard(0, 2, Zone.LIBRARY, StaticFilters.FILTER_CARD_LANDS);
controller.choose(outcome, cards, target, game);
Cards pickedCards = new CardsImpl(target.getTargets());
if (!pickedCards.isEmpty()) {
cards.removeAll(pickedCards);
controller.moveCards(pickedCards.getCards(game), Zone.BATTLEFIELD, source, game, true, false, false, null);
}
}
}
}

View file

@ -48,6 +48,7 @@ public final class InnistradCrimsonVow extends ExpansionSet {
cards.add(new SetCardInfo("Blossom-Clad Werewolf", 226, Rarity.COMMON, mage.cards.b.BlossomCladWerewolf.class));
cards.add(new SetCardInfo("Bramble Wurm", 189, Rarity.UNCOMMON, mage.cards.b.BrambleWurm.class));
cards.add(new SetCardInfo("By Invitation Only", 5, Rarity.RARE, mage.cards.b.ByInvitationOnly.class));
cards.add(new SetCardInfo("Cartographer's Survey", 190, Rarity.UNCOMMON, mage.cards.c.CartographersSurvey.class));
cards.add(new SetCardInfo("Cemetery Protector", 6, Rarity.MYTHIC, mage.cards.c.CemeteryProtector.class));
cards.add(new SetCardInfo("Cemetery Prowler", 191, Rarity.MYTHIC, mage.cards.c.CemeteryProwler.class));
cards.add(new SetCardInfo("Change of Fortune", 150, Rarity.RARE, mage.cards.c.ChangeOfFortune.class));