[CLB] Implemented Venture Forth

This commit is contained in:
Evan Kranzler 2022-06-03 21:08:39 -04:00
parent 697214118e
commit 9408830bea
2 changed files with 87 additions and 0 deletions

View file

@ -0,0 +1,86 @@
package mage.cards.v;
import mage.abilities.Ability;
import mage.abilities.costs.mana.ManaCostsImpl;
import mage.abilities.dynamicvalue.common.StaticValue;
import mage.abilities.effects.OneShotEffect;
import mage.abilities.effects.common.ExileSpellEffect;
import mage.abilities.effects.common.counter.AddCountersSourceEffect;
import mage.abilities.keyword.SuspendAbility;
import mage.cards.*;
import mage.constants.CardType;
import mage.constants.Outcome;
import mage.constants.Zone;
import mage.counters.CounterType;
import mage.game.Game;
import mage.players.Player;
import mage.target.TargetPermanent;
import java.util.UUID;
/**
* @author TheElk801
*/
public final class VentureForth extends CardImpl {
public VentureForth(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{3}{G}");
// Exile cards from the top of your library until you exile a land card. Put that onto the battlefield and the rest on the bottom of your library in a random order. Exile Venture Forth with three time counters on it.
this.getSpellAbility().addEffect(new VentureForthEffect());
this.getSpellAbility().addEffect(new ExileSpellEffect());
this.getSpellAbility().addEffect(new AddCountersSourceEffect(
CounterType.TIME.createInstance(), StaticValue.get(3), false, true
).setText("with three time counters on it"));
this.getSpellAbility().addTarget(new TargetPermanent());
// Suspend 3{1}{G}
this.addAbility(new SuspendAbility(3, new ManaCostsImpl<>("{1}{G}"), this));
}
private VentureForth(final VentureForth card) {
super(card);
}
@Override
public VentureForth copy() {
return new VentureForth(this);
}
}
class VentureForthEffect extends OneShotEffect {
VentureForthEffect() {
super(Outcome.Benefit);
staticText = "exile cards from the top of your library until you exile a land card. Put that card " +
"onto the battlefield and the rest on the bottom of your library in a random order";
}
private VentureForthEffect(final VentureForthEffect effect) {
super(effect);
}
@Override
public VentureForthEffect copy() {
return new VentureForthEffect(this);
}
@Override
public boolean apply(Game game, Ability source) {
Player player = game.getPlayer(source.getControllerId());
if (player == null) {
return false;
}
Cards cards = new CardsImpl();
for (Card card : player.getLibrary().getCards(game)) {
player.moveCards(card, Zone.EXILED, source, game);
if (card.isLand(game)) {
player.moveCards(card, Zone.BATTLEFIELD, source, game);
break;
}
cards.add(card);
}
player.putCardsOnBottomOfLibrary(cards, game, source, false);
return true;
}
}

View file

@ -566,6 +566,7 @@ public final class CommanderLegendsBattleForBaldursGate extends ExpansionSet {
cards.add(new SetCardInfo("Valiant Changeling", 711, Rarity.UNCOMMON, mage.cards.v.ValiantChangeling.class));
cards.add(new SetCardInfo("Vault of the Archangel", 927, Rarity.RARE, mage.cards.v.VaultOfTheArchangel.class));
cards.add(new SetCardInfo("Vengeful Ancestor", 812, Rarity.RARE, mage.cards.v.VengefulAncestor.class));
cards.add(new SetCardInfo("Venture Forth", 683, Rarity.RARE, mage.cards.v.VentureForth.class));
cards.add(new SetCardInfo("Veteran Soldier", 48, Rarity.UNCOMMON, mage.cards.v.VeteranSoldier.class));
cards.add(new SetCardInfo("Vexing Puzzlebox", 343, Rarity.MYTHIC, mage.cards.v.VexingPuzzlebox.class));
cards.add(new SetCardInfo("Vicious Battlerager", 155, Rarity.COMMON, mage.cards.v.ViciousBattlerager.class));