mirror of
https://github.com/correl/mage.git
synced 2024-11-24 19:19:56 +00:00
[LRW] various text fixes
This commit is contained in:
parent
605e7a7e50
commit
50b3d3d8d9
43 changed files with 318 additions and 339 deletions
|
@ -45,8 +45,8 @@ public final class Benthicore extends CardImpl {
|
|||
this.addAbility(new EntersBattlefieldTriggeredAbility(new CreateTokenEffect(new MerfolkWizardToken(), 2), false));
|
||||
|
||||
// Tap two untapped Merfolk you control: Untap Benthicore. It gains shroud until end of turn.
|
||||
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new UntapSourceEffect(), new TapTargetCost(new TargetControlledPermanent(2, 2, filter, false)));
|
||||
ability.addEffect(new GainAbilitySourceEffect(ShroudAbility.getInstance(), Duration.EndOfTurn));
|
||||
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new UntapSourceEffect(), new TapTargetCost(new TargetControlledPermanent(2, filter)));
|
||||
ability.addEffect(new GainAbilitySourceEffect(ShroudAbility.getInstance(), Duration.EndOfTurn).setText("it gains shroud until end of turn"));
|
||||
this.addAbility(ability);
|
||||
}
|
||||
|
||||
|
|
|
@ -1,8 +1,6 @@
|
|||
|
||||
package mage.cards.b;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.abilities.effects.common.ReturnToHandTargetEffect;
|
||||
import mage.abilities.effects.common.ReturnFromGraveyardToHandTargetEffect;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
|
@ -10,8 +8,9 @@ import mage.constants.SubType;
|
|||
import mage.filter.FilterCard;
|
||||
import mage.target.common.TargetCardInYourGraveyard;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author Loki
|
||||
*/
|
||||
public final class BoggartBirthRite extends CardImpl {
|
||||
|
@ -23,10 +22,10 @@ public final class BoggartBirthRite extends CardImpl {
|
|||
}
|
||||
|
||||
public BoggartBirthRite(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId,setInfo,new CardType[]{CardType.TRIBAL,CardType.SORCERY},"{B}");
|
||||
super(ownerId, setInfo, new CardType[]{CardType.TRIBAL, CardType.SORCERY}, "{B}");
|
||||
this.subtype.add(SubType.GOBLIN);
|
||||
|
||||
this.getSpellAbility().addEffect(new ReturnToHandTargetEffect());
|
||||
this.getSpellAbility().addEffect(new ReturnFromGraveyardToHandTargetEffect());
|
||||
this.getSpellAbility().addTarget(new TargetCardInYourGraveyard(filter));
|
||||
}
|
||||
|
||||
|
|
|
@ -1,7 +1,5 @@
|
|||
|
||||
package mage.cards.b;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.common.DiesCreatureTriggeredAbility;
|
||||
import mage.abilities.effects.common.DamageTargetEffect;
|
||||
|
@ -9,21 +7,22 @@ import mage.cards.CardImpl;
|
|||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.SubType;
|
||||
import mage.constants.TargetController;
|
||||
import mage.filter.common.FilterCreaturePermanent;
|
||||
import mage.filter.FilterPermanent;
|
||||
import mage.filter.common.FilterControlledPermanent;
|
||||
import mage.filter.predicate.mageobject.AnotherPredicate;
|
||||
import mage.target.common.TargetPlayerOrPlaneswalker;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author LevelX2
|
||||
*/
|
||||
public final class BoggartShenanigans extends CardImpl {
|
||||
|
||||
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("another Goblin you control");
|
||||
private static final FilterPermanent filter = new FilterControlledPermanent(SubType.GOBLIN);
|
||||
|
||||
static {
|
||||
filter.add(TargetController.YOU.getControllerPredicate());
|
||||
filter.add(SubType.GOBLIN.getPredicate());
|
||||
filter.add(AnotherPredicate.instance);
|
||||
}
|
||||
|
||||
public BoggartShenanigans(UUID ownerId, CardSetInfo setInfo) {
|
||||
|
@ -31,7 +30,9 @@ public final class BoggartShenanigans extends CardImpl {
|
|||
this.subtype.add(SubType.GOBLIN);
|
||||
|
||||
// Whenever another Goblin you control dies, you may have Boggart Shenanigans deal 1 damage to target player.
|
||||
Ability ability = new DiesCreatureTriggeredAbility(new DamageTargetEffect(1), true, filter, false);
|
||||
Ability ability = new DiesCreatureTriggeredAbility(
|
||||
new DamageTargetEffect(1), true, filter, false
|
||||
).setTriggerPhrase("Whenever another Goblin you control is put into a graveyard from the battlefield, ");
|
||||
ability.addTarget(new TargetPlayerOrPlaneswalker());
|
||||
this.addAbility(ability);
|
||||
}
|
||||
|
|
|
@ -1,7 +1,5 @@
|
|||
|
||||
package mage.cards.b;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.MageInt;
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.common.SimpleActivatedAbility;
|
||||
|
@ -14,25 +12,22 @@ import mage.abilities.effects.common.DamageTargetEffect;
|
|||
import mage.abilities.keyword.LifelinkAbility;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.*;
|
||||
import mage.filter.common.FilterControlledCreaturePermanent;
|
||||
import mage.filter.predicate.mageobject.AnotherPredicate;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.Outcome;
|
||||
import mage.constants.SubType;
|
||||
import mage.constants.SuperType;
|
||||
import mage.filter.StaticFilters;
|
||||
import mage.game.Game;
|
||||
import mage.target.common.TargetControlledCreaturePermanent;
|
||||
import mage.target.common.TargetControlledPermanent;
|
||||
import mage.target.common.TargetPlayerOrPlaneswalker;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author LevelX2
|
||||
*/
|
||||
public final class BrionStoutarm extends CardImpl {
|
||||
|
||||
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("creature other than Brion Stoutarm");
|
||||
|
||||
static {
|
||||
filter.add(AnotherPredicate.instance);
|
||||
}
|
||||
|
||||
public BrionStoutarm(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{R}{W}");
|
||||
addSuperType(SuperType.LEGENDARY);
|
||||
|
@ -43,10 +38,11 @@ public final class BrionStoutarm extends CardImpl {
|
|||
|
||||
// Lifelink
|
||||
this.addAbility(LifelinkAbility.getInstance());
|
||||
|
||||
// {R}, {tap}, Sacrifice a creature other than Brion Stoutarm: Brion Stoutarm deals damage equal to the sacrificed creature's power to target player.
|
||||
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new BrionStoutarmEffect(), new ManaCostsImpl("{R}"));
|
||||
Ability ability = new SimpleActivatedAbility(new BrionStoutarmEffect(), new ManaCostsImpl<>("{R}"));
|
||||
ability.addCost(new TapSourceCost());
|
||||
ability.addCost(new SacrificeTargetCost(new TargetControlledCreaturePermanent(1, 1, filter, true)));
|
||||
ability.addCost(new SacrificeTargetCost(new TargetControlledPermanent(StaticFilters.FILTER_CONTROLLED_ANOTHER_CREATURE)));
|
||||
ability.addTarget(new TargetPlayerOrPlaneswalker());
|
||||
this.addAbility(ability);
|
||||
}
|
||||
|
|
|
@ -1,53 +1,45 @@
|
|||
|
||||
package mage.cards.c;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.MageInt;
|
||||
import mage.abilities.common.SimpleStaticAbility;
|
||||
import mage.abilities.effects.common.continuous.GainAbilityAllEffect;
|
||||
import mage.abilities.effects.common.continuous.GainAbilityControlledEffect;
|
||||
import mage.abilities.keyword.MenaceAbility;
|
||||
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.filter.FilterPermanent;
|
||||
import mage.filter.common.FilterControlledCreaturePermanent;
|
||||
import mage.filter.predicate.Predicates;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author LevelX2
|
||||
*/
|
||||
public final class CaterwaulingBoggart extends CardImpl {
|
||||
|
||||
private static final FilterPermanent filterGoblin = new FilterControlledCreaturePermanent("Goblin");
|
||||
private static final FilterPermanent filterElemental = new FilterControlledCreaturePermanent("Elemental");
|
||||
private static final FilterPermanent filter = new FilterPermanent("Goblins you control and Elementals");
|
||||
|
||||
static {
|
||||
filterGoblin.add(SubType.GOBLIN.getPredicate());
|
||||
filterElemental.add(SubType.ELEMENTAL.getPredicate());
|
||||
filter.add(Predicates.or(
|
||||
SubType.GOBLIN.getPredicate(),
|
||||
SubType.ELEMENTAL.getPredicate()
|
||||
));
|
||||
}
|
||||
|
||||
public CaterwaulingBoggart(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{R}");
|
||||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{R}");
|
||||
this.subtype.add(SubType.GOBLIN);
|
||||
this.subtype.add(SubType.SHAMAN);
|
||||
|
||||
this.power = new MageInt(2);
|
||||
this.toughness = new MageInt(2);
|
||||
|
||||
// Each Goblin you control has menace. (They can't be blocked except by two or more creatures.)
|
||||
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new GainAbilityAllEffect(
|
||||
new MenaceAbility(),
|
||||
Duration.WhileOnBattlefield, filterGoblin,
|
||||
"Each Goblin you control has menace. (They can't be blocked except by two or more creatures.)")));
|
||||
|
||||
// Each Elemental you control has menace. (They can't be blocked except by two or more creatures.)
|
||||
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new GainAbilityAllEffect(
|
||||
new MenaceAbility(),
|
||||
Duration.WhileOnBattlefield, filterElemental,
|
||||
"Each Elemental you control has menace. (They can't be blocked except by two or more creatures.)")));
|
||||
// Goblins you control and Elementals you control have menace.
|
||||
this.addAbility(new SimpleStaticAbility(new GainAbilityControlledEffect(
|
||||
new MenaceAbility(false), Duration.WhileOnBattlefield, filter
|
||||
)));
|
||||
}
|
||||
|
||||
private CaterwaulingBoggart(final CaterwaulingBoggart card) {
|
||||
|
|
|
@ -42,7 +42,7 @@ public final class Cloudthresher extends CardImpl {
|
|||
this.addAbility(ReachAbility.getInstance());
|
||||
// When Cloudthresher enters the battlefield, it deals 2 damage to each creature with flying and each player.
|
||||
Ability ability = new EntersBattlefieldTriggeredAbility(new DamageAllEffect(2, "it", filter));
|
||||
ability.addEffect(new DamagePlayersEffect(2));
|
||||
ability.addEffect(new DamagePlayersEffect(2).setText("and each player"));
|
||||
this.addAbility(ability);
|
||||
// Evoke {2}{G}{G}
|
||||
this.addAbility(new EvokeAbility("{2}{G}{G}"));
|
||||
|
|
|
@ -44,7 +44,7 @@ public final class ColfenorsUrn extends CardImpl {
|
|||
new ExileTargetForSourceEffect().setText("exile it"), true, filter, true, true));
|
||||
|
||||
// At the beginning of the end step, if three or more cards have been exiled with Colfenor's Urn, sacrifice it. If you do, return those cards to the battlefield under their owner's control.
|
||||
this.addAbility(new BeginningOfEndStepTriggeredAbility(Zone.BATTLEFIELD, new ColfenorsUrnEffect(), TargetController.ANY, new ColfenorsUrnCondition(), false));
|
||||
this.addAbility(new BeginningOfEndStepTriggeredAbility(Zone.BATTLEFIELD, new ColfenorsUrnEffect(), TargetController.NEXT, new ColfenorsUrnCondition(), false));
|
||||
}
|
||||
|
||||
private ColfenorsUrn(final ColfenorsUrn card) {
|
||||
|
|
|
@ -13,7 +13,6 @@ import mage.game.permanent.Permanent;
|
|||
import mage.target.TargetPlayer;
|
||||
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
|
@ -28,9 +27,8 @@ public final class EgoErasure extends CardImpl {
|
|||
// Changeling
|
||||
this.addAbility(new ChangelingAbility());
|
||||
|
||||
//Creatures target player controls get -2/+0 and lose all creature types until end of turn.
|
||||
this.getSpellAbility().addEffect(new EgoErasureBoostEffect());
|
||||
this.getSpellAbility().addEffect(new EgoErasureLoseEffect());
|
||||
// Creatures target player controls get -2/+0 and lose all creature types until end of turn.
|
||||
this.getSpellAbility().addEffect(new EgoErasureEffect());
|
||||
this.getSpellAbility().addTarget(new TargetPlayer());
|
||||
}
|
||||
|
||||
|
@ -44,84 +42,67 @@ public final class EgoErasure extends CardImpl {
|
|||
}
|
||||
}
|
||||
|
||||
class EgoErasureLoseEffect extends ContinuousEffectImpl {
|
||||
class EgoErasureEffect extends ContinuousEffectImpl {
|
||||
|
||||
public EgoErasureLoseEffect() {
|
||||
super(Duration.EndOfTurn, Layer.TypeChangingEffects_4, SubLayer.NA, Outcome.Neutral);
|
||||
staticText = "and lose all creature types until end of turn";
|
||||
public EgoErasureEffect() {
|
||||
super(Duration.EndOfTurn, Outcome.Neutral);
|
||||
staticText = "creatures target player controls get -2/-0 and lose all creature types until end of turn";
|
||||
}
|
||||
|
||||
public EgoErasureLoseEffect(final EgoErasureLoseEffect effect) {
|
||||
public EgoErasureEffect(final EgoErasureEffect effect) {
|
||||
super(effect);
|
||||
}
|
||||
|
||||
@Override
|
||||
public EgoErasureLoseEffect copy() {
|
||||
return new EgoErasureLoseEffect(this);
|
||||
public EgoErasureEffect copy() {
|
||||
return new EgoErasureEffect(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void init(Ability source, Game game) {
|
||||
super.init(source, game);
|
||||
if (this.affectedObjectsSet) {
|
||||
List<Permanent> creatures = game.getBattlefield().getAllActivePermanents(StaticFilters.FILTER_PERMANENT_CREATURE, source.getFirstTarget(), game);
|
||||
for (Permanent creature : creatures) {
|
||||
affectedObjectList.add(new MageObjectReference(creature, game));
|
||||
game.getBattlefield()
|
||||
.getActivePermanents(
|
||||
StaticFilters.FILTER_CONTROLLED_CREATURE,
|
||||
source.getFirstTarget(), source.getSourceId(), game
|
||||
).stream()
|
||||
.map(permanent -> new MageObjectReference(permanent, game))
|
||||
.forEach(affectedObjectList::add);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean apply(Layer layer, SubLayer sublayer, Ability source, Game game) {
|
||||
for (Iterator<MageObjectReference> it = affectedObjectList.iterator(); it.hasNext(); ) {
|
||||
Permanent permanent = it.next().getPermanent(game);
|
||||
if (permanent == null) {
|
||||
it.remove();
|
||||
continue;
|
||||
}
|
||||
switch (layer) {
|
||||
case TypeChangingEffects_4:
|
||||
permanent.removeAllCreatureTypes(game);
|
||||
break;
|
||||
case PTChangingEffects_7:
|
||||
if (sublayer == SubLayer.ModifyPT_7c) {
|
||||
permanent.addPower(-2);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (affectedObjectList.isEmpty()) {
|
||||
discard();
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean apply(Game game, Ability source) {
|
||||
for (Iterator<MageObjectReference> it = affectedObjectList.iterator(); it.hasNext(); ) {
|
||||
Permanent permanent = it.next().getPermanent(game);
|
||||
if (permanent != null) {
|
||||
permanent.removeAllCreatureTypes(game);
|
||||
} else {
|
||||
it.remove();
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
class EgoErasureBoostEffect extends ContinuousEffectImpl {
|
||||
|
||||
public EgoErasureBoostEffect() {
|
||||
super(Duration.EndOfTurn, Layer.PTChangingEffects_7, SubLayer.ModifyPT_7c, Outcome.Benefit);
|
||||
staticText = "Creatures target player controls get -2/+0";
|
||||
}
|
||||
|
||||
public EgoErasureBoostEffect(final EgoErasureBoostEffect effect) {
|
||||
super(effect);
|
||||
}
|
||||
|
||||
@Override
|
||||
public EgoErasureBoostEffect copy() {
|
||||
return new EgoErasureBoostEffect(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void init(Ability source, Game game) {
|
||||
super.init(source, game);
|
||||
if (this.affectedObjectsSet) {
|
||||
List<Permanent> creatures = game.getBattlefield().getAllActivePermanents(StaticFilters.FILTER_PERMANENT_CREATURE, source.getFirstTarget(), game);
|
||||
for (Permanent creature : creatures) {
|
||||
affectedObjectList.add(new MageObjectReference(creature, game));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean apply(Game game, Ability source) {
|
||||
for (Iterator<MageObjectReference> it = affectedObjectList.iterator(); it.hasNext(); ) {
|
||||
Permanent permanent = it.next().getPermanent(game);
|
||||
if (permanent != null) {
|
||||
permanent.addPower(-2);
|
||||
} else {
|
||||
it.remove();
|
||||
}
|
||||
}
|
||||
return true;
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean hasLayer(Layer layer) {
|
||||
return layer == Layer.TypeChangingEffects_4 || layer == Layer.PTChangingEffects_7;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -18,7 +18,7 @@ import mage.filter.FilterSpell;
|
|||
*/
|
||||
public final class ElvishHandservant extends CardImpl {
|
||||
|
||||
private static final FilterSpell filter = new FilterSpell("Giant");
|
||||
private static final FilterSpell filter = new FilterSpell("Giant spell");
|
||||
|
||||
static {
|
||||
filter.add(SubType.GIANT.getPredicate());
|
||||
|
|
|
@ -1,7 +1,5 @@
|
|||
|
||||
package mage.cards.e;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.common.SimpleStaticAbility;
|
||||
import mage.abilities.effects.common.AttachEffect;
|
||||
|
@ -16,24 +14,30 @@ import mage.constants.*;
|
|||
import mage.target.TargetPermanent;
|
||||
import mage.target.common.TargetCreaturePermanent;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author Loki
|
||||
*/
|
||||
public final class EpicProportions extends CardImpl {
|
||||
|
||||
public EpicProportions(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{4}{G}{G}");
|
||||
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{4}{G}{G}");
|
||||
this.subtype.add(SubType.AURA);
|
||||
|
||||
this.addAbility(FlashAbility.getInstance());
|
||||
TargetPermanent auraTarget = new TargetCreaturePermanent();
|
||||
this.getSpellAbility().addTarget(auraTarget);
|
||||
this.getSpellAbility().addEffect(new AttachEffect(Outcome.BoostCreature));
|
||||
Ability ability = new EnchantAbility(auraTarget.getTargetName());
|
||||
this.addAbility(new EnchantAbility(auraTarget.getTargetName()));
|
||||
|
||||
Ability ability = new SimpleStaticAbility(new BoostEnchantedEffect(
|
||||
5, 5, Duration.WhileOnBattlefield
|
||||
));
|
||||
ability.addEffect(new GainAbilityAttachedEffect(
|
||||
TrampleAbility.getInstance(), AttachmentType.AURA
|
||||
).setText("and has trample"));
|
||||
this.addAbility(ability);
|
||||
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new BoostEnchantedEffect(5, 5, Duration.WhileOnBattlefield)));
|
||||
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new GainAbilityAttachedEffect(TrampleAbility.getInstance(), AttachmentType.AURA)));
|
||||
}
|
||||
|
||||
private EpicProportions(final EpicProportions card) {
|
||||
|
|
|
@ -1,7 +1,5 @@
|
|||
|
||||
package mage.cards.f;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.abilities.Mode;
|
||||
import mage.abilities.effects.common.continuous.BoostAllEffect;
|
||||
import mage.cards.CardImpl;
|
||||
|
@ -10,8 +8,9 @@ import mage.constants.CardType;
|
|||
import mage.constants.Duration;
|
||||
import mage.filter.StaticFilters;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author Loki
|
||||
*/
|
||||
public final class FinalRevels extends CardImpl {
|
||||
|
@ -19,10 +18,14 @@ public final class FinalRevels extends CardImpl {
|
|||
public FinalRevels(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{4}{B}");
|
||||
|
||||
this.getSpellAbility().addEffect(new BoostAllEffect(2, 0, Duration.EndOfTurn, StaticFilters.FILTER_PERMANENT_CREATURE, false));
|
||||
Mode mode = new Mode();
|
||||
mode.addEffect(new BoostAllEffect(0, -2, Duration.EndOfTurn, StaticFilters.FILTER_PERMANENT_CREATURE, false));
|
||||
this.getSpellAbility().addMode(mode);
|
||||
this.getSpellAbility().addEffect(new BoostAllEffect(
|
||||
2, 0, Duration.EndOfTurn,
|
||||
StaticFilters.FILTER_PERMANENT_ALL_CREATURES, false
|
||||
));
|
||||
this.getSpellAbility().addMode(new Mode(new BoostAllEffect(
|
||||
0, -2, Duration.EndOfTurn,
|
||||
StaticFilters.FILTER_PERMANENT_ALL_CREATURES, false
|
||||
)));
|
||||
}
|
||||
|
||||
private FinalRevels(final FinalRevels card) {
|
||||
|
|
|
@ -36,7 +36,7 @@ public final class FlamekinBladewhirl extends CardImpl {
|
|||
this.getSpellAbility().addCost(new OrCost(
|
||||
new RevealTargetFromHandCost(new TargetCardInHand(filter)),
|
||||
new GenericManaCost(3),
|
||||
"reveal a Elemental card from your hand or pay {3}"));
|
||||
"reveal an Elemental card from your hand or pay {3}"));
|
||||
}
|
||||
|
||||
private FlamekinBladewhirl(final FlamekinBladewhirl card) {
|
||||
|
|
|
@ -29,7 +29,7 @@ public final class FodderLaunch extends CardImpl {
|
|||
//Target creature gets -5/-5 until end of turn. Fodder Launch deals 5 damage to that creature's controller.
|
||||
this.getSpellAbility().addEffect(new BoostTargetEffect(-5, -5, Duration.EndOfTurn));
|
||||
this.getSpellAbility().addTarget(new TargetCreaturePermanent());
|
||||
this.getSpellAbility().addEffect(new DamageTargetControllerEffect(5));
|
||||
this.getSpellAbility().addEffect(new DamageTargetControllerEffect(5).setText("{this} deals 5 damage to that creature's controller"));
|
||||
}
|
||||
|
||||
private FodderLaunch(final FodderLaunch card) {
|
||||
|
|
|
@ -23,7 +23,7 @@ public final class FootbottomFeast extends CardImpl {
|
|||
this.getSpellAbility().addTarget(new TargetCardInYourGraveyard(0, Integer.MAX_VALUE, StaticFilters.FILTER_CARD_CREATURES_YOUR_GRAVEYARD));
|
||||
|
||||
// Draw a card.
|
||||
this.getSpellAbility().addEffect(new DrawCardSourceControllerEffect(1));
|
||||
this.getSpellAbility().addEffect(new DrawCardSourceControllerEffect(1).concatBy("<br>"));
|
||||
}
|
||||
|
||||
private FootbottomFeast(final FootbottomFeast card) {
|
||||
|
|
|
@ -23,7 +23,7 @@ public final class ForcedFruition extends CardImpl {
|
|||
|
||||
// Whenever an opponent casts a spell, that player draws seven cards.
|
||||
this.addAbility(new SpellCastOpponentTriggeredAbility(Zone.BATTLEFIELD, new DrawCardTargetEffect(7),
|
||||
StaticFilters.FILTER_SPELL, false, SetTargetPointer.PLAYER));
|
||||
StaticFilters.FILTER_SPELL_A, false, SetTargetPointer.PLAYER));
|
||||
}
|
||||
|
||||
private ForcedFruition(final ForcedFruition card) {
|
||||
|
|
|
@ -29,7 +29,7 @@ public final class GiltLeafPalace extends CardImpl {
|
|||
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
|
||||
|
||||
// As Gilt-Leaf Palace enters the battlefield, you may reveal an Elf card from your hand. If you don't, Gilt-Leaf Palace enters the battlefield tapped.
|
||||
this.addAbility(new AsEntersBattlefieldAbility(new TapSourceUnlessPaysEffect(new RevealTargetFromHandCost(new TargetCardInHand(filter))), "you may reveal a Elf card from your hand. If you don't, {this} enters the battlefield tapped"));
|
||||
this.addAbility(new AsEntersBattlefieldAbility(new TapSourceUnlessPaysEffect(new RevealTargetFromHandCost(new TargetCardInHand(filter))), "you may reveal an Elf card from your hand. If you don't, {this} enters the battlefield tapped"));
|
||||
// {tap}: Add {B} or {G}.
|
||||
this.addAbility(new BlackManaAbility());
|
||||
this.addAbility(new GreenManaAbility());
|
||||
|
|
|
@ -28,7 +28,7 @@ import mage.target.common.TargetCreaturePermanent;
|
|||
public final class HearthcageGiant extends CardImpl {
|
||||
|
||||
private static final FilterControlledPermanent filterElemental = new FilterControlledPermanent("Elemental");
|
||||
private static final FilterCreaturePermanent filterGiant = new FilterCreaturePermanent("Giant");
|
||||
private static final FilterCreaturePermanent filterGiant = new FilterCreaturePermanent("Giant creature");
|
||||
|
||||
static {
|
||||
filterElemental.add(SubType.ELEMENTAL.getPredicate());
|
||||
|
|
|
@ -1,7 +1,5 @@
|
|||
|
||||
package mage.cards.i;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.MageInt;
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.common.EntersBattlefieldTriggeredAbility;
|
||||
|
@ -12,12 +10,13 @@ import mage.abilities.keyword.HasteAbility;
|
|||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.SubType;
|
||||
import mage.constants.Duration;
|
||||
import mage.constants.SubType;
|
||||
import mage.target.common.TargetCreaturePermanent;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author LevelX2
|
||||
*/
|
||||
public final class InnerFlameAcolyte extends CardImpl {
|
||||
|
@ -31,9 +30,12 @@ public final class InnerFlameAcolyte extends CardImpl {
|
|||
this.toughness = new MageInt(2);
|
||||
|
||||
// When Inner-Flame Acolyte enters the battlefield, target creature gets +2/+0 and gains haste until end of turn.
|
||||
Ability ability = new EntersBattlefieldTriggeredAbility(new BoostTargetEffect(2, 0, Duration.EndOfTurn));
|
||||
ability.addEffect(new GainAbilityTargetEffect(HasteAbility.getInstance(), Duration.EndOfTurn)
|
||||
.setText("and gains haste until end of turn"));
|
||||
Ability ability = new EntersBattlefieldTriggeredAbility(new BoostTargetEffect(
|
||||
2, 0, Duration.EndOfTurn
|
||||
).setText("target creature gets +2/+0"));
|
||||
ability.addEffect(new GainAbilityTargetEffect(
|
||||
HasteAbility.getInstance(), Duration.EndOfTurn
|
||||
).setText("and gains haste until end of turn"));
|
||||
ability.addTarget(new TargetCreaturePermanent());
|
||||
this.addAbility(ability);
|
||||
|
||||
|
|
|
@ -1,10 +1,9 @@
|
|||
|
||||
package mage.cards.k;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.MageInt;
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.common.SimpleStaticAbility;
|
||||
import mage.abilities.condition.Condition;
|
||||
import mage.abilities.condition.common.PermanentsOnTheBattlefieldCondition;
|
||||
import mage.abilities.decorator.ConditionalContinuousEffect;
|
||||
import mage.abilities.effects.common.continuous.BoostSourceEffect;
|
||||
|
@ -12,43 +11,46 @@ import mage.abilities.effects.common.continuous.GainAbilitySourceEffect;
|
|||
import mage.abilities.keyword.FirstStrikeAbility;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.*;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.Duration;
|
||||
import mage.constants.SubType;
|
||||
import mage.constants.TargetController;
|
||||
import mage.filter.common.FilterCreaturePermanent;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author LevelX2
|
||||
*/
|
||||
public final class KithkinGreatheart extends CardImpl {
|
||||
|
||||
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Giant");
|
||||
|
||||
static {
|
||||
filter.add(TargetController.YOU.getControllerPredicate());
|
||||
filter.add(SubType.GIANT.getPredicate());
|
||||
}
|
||||
private static final String rule2 = "As long as you control a Giant, {this} has first strike";
|
||||
|
||||
private static final Condition condition = new PermanentsOnTheBattlefieldCondition(filter);
|
||||
|
||||
public KithkinGreatheart(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}");
|
||||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{W}");
|
||||
this.subtype.add(SubType.KITHKIN);
|
||||
this.subtype.add(SubType.SOLDIER);
|
||||
|
||||
this.color.setWhite(true);
|
||||
this.power = new MageInt(2);
|
||||
this.toughness = new MageInt(1);
|
||||
|
||||
// As long as you control a Giant, Kithkin Greatheart gets +1/+1 and has first strike.
|
||||
Ability ability = new SimpleStaticAbility(Zone.BATTLEFIELD, new ConditionalContinuousEffect(
|
||||
new BoostSourceEffect(1,1, Duration.WhileOnBattlefield),
|
||||
new PermanentsOnTheBattlefieldCondition(filter),
|
||||
"As long as you control a Giant, Kithkin Greatheart gets +1/+1"));
|
||||
Ability ability = new SimpleStaticAbility(new ConditionalContinuousEffect(
|
||||
new BoostSourceEffect(1, 1, Duration.WhileOnBattlefield),
|
||||
condition, "As long as you control a Giant, {this} gets +1/+1"
|
||||
));
|
||||
ability.addEffect(new ConditionalContinuousEffect(
|
||||
new GainAbilitySourceEffect(FirstStrikeAbility.getInstance()),
|
||||
condition, "and has first strike"
|
||||
));
|
||||
this.addAbility(ability);
|
||||
ConditionalContinuousEffect effect2 = new ConditionalContinuousEffect(
|
||||
new GainAbilitySourceEffect(FirstStrikeAbility.getInstance()),
|
||||
new PermanentsOnTheBattlefieldCondition(filter),
|
||||
rule2);
|
||||
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, effect2));
|
||||
|
||||
}
|
||||
|
||||
private KithkinGreatheart(final KithkinGreatheart card) {
|
||||
|
|
|
@ -1,7 +1,5 @@
|
|||
|
||||
package mage.cards.k;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.MageInt;
|
||||
import mage.abilities.common.DiesCreatureTriggeredAbility;
|
||||
import mage.abilities.effects.common.counter.AddCountersSourceEffect;
|
||||
|
@ -9,32 +7,30 @@ import mage.cards.CardImpl;
|
|||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.SubType;
|
||||
import mage.constants.TargetController;
|
||||
import mage.counters.CounterType;
|
||||
import mage.filter.common.FilterCreaturePermanent;
|
||||
import mage.filter.FilterPermanent;
|
||||
import mage.filter.common.FilterControlledPermanent;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author markedagain
|
||||
*/
|
||||
public final class KnuckleboneWitch extends CardImpl {
|
||||
|
||||
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Goblin you control");
|
||||
|
||||
static {
|
||||
filter.add(TargetController.YOU.getControllerPredicate());
|
||||
filter.add(SubType.GOBLIN.getPredicate());
|
||||
}
|
||||
|
||||
private static final FilterPermanent filter = new FilterControlledPermanent(SubType.GOBLIN);
|
||||
|
||||
public KnuckleboneWitch(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{B}");
|
||||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{B}");
|
||||
this.subtype.add(SubType.GOBLIN);
|
||||
this.subtype.add(SubType.SHAMAN);
|
||||
this.power = new MageInt(1);
|
||||
this.toughness = new MageInt(1);
|
||||
|
||||
// Whenever a Goblin you control dies, you may put a +1/+1 counter on Knucklebone Witch.
|
||||
this.addAbility(new DiesCreatureTriggeredAbility(new AddCountersSourceEffect(CounterType.P1P1.createInstance()), true, filter ));
|
||||
this.addAbility(new DiesCreatureTriggeredAbility(
|
||||
new AddCountersSourceEffect(CounterType.P1P1.createInstance()), true, filter
|
||||
).setTriggerPhrase("Whenever a Goblin you control is put into a graveyard from the battlefield, "));
|
||||
}
|
||||
|
||||
private KnuckleboneWitch(final KnuckleboneWitch card) {
|
||||
|
|
|
@ -22,7 +22,7 @@ public final class LaceWithMoonglove extends CardImpl {
|
|||
|
||||
this.getSpellAbility().addEffect(new GainAbilityTargetEffect(DeathtouchAbility.getInstance(), Duration.EndOfTurn));
|
||||
this.getSpellAbility().addTarget(new TargetCreaturePermanent());
|
||||
this.getSpellAbility().addEffect(new DrawCardSourceControllerEffect(1));
|
||||
this.getSpellAbility().addEffect(new DrawCardSourceControllerEffect(1).concatBy("<br>"));
|
||||
}
|
||||
|
||||
private LaceWithMoonglove(final LaceWithMoonglove card) {
|
||||
|
|
|
@ -49,7 +49,7 @@ public final class LowlandOaf extends CardImpl {
|
|||
effect.setText("Target Goblin creature you control gets +1/+0");
|
||||
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, effect, new TapSourceCost());
|
||||
effect = new GainAbilityTargetEffect(FlyingAbility.getInstance(), Duration.EndOfTurn);
|
||||
effect.setText("and gains flying until end of turn. ");
|
||||
effect.setText("and gains flying until end of turn.");
|
||||
ability.addEffect(effect);
|
||||
ability.addEffect(new LowlandOafEffect());
|
||||
ability.addTarget(new TargetCreaturePermanent(filter));
|
||||
|
|
|
@ -23,7 +23,7 @@ import mage.target.TargetPermanent;
|
|||
public final class MerrowReejerey extends CardImpl {
|
||||
|
||||
private static final FilterCreaturePermanent filter1 = new FilterCreaturePermanent("Merfolk creatures you control");
|
||||
private static final FilterSpell filter2 = new FilterSpell("Merfolk spell");
|
||||
private static final FilterSpell filter2 = new FilterSpell("a Merfolk spell");
|
||||
|
||||
static {
|
||||
filter1.add(SubType.MERFOLK.getPredicate());
|
||||
|
|
|
@ -22,7 +22,7 @@ public final class MoongloveExtract extends CardImpl {
|
|||
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{3}");
|
||||
|
||||
// Sacrifice Moonglove Extract: Moonglove Extract deals 2 damage to any target.
|
||||
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DamageTargetEffect(2), new SacrificeSourceCost());
|
||||
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DamageTargetEffect(2, "it"), new SacrificeSourceCost());
|
||||
ability.addTarget(new TargetAnyTarget());
|
||||
this.addAbility(ability);
|
||||
}
|
||||
|
|
|
@ -39,7 +39,7 @@ public final class NeedleDrop extends CardImpl {
|
|||
this.getSpellAbility().addTarget(new TargetAnyTarget(1, 1, filer));
|
||||
|
||||
// Draw a card.
|
||||
this.getSpellAbility().addEffect(new DrawCardSourceControllerEffect(1));
|
||||
this.getSpellAbility().addEffect(new DrawCardSourceControllerEffect(1).concatBy("<br>"));
|
||||
}
|
||||
|
||||
private NeedleDrop(final NeedleDrop card) {
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
|
||||
package mage.cards.p;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.common.SimpleStaticAbility;
|
||||
import mage.abilities.effects.common.AttachEffect;
|
||||
import mage.abilities.effects.common.combat.CantBeBlockedAttachedEffect;
|
||||
|
@ -12,31 +11,34 @@ import mage.cards.CardImpl;
|
|||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.AttachmentType;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.SubType;
|
||||
import mage.constants.Outcome;
|
||||
import mage.constants.Zone;
|
||||
import mage.constants.SubType;
|
||||
import mage.target.TargetPermanent;
|
||||
import mage.target.common.TargetCreaturePermanent;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author Loki
|
||||
*/
|
||||
public final class ProtectiveBubble extends CardImpl {
|
||||
|
||||
public ProtectiveBubble(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{3}{U}");
|
||||
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{3}{U}");
|
||||
this.subtype.add(SubType.AURA);
|
||||
|
||||
|
||||
// Enchant creature
|
||||
TargetPermanent auraTarget = new TargetCreaturePermanent();
|
||||
this.getSpellAbility().addTarget(auraTarget);
|
||||
this.getSpellAbility().addEffect(new AttachEffect(Outcome.BoostCreature));
|
||||
this.addAbility(new EnchantAbility(auraTarget.getTargetName()));
|
||||
|
||||
// Enchanted creature can't be blocked and has shroud.
|
||||
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new CantBeBlockedAttachedEffect(AttachmentType.AURA)));
|
||||
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new GainAbilityAttachedEffect(ShroudAbility.getInstance(), AttachmentType.AURA)));
|
||||
Ability ability = new SimpleStaticAbility(new CantBeBlockedAttachedEffect(AttachmentType.AURA));
|
||||
ability.addEffect(new GainAbilityAttachedEffect(
|
||||
ShroudAbility.getInstance(), AttachmentType.AURA
|
||||
).setText("and has shroud"));
|
||||
this.addAbility(ability);
|
||||
}
|
||||
|
||||
private ProtectiveBubble(final ProtectiveBubble card) {
|
||||
|
|
|
@ -22,7 +22,7 @@ import mage.filter.common.FilterCreaturePermanent;
|
|||
public final class ScionOfOona extends CardImpl {
|
||||
|
||||
private static final FilterPermanent filter = new FilterPermanent("Faeries");
|
||||
private static final FilterCreaturePermanent filterCreature = new FilterCreaturePermanent("Faeries");
|
||||
private static final FilterCreaturePermanent filterCreature = new FilterCreaturePermanent("Faerie creatures");
|
||||
|
||||
static {
|
||||
filter.add(SubType.FAERIE.getPredicate());
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
|
||||
package mage.cards.s;
|
||||
|
||||
import mage.MageInt;
|
||||
|
@ -14,27 +13,21 @@ import mage.cards.CardSetInfo;
|
|||
import mage.constants.CardType;
|
||||
import mage.constants.Duration;
|
||||
import mage.constants.SubType;
|
||||
import mage.constants.Zone;
|
||||
import mage.filter.common.FilterCreaturePermanent;
|
||||
import mage.target.Target;
|
||||
import mage.target.common.TargetCreaturePermanent;
|
||||
import mage.target.common.TargetLandPermanent;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author LevelX2
|
||||
*/
|
||||
public final class StreambedAquitects extends CardImpl {
|
||||
|
||||
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Merfolk creature");
|
||||
static {
|
||||
filter.add(SubType.MERFOLK.getPredicate());
|
||||
}
|
||||
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent(SubType.MERFOLK, "Merfolk creature");
|
||||
|
||||
public StreambedAquitects(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{U}{U}");
|
||||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{U}{U}");
|
||||
this.subtype.add(SubType.MERFOLK);
|
||||
this.subtype.add(SubType.SCOUT);
|
||||
|
||||
|
@ -42,16 +35,18 @@ public final class StreambedAquitects extends CardImpl {
|
|||
this.toughness = new MageInt(3);
|
||||
|
||||
// {tap}: Target Merfolk creature gets +1/+1 and gains islandwalk until end of turn.
|
||||
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new BoostTargetEffect(1,1, Duration.EndOfTurn), new TapSourceCost());
|
||||
ability.addEffect(new GainAbilityTargetEffect(new IslandwalkAbility(false), Duration.EndOfTurn));
|
||||
Target target = new TargetCreaturePermanent(filter);
|
||||
ability.addTarget(target);
|
||||
Ability ability = new SimpleActivatedAbility(new BoostTargetEffect(
|
||||
1, 1, Duration.EndOfTurn
|
||||
).setText("target Merfolk creature gets +1/+1"), new TapSourceCost());
|
||||
ability.addEffect(new GainAbilityTargetEffect(
|
||||
new IslandwalkAbility(false), Duration.EndOfTurn
|
||||
).setText("and gains islandwalk until end of turn"));
|
||||
ability.addTarget(new TargetCreaturePermanent(filter));
|
||||
this.addAbility(ability);
|
||||
|
||||
// {tap}: Target land becomes an Island until end of turn.
|
||||
ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new BecomesBasicLandTargetEffect(Duration.EndOfTurn, SubType.ISLAND), new TapSourceCost());
|
||||
target = new TargetLandPermanent();
|
||||
ability.addTarget(target);
|
||||
ability = new SimpleActivatedAbility(new BecomesBasicLandTargetEffect(Duration.EndOfTurn, SubType.ISLAND), new TapSourceCost());
|
||||
ability.addTarget(new TargetLandPermanent());
|
||||
this.addAbility(ability);
|
||||
}
|
||||
|
||||
|
|
|
@ -1,11 +1,9 @@
|
|||
|
||||
package mage.cards.s;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.abilities.common.SimpleActivatedAbility;
|
||||
import mage.abilities.costs.common.TapTargetCost;
|
||||
import mage.abilities.effects.common.CreateTokenEffect;
|
||||
import mage.abilities.effects.common.ReturnToHandSourceEffect;
|
||||
import mage.abilities.effects.common.ReturnSourceFromGraveyardToHandEffect;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
|
@ -16,27 +14,32 @@ import mage.filter.predicate.permanent.TappedPredicate;
|
|||
import mage.game.permanent.token.MerfolkWizardToken;
|
||||
import mage.target.common.TargetControlledPermanent;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author Loki
|
||||
*/
|
||||
public final class SummonTheSchool extends CardImpl {
|
||||
|
||||
private static final FilterControlledPermanent filter = new FilterControlledPermanent("untapped Merfolk you control");
|
||||
private static final FilterControlledPermanent filter
|
||||
= new FilterControlledPermanent(SubType.MERFOLK, "untapped Merfolk you control");
|
||||
|
||||
static {
|
||||
filter.add(TappedPredicate.UNTAPPED);
|
||||
filter.add(SubType.MERFOLK.getPredicate());
|
||||
}
|
||||
|
||||
public SummonTheSchool(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId,setInfo,new CardType[]{CardType.TRIBAL,CardType.SORCERY},"{3}{W}");
|
||||
super(ownerId, setInfo, new CardType[]{CardType.TRIBAL, CardType.SORCERY}, "{3}{W}");
|
||||
this.subtype.add(SubType.MERFOLK);
|
||||
|
||||
|
||||
// Create two 1/1 blue Merfolk Wizard creature tokens.
|
||||
this.getSpellAbility().addEffect(new CreateTokenEffect(new MerfolkWizardToken(), 2));
|
||||
|
||||
// Tap four untapped Merfolk you control: Return Summon the School from your graveyard to your hand.
|
||||
this.addAbility(new SimpleActivatedAbility(Zone.GRAVEYARD, new ReturnToHandSourceEffect(), new TapTargetCost(new TargetControlledPermanent(4, 4, filter, false))));
|
||||
this.addAbility(new SimpleActivatedAbility(
|
||||
Zone.GRAVEYARD, new ReturnSourceFromGraveyardToHandEffect(),
|
||||
new TapTargetCost(new TargetControlledPermanent(4, filter))
|
||||
));
|
||||
}
|
||||
|
||||
private SummonTheSchool(final SummonTheSchool card) {
|
||||
|
|
|
@ -1,8 +1,7 @@
|
|||
|
||||
package mage.cards.s;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.MageInt;
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.common.SimpleStaticAbility;
|
||||
import mage.abilities.effects.common.continuous.BoostControlledEffect;
|
||||
import mage.abilities.effects.common.continuous.GainAbilityControlledEffect;
|
||||
|
@ -12,31 +11,37 @@ import mage.cards.CardSetInfo;
|
|||
import mage.constants.CardType;
|
||||
import mage.constants.Duration;
|
||||
import mage.constants.SubType;
|
||||
import mage.constants.Zone;
|
||||
import mage.filter.common.FilterCreaturePermanent;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author Loki
|
||||
*/
|
||||
public final class SunriseSovereign extends CardImpl {
|
||||
|
||||
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Giant");
|
||||
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Giant creatures");
|
||||
|
||||
static {
|
||||
filter.add(SubType.GIANT.getPredicate());
|
||||
}
|
||||
|
||||
public SunriseSovereign(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{5}{R}");
|
||||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{5}{R}");
|
||||
this.subtype.add(SubType.GIANT);
|
||||
this.subtype.add(SubType.WARRIOR);
|
||||
|
||||
this.power = new MageInt(5);
|
||||
this.toughness = new MageInt(5);
|
||||
|
||||
// Other Giant creatures you control get +2/+2 and have trample.
|
||||
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new BoostControlledEffect(2, 2, Duration.WhileOnBattlefield, filter, true)));
|
||||
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new GainAbilityControlledEffect(TrampleAbility.getInstance(), Duration.WhileOnBattlefield, filter, true)));
|
||||
Ability ability = new SimpleStaticAbility(new BoostControlledEffect(
|
||||
2, 2, Duration.WhileOnBattlefield, filter, true
|
||||
));
|
||||
ability.addEffect(new GainAbilityControlledEffect(
|
||||
TrampleAbility.getInstance(), Duration.WhileOnBattlefield, filter, true
|
||||
).setText("and have trample"));
|
||||
this.addAbility(ability);
|
||||
}
|
||||
|
||||
private SunriseSovereign(final SunriseSovereign card) {
|
||||
|
|
|
@ -60,6 +60,6 @@ class SylvanEchoesTriggeredAbility extends TriggeredAbilityImpl {
|
|||
|
||||
@Override
|
||||
public String getRule() {
|
||||
return "Whenever you clash and win, you may draw a card";
|
||||
return "Whenever you clash and win, you may draw a card.";
|
||||
}
|
||||
}
|
||||
|
|
|
@ -20,7 +20,7 @@ import mage.target.common.TargetCreaturePermanent;
|
|||
*/
|
||||
public final class ThorntoothWitch extends CardImpl {
|
||||
|
||||
private static final FilterSpell filter = new FilterSpell("Treefolk");
|
||||
private static final FilterSpell filter = new FilterSpell("a Treefolk spell");
|
||||
|
||||
static {
|
||||
filter.add(SubType.TREEFOLK.getPredicate());
|
||||
|
|
|
@ -1,10 +1,8 @@
|
|||
|
||||
package mage.cards.t;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.MageInt;
|
||||
import mage.MageObject;
|
||||
import mage.abilities.common.SimpleStaticAbility;
|
||||
import mage.abilities.effects.Effect;
|
||||
import mage.abilities.effects.common.continuous.BoostControlledEffect;
|
||||
import mage.abilities.effects.common.continuous.GainAbilityAllEffect;
|
||||
import mage.abilities.keyword.IndestructibleAbility;
|
||||
|
@ -13,31 +11,32 @@ import mage.cards.CardSetInfo;
|
|||
import mage.constants.CardType;
|
||||
import mage.constants.Duration;
|
||||
import mage.constants.SubType;
|
||||
import mage.constants.Zone;
|
||||
import mage.filter.common.FilterControlledPermanent;
|
||||
import mage.filter.common.FilterCreaturePermanent;
|
||||
import mage.filter.predicate.Predicates;
|
||||
import mage.filter.predicate.mageobject.AnotherPredicate;
|
||||
import mage.filter.predicate.ObjectSourcePlayer;
|
||||
import mage.filter.predicate.ObjectSourcePlayerPredicate;
|
||||
import mage.game.Game;
|
||||
import mage.game.permanent.Permanent;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author Loki
|
||||
*/
|
||||
public final class TimberProtector extends CardImpl {
|
||||
|
||||
private static final FilterCreaturePermanent filterTreefolk = new FilterCreaturePermanent("Treefolk creatures");
|
||||
private static final FilterControlledPermanent filterBoth = new FilterControlledPermanent("Other Treefolk and Forests you control");
|
||||
private static final FilterCreaturePermanent filterTreefolk
|
||||
= new FilterCreaturePermanent("Treefolk creatures");
|
||||
private static final FilterControlledPermanent filterBoth
|
||||
= new FilterControlledPermanent("other Treefolk and Forests you control");
|
||||
|
||||
static {
|
||||
filterTreefolk.add(SubType.TREEFOLK.getPredicate());
|
||||
filterBoth.add(Predicates.or(
|
||||
SubType.TREEFOLK.getPredicate(),
|
||||
SubType.FOREST.getPredicate()));
|
||||
filterBoth.add(AnotherPredicate.instance);
|
||||
filterBoth.add(TimberProtectorPredicate.instance);
|
||||
}
|
||||
|
||||
public TimberProtector(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{G}");
|
||||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{G}");
|
||||
this.subtype.add(SubType.TREEFOLK);
|
||||
this.subtype.add(SubType.WARRIOR);
|
||||
|
||||
|
@ -45,11 +44,14 @@ public final class TimberProtector extends CardImpl {
|
|||
this.toughness = new MageInt(6);
|
||||
|
||||
// Other Treefolk creatures you control get +1/+1.
|
||||
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new BoostControlledEffect(1, 1, Duration.WhileOnBattlefield, filterTreefolk, true)));
|
||||
this.addAbility(new SimpleStaticAbility(new BoostControlledEffect(
|
||||
1, 1, Duration.WhileOnBattlefield, filterTreefolk, true
|
||||
)));
|
||||
|
||||
// Other Treefolk and Forests you control are indestructible.
|
||||
Effect effect = new GainAbilityAllEffect(IndestructibleAbility.getInstance(), Duration.WhileOnBattlefield, filterBoth, true);
|
||||
effect.setText("Other Treefolk and Forests you control are indestructible");
|
||||
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, effect));
|
||||
this.addAbility(new SimpleStaticAbility(new GainAbilityAllEffect(
|
||||
IndestructibleAbility.getInstance(), Duration.WhileOnBattlefield, filterBoth
|
||||
)));
|
||||
}
|
||||
|
||||
private TimberProtector(final TimberProtector card) {
|
||||
|
@ -61,3 +63,17 @@ public final class TimberProtector extends CardImpl {
|
|||
return new TimberProtector(this);
|
||||
}
|
||||
}
|
||||
|
||||
enum TimberProtectorPredicate implements ObjectSourcePlayerPredicate<Permanent> {
|
||||
instance;
|
||||
|
||||
@Override
|
||||
public boolean apply(ObjectSourcePlayer<Permanent> input, Game game) {
|
||||
MageObject obj = input.getObject();
|
||||
if (obj.getId().equals(input.getSourceId())) {
|
||||
return obj.hasSubtype(SubType.FOREST, game);
|
||||
}
|
||||
return obj.hasSubtype(SubType.FOREST, game)
|
||||
|| obj.hasSubtype(SubType.TREEFOLK, game);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,7 +1,5 @@
|
|||
|
||||
package mage.cards.t;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.common.EntersBattlefieldTriggeredAbility;
|
||||
import mage.abilities.common.SimpleStaticAbility;
|
||||
|
@ -14,41 +12,42 @@ import mage.abilities.keyword.FlashAbility;
|
|||
import mage.abilities.keyword.VigilanceAbility;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.AttachmentType;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.SubType;
|
||||
import mage.constants.Duration;
|
||||
import mage.constants.Outcome;
|
||||
import mage.constants.Zone;
|
||||
import mage.constants.*;
|
||||
import mage.target.TargetPermanent;
|
||||
import mage.target.common.TargetCreaturePermanent;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author fireshoes
|
||||
*/
|
||||
public final class TriclopeanSight extends CardImpl {
|
||||
|
||||
public TriclopeanSight(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{W}");
|
||||
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{1}{W}");
|
||||
this.subtype.add(SubType.AURA);
|
||||
|
||||
// Flash
|
||||
this.addAbility(FlashAbility.getInstance());
|
||||
|
||||
|
||||
// Enchant creature
|
||||
TargetPermanent auraTarget = new TargetCreaturePermanent();
|
||||
this.getSpellAbility().addTarget(auraTarget);
|
||||
this.getSpellAbility().addEffect(new AttachEffect(Outcome.Neutral));
|
||||
Ability ability = new EnchantAbility(auraTarget.getTargetName());
|
||||
this.addAbility(ability);
|
||||
|
||||
this.addAbility(new EnchantAbility(auraTarget.getTargetName()));
|
||||
|
||||
// When Triclopean Sight enters the battlefield, untap enchanted creature.
|
||||
this.addAbility(new EntersBattlefieldTriggeredAbility(new UntapEnchantedEffect()));
|
||||
|
||||
|
||||
// Enchanted creature gets +1/+1 and has vigilance.
|
||||
ability = new SimpleStaticAbility(Zone.BATTLEFIELD, new BoostEnchantedEffect(1,1, Duration.WhileOnBattlefield));
|
||||
ability.addEffect(new GainAbilityAttachedEffect(VigilanceAbility.getInstance(), AttachmentType.AURA, Duration.WhileOnBattlefield));
|
||||
Ability ability = new SimpleStaticAbility(new BoostEnchantedEffect(
|
||||
1, 1, Duration.WhileOnBattlefield
|
||||
));
|
||||
ability.addEffect(new GainAbilityAttachedEffect(
|
||||
VigilanceAbility.getInstance(),
|
||||
AttachmentType.AURA,
|
||||
Duration.WhileOnBattlefield
|
||||
).setText("and has vigilance"));
|
||||
this.addAbility(ability);
|
||||
}
|
||||
|
||||
|
|
|
@ -1,9 +1,6 @@
|
|||
|
||||
package mage.cards.v;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.MageInt;
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.common.BecomesTappedSourceTriggeredAbility;
|
||||
import mage.abilities.effects.common.counter.AddCountersSourceEffect;
|
||||
import mage.cards.CardImpl;
|
||||
|
@ -12,22 +9,25 @@ import mage.constants.CardType;
|
|||
import mage.constants.SubType;
|
||||
import mage.counters.CounterType;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author Wehk
|
||||
*/
|
||||
public final class VeteranOfTheDepths extends CardImpl {
|
||||
|
||||
public VeteranOfTheDepths(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{W}");
|
||||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{W}");
|
||||
this.subtype.add(SubType.MERFOLK);
|
||||
this.subtype.add(SubType.SOLDIER);
|
||||
this.power = new MageInt(2);
|
||||
this.toughness = new MageInt(2);
|
||||
|
||||
// Whenever Veteran of the Depths becomes tapped, you may put a +1/+1 counter on it.
|
||||
Ability ability = new BecomesTappedSourceTriggeredAbility(new AddCountersSourceEffect(CounterType.P1P1.createInstance()), true);
|
||||
this.addAbility(ability);
|
||||
this.addAbility(new BecomesTappedSourceTriggeredAbility(
|
||||
new AddCountersSourceEffect(CounterType.P1P1.createInstance())
|
||||
.setText("put a +1/+1 counter on it"), true
|
||||
));
|
||||
}
|
||||
|
||||
private VeteranOfTheDepths(final VeteranOfTheDepths card) {
|
||||
|
@ -38,4 +38,4 @@ public final class VeteranOfTheDepths extends CardImpl {
|
|||
public VeteranOfTheDepths copy() {
|
||||
return new VeteranOfTheDepths(this);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -57,7 +57,7 @@ class VigorReplacementEffect extends ReplacementEffectImpl {
|
|||
|
||||
VigorReplacementEffect() {
|
||||
super(Duration.WhileOnBattlefield, Outcome.BoostCreature);
|
||||
staticText = "If damage would be dealt to a creature you control other than {this}, prevent that damage. Put a +1/+1 counter on that creature for each 1 damage prevented this way";
|
||||
staticText = "if damage would be dealt to another creature you control, prevent that damage. Put a +1/+1 counter on that creature for each 1 damage prevented this way";
|
||||
}
|
||||
|
||||
VigorReplacementEffect(final VigorReplacementEffect effect) {
|
||||
|
|
|
@ -23,7 +23,7 @@ import mage.target.common.TargetCreaturePermanent;
|
|||
*/
|
||||
public final class WellgabberApothecary extends CardImpl {
|
||||
|
||||
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("target tapped Merfolk or Kithkin creature this turn");
|
||||
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("tapped Merfolk or Kithkin creature");
|
||||
|
||||
static {
|
||||
filter.add(TappedPredicate.TAPPED);
|
||||
|
|
|
@ -28,11 +28,11 @@ public final class WingsOfVelisVel extends CardImpl {
|
|||
|
||||
// Target creature becomes 4/4, gains all creature types, and gains flying until end of turn.
|
||||
this.getSpellAbility().addEffect(new SetPowerToughnessTargetEffect(4, 4, Duration.EndOfTurn)
|
||||
.setText("Target creature becomes 4/4"));
|
||||
.setText("Until end of turn, target creature has base power and toughness 4/4"));
|
||||
this.getSpellAbility().addEffect(new GainAllCreatureTypesTargetEffect(Duration.EndOfTurn)
|
||||
.setText(", gains all creature types"));
|
||||
this.getSpellAbility().addEffect(new GainAbilityTargetEffect(FlyingAbility.getInstance(), Duration.EndOfTurn)
|
||||
.setText(", and gains flying until end of turn"));
|
||||
.setText(", and gains flying"));
|
||||
this.getSpellAbility().addTarget(new TargetCreaturePermanent());
|
||||
}
|
||||
|
||||
|
|
|
@ -1,11 +1,9 @@
|
|||
|
||||
package mage.cards.w;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.MageInt;
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.common.BeginningOfUpkeepTriggeredAbility;
|
||||
import mage.abilities.effects.common.ReturnToHandTargetEffect;
|
||||
import mage.abilities.effects.common.ReturnFromGraveyardToHandTargetEffect;
|
||||
import mage.abilities.keyword.FearAbility;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
|
@ -16,8 +14,9 @@ import mage.constants.TargetController;
|
|||
import mage.filter.FilterCard;
|
||||
import mage.target.common.TargetCardInYourGraveyard;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author Loki
|
||||
*/
|
||||
public final class WortBoggartAuntie extends CardImpl {
|
||||
|
@ -29,7 +28,7 @@ public final class WortBoggartAuntie extends CardImpl {
|
|||
}
|
||||
|
||||
public WortBoggartAuntie(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}{R}");
|
||||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{B}{R}");
|
||||
addSuperType(SuperType.LEGENDARY);
|
||||
this.subtype.add(SubType.GOBLIN);
|
||||
this.subtype.add(SubType.SHAMAN);
|
||||
|
@ -40,7 +39,9 @@ public final class WortBoggartAuntie extends CardImpl {
|
|||
this.addAbility(FearAbility.getInstance());
|
||||
|
||||
// At the beginning of your upkeep, you may return target Goblin card from your graveyard to your hand.
|
||||
Ability ability = new BeginningOfUpkeepTriggeredAbility(new ReturnToHandTargetEffect(), TargetController.YOU, true);
|
||||
Ability ability = new BeginningOfUpkeepTriggeredAbility(
|
||||
new ReturnFromGraveyardToHandTargetEffect(), TargetController.YOU, true
|
||||
);
|
||||
ability.addTarget(new TargetCardInYourGraveyard(filter));
|
||||
this.addAbility(ability);
|
||||
}
|
||||
|
|
|
@ -1,36 +1,32 @@
|
|||
|
||||
package mage.cards.w;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.MageInt;
|
||||
import mage.abilities.common.SimpleActivatedAbility;
|
||||
import mage.abilities.common.SimpleStaticAbility;
|
||||
import mage.abilities.costs.mana.ManaCostsImpl;
|
||||
import mage.abilities.effects.Effect;
|
||||
import mage.abilities.effects.common.CreateTokenEffect;
|
||||
import mage.abilities.effects.common.continuous.GainAbilityAllEffect;
|
||||
import mage.abilities.effects.common.continuous.GainAbilityControlledEffect;
|
||||
import mage.abilities.keyword.ChampionAbility;
|
||||
import mage.abilities.keyword.DeathtouchAbility;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.*;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.Duration;
|
||||
import mage.constants.SubType;
|
||||
import mage.filter.FilterPermanent;
|
||||
import mage.game.permanent.token.WolfToken;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author emerald000
|
||||
*/
|
||||
public final class WrensRunPackmaster extends CardImpl {
|
||||
|
||||
private static final FilterPermanent filter = new FilterPermanent("Wolf");
|
||||
static {
|
||||
filter.add(TargetController.YOU.getControllerPredicate());
|
||||
filter.add(SubType.WOLF.getPredicate());
|
||||
}
|
||||
|
||||
private static final FilterPermanent filter = new FilterPermanent(SubType.WOLF, "Wolves");
|
||||
|
||||
public WrensRunPackmaster(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{G}");
|
||||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{G}");
|
||||
this.subtype.add(SubType.ELF);
|
||||
this.subtype.add(SubType.WARRIOR);
|
||||
|
||||
|
@ -39,14 +35,16 @@ public final class WrensRunPackmaster extends CardImpl {
|
|||
|
||||
// Champion an Elf
|
||||
this.addAbility(new ChampionAbility(this, SubType.ELF, false));
|
||||
|
||||
|
||||
// {2}{G}: Create a 2/2 green Wolf creature token.
|
||||
this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new CreateTokenEffect(new WolfToken()), new ManaCostsImpl<>("{2}{G}")));
|
||||
|
||||
this.addAbility(new SimpleActivatedAbility(
|
||||
new CreateTokenEffect(new WolfToken()), new ManaCostsImpl<>("{2}{G}")
|
||||
));
|
||||
|
||||
// Each Wolf you control has deathtouch.
|
||||
Effect effect = new GainAbilityAllEffect(DeathtouchAbility.getInstance(), Duration.WhileOnBattlefield, filter);
|
||||
effect.setText("Each Wolf you control has deathtouch");
|
||||
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, effect));
|
||||
this.addAbility(new SimpleStaticAbility(new GainAbilityControlledEffect(
|
||||
DeathtouchAbility.getInstance(), Duration.WhileOnBattlefield, filter
|
||||
)));
|
||||
}
|
||||
|
||||
private WrensRunPackmaster(final WrensRunPackmaster card) {
|
||||
|
|
|
@ -62,7 +62,7 @@ public class VerifyCardDataTest {
|
|||
|
||||
private static final Logger logger = Logger.getLogger(VerifyCardDataTest.class);
|
||||
|
||||
private static final String FULL_ABILITIES_CHECK_SET_CODE = "M10"; // check all abilities and output cards with wrong abilities texts;
|
||||
private static final String FULL_ABILITIES_CHECK_SET_CODE = "LRW"; // check all abilities and output cards with wrong abilities texts;
|
||||
private static final boolean AUTO_FIX_SAMPLE_DECKS = false; // debug only: auto-fix sample decks by test_checkSampleDecks test run
|
||||
private static final boolean ONLY_TEXT = false; // use when checking text locally, suppresses unnecessary checks and output messages
|
||||
|
||||
|
|
|
@ -12,7 +12,6 @@ import mage.game.permanent.Permanent;
|
|||
import mage.util.CardUtil;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author LevelX2
|
||||
*/
|
||||
public class CanBlockAdditionalCreatureEffect extends ContinuousEffectImpl {
|
||||
|
@ -69,21 +68,21 @@ public class CanBlockAdditionalCreatureEffect extends ContinuousEffectImpl {
|
|||
}
|
||||
|
||||
private String setText() {
|
||||
String text = "{this} can block ";
|
||||
switch (amount) {
|
||||
case 0:
|
||||
text += "any number of creatures";
|
||||
break;
|
||||
default:
|
||||
text += CardUtil.numberToText(amount, "an") + " additional creature" + (amount > 1 ? "s" : "");
|
||||
StringBuilder sb = new StringBuilder("{this} can block ");
|
||||
if (amount == 0) {
|
||||
sb.append("any number of creatures");
|
||||
} else {
|
||||
sb.append(CardUtil.numberToText(amount, "an"));
|
||||
sb.append(" additional creature");
|
||||
sb.append((amount > 1 ? "s" : ""));
|
||||
}
|
||||
if (duration == Duration.EndOfTurn) {
|
||||
text += " this turn";
|
||||
sb.append(" this turn");
|
||||
}
|
||||
if (duration == Duration.WhileOnBattlefield) {
|
||||
text += " each combat";
|
||||
if (duration == Duration.WhileOnBattlefield && amount == 1) {
|
||||
sb.append(" each combat");
|
||||
}
|
||||
return text;
|
||||
return sb.toString();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -1,17 +1,16 @@
|
|||
|
||||
package mage.abilities.effects.common.combat;
|
||||
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.effects.ContinuousEffectImpl;
|
||||
import mage.constants.Duration;
|
||||
import mage.constants.Layer;
|
||||
import mage.constants.Outcome;
|
||||
import mage.constants.SubLayer;
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.effects.ContinuousEffectImpl;
|
||||
import mage.game.Game;
|
||||
import mage.game.permanent.Permanent;
|
||||
import mage.util.CardUtil;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author North
|
||||
*/
|
||||
public class CantBeBlockedByOneEffect extends ContinuousEffectImpl {
|
||||
|
@ -23,9 +22,9 @@ public class CantBeBlockedByOneEffect extends ContinuousEffectImpl {
|
|||
}
|
||||
|
||||
public CantBeBlockedByOneEffect(int amount, Duration duration) {
|
||||
super(duration, Outcome.Benefit);
|
||||
super(duration, Layer.RulesEffects, SubLayer.NA, Outcome.Benefit);
|
||||
this.amount = amount;
|
||||
staticText = "{this} can't be blocked except by " + amount + " or more creatures";
|
||||
staticText = "{this} can't be blocked except by " + CardUtil.numberToText(amount) + " or more creatures";
|
||||
}
|
||||
|
||||
public CantBeBlockedByOneEffect(final CantBeBlockedByOneEffect effect) {
|
||||
|
@ -39,26 +38,12 @@ public class CantBeBlockedByOneEffect extends ContinuousEffectImpl {
|
|||
}
|
||||
|
||||
@Override
|
||||
public boolean apply(Layer layer, SubLayer sublayer, Ability source, Game game) {
|
||||
Permanent perm = game.getPermanent(source.getSourceId());
|
||||
public boolean apply(Game game, Ability source) {
|
||||
Permanent perm = source.getSourcePermanentIfItStillExists(game);
|
||||
if (perm != null) {
|
||||
switch (layer) {
|
||||
case RulesEffects:
|
||||
perm.setMinBlockedBy(amount);
|
||||
break;
|
||||
}
|
||||
perm.setMinBlockedBy(amount);
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean apply(Game game, Ability source) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean hasLayer(Layer layer) {
|
||||
return layer == Layer.RulesEffects;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue