Fix Adventures exiling themselves before applying their effects (#10793)

* Rework adventures to exiles themself after applying other effects

* fix duelist

* finalize all adventures

* apply review

* add card name to error

* fix remaining adventures

* finalize the last adventures.
This commit is contained in:
Susucre 2023-08-31 01:15:47 +02:00 committed by GitHub
parent 3ed0dd4f84
commit fe165f1fd0
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
108 changed files with 322 additions and 18 deletions

View file

@ -37,6 +37,8 @@ public final class AltarOfBhaal extends AdventureCard {
// Bone Offering
// Create a tapped 4/1 black Skeleton creature token with menace.
this.getSpellCard().getSpellAbility().addEffect(new CreateTokenEffect(new SkeletonMenaceToken(), 1, true, false));
this.finalizeAdventure();
}
private AltarOfBhaal(final AltarOfBhaal card) {

View file

@ -34,6 +34,8 @@ public final class AmethystDragon extends AdventureCard {
// Explosive Crystal deals 4 damage divided as you choose among any number of targets.
this.getSpellCard().getSpellAbility().addEffect(new DamageMultiEffect(4));
this.getSpellCard().getSpellAbility().addTarget(new TargetAnyTargetAmount(4));
this.finalizeAdventure();
}
private AmethystDragon(final AmethystDragon card) {

View file

@ -52,6 +52,8 @@ public final class AnimatingFaerie extends AdventureCard {
CounterType.P1P1.createInstance(4)
).setText(" "));
this.getSpellCard().getSpellAbility().addTarget(new TargetPermanent(filter));
this.finalizeAdventure();
}
private AnimatingFaerie(final AnimatingFaerie card) {

View file

@ -42,6 +42,8 @@ public final class AquaticAlchemist extends AdventureCard {
this.getSpellCard().getSpellAbility().addTarget(new TargetCardInYourGraveyard(
StaticFilters.FILTER_CARD_INSTANT_OR_SORCERY_FROM_YOUR_GRAVEYARD
));
this.finalizeAdventure();
}
private AquaticAlchemist(final AquaticAlchemist card) {

View file

@ -31,6 +31,8 @@ public final class ArdenvaleTactician extends AdventureCard {
// Tap up to two target creatures.
this.getSpellCard().getSpellAbility().addEffect(new TapTargetEffect());
this.getSpellCard().getSpellAbility().addTarget(new TargetCreaturePermanent(0, 2));
this.finalizeAdventure();
}
private ArdenvaleTactician(final ArdenvaleTactician card) {

View file

@ -39,6 +39,8 @@ public final class BeanstalkGiant extends AdventureCard {
this.getSpellCard().getSpellAbility().addEffect(
new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(StaticFilters.FILTER_CARD_BASIC_LAND))
);
this.finalizeAdventure();
}
private BeanstalkGiant(final BeanstalkGiant card) {

View file

@ -30,6 +30,8 @@ public final class BeanstalkWurm extends AdventureCard {
// Plant Beans
// You may play an additional land this turn.
this.getSpellCard().getSpellAbility().addEffect(new PlayAdditionalLandsControllerEffect(1, Duration.EndOfTurn));
this.finalizeAdventure();
}
private BeanstalkWurm(final BeanstalkWurm card) {

View file

@ -31,6 +31,8 @@ public final class BellowingBruiser extends AdventureCard {
// Up to two target creatures can't block this turn.
this.getSpellCard().getSpellAbility().addEffect(new CantBlockTargetEffect(Duration.EndOfTurn));
this.getSpellCard().getSpellAbility().addTarget(new TargetCreaturePermanent(0, 2));
this.finalizeAdventure();
}
private BellowingBruiser(final BellowingBruiser card) {

View file

@ -49,6 +49,8 @@ public final class BelunaGrandsquall extends AdventureCard {
// Seek Thrills
// Mill seven cards. Then put all cards that have an Adventure from among the milled cards into your hand.
this.getSpellCard().getSpellAbility().addEffect(new SeekThrillsEffect());
this.finalizeAdventure();
}
private BelunaGrandsquall(final BelunaGrandsquall card) {

View file

@ -40,6 +40,8 @@ public final class BelunasGatekeeper extends AdventureCard {
// Return target creature you don't control with mana value 3 or less to its owner's hand.
this.getSpellCard().getSpellAbility().addEffect(new ReturnToHandTargetEffect());
this.getSpellCard().getSpellAbility().addTarget(new TargetPermanent(filter));
this.finalizeAdventure();
}
private BelunasGatekeeper(final BelunasGatekeeper card) {

View file

@ -28,6 +28,8 @@ public final class BesottedKnight extends AdventureCard {
// Create a Royal Role token attached to target creature you control.
this.getSpellCard().getSpellAbility().addEffect(new CreateRoleAttachedTargetEffect(RoleType.ROYAL));
this.getSpellCard().getSpellAbility().addTarget(new TargetControlledCreaturePermanent());
this.finalizeAdventure();
}
private BesottedKnight(final BesottedKnight card) {

View file

@ -49,6 +49,8 @@ public final class BlessedHippogriff extends AdventureCard {
// Target creature gains indestructible until end of turn.
this.getSpellCard().getSpellAbility().addEffect(new GainAbilityTargetEffect(IndestructibleAbility.getInstance()));
this.getSpellCard().getSpellAbility().addTarget(new TargetCreaturePermanent());
this.finalizeAdventure();
}
private BlessedHippogriff(final BlessedHippogriff card) {

View file

@ -39,6 +39,8 @@ public final class BonecrusherGiant extends AdventureCard {
this.getSpellCard().getSpellAbility().addEffect(new DamageCantBePreventedEffect(Duration.EndOfTurn, "Damage can't be prevented this turn"));
this.getSpellCard().getSpellAbility().addEffect(new DamageTargetEffect(2));
this.getSpellCard().getSpellAbility().addTarget(new TargetAnyTarget());
this.finalizeAdventure();
}
private BonecrusherGiant(final BonecrusherGiant card) {

View file

@ -56,6 +56,8 @@ public final class BrambleFamiliar extends AdventureCard {
// Fetch Quest
// Mill seven cards, then put a creature, enchantment, or land card from among cards milled this way onto the battlefield.
this.getSpellCard().getSpellAbility().addEffect(new FetchQuestEffect());
this.finalizeAdventure();
}
private BrambleFamiliar(final BrambleFamiliar card) {

View file

@ -49,6 +49,8 @@ public final class BrazenBorrower extends AdventureCard {
// Return target nonland permanent an opponent controls to its owner's hand.
this.getSpellCard().getSpellAbility().addEffect(new ReturnToHandTargetEffect());
this.getSpellCard().getSpellAbility().addTarget(new TargetPermanent(filter));
this.finalizeAdventure();
}
private BrazenBorrower(final BrazenBorrower card) {

View file

@ -58,6 +58,8 @@ public final class CallousSellSword extends AdventureCard {
this.getSpellCard().getSpellAbility().addTarget(new TargetControlledCreaturePermanent().setTargetTag(1));
this.getSpellCard().getSpellAbility().addTarget(new TargetAnyTarget(1, 1, filterSecondTarget).setTargetTag(2));
this.getSpellCard().getSpellAbility().addEffect(new CallousSellSwordSacrificeFirstTargetEffect().concatBy("Then"));
this.finalizeAdventure();
}
private CallousSellSword(final CallousSellSword card) {

View file

@ -40,6 +40,8 @@ public final class CheekyHouseMouse extends AdventureCard {
this.getSpellCard().getSpellAbility().addEffect(new CantBeBlockedTargetEffect(filter, Duration.EndOfTurn)
.setText("it can't be blocked by creatures with power 3 or greater this turn"));
this.getSpellCard().getSpellAbility().addTarget(new TargetControlledCreaturePermanent());
this.finalizeAdventure();
}
private CheekyHouseMouse(final CheekyHouseMouse card) {

View file

@ -38,6 +38,8 @@ public final class ColossalBadger extends AdventureCard {
// Choose target creature. Mill four cards, then put a +1/+1 counter on that creature for each creature card milled this way.
this.getSpellCard().getSpellAbility().addEffect(new ColossalBadgerEffect());
this.getSpellCard().getSpellAbility().addTarget(new TargetCreaturePermanent());
this.finalizeAdventure();
}
private ColossalBadger(final ColossalBadger card) {

View file

@ -32,6 +32,8 @@ public final class ConceitedWitch extends AdventureCard {
// Create a Wicked Role token attached to target creature you control.
this.getSpellCard().getSpellAbility().addEffect(new CreateRoleAttachedTargetEffect(RoleType.WICKED));
this.getSpellCard().getSpellAbility().addTarget(new TargetControlledCreaturePermanent());
this.finalizeAdventure();
}
private ConceitedWitch(final ConceitedWitch card) {

View file

@ -37,6 +37,8 @@ public final class CruelSomnophage extends AdventureCard {
// Target player mills four cards.
this.getSpellCard().getSpellAbility().addEffect(new MillCardsTargetEffect(4));
this.getSpellCard().getSpellAbility().addTarget(new TargetPlayer());
this.finalizeAdventure();
}
private CruelSomnophage(final CruelSomnophage card) {

View file

@ -48,6 +48,8 @@ public final class CrystalDragon extends AdventureCard {
// Return target artifact, enchantment, or legendary card from your graveyard to your hand.
this.getSpellCard().getSpellAbility().addEffect(new ReturnFromGraveyardToHandTargetEffect());
this.getSpellCard().getSpellAbility().addTarget(new TargetCardInYourGraveyard(filter));
this.finalizeAdventure();
}
private CrystalDragon(final CrystalDragon card) {

View file

@ -26,6 +26,8 @@ public final class CuriousPair extends AdventureCard {
// Treats to Share
// Create a Food token.
this.getSpellCard().getSpellAbility().addEffect(new CreateTokenEffect(new FoodToken()));
this.finalizeAdventure();
}
private CuriousPair(final CuriousPair card) {

View file

@ -51,6 +51,8 @@ public final class DecadentDragon extends AdventureCard {
// Exile the top two cards of target opponent's library face down. You may look at and play those cards for as long as they remain exiled.
this.getSpellCard().getSpellAbility().addEffect(new ExpensiveTasteEffect());
this.getSpellCard().getSpellAbility().addTarget(new TargetOpponent());
this.finalizeAdventure();
}
private DecadentDragon(final DecadentDragon card) {

View file

@ -67,6 +67,8 @@ public final class DevouringSugarmaw extends AdventureCard {
this.getSpellCard().getSpellAbility().addEffect(new CreateTokenEffect(new HumanToken()));
this.getSpellCard().getSpellAbility().addEffect(new CreateTokenEffect(new FoodToken())
.setText("and a Food token"));
this.finalizeAdventure();
}
private DevouringSugarmaw(final DevouringSugarmaw card) {

View file

@ -48,6 +48,8 @@ public final class DreadLinnorm extends AdventureCard {
this.getSpellCard().getSpellAbility().addEffect(new UntapTargetEffect().setText("and untap it"));
this.getSpellCard().getSpellAbility().addEffect(new GainAbilityTargetEffect(HexproofAbility.getInstance()).setText("It gains hexproof until end of turn"));
this.getSpellCard().getSpellAbility().addTarget(new TargetCreaturePermanent());
this.finalizeAdventure();
}
private DreadLinnorm(final DreadLinnorm card) {

View file

@ -45,6 +45,8 @@ public final class ElusiveOtter extends AdventureCard {
target.setMinNumberOfTargets(0);
target.setMaxNumberOfTargets(Integer.MAX_VALUE);
this.getSpellCard().getSpellAbility().addTarget(target);
this.finalizeAdventure();
}
private ElusiveOtter(final ElusiveOtter card) {

View file

@ -27,6 +27,8 @@ public final class EmberethShieldbreaker extends AdventureCard {
// Destroy target artifact.
this.getSpellCard().getSpellAbility().addEffect(new DestroyTargetEffect());
this.getSpellCard().getSpellAbility().addTarget(new TargetArtifactPermanent());
this.finalizeAdventure();
}
private EmberethShieldbreaker(final EmberethShieldbreaker card) {

View file

@ -46,6 +46,8 @@ public final class EmeraldDragon extends AdventureCard {
// Counter target activated or triggered ability from a noncreature source.
this.getSpellCard().getSpellAbility().addEffect(new CounterTargetEffect());
this.getSpellCard().getSpellAbility().addTarget(new TargetActivatedOrTriggeredAbility(filter));
this.finalizeAdventure();
}
private EmeraldDragon(final EmeraldDragon card) {

View file

@ -41,6 +41,8 @@ public final class Ettercap extends AdventureCard {
// Destroy target creature with flying.
this.getSpellCard().getSpellAbility().addEffect(new DestroyTargetEffect());
this.getSpellCard().getSpellAbility().addTarget(new TargetPermanent(filter));
this.finalizeAdventure();
}
private Ettercap(final Ettercap card) {

View file

@ -13,7 +13,6 @@ import mage.cards.AdventureCard;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.SubType;
import mage.filter.FilterCard;
import mage.filter.StaticFilters;
import mage.target.common.TargetCardInHand;
@ -46,6 +45,8 @@ public final class FaeOfWishes extends AdventureCard {
// You may reveal a noncreature card you own from outside the game and put it into your hand.
this.getSpellCard().getSpellAbility().addEffect(new WishEffect(StaticFilters.FILTER_CARD_A_NON_CREATURE));
this.getSpellCard().getSpellAbility().addHint(OpenSideboardHint.instance);
this.finalizeAdventure();
}
private FaeOfWishes(final FaeOfWishes card) {

View file

@ -37,6 +37,8 @@ public final class FaerieGuidemother extends AdventureCard {
FlyingAbility.getInstance(), Duration.EndOfTurn
).setText("and gains flying until end of turn"));
this.getSpellCard().getSpellAbility().addTarget(new TargetCreaturePermanent());
this.finalizeAdventure();
}
private FaerieGuidemother(final FaerieGuidemother card) {

View file

@ -30,6 +30,8 @@ public final class FangDragon extends AdventureCard {
this.getSpellCard().getSpellAbility().addEffect(new DamageAllEffect(
1, StaticFilters.FILTER_CREATURE_YOU_DONT_CONTROL
));
this.finalizeAdventure();
}
private FangDragon(final FangDragon card) {

View file

@ -36,6 +36,7 @@ public final class FellHorseman extends AdventureCard {
this.getSpellCard().getSpellAbility().addEffect(new ReturnFromGraveyardToHandTargetEffect());
this.getSpellCard().getSpellAbility().addTarget(new TargetCardInYourGraveyard(StaticFilters.FILTER_CARD_CREATURE_YOUR_GRAVEYARD));
this.finalizeAdventure();
}
private FellHorseman(final FellHorseman card) {

View file

@ -33,6 +33,8 @@ public final class FerociousWerefox extends AdventureCard {
// Create a Monster Role token attached to target creature you control.
this.getSpellCard().getSpellAbility().addEffect(new CreateRoleAttachedTargetEffect(RoleType.MONSTER));
this.getSpellCard().getSpellAbility().addTarget(new TargetControlledCreaturePermanent());
this.finalizeAdventure();
}
private FerociousWerefox(final FerociousWerefox card) {

View file

@ -45,6 +45,8 @@ public final class FlaxenIntruder extends AdventureCard {
// Welcome Home
// Create three 2/2 green Bear creature tokens.
this.getSpellCard().getSpellAbility().addEffect(new CreateTokenEffect(new BearToken(), 3));
this.finalizeAdventure();
}
private FlaxenIntruder(final FlaxenIntruder card) {

View file

@ -31,6 +31,8 @@ public final class FoulmireKnight extends AdventureCard {
// You draw a card and you lose 1 life.
this.getSpellCard().getSpellAbility().addEffect(new DrawCardSourceControllerEffect(1).setText("You draw a card"));
this.getSpellCard().getSpellAbility().addEffect(new LoseLifeSourceControllerEffect(1).concatBy("and"));
this.finalizeAdventure();
}
private FoulmireKnight(final FoulmireKnight card) {

View file

@ -41,6 +41,8 @@ public final class FrolickingFamiliar extends AdventureCard {
// Blow Off Steam deals 1 damage to any target.
this.getSpellCard().getSpellAbility().addEffect(new DamageTargetEffect(1));
this.getSpellCard().getSpellAbility().addTarget(new TargetAnyTarget());
this.finalizeAdventure();
}
private FrolickingFamiliar(final FrolickingFamiliar card) {

View file

@ -1,21 +1,22 @@
package mage.cards.g;
import java.util.UUID;
import mage.MageInt;
import mage.abilities.Ability;
import mage.abilities.common.SpellCastControllerTriggeredAbility;
import mage.abilities.effects.common.DrawDiscardControllerEffect;
import mage.abilities.effects.common.TapTargetEffect;
import mage.abilities.effects.common.counter.AddCountersTargetEffect;
import mage.cards.AdventureCard;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.ComparisonType;
import mage.constants.SubType;
import mage.counters.CounterType;
import mage.filter.FilterSpell;
import mage.filter.predicate.mageobject.ManaValuePredicate;
import mage.target.common.TargetOpponentsCreaturePermanent;
import mage.cards.AdventureCard;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.ComparisonType;
import java.util.UUID;
/**
*
@ -46,6 +47,8 @@ public final class GalvanicGiant extends AdventureCard {
// Storm Reading
// Draw four cards, then discard two cards.
this.getSpellCard().getSpellAbility().addEffect(new DrawDiscardControllerEffect(4, 2));
this.finalizeAdventure();
}
private GalvanicGiant(final GalvanicGiant card) {

View file

@ -28,6 +28,8 @@ public final class GarenbrigCarver extends AdventureCard {
// Target creature gets +2/+2 until end of turn.
this.getSpellCard().getSpellAbility().addEffect(new BoostTargetEffect(2, 2, Duration.EndOfTurn));
this.getSpellCard().getSpellAbility().addTarget(new TargetCreaturePermanent());
this.finalizeAdventure();
}
private GarenbrigCarver(final GarenbrigCarver card) {

View file

@ -1,21 +1,21 @@
package mage.cards.g;
import mage.abilities.common.DiesCreatureTriggeredAbility;
import mage.abilities.costs.mana.GenericManaCost;
import mage.abilities.effects.common.ReturnFromGraveyardToHandTargetEffect;
import mage.abilities.effects.common.counter.AddCountersAttachedEffect;
import mage.abilities.keyword.EquipAbility;
import mage.cards.AdventureCard;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.Outcome;
import mage.constants.SubType;
import mage.counters.CounterType;
import mage.filter.StaticFilters;
import mage.target.common.TargetCardInYourGraveyard;
import mage.target.common.TargetControlledCreaturePermanent;
import java.util.UUID;
import mage.abilities.costs.mana.GenericManaCost;
import mage.constants.Outcome;
import mage.target.common.TargetControlledCreaturePermanent;
/**
* @author TheElk801
@ -39,6 +39,8 @@ public final class GhostLantern extends AdventureCard {
// Return target creature card from your graveyard to your hand.
this.getSpellCard().getSpellAbility().addEffect(new ReturnFromGraveyardToHandTargetEffect());
this.getSpellCard().getSpellAbility().addTarget(new TargetCardInYourGraveyard(StaticFilters.FILTER_CARD_CREATURE_YOUR_GRAVEYARD));
this.finalizeAdventure();
}
private GhostLantern(final GhostLantern card) {

View file

@ -49,6 +49,8 @@ public final class GiantKiller extends AdventureCard {
// Destroy target creature with power 4 or greater.
this.getSpellCard().getSpellAbility().addEffect(new DestroyTargetEffect());
this.getSpellCard().getSpellAbility().addTarget(new TargetPermanent(filter));
this.finalizeAdventure();
}
private GiantKiller(final GiantKiller card) {

View file

@ -32,6 +32,8 @@ public final class GingerbreadHunter extends AdventureCard {
// Target creature gets -2/-2 until end of turn.
this.getSpellCard().getSpellAbility().addEffect(new BoostTargetEffect(-2, -2));
this.getSpellCard().getSpellAbility().addTarget(new TargetCreaturePermanent());
this.finalizeAdventure();
}
private GingerbreadHunter(final GingerbreadHunter card) {

View file

@ -52,6 +52,8 @@ public final class GrabbyGiant extends AdventureCard {
// That's Mine
// Create a Treasure token.
this.getSpellCard().getSpellAbility().addEffect(new CreateTokenEffect(new TreasureToken()));
this.finalizeAdventure();
}
private GrabbyGiant(final GrabbyGiant card) {

View file

@ -48,6 +48,8 @@ public final class GraySlaad extends AdventureCard {
// Entropic Decay
// Mill four cards.
this.getSpellCard().getSpellAbility().addEffect(new MillCardsControllerEffect(4));
this.finalizeAdventure();
}
private GraySlaad(final GraySlaad card) {

View file

@ -42,6 +42,8 @@ public final class GuardianNaga extends AdventureCard {
// Exile target artifact or enchantment.
this.getSpellCard().getSpellAbility().addEffect(new ExileTargetEffect());
this.getSpellCard().getSpellAbility().addTarget(new TargetPermanent(StaticFilters.FILTER_PERMANENT_ARTIFACT_OR_ENCHANTMENT));
this.finalizeAdventure();
}
private GuardianNaga(final GuardianNaga card) {

View file

@ -46,6 +46,8 @@ public final class GumdropPoisoner extends AdventureCard {
// Tempt with Treats
// Create a Food token.
this.getSpellCard().getSpellAbility().addEffect(new CreateTokenEffect(new FoodToken()));
this.finalizeAdventure();
}
private GumdropPoisoner(final GumdropPoisoner card) {

View file

@ -44,6 +44,8 @@ public final class HeartflameDuelist extends AdventureCard {
// Heartflame Slash deals 3 damage to any target.
this.getSpellCard().getSpellAbility().addEffect(new DamageTargetEffect(3));
this.getSpellCard().getSpellAbility().addTarget(new TargetAnyTarget());
this.finalizeAdventure();
}
private HeartflameDuelist(final HeartflameDuelist card) {
@ -54,4 +56,4 @@ public final class HeartflameDuelist extends AdventureCard {
public HeartflameDuelist copy() {
return new HeartflameDuelist(this);
}
}
}

View file

@ -59,6 +59,8 @@ public final class HearthElemental extends AdventureCard {
this.getSpellCard().getSpellAbility().addEffect(new DiscardHandControllerEffect());
this.getSpellCard().getSpellAbility().addEffect(new DrawCardSourceControllerEffect(2)
.concatBy(", then"));
this.finalizeAdventure();
}
private HearthElemental(final HearthElemental card) {

View file

@ -39,6 +39,8 @@ public final class HollowScavenger extends AdventureCard {
// Bakery Raid
// Create a Food token.
this.getSpellCard().getSpellAbility().addEffect(new CreateTokenEffect(new FoodToken()));
this.finalizeAdventure();
}
private HollowScavenger(final HollowScavenger card) {

View file

@ -1,6 +1,7 @@
package mage.cards.h;
import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.costs.mana.GenericManaCost;
import mage.abilities.dynamicvalue.common.CreaturesYouControlCount;
import mage.abilities.dynamicvalue.common.ManacostVariableValue;
import mage.abilities.effects.common.CreateTokenEffect;
@ -10,13 +11,12 @@ import mage.abilities.keyword.EquipAbility;
import mage.cards.AdventureCard;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.Outcome;
import mage.constants.SubType;
import mage.game.permanent.token.SoldierToken;
import mage.target.common.TargetControlledCreaturePermanent;
import java.util.UUID;
import mage.abilities.costs.mana.GenericManaCost;
import mage.constants.Outcome;
import mage.target.common.TargetControlledCreaturePermanent;
/**
* @author TheElk801
@ -41,6 +41,8 @@ public final class HornOfValhalla extends AdventureCard {
this.getSpellCard().getSpellAbility().addEffect(new CreateTokenEffect(
new SoldierToken(), ManacostVariableValue.REGULAR
));
this.finalizeAdventure();
}
private HornOfValhalla(final HornOfValhalla card) {

View file

@ -54,6 +54,8 @@ public final class HornedLochWhale extends AdventureCard {
// The owner of target attacking creature you don't control puts it on the top or bottom of their library.
this.getSpellCard().getSpellAbility().addEffect(new PutOnTopOrBottomLibraryTargetEffect());
this.getSpellCard().getSpellAbility().addTarget(new TargetPermanent(filter));
this.finalizeAdventure();
}
private HornedLochWhale(final HornedLochWhale card) {

View file

@ -39,6 +39,8 @@ public final class HypnoticSprite extends AdventureCard {
// Counter target spell with converted mana cost 3 or less.
this.getSpellCard().getSpellAbility().addEffect(new CounterTargetEffect());
this.getSpellCard().getSpellAbility().addTarget(new TargetSpell(filter));
this.finalizeAdventure();
}
private HypnoticSprite(final HypnoticSprite card) {

View file

@ -44,6 +44,8 @@ public final class ImodanesRecruiter extends AdventureCard {
// Train Troops
// Create two 2/2 white Knight creature tokens with vigilance.
this.getSpellCard().getSpellAbility().addEffect(new CreateTokenEffect(new KnightToken(), 2));
this.finalizeAdventure();
}
private ImodanesRecruiter(final ImodanesRecruiter card) {

View file

@ -21,7 +21,7 @@ public final class IntrepidTrufflesnout extends AdventureCard {
public IntrepidTrufflesnout(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, new CardType[]{CardType.INSTANT}, "{1}{G}", "Go Hog Wild", "{1}{G}");
this.subtype.add(SubType.BOAR);
this.power = new MageInt(3);
this.toughness = new MageInt(1);
@ -32,6 +32,8 @@ public final class IntrepidTrufflesnout extends AdventureCard {
// Target creature gets +2/+2 until end of turn.
this.getSpellCard().getSpellAbility().addEffect(new BoostTargetEffect(2, 2, Duration.EndOfTurn));
this.getSpellCard().getSpellAbility().addTarget(new TargetCreaturePermanent());
this.finalizeAdventure();
}
private IntrepidTrufflesnout(final IntrepidTrufflesnout card) {

View file

@ -58,6 +58,8 @@ public final class KellanTheFaeBlooded extends AdventureCard {
// Birthright Boon
// Search your library for an Aura or Equipment card, reveal it, put it into your hand, then shuffle.
this.getSpellCard().getSpellAbility().addEffect(new SearchLibraryPutInHandEffect(new TargetCardInLibrary(auraOrEquipmentCard), true));
this.finalizeAdventure();
}
private KellanTheFaeBlooded(final KellanTheFaeBlooded card) {

View file

@ -29,6 +29,8 @@ public final class LonesomeUnicorn extends AdventureCard {
// Rider in Need
// Create a 2/2 white Knight creature token with vigilance.
this.getSpellCard().getSpellAbility().addEffect(new CreateTokenEffect(new KnightToken()));
this.finalizeAdventure();
}
private LonesomeUnicorn(final LonesomeUnicorn card) {

View file

@ -40,6 +40,8 @@ public final class LovestruckBeast extends AdventureCard {
// Heart's Desire
// Create a 1/1 white Human creature token.
this.getSpellCard().getSpellAbility().addEffect(new CreateTokenEffect(new HumanToken()));
this.finalizeAdventure();
}
private LovestruckBeast(final LovestruckBeast card) {

View file

@ -39,6 +39,8 @@ public final class MerchantOfTheVale extends AdventureCard {
this.getSpellCard().getSpellAbility().addEffect(new DoIfCostPaid(
new DrawCardSourceControllerEffect(1), new DiscardCardCost()
));
this.finalizeAdventure();
}
private MerchantOfTheVale(final MerchantOfTheVale card) {

View file

@ -27,6 +27,8 @@ public final class MerfolkSecretkeeper extends AdventureCard {
// Target player puts the top four cards of their library into their graveyard.
this.getSpellCard().getSpellAbility().addEffect(new MillCardsTargetEffect(4));
this.getSpellCard().getSpellAbility().addTarget(new TargetPlayer());
this.finalizeAdventure();
}
private MerfolkSecretkeeper(final MerfolkSecretkeeper card) {

View file

@ -27,6 +27,8 @@ public final class MinecartDaredevil extends AdventureCard {
// Target creature gets +2/+1 until end of turn.
this.getSpellCard().getSpellAbility().addEffect(new BoostTargetEffect(2, 1));
this.getSpellCard().getSpellAbility().addTarget(new TargetCreaturePermanent());
this.finalizeAdventure();
}
private MinecartDaredevil(final MinecartDaredevil card) {

View file

@ -36,6 +36,8 @@ public final class MonsterManual extends AdventureCard {
// Zoological Study
// Mill five cards, then return a creature card milled this way to your hand.
this.getSpellCard().getSpellAbility().addEffect(new ZoologicalStudyEffect());
this.finalizeAdventure();
}
private MonsterManual(final MonsterManual card) {

View file

@ -55,6 +55,8 @@ public final class MoonshaePixie extends AdventureCard {
this.getSpellCard().getSpellAbility().addTarget(new TargetPermanent(
0, 3, StaticFilters.FILTER_PERMANENT_CREATURES
));
this.finalizeAdventure();
}
private MoonshaePixie(final MoonshaePixie card) {

View file

@ -39,6 +39,8 @@ public final class MosswoodDreadknight extends AdventureCard {
// You draw a card and you lose 1 life.
this.getSpellCard().getSpellAbility().addEffect(new DrawCardSourceControllerEffect(1));
this.getSpellCard().getSpellAbility().addEffect(new LoseLifeSourceControllerEffect(1).concatBy("and"));
this.finalizeAdventure();
}
private MosswoodDreadknight(final MosswoodDreadknight card) {

View file

@ -4,14 +4,15 @@ import mage.MageInt;
import mage.abilities.common.DiesSourceTriggeredAbility;
import mage.abilities.effects.common.DestroyTargetEffect;
import mage.abilities.effects.common.LoseLifeSourceControllerEffect;
import mage.abilities.effects.common.PutOnLibrarySourceEffect;
import mage.abilities.keyword.LifelinkAbility;
import mage.cards.AdventureCard;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.SubType;
import mage.target.common.TargetCreatureOrPlaneswalker;
import java.util.UUID;
import mage.abilities.effects.common.PutOnLibrarySourceEffect;
/**
* @author TheElk801
@ -41,6 +42,8 @@ public final class MurderousRider extends AdventureCard {
new LoseLifeSourceControllerEffect(2).setText("You lose 2 life.")
);
this.getSpellCard().getSpellAbility().addTarget(new TargetCreatureOrPlaneswalker());
this.finalizeAdventure();
}
private MurderousRider(final MurderousRider card) {

View file

@ -36,6 +36,8 @@ public final class OakhameRanger extends AdventureCard {
// Bring Back
// Create two 1/1 white Human creature tokens.
this.getSpellCard().getSpellAbility().addEffect(new CreateTokenEffect(new HumanToken(), 2));
this.finalizeAdventure();
}
private OakhameRanger(final OakhameRanger card) {

View file

@ -31,6 +31,8 @@ public final class ObyrasAttendants extends AdventureCard {
// Target creature gets -4/-0 until end of turn.
this.getSpellCard().getSpellAbility().addEffect(new BoostTargetEffect(-4, 0));
this.getSpellCard().getSpellAbility().addTarget(new TargetCreaturePermanent());
this.finalizeAdventure();
}
private ObyrasAttendants(final ObyrasAttendants card) {

View file

@ -36,6 +36,8 @@ public final class OrderOfMidnight extends AdventureCard {
// Return target creature card from your graveyard to your hand.
this.getSpellCard().getSpellAbility().addEffect(new ReturnFromGraveyardToHandTargetEffect());
this.getSpellCard().getSpellAbility().addTarget(new TargetCardInYourGraveyard(StaticFilters.FILTER_CARD_CREATURE_YOUR_GRAVEYARD));
this.finalizeAdventure();
}
private OrderOfMidnight(final OrderOfMidnight card) {

View file

@ -42,6 +42,8 @@ public final class PegasusGuardian extends AdventureCard {
// Exile target creature you control, then return that card to the battlefield under its owner's control.
this.getSpellCard().getSpellAbility().addEffect(new ExileThenReturnTargetEffect(false, true));
this.getSpellCard().getSpellAbility().addTarget(new TargetControlledCreaturePermanent());
this.finalizeAdventure();
}
private PegasusGuardian(final PegasusGuardian card) {

View file

@ -45,6 +45,8 @@ public final class PicklockPrankster extends AdventureCard {
// Free the Fae
// Mill four cards. Then put an instant, sorcery, or Faerie card from among the milled cards into your hand.
this.getSpellCard().getSpellAbility().addEffect(new MillThenPutInHandEffect(4, filter));
this.finalizeAdventure();
}
private PicklockPrankster(final PicklockPrankster card) {

View file

@ -49,6 +49,8 @@ public final class PicnicRuiner extends AdventureCard {
this.getSpellCard().getSpellAbility().addTarget(
new TargetCreaturePermanentAmount(3, StaticFilters.FILTER_CONTROLLED_CREATURES)
);
this.finalizeAdventure();
}
private PicnicRuiner(final PicnicRuiner card) {

View file

@ -48,6 +48,8 @@ public final class PollenShieldHare extends AdventureCard {
);
this.getSpellCard().getSpellAbility().addTarget(new TargetControlledCreaturePermanent());
this.getSpellCard().getSpellAbility().addHint(CreaturesYouControlHint.instance);
this.finalizeAdventure();
}
private PollenShieldHare(final PollenShieldHare card) {

View file

@ -43,6 +43,8 @@ public final class QueenOfIce extends AdventureCard {
this.getSpellCard().getSpellAbility().addEffect(new DontUntapInControllersNextUntapStepTargetEffect()
.setText("It doesn't untap during its controller's next untap step"));
this.getSpellCard().getSpellAbility().addTarget(new TargetCreaturePermanent());
this.finalizeAdventure();
}
private QueenOfIce(final QueenOfIce card) {

View file

@ -51,6 +51,8 @@ public final class QuestingDruid extends AdventureCard {
this.getSpellCard().getSpellAbility().addEffect(
new ExileTopXMayPlayUntilEndOfTurnEffect(2, false, Duration.UntilYourNextEndStep)
);
this.finalizeAdventure();
}
private QuestingDruid(final QuestingDruid card) {

View file

@ -39,6 +39,8 @@ public final class RatcatcherTrainee extends AdventureCard {
// Pest Problem
// Create two 1/1 black Rat creature tokens with "This creature cant block."
this.getSpellCard().getSpellAbility().addEffect(new CreateTokenEffect(new RatCantBlockToken(), 2));
this.finalizeAdventure();
}
private RatcatcherTrainee(final RatcatcherTrainee card) {

View file

@ -37,6 +37,8 @@ public final class RealmCloakedGiant extends AdventureCard {
// Cast Off
// Destroy all non-Giant creatures.
this.getSpellCard().getSpellAbility().addEffect(new DestroyAllEffect(filter));
this.finalizeAdventure();
}
private RealmCloakedGiant(final RealmCloakedGiant card) {

View file

@ -43,6 +43,8 @@ public final class ReaperOfNight extends AdventureCard {
// Target opponent discards two cards.
this.getSpellCard().getSpellAbility().addEffect(new DiscardTargetEffect(2));
this.getSpellCard().getSpellAbility().addTarget(new TargetOpponent());
this.finalizeAdventure();
}
private ReaperOfNight(final ReaperOfNight card) {

View file

@ -32,6 +32,8 @@ public final class RimrockKnight extends AdventureCard {
// Target creature gets +2/+0 until end of turn.
this.getSpellCard().getSpellAbility().addEffect(new BoostTargetEffect(2, 0, Duration.EndOfTurn));
this.getSpellCard().getSpellAbility().addTarget(new TargetCreaturePermanent());
this.finalizeAdventure();
}
private RimrockKnight(final RimrockKnight card) {

View file

@ -29,6 +29,8 @@ public final class RosethornAcolyte extends AdventureCard {
// Seasonal Ritual
// Add one mana of any color.
this.getSpellCard().getSpellAbility().addEffect(new AddManaOfAnyColorEffect());
this.finalizeAdventure();
}
private RosethornAcolyte(final RosethornAcolyte card) {

View file

@ -36,6 +36,8 @@ public final class SapphireDragon extends AdventureCard {
// Counter target noncreature spell.
this.getSpellCard().getSpellAbility().addEffect(new CounterTargetEffect());
this.getSpellCard().getSpellAbility().addTarget(new TargetSpell(StaticFilters.FILTER_SPELL_NON_CREATURE));
this.finalizeAdventure();
}
private SapphireDragon(final SapphireDragon card) {

View file

@ -42,6 +42,8 @@ public final class ScaldingViper extends AdventureCard {
// Return target nonland permanent to its owner's hand.
this.getSpellCard().getSpellAbility().addEffect(new ReturnToHandTargetEffect());
this.getSpellCard().getSpellAbility().addTarget(new TargetNonlandPermanent());
this.finalizeAdventure();
}
private ScaldingViper(final ScaldingViper card) {

View file

@ -38,6 +38,8 @@ public final class SeaHag extends AdventureCard {
this.getSpellCard().getSpellAbility().addEffect(new BoostTargetEffect(1, 0).setText("up to two target creatures each get +1/+0 until end of turn"));
this.getSpellCard().getSpellAbility().addEffect(new CantBeBlockedTargetEffect().setText("and can't be blocked this turn"));
this.getSpellCard().getSpellAbility().addTarget(new TargetCreaturePermanent(0, 2));
this.finalizeAdventure();
}
private SeaHag(final SeaHag card) {

View file

@ -27,6 +27,8 @@ public final class ShepherdOfTheFlock extends AdventureCard {
// Return target permanent you control to its owners hand.
this.getSpellCard().getSpellAbility().addEffect(new ReturnToHandTargetEffect());
this.getSpellCard().getSpellAbility().addTarget(new TargetControlledPermanent());
this.finalizeAdventure();
}
private ShepherdOfTheFlock(final ShepherdOfTheFlock card) {

View file

@ -39,6 +39,8 @@ public final class ShroudedShepherd extends AdventureCard {
-1, -1, Duration.EndOfTurn,
StaticFilters.FILTER_OPPONENTS_PERMANENT_CREATURES, false
));
this.finalizeAdventure();
}
private ShroudedShepherd(final ShroudedShepherd card) {

View file

@ -30,6 +30,8 @@ public final class SilverflameSquire extends AdventureCard {
this.getSpellCard().getSpellAbility().addEffect(new BoostTargetEffect(2, 2, Duration.EndOfTurn));
this.getSpellCard().getSpellAbility().addEffect(new UntapTargetEffect().setText("Untap it"));
this.getSpellCard().getSpellAbility().addTarget(new TargetCreaturePermanent());
this.finalizeAdventure();
}
private SilverflameSquire(final SilverflameSquire card) {

View file

@ -34,6 +34,8 @@ public final class SmittenSwordmaster extends AdventureCard {
// Curry Favor
// You gain X life and each opponent loses X life, where X is the number of Knights you control.
this.getSpellCard().getSpellAbility().addEffect(new CurryFavorEffect());
this.finalizeAdventure();
}
private SmittenSwordmaster(final SmittenSwordmaster card) {

View file

@ -37,6 +37,8 @@ public final class SpellscornCoven extends AdventureCard {
// Return target spell to its owner's hand.
this.getSpellCard().getSpellAbility().addEffect(new ReturnToHandTargetEffect());
this.getSpellCard().getSpellAbility().addTarget(new TargetSpell());
this.finalizeAdventure();
}
private SpellscornCoven(final SpellscornCoven card) {

View file

@ -32,6 +32,8 @@ public final class StormkeldVanguard extends AdventureCard {
// Destroy target artifact or enchantment.
this.getSpellCard().getSpellAbility().addEffect(new DestroyTargetEffect());
this.getSpellCard().getSpellAbility().addTarget(new TargetPermanent(StaticFilters.FILTER_PERMANENT_ARTIFACT_OR_ENCHANTMENT));
this.finalizeAdventure();
}
private StormkeldVanguard(final StormkeldVanguard card) {

View file

@ -43,6 +43,8 @@ public final class SwordCoastSerpent extends AdventureCard {
// Return target creature to its owner's hand.
this.getSpellCard().getSpellAbility().addEffect(new ReturnToHandTargetEffect());
this.getSpellCard().getSpellAbility().addTarget(new TargetCreaturePermanent());
this.finalizeAdventure();
}
private SwordCoastSerpent(final SwordCoastSerpent card) {

View file

@ -46,6 +46,8 @@ public final class TempestHart extends AdventureCard {
// Scan the Clouds
// Draw two cards, then discard two cards.
this.getSpellCard().getSpellAbility().addEffect(new DrawDiscardControllerEffect(2, 2));
this.finalizeAdventure();
}
private TempestHart(final TempestHart card) {

View file

@ -39,6 +39,8 @@ public final class ThreadbindClique extends AdventureCard {
// Destroy target tapped creature.
this.getSpellCard().getSpellAbility().addEffect(new DestroyTargetEffect());
this.getSpellCard().getSpellAbility().addTarget(new TargetPermanent(filter));
this.finalizeAdventure();
}
private ThreadbindClique(final ThreadbindClique card) {

View file

@ -37,6 +37,8 @@ public final class TopazDragon extends AdventureCard {
DeathtouchAbility.getInstance(), Duration.EndOfTurn,
StaticFilters.FILTER_CONTROLLED_CREATURES
));
this.finalizeAdventure();
}
private TopazDragon(final TopazDragon card) {

View file

@ -28,6 +28,8 @@ public final class TuinvaleTreefolk extends AdventureCard {
// Put two +1/+1 counters on target creature.
this.getSpellCard().getSpellAbility().addEffect(new AddCountersTargetEffect(CounterType.P1P1.createInstance(2)));
this.getSpellCard().getSpellAbility().addTarget(new TargetCreaturePermanent());
this.finalizeAdventure();
}
private TuinvaleTreefolk(final TuinvaleTreefolk card) {

View file

@ -51,6 +51,8 @@ public final class TwiningTwins extends AdventureCard {
// Exile target nontoken creature. Return it to the battlefield under its owners control at the beginning of the next end step.
this.getSpellCard().getSpellAbility().addEffect(new TwiningTwinsEffect());
this.getSpellCard().getSpellAbility().addTarget(new TargetCreaturePermanent(StaticFilters.FILTER_CREATURE_NON_TOKEN));
this.finalizeAdventure();
}
private TwiningTwins(final TwiningTwins card) {

View file

@ -40,6 +40,8 @@ public final class TwoHandedAxe extends AdventureCard {
// Target creature you control gains double strike until end of turn.
this.getSpellCard().getSpellAbility().addEffect(new GainAbilityTargetEffect(DoubleStrikeAbility.getInstance()));
this.getSpellCard().getSpellAbility().addTarget(new TargetControlledCreaturePermanent());
this.finalizeAdventure();
}
private TwoHandedAxe(final TwoHandedAxe card) {

View file

@ -31,6 +31,8 @@ public final class TwoHeadedHunter extends AdventureCard {
// Target creature gains double strike until end of turn.
this.getSpellCard().getSpellAbility().addEffect(new GainAbilityTargetEffect(DoubleStrikeAbility.getInstance()));
this.getSpellCard().getSpellAbility().addTarget(new TargetCreaturePermanent());
this.finalizeAdventure();
}
private TwoHeadedHunter(final TwoHeadedHunter card) {

View file

@ -32,6 +32,8 @@ public final class VantressTransmuter extends AdventureCard {
this.getSpellCard().getSpellAbility().addEffect(new CreateRoleAttachedTargetEffect(RoleType.CURSED)
.setText("create a Cursed Role token attached to it"));
this.getSpellCard().getSpellAbility().addTarget(new TargetCreaturePermanent());
this.finalizeAdventure();
}
private VantressTransmuter(final VantressTransmuter card) {

View file

@ -29,6 +29,8 @@ public final class VirtueOfCourage extends AdventureCard {
// Embereth Blaze deals 2 damage to any target.
this.getSpellCard().getSpellAbility().addEffect(new DamageTargetEffect(2));
this.getSpellCard().getSpellAbility().addTarget(new TargetAnyTarget());
this.finalizeAdventure();
}
private VirtueOfCourage(final VirtueOfCourage card) {

View file

@ -34,6 +34,8 @@ public final class VirtueOfKnowledge extends AdventureCard {
// Copy target activated or triggered ability you control. You may choose new targets for the copy.
this.getSpellCard().getSpellAbility().addEffect(new CopyTargetStackAbilityEffect());
this.getSpellCard().getSpellAbility().addTarget(new TargetActivatedOrTriggeredAbility(filter));
this.finalizeAdventure();
}
private VirtueOfKnowledge(final VirtueOfKnowledge card) {

View file

@ -33,6 +33,8 @@ public final class VirtueOfLoyalty extends AdventureCard {
// Ardenvale Fealty
// Create a 2/2 white Knight creature token with vigilance.
this.getSpellCard().getSpellAbility().addEffect(new CreateTokenEffect(new KnightToken()));
this.finalizeAdventure();
}
private VirtueOfLoyalty(final VirtueOfLoyalty card) {

View file

@ -39,6 +39,8 @@ public final class VirtueOfPersistence extends AdventureCard {
this.getSpellCard().getSpellAbility().addTarget(new TargetCreaturePermanent());
this.getSpellCard().getSpellAbility().addEffect(new BoostTargetEffect(-3, -3, Duration.EndOfTurn));
this.getSpellCard().getSpellAbility().addEffect(new GainLifeEffect(2));
this.finalizeAdventure();
}
private VirtueOfPersistence(final VirtueOfPersistence card) {

Some files were not shown because too many files have changed in this diff Show more