[GTC] Fix Wildwood Rebirth and clean up various other cards

This commit is contained in:
Alex W. Jackson 2022-01-01 18:13:03 -05:00
parent 0f0fc3e8b2
commit 587df5db16
12 changed files with 38 additions and 92 deletions

View file

@ -33,7 +33,7 @@ public final class Agoraphobia extends CardImpl {
// Enchant creature
TargetPermanent auraTarget = new TargetCreaturePermanent();
this.getSpellAbility().addTarget(auraTarget);
this.getSpellAbility().addEffect(new AttachEffect(Outcome.AddAbility));
this.getSpellAbility().addEffect(new AttachEffect(Outcome.UnboostCreature));
Ability ability = new EnchantAbility(auraTarget.getTargetName());
this.addAbility(ability);

View file

@ -9,7 +9,7 @@ import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.Duration;
import mage.filter.common.FilterControlledCreaturePermanent;
import mage.filter.StaticFilters;
/**
*
@ -23,7 +23,7 @@ public final class BiomassMutation extends CardImpl {
// Creatures you control have base power and toughness X/X until end of turn.
DynamicValue variableMana = ManacostVariableValue.REGULAR;
this.getSpellAbility().addEffect(new SetPowerToughnessAllEffect(variableMana, variableMana, Duration.EndOfTurn, new FilterControlledCreaturePermanent("Creatures you control"), true));
this.getSpellAbility().addEffect(new SetPowerToughnessAllEffect(variableMana, variableMana, Duration.EndOfTurn, StaticFilters.FILTER_CONTROLLED_CREATURES, true));
}
private BiomassMutation(final BiomassMutation card) {

View file

@ -16,7 +16,7 @@ import mage.constants.CardType;
import mage.constants.SubType;
import mage.constants.SuperType;
import mage.constants.Zone;
import mage.filter.common.FilterLandCard;
import mage.filter.StaticFilters;
import mage.target.common.TargetCardInHand;
import mage.target.common.TargetAnyTarget;
@ -39,10 +39,10 @@ public final class BorborygmosEnraged extends CardImpl {
this.addAbility(TrampleAbility.getInstance());
//Whenever Borborygmous Enraged deals combat damage to a player, reveal the top three cards of your library. Put all land cards revealed this way into your hand and the rest into your graveyard.
this.addAbility(new DealsCombatDamageToAPlayerTriggeredAbility(new RevealLibraryPutIntoHandEffect(3, new FilterLandCard(), Zone.GRAVEYARD), false, false));
this.addAbility(new DealsCombatDamageToAPlayerTriggeredAbility(new RevealLibraryPutIntoHandEffect(3, StaticFilters.FILTER_CARD_LANDS, Zone.GRAVEYARD), false, false));
//Discard a land card: Borborygmos Enraged deals 3 damage to any target
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DamageTargetEffect(3), new DiscardTargetCost(new TargetCardInHand(new FilterLandCard())));
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DamageTargetEffect(3), new DiscardTargetCost(new TargetCardInHand(StaticFilters.FILTER_CARD_LAND_A)));
ability.addTarget(new TargetAnyTarget());
this.addAbility(ability);
}

View file

@ -1,4 +1,3 @@
package mage.cards.c;
import java.util.UUID;
@ -11,10 +10,9 @@ import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.SubType;
import mage.constants.TargetController;
import mage.constants.Zone;
import mage.filter.FilterPermanent;
import mage.filter.common.FilterCreaturePermanent;
import mage.filter.StaticFilters;
import mage.filter.common.FilterControlledCreaturePermanent;
import mage.filter.predicate.mageobject.ColorPredicate;
import mage.filter.predicate.mageobject.AnotherPredicate;
import mage.target.common.TargetCreaturePermanent;
@ -25,13 +23,10 @@ import mage.target.common.TargetCreaturePermanent;
*/
public final class CourtStreetDenizen extends CardImpl {
private static final FilterPermanent filter = new FilterCreaturePermanent("another white creature");
private static final FilterCreaturePermanent filterOpponentCreature = new FilterCreaturePermanent("creature an opponent controls");
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("another white creature");
static {
filter.add(AnotherPredicate.instance);
filter.add(new ColorPredicate(ObjectColor.WHITE));
filter.add(TargetController.YOU.getControllerPredicate());
filterOpponentCreature.add(TargetController.OPPONENT.getControllerPredicate());
}
public CourtStreetDenizen(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{W}");
@ -42,8 +37,8 @@ public final class CourtStreetDenizen extends CardImpl {
this.toughness = new MageInt(2);
// Whenever another white creature enters the battlefield under your control, tap target creature an opponent controls.
Ability ability = new EntersBattlefieldAllTriggeredAbility(Zone.BATTLEFIELD, new TapTargetEffect(),filter,false,null, true);
ability.addTarget(new TargetCreaturePermanent(filterOpponentCreature));
Ability ability = new EntersBattlefieldAllTriggeredAbility(Zone.BATTLEFIELD, new TapTargetEffect(), filter, false, null, true);
ability.addTarget(new TargetCreaturePermanent(StaticFilters.FILTER_OPPONENTS_PERMANENT_CREATURE));
this.addAbility(ability);
}

View file

@ -1,17 +1,15 @@
package mage.cards.d;
import mage.MageInt;
import mage.abilities.Ability;
import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.effects.RestrictionEffect;
import mage.abilities.common.SimpleEvasionAbility;
import mage.abilities.effects.common.combat.CantBeBlockedByCreaturesSourceEffect;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.Duration;
import mage.constants.SubType;
import mage.constants.Zone;
import mage.game.Game;
import mage.game.permanent.Permanent;
import mage.filter.common.FilterCreaturePermanent;
import mage.filter.predicate.Predicates;
import java.util.UUID;
@ -20,6 +18,12 @@ import java.util.UUID;
*/
public final class DeathcultRogue extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("except by Rogues");
static {
filter.add(Predicates.not(SubType.ROGUE.getPredicate()));
}
public DeathcultRogue(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{U/B}{U/B}");
this.subtype.add(SubType.HUMAN);
@ -29,7 +33,7 @@ public final class DeathcultRogue extends CardImpl {
this.toughness = new MageInt(2);
// Deathcult Rogue can't be blocked except by Rogues.
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new DeathcultRogueRestrictionEffect()));
this.addAbility(new SimpleEvasionAbility(new CantBeBlockedByCreaturesSourceEffect(filter, Duration.WhileOnBattlefield)));
}
@ -42,30 +46,3 @@ public final class DeathcultRogue extends CardImpl {
return new DeathcultRogue(this);
}
}
class DeathcultRogueRestrictionEffect extends RestrictionEffect {
public DeathcultRogueRestrictionEffect() {
super(Duration.WhileOnBattlefield);
staticText = "Deathcult Rogue can't be blocked except by Rogues";
}
public DeathcultRogueRestrictionEffect(final DeathcultRogueRestrictionEffect effect) {
super(effect);
}
@Override
public boolean applies(Permanent permanent, Ability source, Game game) {
return permanent.getId().equals(source.getSourceId());
}
@Override
public boolean canBeBlocked(Permanent attacker, Permanent blocker, Ability source, Game game, boolean canUseChooseDialogs) {
return blocker.hasSubtype(SubType.ROGUE, game);
}
@Override
public DeathcultRogueRestrictionEffect copy() {
return new DeathcultRogueRestrictionEffect(this);
}
}

View file

@ -1,4 +1,3 @@
package mage.cards.f;
import java.util.UUID;
@ -11,10 +10,8 @@ import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.SubType;
import mage.constants.Duration;
import mage.constants.TargetController;
import mage.constants.Zone;
import mage.filter.FilterPermanent;
import mage.filter.common.FilterCreaturePermanent;
import mage.filter.common.FilterControlledCreaturePermanent;
import mage.filter.predicate.mageobject.ColorPredicate;
import mage.filter.predicate.mageobject.AnotherPredicate;
@ -24,10 +21,9 @@ import mage.filter.predicate.mageobject.AnotherPredicate;
*/
public final class FoundryStreetDenizen extends CardImpl {
private static final FilterPermanent filter = new FilterCreaturePermanent("another red creature");
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("another red creature");
static {
filter.add(AnotherPredicate.instance);
filter.add(TargetController.YOU.getControllerPredicate());
filter.add(new ColorPredicate(ObjectColor.RED));
}

View file

@ -1,4 +1,3 @@
package mage.cards.h;
import java.util.UUID;
@ -9,7 +8,7 @@ import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.TargetController;
import mage.filter.common.FilterCreaturePermanent;
import mage.filter.StaticFilters;
import mage.target.common.TargetCreaturePermanent;
/**
@ -18,23 +17,15 @@ import mage.target.common.TargetCreaturePermanent;
*/
public final class HandsOfBinding extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature an opponent controls");
static{
filter.add(TargetController.OPPONENT.getControllerPredicate());
}
public HandsOfBinding (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{1}{U}");
//Tap target creature an opponent controls. That creature doesn't untap during its controller's next untap step.
this.getSpellAbility().addEffect(new TapTargetEffect());
this.getSpellAbility().addEffect(new DontUntapInControllersNextUntapStepTargetEffect());
this.getSpellAbility().addTarget(new TargetCreaturePermanent(filter));
this.getSpellAbility().addTarget(new TargetCreaturePermanent(StaticFilters.FILTER_OPPONENTS_PERMANENT_CREATURE));
//Cipher
this.getSpellAbility().addEffect(new CipherEffect());
}
private HandsOfBinding(final HandsOfBinding card) {
@ -42,7 +33,7 @@ public final class HandsOfBinding extends CardImpl {
}
@Override
public HandsOfBinding copy() {
public HandsOfBinding copy() {
return new HandsOfBinding(this);
}
}

View file

@ -1,4 +1,3 @@
package mage.cards.i;
import java.util.UUID;
@ -26,8 +25,8 @@ public final class IvyLaneDenizen extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("another green creature");
static {
filter.add(new ColorPredicate(ObjectColor.GREEN));
filter.add(AnotherPredicate.instance);
filter.add(new ColorPredicate(ObjectColor.GREEN));
}
public IvyLaneDenizen(UUID ownerId, CardSetInfo setInfo) {

View file

@ -1,4 +1,3 @@
package mage.cards.m;
import java.util.UUID;
@ -12,7 +11,7 @@ import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.Duration;
import mage.constants.Outcome;
import mage.constants.TargetController;
import mage.filter.StaticFilters;
import mage.filter.common.FilterCreaturePermanent;
import mage.filter.predicate.Predicates;
import mage.filter.predicate.mageobject.CardIdPredicate;
@ -28,19 +27,12 @@ import mage.target.targetpointer.FixedTarget;
*/
public final class MarkForDeath extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature an opponent controls");
static {
filter.add(TargetController.OPPONENT.getControllerPredicate());
}
public MarkForDeath(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{3}{R}");
// Target creature an opponent controls blocks this turn if able. Untap that creature. Other creatures that player controls can't block this turn.
this.getSpellAbility().addEffect(new MarkForDeathEffect());
this.getSpellAbility().addTarget(new TargetCreaturePermanent(filter));
this.getSpellAbility().addTarget(new TargetCreaturePermanent(StaticFilters.FILTER_OPPONENTS_PERMANENT_CREATURE));
}
private MarkForDeath(final MarkForDeath card) {

View file

@ -1,4 +1,3 @@
package mage.cards.s;
import java.util.UUID;
@ -11,9 +10,8 @@ import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.SubType;
import mage.constants.TargetController;
import mage.constants.Zone;
import mage.filter.common.FilterCreaturePermanent;
import mage.filter.common.FilterControlledCreaturePermanent;
import mage.filter.predicate.mageobject.ColorPredicate;
import mage.filter.predicate.mageobject.AnotherPredicate;
import mage.target.TargetPlayer;
@ -24,12 +22,11 @@ import mage.target.TargetPlayer;
*/
public final class SagesRowDenizen extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("another blue creature");
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("another blue creature");
static {
filter.add(new ColorPredicate(ObjectColor.BLUE));
filter.add(AnotherPredicate.instance);
filter.add(TargetController.YOU.getControllerPredicate());
filter.add(new ColorPredicate(ObjectColor.BLUE));
}
public SagesRowDenizen(UUID ownerId, CardSetInfo setInfo) {

View file

@ -1,4 +1,3 @@
package mage.cards.s;
import java.util.UUID;
@ -28,8 +27,8 @@ public final class ShadowAlleyDenizen extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("another black creature");
static {
filter.add(new ColorPredicate(ObjectColor.BLACK));
filter.add(AnotherPredicate.instance);
filter.add(new ColorPredicate(ObjectColor.BLACK));
}
public ShadowAlleyDenizen(UUID ownerId, CardSetInfo setInfo) {

View file

@ -1,10 +1,10 @@
package mage.cards.w;
import mage.abilities.effects.common.ReturnFromGraveyardToHandTargetEffect;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.filter.StaticFilters;
import mage.target.common.TargetCardInYourGraveyard;
import java.util.UUID;
@ -19,7 +19,7 @@ public final class WildwoodRebirth extends CardImpl {
// Return target creature card from your graveyard to your hand.
this.getSpellAbility().addEffect(new ReturnFromGraveyardToHandTargetEffect());
this.getSpellAbility().addTarget(new TargetCardInYourGraveyard());
this.getSpellAbility().addTarget(new TargetCardInYourGraveyard(StaticFilters.FILTER_CARD_CREATURE_YOUR_GRAVEYARD));
}
private WildwoodRebirth(final WildwoodRebirth card) {