mirror of
https://github.com/correl/mage.git
synced 2024-12-26 03:00:11 +00:00
Fixed wrong symbols in rules
This commit is contained in:
parent
ed8c3276e1
commit
4d51d379fe
45 changed files with 190 additions and 266 deletions
|
@ -1,4 +1,3 @@
|
|||
|
||||
package mage.cards.a;
|
||||
|
||||
import mage.abilities.Ability;
|
||||
|
@ -52,7 +51,7 @@ class AchHansRunEffect extends OneShotEffect {
|
|||
|
||||
AchHansRunEffect() {
|
||||
super(Outcome.PutCreatureInPlay);
|
||||
this.staticText = "you may say \"Ach! Hans, run! It’s the …\" and the name of a creature card. If you do, search your library for a card with that name, put it onto the battlefield, then shuffle your library. That creature gains haste. Exile it at the beginning of the next end step";
|
||||
this.staticText = "you may say \"Ach! Hans, run! It's the …\" and the name of a creature card. If you do, search your library for a card with that name, put it onto the battlefield, then shuffle your library. That creature gains haste. Exile it at the beginning of the next end step";
|
||||
}
|
||||
|
||||
private AchHansRunEffect(final AchHansRunEffect effect) {
|
||||
|
|
|
@ -1,10 +1,5 @@
|
|||
package mage.cards.b;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
import java.util.UUID;
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.TriggeredAbilityImpl;
|
||||
import mage.abilities.common.BeginningOfEndStepTriggeredAbility;
|
||||
|
@ -29,8 +24,9 @@ import mage.target.TargetPlayer;
|
|||
import mage.target.targetpointer.FixedTarget;
|
||||
import mage.watchers.Watcher;
|
||||
|
||||
import java.util.*;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author L_J
|
||||
*/
|
||||
public final class BurningCinderFuryOfCrimsonChaosFire extends CardImpl {
|
||||
|
@ -192,7 +188,7 @@ class BurningCinderFuryOfCrimsonChaosFireCondition implements Condition {
|
|||
}
|
||||
|
||||
public String toString() {
|
||||
return "if that player didn’t tap any nonland permanents that turn";
|
||||
return "if that player didn't tap any nonland permanents that turn";
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
|
||||
package mage.cards.c;
|
||||
|
||||
import mage.abilities.Ability;
|
||||
|
@ -63,7 +62,7 @@ class ChecksAndBalancesEffect extends OneShotEffect {
|
|||
|
||||
public ChecksAndBalancesEffect() {
|
||||
super(Outcome.Detriment);
|
||||
staticText = "each of that player’s opponents may discard a card. If they do, counter that spell";
|
||||
staticText = "each of that player's opponents may discard a card. If they do, counter that spell";
|
||||
}
|
||||
|
||||
public ChecksAndBalancesEffect(final ChecksAndBalancesEffect effect) {
|
||||
|
|
|
@ -1,7 +1,5 @@
|
|||
|
||||
package mage.cards.c;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.common.BeginningOfUpkeepTriggeredAbility;
|
||||
import mage.abilities.common.EntersBattlefieldTriggeredAbility;
|
||||
|
@ -21,12 +19,7 @@ import mage.abilities.keyword.EnchantAbility;
|
|||
import mage.abilities.keyword.FlyingAbility;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.SubType;
|
||||
import mage.constants.Duration;
|
||||
import mage.constants.Outcome;
|
||||
import mage.constants.TargetController;
|
||||
import mage.constants.Zone;
|
||||
import mage.constants.*;
|
||||
import mage.counters.CounterType;
|
||||
import mage.game.Game;
|
||||
import mage.game.permanent.Permanent;
|
||||
|
@ -34,13 +27,15 @@ import mage.target.TargetPermanent;
|
|||
import mage.target.common.TargetControlledCreaturePermanent;
|
||||
import mage.target.targetpointer.FixedTarget;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
* @author L_J
|
||||
*/
|
||||
public final class Cocoon extends CardImpl {
|
||||
|
||||
public Cocoon(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{G}");
|
||||
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{G}");
|
||||
this.subtype.add(SubType.AURA);
|
||||
|
||||
// Enchant creature you control
|
||||
|
@ -55,12 +50,12 @@ public final class Cocoon extends CardImpl {
|
|||
this.addAbility(ability);
|
||||
|
||||
// Enchanted creature doesn’t untap during your untap step if Cocoon has a pupa counter on it.
|
||||
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new ConditionalContinuousRuleModifyingEffect(new DontUntapInControllersUntapStepEnchantedEffect(),
|
||||
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new ConditionalContinuousRuleModifyingEffect(new DontUntapInControllersUntapStepEnchantedEffect(),
|
||||
new SourceHasCounterCondition(CounterType.PUPA)).setText("Enchanted creature doesn't untap during its controller's untap step if Cocoon has a pupa counter on it")));
|
||||
|
||||
// At the beginning of your upkeep, remove a pupa counter from Cocoon. If you can’t, sacrifice it, put a +1/+1 counter on enchanted creature, and that creature gains flying.
|
||||
this.addAbility(new BeginningOfUpkeepTriggeredAbility(new CocoonEffect(), TargetController.YOU, false));
|
||||
|
||||
|
||||
}
|
||||
|
||||
public Cocoon(final Cocoon card) {
|
||||
|
@ -77,7 +72,7 @@ class CocoonEffect extends OneShotEffect {
|
|||
|
||||
CocoonEffect() {
|
||||
super(Outcome.Sacrifice);
|
||||
staticText = "remove a pupa counter from {this}. If you can’t, sacrifice it, put a +1/+1 counter on enchanted creature, and that creature gains flying";
|
||||
staticText = "remove a pupa counter from {this}. If you can't, sacrifice it, put a +1/+1 counter on enchanted creature, and that creature gains flying";
|
||||
}
|
||||
|
||||
CocoonEffect(final CocoonEffect effect) {
|
||||
|
|
|
@ -1,18 +1,8 @@
|
|||
package mage.cards.d;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
import java.util.UUID;
|
||||
import java.util.stream.Collectors;
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.effects.OneShotEffect;
|
||||
import mage.cards.Card;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.cards.Cards;
|
||||
import mage.cards.CardsImpl;
|
||||
import mage.cards.*;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.Outcome;
|
||||
import mage.constants.Zone;
|
||||
|
@ -24,8 +14,10 @@ import mage.target.Target;
|
|||
import mage.target.TargetCard;
|
||||
import mage.target.common.TargetOpponent;
|
||||
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author L_J
|
||||
*/
|
||||
public final class DeathOrGlory extends CardImpl {
|
||||
|
@ -51,7 +43,7 @@ class DeathOrGloryEffect extends OneShotEffect {
|
|||
|
||||
DeathOrGloryEffect() {
|
||||
super(Outcome.Benefit);
|
||||
this.staticText = "Separate all creature cards in your graveyard into two piles. Exile the pile of an opponent’s choice and return the other to the battlefield";
|
||||
this.staticText = "Separate all creature cards in your graveyard into two piles. Exile the pile of an opponent's choice and return the other to the battlefield";
|
||||
}
|
||||
|
||||
DeathOrGloryEffect(final DeathOrGloryEffect effect) {
|
||||
|
|
|
@ -1,12 +1,12 @@
|
|||
package mage.cards.d;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.common.CastOnlyIfConditionIsTrueAbility;
|
||||
import mage.abilities.condition.common.OnOpponentsTurnCondition;
|
||||
import mage.abilities.effects.OneShotEffect;
|
||||
import mage.abilities.effects.common.*;
|
||||
import mage.abilities.effects.common.PreventDamageByTargetEffect;
|
||||
import mage.abilities.effects.common.PreventDamageToTargetEffect;
|
||||
import mage.abilities.effects.common.TapTargetEffect;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
|
@ -19,8 +19,9 @@ import mage.game.permanent.Permanent;
|
|||
import mage.players.Player;
|
||||
import mage.target.common.TargetCreaturePermanent;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author noahg
|
||||
*/
|
||||
public final class Delirium extends CardImpl {
|
||||
|
@ -33,10 +34,10 @@ public final class Delirium extends CardImpl {
|
|||
|
||||
public Delirium(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{1}{B}{R}");
|
||||
|
||||
|
||||
|
||||
// Cast this spell only during an opponent’s turn.
|
||||
this.addAbility(new CastOnlyIfConditionIsTrueAbility(OnOpponentsTurnCondition.instance, "Cast this spell only during an opponent’s turn."));
|
||||
this.addAbility(new CastOnlyIfConditionIsTrueAbility(OnOpponentsTurnCondition.instance, "Cast this spell only during an opponent's turn."));
|
||||
// Tap target creature that player controls. That creature deals damage equal to its power to the player. Prevent all combat damage that would be dealt to and dealt by the creature this turn.
|
||||
this.getSpellAbility().addEffect(new TapTargetEffect().setText("target creature that player controls"));
|
||||
this.getSpellAbility().addTarget(new TargetCreaturePermanent(filter));
|
||||
|
|
|
@ -69,7 +69,7 @@ class DispersalEffect extends OneShotEffect {
|
|||
super(Outcome.Benefit);
|
||||
this.staticText = "Each opponent returns a nonland permanent "
|
||||
+ "they control with the highest converted mana cost "
|
||||
+ "among permanents they control to its owner’s hand, "
|
||||
+ "among permanents they control to its owner's hand, "
|
||||
+ "then discards a card.";
|
||||
}
|
||||
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
|
||||
package mage.cards.d;
|
||||
|
||||
import mage.abilities.Ability;
|
||||
|
@ -64,8 +63,8 @@ class DrainLifeEffect extends OneShotEffect {
|
|||
DrainLifeEffect() {
|
||||
super(Outcome.Damage);
|
||||
staticText = "{this} deals X damage to any target. You gain life equal to the damage dealt, " +
|
||||
"but not more life than the player’s life total before the damage was dealt, " +
|
||||
"the planeswalker’s loyalty before the damage was dealt, or the creature’s toughness.";
|
||||
"but not more life than the player's life total before the damage was dealt, " +
|
||||
"the planeswalker's loyalty before the damage was dealt, or the creature's toughness.";
|
||||
}
|
||||
|
||||
private DrainLifeEffect(final DrainLifeEffect effect) {
|
||||
|
|
|
@ -53,7 +53,7 @@ class ElvishHealerEffect extends OneShotEffect {
|
|||
ElvishHealerEffect() {
|
||||
super(Outcome.Benefit);
|
||||
staticText = "Prevent the next 1 damage that would be dealt to any target this turn. " +
|
||||
"If it’s a green creature, prevent the next 2 damage instead.";
|
||||
"If it's a green creature, prevent the next 2 damage instead.";
|
||||
}
|
||||
|
||||
private ElvishHealerEffect(final ElvishHealerEffect effect) {
|
||||
|
|
|
@ -27,7 +27,6 @@ import mage.target.TargetStackObject;
|
|||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author credman0
|
||||
*/
|
||||
public class EmissaryOfGrudges extends CardImpl {
|
||||
|
@ -45,7 +44,7 @@ public class EmissaryOfGrudges extends CardImpl {
|
|||
this.addAbility(HasteAbility.getInstance());
|
||||
|
||||
// As Emissary of Grudges enters the battlefield, secretly choose an opponent.
|
||||
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new EntersBattlefieldEffect(new ChooseSecretOpponentEffect(),"As {this} enters the battlefield, secretly choose an opponent.")));
|
||||
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new EntersBattlefieldEffect(new ChooseSecretOpponentEffect(), "As {this} enters the battlefield, secretly choose an opponent.")));
|
||||
// Choose new targets for target spell or ability if it’s controlled by the chosen player and if it targets you
|
||||
// or a permanent you control. Activate this ability only once.
|
||||
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new EmissaryOfGrudgesEffect(), new RevealSecretOpponentCost());
|
||||
|
@ -67,7 +66,7 @@ class EmissaryOfGrudgesEffect extends OneShotEffect {
|
|||
|
||||
public EmissaryOfGrudgesEffect() {
|
||||
super(Outcome.Neutral);
|
||||
this.staticText = "Choose new targets for target spell or ability if it’s controlled by the chosen player and" +
|
||||
this.staticText = "Choose new targets for target spell or ability if it's controlled by the chosen player and" +
|
||||
" if it targets you or a permanent you control. Activate this ability only once.";
|
||||
}
|
||||
|
||||
|
@ -104,7 +103,7 @@ class EmissaryOfGrudgesEffect extends OneShotEffect {
|
|||
}
|
||||
}
|
||||
}
|
||||
if (targetsYouOrAPermanentYouControl){
|
||||
if (targetsYouOrAPermanentYouControl) {
|
||||
return stackObject.chooseNewTargets(game, source.getControllerId(), false, false, null);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,7 +1,5 @@
|
|||
package mage.cards.f;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.common.CastOnlyDuringPhaseStepSourceAbility;
|
||||
import mage.abilities.condition.common.AfterBlockersAreDeclaredCondition;
|
||||
|
@ -12,24 +10,25 @@ import mage.cards.CardSetInfo;
|
|||
import mage.constants.CardType;
|
||||
import mage.constants.Outcome;
|
||||
import mage.constants.TurnPhase;
|
||||
import mage.filter.common.FilterCreatureAttackingYou;
|
||||
import mage.game.Game;
|
||||
import mage.game.combat.CombatGroup;
|
||||
import mage.game.permanent.Permanent;
|
||||
import mage.game.permanent.token.SaprolingToken;
|
||||
import mage.game.permanent.token.Token;
|
||||
import mage.players.Player;
|
||||
import mage.filter.common.FilterCreatureAttackingYou;
|
||||
import mage.target.common.TargetCreaturePermanent;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author noahg
|
||||
*/
|
||||
public final class FlashFoliage extends CardImpl {
|
||||
|
||||
public FlashFoliage(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{2}{G}");
|
||||
|
||||
|
||||
|
||||
// Cast Flash Foliage only during combat after blockers are declared.
|
||||
this.addAbility(new CastOnlyDuringPhaseStepSourceAbility(TurnPhase.COMBAT, AfterBlockersAreDeclaredCondition.instance));
|
||||
|
@ -56,7 +55,7 @@ class FlashFoliageEffect extends OneShotEffect {
|
|||
|
||||
public FlashFoliageEffect() {
|
||||
super(Outcome.Benefit);
|
||||
this.staticText = "create a 1/1 green Saproling creature token that’s blocking target creature attacking you";
|
||||
this.staticText = "create a 1/1 green Saproling creature token that's blocking target creature attacking you";
|
||||
}
|
||||
|
||||
public FlashFoliageEffect(final FlashFoliageEffect effect) {
|
||||
|
|
|
@ -1,7 +1,5 @@
|
|||
|
||||
package mage.cards.g;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.MageInt;
|
||||
import mage.MageObject;
|
||||
import mage.abilities.Ability;
|
||||
|
@ -14,13 +12,7 @@ import mage.abilities.effects.common.continuous.GainAbilitySourceEffect;
|
|||
import mage.abilities.keyword.TrampleAbility;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.SubType;
|
||||
import mage.constants.Duration;
|
||||
import mage.constants.Outcome;
|
||||
import mage.constants.SuperType;
|
||||
import mage.constants.TargetController;
|
||||
import mage.constants.Zone;
|
||||
import mage.constants.*;
|
||||
import mage.filter.FilterPermanent;
|
||||
import mage.filter.common.FilterControlledPermanent;
|
||||
import mage.filter.common.FilterCreaturePermanent;
|
||||
|
@ -33,12 +25,13 @@ import mage.players.Player;
|
|||
import mage.target.common.TargetControlledPermanent;
|
||||
import mage.target.common.TargetCreaturePermanent;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author L_J
|
||||
*/
|
||||
public final class GargantuanGorilla extends CardImpl {
|
||||
|
||||
|
||||
public GargantuanGorilla(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{G}{G}{G}");
|
||||
this.subtype.add(SubType.APE);
|
||||
|
@ -55,11 +48,11 @@ public final class GargantuanGorilla extends CardImpl {
|
|||
ability.addTarget(new TargetCreaturePermanent(filter));
|
||||
this.addAbility(ability);
|
||||
}
|
||||
|
||||
|
||||
public GargantuanGorilla(final GargantuanGorilla card) {
|
||||
super(card);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public GargantuanGorilla copy() {
|
||||
return new GargantuanGorilla(this);
|
||||
|
@ -70,6 +63,7 @@ class GargantuanGorillaSacrificeEffect extends OneShotEffect {
|
|||
|
||||
private static final FilterControlledPermanent filter = new FilterControlledPermanent("a Forest");
|
||||
private static final FilterPermanent filterSnow = new FilterPermanent("snow permanent");
|
||||
|
||||
static {
|
||||
filter.add(new SubtypePredicate(SubType.FOREST));
|
||||
filterSnow.add(new SupertypePredicate(SuperType.SNOW));
|
||||
|
@ -77,7 +71,7 @@ class GargantuanGorillaSacrificeEffect extends OneShotEffect {
|
|||
|
||||
public GargantuanGorillaSacrificeEffect() {
|
||||
super(Outcome.Sacrifice);
|
||||
staticText = "you may sacrifice a Forest. If you sacrifice a snow Forest this way, {this} gains trample until end of turn. If you don’t sacrifice a Forest, sacrifice {this} and it deals 7 damage to you.";
|
||||
staticText = "you may sacrifice a Forest. If you sacrifice a snow Forest this way, {this} gains trample until end of turn. If you don't sacrifice a Forest, sacrifice {this} and it deals 7 damage to you.";
|
||||
}
|
||||
|
||||
public GargantuanGorillaSacrificeEffect(final GargantuanGorillaSacrificeEffect effect) {
|
||||
|
|
|
@ -24,14 +24,13 @@ import java.util.List;
|
|||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author noahg
|
||||
*/
|
||||
public final class GiantAlbatross extends CardImpl {
|
||||
|
||||
public GiantAlbatross(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{U}");
|
||||
|
||||
|
||||
this.subtype.add(SubType.BIRD);
|
||||
this.power = new MageInt(1);
|
||||
this.toughness = new MageInt(1);
|
||||
|
@ -58,7 +57,7 @@ class GiantAlbatrossEffect extends OneShotEffect {
|
|||
|
||||
public GiantAlbatrossEffect() {
|
||||
super(Outcome.Detriment);
|
||||
this.staticText = "for each creature that dealt damage to {this} this turn, destroy that creature unless its controller pays 2 life. A creature destroyed this way can’t be regenerated";
|
||||
this.staticText = "for each creature that dealt damage to {this} this turn, destroy that creature unless its controller pays 2 life. A creature destroyed this way can't be regenerated";
|
||||
}
|
||||
|
||||
public GiantAlbatrossEffect(final GiantAlbatrossEffect effect) {
|
||||
|
|
|
@ -1,9 +1,5 @@
|
|||
|
||||
package mage.cards.g;
|
||||
|
||||
import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
import java.util.UUID;
|
||||
import mage.MageObject;
|
||||
import mage.MageObjectReference;
|
||||
import mage.abilities.Ability;
|
||||
|
@ -17,12 +13,7 @@ import mage.abilities.effects.common.continuous.GainAbilityTargetEffect;
|
|||
import mage.abilities.effects.common.counter.RemoveCounterSourceEffect;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.SubType;
|
||||
import mage.constants.Duration;
|
||||
import mage.constants.Outcome;
|
||||
import mage.constants.TargetController;
|
||||
import mage.constants.Zone;
|
||||
import mage.constants.*;
|
||||
import mage.counters.CounterType;
|
||||
import mage.filter.StaticFilters;
|
||||
import mage.filter.common.FilterCreaturePermanent;
|
||||
|
@ -34,8 +25,11 @@ import mage.target.common.TargetCreaturePermanent;
|
|||
import mage.target.targetpointer.FixedTarget;
|
||||
import mage.watchers.common.BlockedAttackerWatcher;
|
||||
|
||||
import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author L_J
|
||||
*/
|
||||
public final class GlyphOfDelusion extends CardImpl {
|
||||
|
@ -69,17 +63,17 @@ public final class GlyphOfDelusion extends CardImpl {
|
|||
class GlyphOfDelusionSecondTarget extends TargetPermanent {
|
||||
|
||||
private Permanent firstTarget = null;
|
||||
|
||||
|
||||
public GlyphOfDelusionSecondTarget() {
|
||||
super();
|
||||
setTargetName("target creature that target Wall blocked this turn");
|
||||
}
|
||||
}
|
||||
|
||||
public GlyphOfDelusionSecondTarget(final GlyphOfDelusionSecondTarget target) {
|
||||
super(target);
|
||||
this.firstTarget = target.firstTarget;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public Set<UUID> possibleTargets(UUID sourceId, UUID sourceControllerId, Game game) {
|
||||
Set<UUID> possibleTargets = new HashSet<>();
|
||||
|
@ -100,13 +94,13 @@ class GlyphOfDelusionSecondTarget extends TargetPermanent {
|
|||
}
|
||||
return possibleTargets;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public boolean chooseTarget(Outcome outcome, UUID playerId, Ability source, Game game) {
|
||||
firstTarget = game.getPermanent(source.getFirstTarget());
|
||||
return super.chooseTarget(Outcome.Tap, playerId, source, game);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public GlyphOfDelusionSecondTarget copy() {
|
||||
return new GlyphOfDelusionSecondTarget(this);
|
||||
|
@ -117,7 +111,7 @@ class GlyphOfDelusionEffect extends OneShotEffect {
|
|||
|
||||
public GlyphOfDelusionEffect() {
|
||||
super(Outcome.Detriment);
|
||||
this.staticText = "Put X glyph counters on target creature that target Wall blocked this turn, where X is the power of that blocked creature. The creature gains \"This creature doesn’t untap during your untap step if it has a glyph counter on it\" and \"At the beginning of your upkeep, remove a glyph counter from this creature.\"";
|
||||
this.staticText = "Put X glyph counters on target creature that target Wall blocked this turn, where X is the power of that blocked creature. The creature gains \"This creature doesn't untap during your untap step if it has a glyph counter on it\" and \"At the beginning of your upkeep, remove a glyph counter from this creature.\"";
|
||||
}
|
||||
|
||||
public GlyphOfDelusionEffect(final GlyphOfDelusionEffect effect) {
|
||||
|
@ -135,14 +129,14 @@ class GlyphOfDelusionEffect extends OneShotEffect {
|
|||
Permanent targetPermanent = game.getPermanent(source.getTargets().get(1).getFirstTarget());
|
||||
if (targetPermanent != null) {
|
||||
targetPermanent.addCounters(CounterType.GLYPH.createInstance(targetPermanent.getPower().getValue()), source, game);
|
||||
|
||||
SimpleStaticAbility ability = new SimpleStaticAbility(Zone.BATTLEFIELD, new ConditionalContinuousRuleModifyingEffect(new DontUntapInControllersUntapStepSourceEffect(),
|
||||
new SourceHasCounterCondition(CounterType.GLYPH)).setText("This creature doesn’t untap during your untap step if it has a glyph counter on it"));
|
||||
|
||||
SimpleStaticAbility ability = new SimpleStaticAbility(Zone.BATTLEFIELD, new ConditionalContinuousRuleModifyingEffect(new DontUntapInControllersUntapStepSourceEffect(),
|
||||
new SourceHasCounterCondition(CounterType.GLYPH)).setText("This creature doesn't untap during your untap step if it has a glyph counter on it"));
|
||||
GainAbilityTargetEffect effect = new GainAbilityTargetEffect(ability, Duration.Custom);
|
||||
effect.setTargetPointer(new FixedTarget(targetPermanent.getId()));
|
||||
game.addEffect(effect, source);
|
||||
|
||||
BeginningOfUpkeepTriggeredAbility ability2 = new BeginningOfUpkeepTriggeredAbility(new RemoveCounterSourceEffect(CounterType.GLYPH.createInstance()),
|
||||
|
||||
BeginningOfUpkeepTriggeredAbility ability2 = new BeginningOfUpkeepTriggeredAbility(new RemoveCounterSourceEffect(CounterType.GLYPH.createInstance()),
|
||||
TargetController.YOU, false);
|
||||
GainAbilityTargetEffect effect2 = new GainAbilityTargetEffect(ability2, Duration.Custom);
|
||||
effect2.setTargetPointer(new FixedTarget(targetPermanent.getId()));
|
||||
|
|
|
@ -1,22 +1,16 @@
|
|||
|
||||
package mage.cards.g;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import java.util.UUID;
|
||||
import mage.MageObjectReference;
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.common.CastOnlyDuringPhaseStepSourceAbility;
|
||||
import mage.abilities.common.delayed.AtTheEndOfCombatDelayedTriggeredAbility;
|
||||
import mage.abilities.condition.common.AfterCombatCondition;
|
||||
import mage.abilities.effects.OneShotEffect;
|
||||
import mage.abilities.effects.common.InfoEffect;
|
||||
import mage.cards.Card;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.SubType;
|
||||
import mage.constants.Outcome;
|
||||
import mage.constants.SubType;
|
||||
import mage.constants.Zone;
|
||||
import mage.filter.StaticFilters;
|
||||
import mage.filter.common.FilterCreatureCard;
|
||||
|
@ -31,8 +25,11 @@ import mage.target.common.TargetCardInGraveyard;
|
|||
import mage.target.common.TargetCreaturePermanent;
|
||||
import mage.watchers.common.BlockedAttackerWatcher;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author L_J
|
||||
*/
|
||||
public final class GlyphOfReincarnation extends CardImpl {
|
||||
|
@ -69,7 +66,7 @@ class GlyphOfReincarnationEffect extends OneShotEffect {
|
|||
|
||||
public GlyphOfReincarnationEffect() {
|
||||
super(Outcome.DestroyPermanent);
|
||||
this.staticText = "Destroy all creatures that were blocked by target Wall this turn. They can’t be regenerated. For each creature that died this way, put a creature card from the graveyard of the player who controlled that creature the last time it became blocked by that Wall onto the battlefield under its owner’s control";
|
||||
this.staticText = "Destroy all creatures that were blocked by target Wall this turn. They can't be regenerated. For each creature that died this way, put a creature card from the graveyard of the player who controlled that creature the last time it became blocked by that Wall onto the battlefield under its owner's control";
|
||||
}
|
||||
|
||||
public GlyphOfReincarnationEffect(final GlyphOfReincarnationEffect effect) {
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
package mage.cards.g;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.common.BeginningOfUpkeepTriggeredAbility;
|
||||
import mage.abilities.common.PutIntoGraveFromBattlefieldAllTriggeredAbility;
|
||||
|
@ -17,8 +16,9 @@ import mage.filter.predicate.other.OwnerPredicate;
|
|||
import mage.game.Game;
|
||||
import mage.game.permanent.Permanent;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author TheElk801
|
||||
*/
|
||||
public final class GrimFeast extends CardImpl {
|
||||
|
@ -28,7 +28,7 @@ public final class GrimFeast extends CardImpl {
|
|||
|
||||
// At the beginning of your upkeep, Grim Feast deals 1 damage to you.
|
||||
this.addAbility(new BeginningOfUpkeepTriggeredAbility(
|
||||
new DamageControllerEffect(1),
|
||||
new DamageControllerEffect(1),
|
||||
TargetController.YOU, false
|
||||
));
|
||||
|
||||
|
@ -69,7 +69,7 @@ class GrimFeastTriggeredAbility extends PutIntoGraveFromBattlefieldAllTriggeredA
|
|||
|
||||
@Override
|
||||
public String getRule() {
|
||||
return "Whenever a creature is put into an opponent’s graveyard from the battlefield, "
|
||||
return "Whenever a creature is put into an opponent's graveyard from the battlefield, "
|
||||
+ "you gain life equal to its toughness.";
|
||||
}
|
||||
}
|
||||
|
|
|
@ -5,7 +5,6 @@
|
|||
*/
|
||||
package mage.cards.g;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.MageInt;
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.common.AttacksTriggeredAbility;
|
||||
|
@ -21,11 +20,7 @@ import mage.abilities.effects.common.counter.AddCountersSourceEffect;
|
|||
import mage.cards.Card;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.Outcome;
|
||||
import mage.constants.SubType;
|
||||
import mage.constants.SuperType;
|
||||
import mage.constants.Zone;
|
||||
import mage.constants.*;
|
||||
import mage.counters.CounterType;
|
||||
import mage.filter.common.FilterCreatureCard;
|
||||
import mage.filter.predicate.ObjectSourcePlayer;
|
||||
|
@ -36,41 +31,42 @@ import mage.players.Player;
|
|||
import mage.target.common.TargetCardInYourGraveyard;
|
||||
import mage.target.targetpointer.FixedTarget;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author Will
|
||||
*/
|
||||
public final class GyrusWakerOfCorpses extends CardImpl {
|
||||
|
||||
|
||||
private static final FilterCreatureCard filter = new FilterCreatureCard("target creature card with lesser power from your graveyard");
|
||||
|
||||
static {
|
||||
filter.add(new GyrusWakerOfCorpsesPowerLessThanSourcePredicate());
|
||||
}
|
||||
|
||||
|
||||
public GyrusWakerOfCorpses(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{X}{B}{R}{G}");
|
||||
|
||||
|
||||
this.addSuperType(SuperType.LEGENDARY);
|
||||
this.subtype.add(SubType.HYDRA);
|
||||
this.power = new MageInt(0);
|
||||
this.toughness = new MageInt(0);
|
||||
|
||||
|
||||
// Gyrus, Walker of Corpses enters the battlefield with a number of +1/+1 counters on it equal to the amount of mana spent to cast it.
|
||||
Effect effect = new AddCountersSourceEffect(CounterType.P1P1.createInstance(0), ManaSpentToCastCount.instance, true);
|
||||
effect.setText("with a number of +1/+1 counters on it equal to the amount of mana spent to cast it");
|
||||
this.addAbility(new EntersBattlefieldAbility(effect));
|
||||
|
||||
|
||||
// Whenever Gyrus attacks, you may exile target creature card with lesser power from your graveyard. If you do, create a token that’s a copy of that card and that’s tapped and attacking. Exile the token at the end of combat.
|
||||
Ability ability = new AttacksTriggeredAbility(new GyrusWakerOfCorpsesEffect(), true);
|
||||
ability.addTarget(new TargetCardInYourGraveyard(filter));
|
||||
this.addAbility(ability);
|
||||
}
|
||||
|
||||
|
||||
public GyrusWakerOfCorpses(final GyrusWakerOfCorpses card) {
|
||||
super(card);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public GyrusWakerOfCorpses copy() {
|
||||
return new GyrusWakerOfCorpses(this);
|
||||
|
@ -81,7 +77,7 @@ class GyrusWakerOfCorpsesEffect extends OneShotEffect {
|
|||
|
||||
public GyrusWakerOfCorpsesEffect() {
|
||||
super(Outcome.Copy);
|
||||
this.staticText = "exile target creature card with lesser power from your graveyard. If you do, create a token that’s a copy of that card and that’s tapped and attacking. Exile the token at the end of combat.";
|
||||
this.staticText = "exile target creature card with lesser power from your graveyard. If you do, create a token that's a copy of that card and that's tapped and attacking. Exile the token at the end of combat.";
|
||||
}
|
||||
|
||||
public GyrusWakerOfCorpsesEffect(final GyrusWakerOfCorpsesEffect effect) {
|
||||
|
|
|
@ -1,7 +1,5 @@
|
|||
|
||||
package mage.cards.l;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.MageInt;
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.condition.common.IsStepCondition;
|
||||
|
@ -12,12 +10,7 @@ import mage.abilities.effects.common.continuous.BoostSourceEffect;
|
|||
import mage.abilities.effects.common.counter.AddCountersTargetEffect;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.SubType;
|
||||
import mage.constants.Duration;
|
||||
import mage.constants.Outcome;
|
||||
import mage.constants.PhaseStep;
|
||||
import mage.constants.Zone;
|
||||
import mage.constants.*;
|
||||
import mage.counters.BoostCounter;
|
||||
import mage.filter.common.FilterCreaturePermanent;
|
||||
import mage.filter.predicate.Predicates;
|
||||
|
@ -28,8 +21,9 @@ import mage.game.permanent.Permanent;
|
|||
import mage.players.Player;
|
||||
import mage.target.common.TargetCreaturePermanent;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author L_J
|
||||
*/
|
||||
public final class LesserWerewolf extends CardImpl {
|
||||
|
@ -64,7 +58,7 @@ class LesserWerewolfEffect extends OneShotEffect {
|
|||
|
||||
public LesserWerewolfEffect() {
|
||||
super(Outcome.Detriment);
|
||||
this.staticText = "If {this}’s power is 1 or more, it gets -1/-0 until end of turn and put a -0/-1 counter on target creature blocking or blocked by {this}";
|
||||
this.staticText = "If {this}'s power is 1 or more, it gets -1/-0 until end of turn and put a -0/-1 counter on target creature blocking or blocked by {this}";
|
||||
}
|
||||
|
||||
public LesserWerewolfEffect(final LesserWerewolfEffect effect) {
|
||||
|
|
|
@ -52,7 +52,7 @@ class MindExtractionEffect extends OneShotEffect {
|
|||
|
||||
MindExtractionEffect() {
|
||||
super(Outcome.Benefit);
|
||||
staticText = "Target player reveals their hand and discards all cards of each of the sacrificed creature’s colors.";
|
||||
staticText = "Target player reveals their hand and discards all cards of each of the sacrificed creature's colors.";
|
||||
}
|
||||
|
||||
private MindExtractionEffect(final MindExtractionEffect effect) {
|
||||
|
|
|
@ -1,24 +1,24 @@
|
|||
package mage.cards.p;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.common.BeginningOfUpkeepTriggeredAbility;
|
||||
import mage.abilities.costs.Cost;
|
||||
import mage.abilities.costs.common.SacrificeTargetCost;
|
||||
import mage.abilities.effects.OneShotEffect;
|
||||
import mage.abilities.effects.common.SacrificeSourceEffect;
|
||||
import mage.constants.SuperType;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.Outcome;
|
||||
import mage.constants.SuperType;
|
||||
import mage.constants.TargetController;
|
||||
import mage.game.Game;
|
||||
import mage.players.Player;
|
||||
import mage.target.common.TargetControlledCreaturePermanent;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author TheElk801
|
||||
*/
|
||||
public final class PillarTombsOfAku extends CardImpl {
|
||||
|
@ -51,7 +51,7 @@ class PillarTombsOfAkuEffect extends OneShotEffect {
|
|||
public PillarTombsOfAkuEffect() {
|
||||
super(Outcome.Benefit);
|
||||
this.staticText = "that player may sacrifice a creature. If that "
|
||||
+ "player doesn’t, they lose 5 life and you sacrifice {this}";
|
||||
+ "player doesn't, they lose 5 life and you sacrifice {this}";
|
||||
}
|
||||
|
||||
public PillarTombsOfAkuEffect(final PillarTombsOfAkuEffect effect) {
|
||||
|
|
|
@ -1,7 +1,5 @@
|
|||
|
||||
package mage.cards.p;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.common.DiesAttachedTriggeredAbility;
|
||||
import mage.abilities.costs.Cost;
|
||||
|
@ -22,8 +20,9 @@ import mage.players.Player;
|
|||
import mage.target.TargetPermanent;
|
||||
import mage.target.common.TargetCreaturePermanent;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author L_J
|
||||
*/
|
||||
public final class PuppetMaster extends CardImpl {
|
||||
|
@ -57,7 +56,7 @@ class PuppetMasterEffect extends OneShotEffect {
|
|||
|
||||
public PuppetMasterEffect() {
|
||||
super(Outcome.ReturnToHand);
|
||||
staticText = "return that card to its owner's hand. If that card is returned to its owner’s hand this way, you may pay {U}{U}{U}. If you do, return {this} to its owner’s hand";
|
||||
staticText = "return that card to its owner's hand. If that card is returned to its owner's hand this way, you may pay {U}{U}{U}. If you do, return {this} to its owner's hand";
|
||||
}
|
||||
|
||||
public PuppetMasterEffect(final PuppetMasterEffect effect) {
|
||||
|
@ -73,7 +72,7 @@ class PuppetMasterEffect extends OneShotEffect {
|
|||
public boolean apply(Game game, Ability source) {
|
||||
Object object = getValue("attachedTo");
|
||||
if (object instanceof Permanent) {
|
||||
Card card = game.getCard(((Permanent)object).getId());
|
||||
Card card = game.getCard(((Permanent) object).getId());
|
||||
if (card != null) {
|
||||
if (card.moveToZone(Zone.HAND, source.getSourceId(), game, false)) {
|
||||
Cost cost = new ManaCostsImpl("{U}{U}{U}");
|
||||
|
|
|
@ -1,8 +1,5 @@
|
|||
|
||||
|
||||
package mage.cards.q;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.abilities.costs.mana.ManaCostsImpl;
|
||||
import mage.abilities.effects.common.DamageTargetEffect;
|
||||
import mage.abilities.effects.common.UnlessPaysDelayedEffect;
|
||||
|
@ -10,25 +7,25 @@ import mage.cards.CardImpl;
|
|||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.PhaseStep;
|
||||
import mage.target.TargetPlayer;
|
||||
import mage.target.common.TargetPlayerOrPlaneswalker;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author BetaSteward_at_googlemail.com
|
||||
*/
|
||||
public final class QuenchableFire extends CardImpl {
|
||||
|
||||
public QuenchableFire(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{3}{R}");
|
||||
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{3}{R}");
|
||||
|
||||
// Quenchable Fire deals 3 damage to target player.
|
||||
this.getSpellAbility().addTarget(new TargetPlayerOrPlaneswalker());
|
||||
this.getSpellAbility().addEffect(new DamageTargetEffect(3));
|
||||
// It deals an additional 3 damage to that player or planeswalker at the beginning of your next upkeep step unless that player or that planeswalker’s controller pays {U} before that step.
|
||||
this.getSpellAbility().addEffect(new UnlessPaysDelayedEffect(new ManaCostsImpl("{U}"),
|
||||
new DamageTargetEffect(3, true, "that player or that planeswalker's controller"), PhaseStep.UPKEEP, false,
|
||||
"It deals an additional 3 damage to that player or planeswalker at the beginning of your next upkeep step unless that player or that planeswalker’s controller pays {U} before that step."));
|
||||
new DamageTargetEffect(3, true, "that player or that planeswalker's controller"), PhaseStep.UPKEEP, false,
|
||||
"It deals an additional 3 damage to that player or planeswalker at the beginning of your next upkeep step unless that player or that planeswalker's controller pays {U} before that step."));
|
||||
}
|
||||
|
||||
public QuenchableFire(final QuenchableFire card) {
|
||||
|
|
|
@ -57,7 +57,7 @@ class RakdosAugermageEffect extends OneShotEffect {
|
|||
|
||||
public RakdosAugermageEffect() {
|
||||
super(Outcome.Discard);
|
||||
staticText = "reveal your hand and discard a card of target opponent’s choice";
|
||||
staticText = "reveal your hand and discard a card of target opponent's choice";
|
||||
}
|
||||
|
||||
public RakdosAugermageEffect(final RakdosAugermageEffect effect) {
|
||||
|
|
|
@ -74,6 +74,6 @@ class RakdosRoustaboutAbility extends TriggeredAbilityImpl {
|
|||
|
||||
@Override
|
||||
public String getRule() {
|
||||
return "Whenever {this} becomes blocked, it deals 1 damage to the player or planeswalker it’s attacking";
|
||||
return "Whenever {this} becomes blocked, it deals 1 damage to the player or planeswalker it's attacking";
|
||||
}
|
||||
}
|
||||
|
|
|
@ -30,7 +30,7 @@ public final class RapaciousDragon extends CardImpl {
|
|||
// When Rapacious Dragon enters the battlefield, create two Treasure tokens.
|
||||
this.addAbility(new EntersBattlefieldTriggeredAbility(
|
||||
new CreateTokenEffect(new TreasureToken(), 2)
|
||||
.setText("create two Treasure tokens. <i>(They’re artifacts with " +
|
||||
.setText("create two Treasure tokens. <i>(They're artifacts with " +
|
||||
"\"{T}, Sacrifice this artifact: Add one mana of any color.\")</i>")
|
||||
));
|
||||
}
|
||||
|
|
|
@ -1,27 +1,27 @@
|
|||
|
||||
package mage.cards.r;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.common.CastOnlyDuringPhaseStepSourceAbility;
|
||||
import mage.abilities.condition.common.BeforeBlockersAreDeclaredCondition;
|
||||
import mage.abilities.effects.ContinuousEffect;
|
||||
import mage.abilities.effects.Effect;
|
||||
import mage.abilities.effects.OneShotEffect;
|
||||
import mage.abilities.effects.common.continuous.GainAbilityTargetEffect;
|
||||
import mage.abilities.keyword.FirstStrikeAbility;
|
||||
import mage.abilities.keyword.RampageAbility;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.*;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.Duration;
|
||||
import mage.constants.Outcome;
|
||||
import mage.game.Game;
|
||||
import mage.game.permanent.Permanent;
|
||||
import mage.players.Player;
|
||||
import mage.target.common.TargetCreaturePermanent;
|
||||
import mage.target.targetpointer.FixedTarget;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author L_J
|
||||
*/
|
||||
public final class RapidFire extends CardImpl {
|
||||
|
@ -54,7 +54,7 @@ class RapidFireEffect extends OneShotEffect {
|
|||
|
||||
public RapidFireEffect() {
|
||||
super(Outcome.AddAbility);
|
||||
this.staticText = "If it doesn’t have rampage, that creature gains rampage 2 until end of turn";
|
||||
this.staticText = "If it doesn't have rampage, that creature gains rampage 2 until end of turn";
|
||||
}
|
||||
|
||||
public RapidFireEffect(final RapidFireEffect effect) {
|
||||
|
|
|
@ -1,7 +1,5 @@
|
|||
|
||||
package mage.cards.r;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.effects.ReplacementEffectImpl;
|
||||
import mage.cards.CardImpl;
|
||||
|
@ -18,8 +16,9 @@ import mage.game.stack.Spell;
|
|||
import mage.players.Player;
|
||||
import mage.target.TargetSpell;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author L_J
|
||||
*/
|
||||
public final class Reverberation extends CardImpl {
|
||||
|
@ -52,7 +51,7 @@ class ReverberationEffect extends ReplacementEffectImpl {
|
|||
|
||||
public ReverberationEffect() {
|
||||
super(Duration.EndOfTurn, Outcome.RedirectDamage);
|
||||
staticText = "All damage that would be dealt this turn by target sorcery spell is dealt to that spell’s controller instead";
|
||||
staticText = "All damage that would be dealt this turn by target sorcery spell is dealt to that spell's controller instead";
|
||||
}
|
||||
|
||||
public ReverberationEffect(final ReverberationEffect effect) {
|
||||
|
|
|
@ -1,9 +1,5 @@
|
|||
|
||||
package mage.cards.s;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.UUID;
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.common.SimpleActivatedAbility;
|
||||
import mage.abilities.common.delayed.AtTheBeginOfNextUpkeepDelayedTriggeredAbility;
|
||||
|
@ -14,11 +10,7 @@ import mage.abilities.effects.common.CreateDelayedTriggeredAbilityEffect;
|
|||
import mage.abilities.effects.common.DrawCardSourceControllerEffect;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.Outcome;
|
||||
import mage.constants.SubType;
|
||||
import mage.constants.TargetController;
|
||||
import mage.constants.Zone;
|
||||
import mage.constants.*;
|
||||
import mage.filter.FilterPermanent;
|
||||
import mage.filter.predicate.mageobject.SubtypePredicate;
|
||||
import mage.filter.predicate.other.OwnerPredicate;
|
||||
|
@ -27,19 +19,23 @@ import mage.game.permanent.Permanent;
|
|||
import mage.players.Player;
|
||||
import mage.target.TargetPermanent;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author L_J
|
||||
*/
|
||||
public final class ScarabOfTheUnseen extends CardImpl {
|
||||
|
||||
private static final FilterPermanent filter = new FilterPermanent("permanent you own");
|
||||
|
||||
static {
|
||||
filter.add(new OwnerPredicate(TargetController.YOU));
|
||||
}
|
||||
|
||||
public ScarabOfTheUnseen(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{2}");
|
||||
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{2}");
|
||||
|
||||
// {T}, Sacrifice Scarab of the Unseen: Return all Auras attached to target permanent you own to their owners’ hands. Draw a card at the beginning of the next turn’s upkeep.
|
||||
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new ScarabOfTheUnseenEffect(), new TapSourceCost());
|
||||
|
@ -62,13 +58,14 @@ public final class ScarabOfTheUnseen extends CardImpl {
|
|||
class ScarabOfTheUnseenEffect extends OneShotEffect {
|
||||
|
||||
private static final FilterPermanent filter = new FilterPermanent();
|
||||
|
||||
static {
|
||||
filter.add(new SubtypePredicate(SubType.AURA));
|
||||
}
|
||||
|
||||
public ScarabOfTheUnseenEffect() {
|
||||
super(Outcome.ReturnToHand);
|
||||
this.staticText = "Return all Auras attached to target permanent you own to their owners’ hands";
|
||||
this.staticText = "Return all Auras attached to target permanent you own to their owners' hands";
|
||||
}
|
||||
|
||||
public ScarabOfTheUnseenEffect(final ScarabOfTheUnseenEffect effect) {
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
package mage.cards.s;
|
||||
|
||||
import mage.abilities.common.BeginningOfUpkeepTriggeredAbility;
|
||||
import mage.abilities.condition.common.CardsInHandCondition;
|
||||
import mage.abilities.condition.Condition;
|
||||
import mage.abilities.condition.common.CardsInHandCondition;
|
||||
import mage.abilities.decorator.ConditionalInterveningIfTriggeredAbility;
|
||||
import mage.abilities.effects.common.LoseLifeTargetEffect;
|
||||
import mage.cards.CardImpl;
|
||||
|
@ -29,8 +29,8 @@ public final class ShriekingAffliction extends CardImpl {
|
|||
Zone.BATTLEFIELD, new LoseLifeTargetEffect(3),
|
||||
TargetController.OPPONENT, false, true
|
||||
),
|
||||
(Condition)new CardsInHandCondition(ComparisonType.FEWER_THAN, 2, null, TargetController.ACTIVE),
|
||||
"At the beginning of each opponent’s upkeep, if that player has one or fewer cards in hand, they lose 3 life."
|
||||
new CardsInHandCondition(ComparisonType.FEWER_THAN, 2, null, TargetController.ACTIVE),
|
||||
"At the beginning of each opponent's upkeep, if that player has one or fewer cards in hand, they lose 3 life."
|
||||
));
|
||||
}
|
||||
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
|
||||
package mage.cards.s;
|
||||
|
||||
import mage.abilities.Ability;
|
||||
|
@ -65,8 +64,8 @@ class SoulBurnEffect extends OneShotEffect {
|
|||
SoulBurnEffect() {
|
||||
super(Outcome.Damage);
|
||||
staticText = "{this} deals X damage to any target. You gain life equal to the damage dealt, " +
|
||||
"but not more than the amount of {B} spent on X, the player’s life total before the damage was dealt, " +
|
||||
"the planeswalker’s loyalty before the damage was dealt, or the creature’s toughness.";
|
||||
"but not more than the amount of {B} spent on X, the player's life total before the damage was dealt, " +
|
||||
"the planeswalker's loyalty before the damage was dealt, or the creature's toughness.";
|
||||
}
|
||||
|
||||
private SoulBurnEffect(final SoulBurnEffect effect) {
|
||||
|
|
|
@ -47,8 +47,8 @@ public final class SparkDouble extends CardImpl {
|
|||
// it enters with an additional loyalty counter on it if it’s a planeswalker, and it isn’t legendary if that permanent is legendary.
|
||||
Effect effect = new CopyPermanentEffect(filter, new SparkDoubleExceptEffectsApplyerToPermanent());
|
||||
effect.setText("as a copy of a creature or planeswalker you control, "
|
||||
+ "except it enters with an additional +1/+1 counter on it if it’s a creature, "
|
||||
+ "it enters with an additional loyalty counter on it if it’s a planeswalker, and it isn’t legendary if that permanent is legendary.");
|
||||
+ "except it enters with an additional +1/+1 counter on it if it's a creature, "
|
||||
+ "it enters with an additional loyalty counter on it if it's a planeswalker, and it isn't legendary if that permanent is legendary.");
|
||||
EntersBattlefieldAbility ability = new EntersBattlefieldAbility(effect, true);
|
||||
this.addAbility(ability);
|
||||
}
|
||||
|
|
|
@ -1,10 +1,5 @@
|
|||
|
||||
package mage.cards.s;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
import java.util.UUID;
|
||||
import mage.MageObject;
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.common.AsEntersBattlefieldAbility;
|
||||
|
@ -23,14 +18,18 @@ import mage.game.stack.Spell;
|
|||
import mage.players.Player;
|
||||
import mage.util.CardUtil;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author L_J
|
||||
*/
|
||||
public final class StaffOfTheLetterMagus extends CardImpl {
|
||||
|
||||
public StaffOfTheLetterMagus(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{3}");
|
||||
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{3}");
|
||||
|
||||
// As Staff of the Letter Magus enters the battlefield, choose a consonant other than N, R, S, or T.
|
||||
this.addAbility(new AsEntersBattlefieldAbility(new StaffOfTheLetterMagusChooseLetterEffect()));
|
||||
|
@ -74,7 +73,7 @@ class StaffOfTheLetterMagusChooseLetterEffect extends OneShotEffect {
|
|||
// Can I choose Y?
|
||||
// Yes. We play by popular game show rules here. Y is a consonant.
|
||||
// https://magic.wizards.com/en/articles/archive/news/unstable-faqawaslfaqpaftidawabiajtbt-2017-12-06
|
||||
Character[] forbiddenChars = {'A','E','I','N','O','R','S','T','U'};
|
||||
Character[] forbiddenChars = {'A', 'E', 'I', 'N', 'O', 'R', 'S', 'T', 'U'};
|
||||
for (Character letter = 'A'; letter <= 'Z'; letter++) {
|
||||
if (Arrays.binarySearch(forbiddenChars, letter) < 0) {
|
||||
choices.add(letter.toString());
|
||||
|
@ -105,7 +104,7 @@ class StaffOfTheLetterMagusEffect extends OneShotEffect {
|
|||
|
||||
public StaffOfTheLetterMagusEffect() {
|
||||
super(Outcome.GainLife);
|
||||
staticText = "you gain 1 life for each time the chosen letter appears in that spell’s name";
|
||||
staticText = "you gain 1 life for each time the chosen letter appears in that spell's name";
|
||||
}
|
||||
|
||||
public StaffOfTheLetterMagusEffect(final StaffOfTheLetterMagusEffect effect) {
|
||||
|
|
|
@ -1,11 +1,5 @@
|
|||
|
||||
package mage.cards.s;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
import java.util.UUID;
|
||||
import java.util.stream.Collectors;
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.common.BeginningOfCombatTriggeredAbility;
|
||||
import mage.abilities.effects.OneShotEffect;
|
||||
|
@ -26,14 +20,19 @@ import mage.target.common.TargetCreaturePermanent;
|
|||
import mage.target.common.TargetOpponent;
|
||||
import mage.target.targetpointer.FixedTarget;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
import java.util.UUID;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author LevelX2 & L_J
|
||||
*/
|
||||
public final class StandOrFall extends CardImpl {
|
||||
|
||||
public StandOrFall(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{3}{R}");
|
||||
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{3}{R}");
|
||||
|
||||
// At the beginning of combat on your turn, separate all creatures defending player controls into two piles. Only creatures in the pile of that player’s choice can block this turn.
|
||||
this.addAbility(new BeginningOfCombatTriggeredAbility(new StandOrFallEffect(), TargetController.YOU, false));
|
||||
|
@ -53,7 +52,7 @@ class StandOrFallEffect extends OneShotEffect {
|
|||
|
||||
public StandOrFallEffect() {
|
||||
super(Outcome.Detriment);
|
||||
this.staticText = "separate all creatures defending player controls into two piles. Only creatures in the pile of that player’s choice can block this turn";
|
||||
this.staticText = "separate all creatures defending player controls into two piles. Only creatures in the pile of that player's choice can block this turn";
|
||||
}
|
||||
|
||||
public StandOrFallEffect(final StandOrFallEffect effect) {
|
||||
|
@ -110,7 +109,7 @@ class StandOrFallEffect extends OneShotEffect {
|
|||
pile2.add(p);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
boolean choice = targetPlayer.choosePile(outcome, "Choose which pile can block this turn.", pile1, pile2, game);
|
||||
List<Permanent> chosenPile = choice ? pile2 : pile1;
|
||||
List<Permanent> otherPile = choice ? pile1 : pile2;
|
||||
|
|
|
@ -1,7 +1,5 @@
|
|||
|
||||
package mage.cards.s;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.MageInt;
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.common.SimpleActivatedAbility;
|
||||
|
@ -10,12 +8,7 @@ import mage.abilities.effects.OneShotEffect;
|
|||
import mage.abilities.effects.common.continuous.SetPowerToughnessSourceEffect;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.SubType;
|
||||
import mage.constants.Duration;
|
||||
import mage.constants.Outcome;
|
||||
import mage.constants.SubLayer;
|
||||
import mage.constants.Zone;
|
||||
import mage.constants.*;
|
||||
import mage.filter.common.FilterCreaturePermanent;
|
||||
import mage.filter.predicate.Predicates;
|
||||
import mage.filter.predicate.permanent.BlockedByIdPredicate;
|
||||
|
@ -26,8 +19,9 @@ import mage.players.Player;
|
|||
import mage.target.common.TargetCreaturePermanent;
|
||||
import mage.util.CardUtil;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author LevelX2 & L_J
|
||||
*/
|
||||
public final class SwornDefender extends CardImpl {
|
||||
|
@ -63,7 +57,7 @@ class SwornDefenderEffect extends OneShotEffect {
|
|||
|
||||
public SwornDefenderEffect() {
|
||||
super(Outcome.Detriment);
|
||||
this.staticText = "{this}'s power becomes the toughness of target creature blocking or being blocked by {this} minus 1 until end of turn, and {this}’s toughness becomes 1 plus the power of that creature until end of turn";
|
||||
this.staticText = "{this}'s power becomes the toughness of target creature blocking or being blocked by {this} minus 1 until end of turn, and {this}'s toughness becomes 1 plus the power of that creature until end of turn";
|
||||
}
|
||||
|
||||
public SwornDefenderEffect(final SwornDefenderEffect effect) {
|
||||
|
|
|
@ -144,7 +144,7 @@ class TheFallenApartRestrictionEffect extends RestrictionEffect {
|
|||
|
||||
public TheFallenApartRestrictionEffect() {
|
||||
super(Duration.WhileOnBattlefield);
|
||||
staticText = "{this} can’t attack if it has no legs and can’t block if it has no arms";
|
||||
staticText = "{this} can't attack if it has no legs and can't block if it has no arms";
|
||||
}
|
||||
|
||||
public TheFallenApartRestrictionEffect(final TheFallenApartRestrictionEffect effect) {
|
||||
|
|
|
@ -94,7 +94,7 @@ class TogglodyteToggleEffect extends OneShotEffect {
|
|||
|
||||
public TogglodyteToggleEffect() {
|
||||
super(Outcome.Neutral);
|
||||
staticText = "toggle {this}’s ON/OFF switch";
|
||||
staticText = "toggle {this}'s ON/OFF switch";
|
||||
}
|
||||
|
||||
public TogglodyteToggleEffect(final TogglodyteToggleEffect effect) {
|
||||
|
@ -158,7 +158,7 @@ class TogglodytePreventionEffect extends PreventionEffectImpl {
|
|||
|
||||
public TogglodytePreventionEffect() {
|
||||
super(Duration.WhileOnBattlefield, Integer.MAX_VALUE, false);
|
||||
staticText = "As long as {this} is turned off, it can’t attack or block, and prevent all damage it would deal";
|
||||
staticText = "As long as {this} is turned off, it can't attack or block, and prevent all damage it would deal";
|
||||
}
|
||||
|
||||
public TogglodytePreventionEffect(final TogglodytePreventionEffect effect) {
|
||||
|
|
|
@ -142,7 +142,7 @@ class UnboundFlourishingCopyAbility extends TriggeredAbilityImpl {
|
|||
|
||||
@Override
|
||||
public String getRule() {
|
||||
return "Whenever you cast an instant or sorcery spell or activate an ability, if that spell’s mana cost or that ability’s activation cost contains {X}" + super.getRule();
|
||||
return "Whenever you cast an instant or sorcery spell or activate an ability, if that spell's mana cost or that ability's activation cost contains {X}" + super.getRule();
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
package mage.cards.u;
|
||||
|
||||
import java.util.*;
|
||||
import mage.Mana;
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.LoyaltyAbility;
|
||||
|
@ -46,6 +45,8 @@ import mage.target.TargetPlayer;
|
|||
import mage.target.common.*;
|
||||
import mage.util.RandomUtil;
|
||||
|
||||
import java.util.*;
|
||||
|
||||
/**
|
||||
* @author L_J
|
||||
*/
|
||||
|
@ -172,7 +173,7 @@ class UrzaAcademyHeadmasterRandomEffect extends OneShotEffect {
|
|||
effects.add(new RevealLibraryPutIntoHandEffect(5, new FilterCreatureCard("creature cards"), Zone.LIBRARY));
|
||||
break;
|
||||
case 8: // GIDEON JURA 1
|
||||
sb.append("During target opponent’s next turn, creatures that player controls attack Urza if able.");
|
||||
sb.append("During target opponent's next turn, creatures that player controls attack Urza if able.");
|
||||
effects.add(new mage.cards.g.GideonJura(controller.getId(), setInfo).getAbilities().get(2).getEffects().get(0));
|
||||
target = new TargetOpponent();
|
||||
break;
|
||||
|
@ -191,11 +192,11 @@ class UrzaAcademyHeadmasterRandomEffect extends OneShotEffect {
|
|||
target = new TargetPlayer();
|
||||
break;
|
||||
case 12: // NISSA SAGE ANIMIST 1
|
||||
sb.append("Reveal the top card of your library. If it’s a land card, put it onto the battlefield. Otherwise, put it into your hand.");
|
||||
sb.append("Reveal the top card of your library. If it's a land card, put it onto the battlefield. Otherwise, put it into your hand.");
|
||||
effects.add(new mage.cards.n.NissaSageAnimist(controller.getId(), setInfo).getAbilities().get(2).getEffects().get(0));
|
||||
break;
|
||||
case 13: // NISSA WORLDWAKER 1
|
||||
sb.append("Target land you control becomes a 4/4 Elemental creature with trample. It’s still a land.");
|
||||
sb.append("Target land you control becomes a 4/4 Elemental creature with trample. It's still a land.");
|
||||
effects.add(new mage.cards.n.NissaWorldwaker(controller.getId(), setInfo).getAbilities().get(2).getEffects().get(0));
|
||||
target = new TargetPermanent(new FilterControlledLandPermanent());
|
||||
break;
|
||||
|
@ -204,7 +205,7 @@ class UrzaAcademyHeadmasterRandomEffect extends OneShotEffect {
|
|||
effects.add(new mage.cards.s.SarkhanUnbroken(controller.getId(), setInfo).getAbilities().get(2).getEffects().get(0));
|
||||
break;
|
||||
case 15: // SARKHAN THE DRAGONSPEAKER 1
|
||||
sb.append("Until end of turn, Urza becomes a legendary 4/4 red Dragon creature with flying, indestructible, and haste. (He doesn’t lose loyalty while he’s not a planeswalker.)");
|
||||
sb.append("Until end of turn, Urza becomes a legendary 4/4 red Dragon creature with flying, indestructible, and haste. (He doesn't lose loyalty while he's not a planeswalker.)");
|
||||
effects.add(new mage.cards.s.SarkhanTheDragonspeaker(controller.getId(), setInfo).getAbilities().get(2).getEffects().get(0));
|
||||
break;
|
||||
case 16: // SORIN SOLEMN VISITOR 1
|
||||
|
@ -305,7 +306,7 @@ class UrzaAcademyHeadmasterRandomEffect extends OneShotEffect {
|
|||
effects.add(new CreateTokenEffect(new DragonTokenGold(), 1));
|
||||
break;
|
||||
case 16: // SORIN MARKOV 2
|
||||
sb.append("Target player’s life total becomes 10.");
|
||||
sb.append("Target player's life total becomes 10.");
|
||||
effects.add(new mage.cards.s.SorinMarkov(controller.getId(), setInfo).getAbilities().get(3).getEffects().get(0));
|
||||
target = new TargetPlayer();
|
||||
break;
|
||||
|
@ -396,12 +397,12 @@ class UrzaAcademyHeadmasterRandomEffect extends OneShotEffect {
|
|||
effects.add(new GetEmblemEffect(new KioraMasterOfTheDepthsEmblem()));
|
||||
break;
|
||||
case 14: // SORIN MARKOV 3
|
||||
sb.append("You control target player during that player’s next turn.");
|
||||
sb.append("You control target player during that player's next turn.");
|
||||
effects.add(new ControlTargetPlayerNextTurnEffect());
|
||||
target = new TargetPlayer();
|
||||
break;
|
||||
case 15: // JACE THE MIND SCULPTOR 4
|
||||
sb.append("Exile all cards from target player’s library, then that player shuffles their hand into their library.");
|
||||
sb.append("Exile all cards from target player's library, then that player shuffles their hand into their library.");
|
||||
effects.add(new mage.cards.j.JaceTheMindSculptor(controller.getId(), setInfo).getAbilities().get(5).getEffects().get(0));
|
||||
target = new TargetPlayer();
|
||||
break;
|
||||
|
|
|
@ -1,35 +1,29 @@
|
|||
|
||||
package mage.cards.w;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.MageInt;
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.common.BeginningOfUpkeepTriggeredAbility;
|
||||
import mage.abilities.dynamicvalue.common.StaticValue;
|
||||
import mage.abilities.dynamicvalue.common.CardsInControllerGraveyardCount;
|
||||
import mage.abilities.dynamicvalue.common.StaticValue;
|
||||
import mage.abilities.effects.OneShotEffect;
|
||||
import mage.abilities.effects.common.continuous.SetToughnessSourceEffect;
|
||||
import mage.abilities.keyword.DefenderAbility;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.SubType;
|
||||
import mage.constants.Duration;
|
||||
import mage.constants.Outcome;
|
||||
import mage.constants.SubLayer;
|
||||
import mage.constants.TargetController;
|
||||
import mage.constants.*;
|
||||
import mage.filter.StaticFilters;
|
||||
import mage.game.Game;
|
||||
import mage.util.CardUtil;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author L_J
|
||||
*/
|
||||
public final class WallOfTombstones extends CardImpl {
|
||||
|
||||
public WallOfTombstones(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{B}");
|
||||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{B}");
|
||||
this.subtype.add(SubType.WALL);
|
||||
this.power = new MageInt(0);
|
||||
this.toughness = new MageInt(1);
|
||||
|
@ -56,7 +50,7 @@ class WallOfTombstonesEffect extends OneShotEffect {
|
|||
|
||||
public WallOfTombstonesEffect() {
|
||||
super(Outcome.Detriment);
|
||||
this.staticText = "change {this}’s base toughness to 1 plus the number of creature cards in your graveyard";
|
||||
this.staticText = "change {this}'s base toughness to 1 plus the number of creature cards in your graveyard";
|
||||
}
|
||||
|
||||
public WallOfTombstonesEffect(final WallOfTombstonesEffect effect) {
|
||||
|
|
|
@ -1,9 +1,5 @@
|
|||
|
||||
package mage.cards.w;
|
||||
|
||||
import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
import java.util.UUID;
|
||||
import mage.MageObject;
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.effects.OneShotEffect;
|
||||
|
@ -20,21 +16,24 @@ import mage.players.Player;
|
|||
import mage.target.common.TargetCreaturePermanent;
|
||||
import mage.target.targetpointer.FixedTarget;
|
||||
|
||||
import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author L_J
|
||||
*/
|
||||
public final class WhenFluffyBunniesAttack extends CardImpl {
|
||||
|
||||
public WhenFluffyBunniesAttack (UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{3}{B}");
|
||||
public WhenFluffyBunniesAttack(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{3}{B}");
|
||||
|
||||
// Target creature gets -X/-X until end of turn, where X is the number of times the letter of your choice appears in that creature’s name.
|
||||
this.getSpellAbility().addEffect(new WhenFluffyBunniesAttackEffect());
|
||||
this.getSpellAbility().addTarget(new TargetCreaturePermanent());
|
||||
}
|
||||
|
||||
public WhenFluffyBunniesAttack (final WhenFluffyBunniesAttack card) {
|
||||
public WhenFluffyBunniesAttack(final WhenFluffyBunniesAttack card) {
|
||||
super(card);
|
||||
}
|
||||
|
||||
|
@ -49,7 +48,7 @@ class WhenFluffyBunniesAttackEffect extends OneShotEffect {
|
|||
|
||||
public WhenFluffyBunniesAttackEffect() {
|
||||
super(Outcome.Detriment);
|
||||
staticText = "Target creature gets -X/-X until end of turn, where X is the number of times the letter of your choice appears in that creature’s name";
|
||||
staticText = "Target creature gets -X/-X until end of turn, where X is the number of times the letter of your choice appears in that creature's name";
|
||||
}
|
||||
|
||||
public WhenFluffyBunniesAttackEffect(final WhenFluffyBunniesAttackEffect effect) {
|
||||
|
@ -76,7 +75,7 @@ class WhenFluffyBunniesAttackEffect extends OneShotEffect {
|
|||
game.informPlayers(mageObject.getLogName() + ": " + controller.getLogName() + " has chosen " + choice.getChoice());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Character chosenLetter = choice.getChoice().charAt(0);
|
||||
int unboostValue = 0;
|
||||
String permName = permanent.getName();
|
||||
|
|
|
@ -41,7 +41,7 @@ class WidespreadBrutalityEffect extends OneShotEffect {
|
|||
super(Outcome.Benefit);
|
||||
staticText = "Amass 2, then the Army you amassed deals damage equal to its power to each non-Army creature. " +
|
||||
"<i>(To amass 2, put two +1/+1 counters on an Army you control. " +
|
||||
"If you don’t control one, create a 0/0 black Zombie Army creature token first.)</i>";
|
||||
"If you don't control one, create a 0/0 black Zombie Army creature token first.)</i>";
|
||||
}
|
||||
|
||||
private WidespreadBrutalityEffect(final WidespreadBrutalityEffect effect) {
|
||||
|
|
|
@ -1,8 +1,5 @@
|
|||
|
||||
package mage.cards.w;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.UUID;
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.common.SimpleActivatedAbility;
|
||||
import mage.abilities.costs.common.SacrificeSourceCost;
|
||||
|
@ -23,14 +20,16 @@ import mage.game.Game;
|
|||
import mage.game.permanent.Permanent;
|
||||
import mage.players.Player;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author L_J
|
||||
*/
|
||||
public final class WorldBottlingKit extends CardImpl {
|
||||
|
||||
public WorldBottlingKit(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{5}");
|
||||
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{5}");
|
||||
|
||||
// {5}, Sacrifice World-Bottling Kit: Choose a Magic set. Exile all permanents with that set’s expansion symbol except for basic lands.
|
||||
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new WorldBottlingKitEffect(), new ManaCostsImpl("{5}"));
|
||||
|
@ -52,7 +51,7 @@ class WorldBottlingKitEffect extends OneShotEffect {
|
|||
|
||||
public WorldBottlingKitEffect() {
|
||||
super(Outcome.DestroyPermanent);
|
||||
this.staticText = "Choose a Magic set. Exile all permanents with that set’s expansion symbol except for basic lands";
|
||||
this.staticText = "Choose a Magic set. Exile all permanents with that set's expansion symbol except for basic lands";
|
||||
}
|
||||
|
||||
public WorldBottlingKitEffect(final WorldBottlingKitEffect effect) {
|
||||
|
|
|
@ -52,7 +52,7 @@ public final class XantchaSleeperAgent extends CardImpl {
|
|||
// {3}: Xantcha’s controller loses 2 life and you draw a card. Any player may activate this ability.
|
||||
SimpleActivatedAbility simpleAbility = new SimpleActivatedAbility(
|
||||
new LoseLifePermanentControllerEffect(2)
|
||||
.setText("{this}’s controller loses 2 life"),
|
||||
.setText("{this}'s controller loses 2 life"),
|
||||
new GenericManaCost(3)
|
||||
);
|
||||
simpleAbility.addEffect(new DrawCardSourceControllerEffect(1).setText("and you draw a card"));
|
||||
|
|
|
@ -39,7 +39,7 @@ public class AmassEffect extends OneShotEffect {
|
|||
this(new StaticValue(amassNumber));
|
||||
staticText = "amass " + amassNumber + ". <i>(Put " + CardUtil.numberToText(amassNumber)
|
||||
+ " +1/+1 counter" + (amassNumber > 1 ? "s " : " ")
|
||||
+ "on an Army you control. If you don’t control one, "
|
||||
+ "on an Army you control. If you don't control one, "
|
||||
+ "create a 0/0 black Zombie Army creature token first.)</i>";
|
||||
}
|
||||
|
||||
|
@ -47,7 +47,7 @@ public class AmassEffect extends OneShotEffect {
|
|||
super(Outcome.BoostCreature);
|
||||
this.amassNumber = amassNumber;
|
||||
staticText = "amass X, where X is the number of " + amassNumber.getMessage() + ". <i>(Put X +1/+1 counters"
|
||||
+ "on an Army you control. If you don’t control one, "
|
||||
+ "on an Army you control. If you don't control one, "
|
||||
+ "create a 0/0 black Zombie Army creature token first.)</i>";
|
||||
}
|
||||
|
||||
|
|
|
@ -1,26 +1,21 @@
|
|||
package mage.game.permanent.token;
|
||||
|
||||
import mage.constants.CardType;
|
||||
import mage.MageInt;
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.common.SimpleStaticAbility;
|
||||
import mage.abilities.effects.ContinuousRuleModifyingEffectImpl;
|
||||
import mage.abilities.keyword.FlyingAbility;
|
||||
import mage.constants.Duration;
|
||||
import mage.constants.Outcome;
|
||||
import mage.constants.SubType;
|
||||
import mage.constants.Zone;
|
||||
import mage.constants.*;
|
||||
import mage.game.Game;
|
||||
import mage.game.events.GameEvent;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author spjspj
|
||||
*/
|
||||
public final class TetraviteToken extends TokenImpl {
|
||||
|
||||
public TetraviteToken() {
|
||||
super("Tetravite", "1/1 colorless Tetravite artifact creature token with flying and \"This creature can’t be enchanted.\"");
|
||||
super("Tetravite", "1/1 colorless Tetravite artifact creature token with flying and \"This creature can't be enchanted.\"");
|
||||
cardType.add(CardType.CREATURE);
|
||||
cardType.add(CardType.ARTIFACT);
|
||||
subtype.add(SubType.TETRAVITE);
|
||||
|
|
Loading…
Reference in a new issue