Fixed wrong symbols in rules

This commit is contained in:
Oleg Agafonov 2020-01-01 14:28:12 +04:00
parent ed8c3276e1
commit 4d51d379fe
45 changed files with 190 additions and 266 deletions

View file

@ -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! Its 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) {

View file

@ -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 didnt tap any nonland permanents that turn";
return "if that player didn't tap any nonland permanents that turn";
}
}

View file

@ -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 players 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) {

View file

@ -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 doesnt 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 cant, 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 cant, 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) {

View file

@ -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 opponents 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) {

View file

@ -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 opponents turn.
this.addAbility(new CastOnlyIfConditionIsTrueAbility(OnOpponentsTurnCondition.instance, "Cast this spell only during an opponents 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));

View file

@ -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 owners hand, "
+ "among permanents they control to its owner's hand, "
+ "then discards a card.";
}

View file

@ -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 players life total before the damage was dealt, " +
"the planeswalkers loyalty before the damage was dealt, or the creatures 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) {

View file

@ -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 its 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) {

View file

@ -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 its 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 its 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);
}
}

View file

@ -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 thats 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) {

View file

@ -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 dont 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) {

View file

@ -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 cant 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) {

View file

@ -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 doesnt 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 doesnt 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()));

View file

@ -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 cant 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 owners 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) {

View file

@ -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 opponents 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.";
}
}

View file

@ -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 thats a copy of that card and thats 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 thats a copy of that card and thats 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) {

View file

@ -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) {

View file

@ -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 creatures colors.";
staticText = "Target player reveals their hand and discards all cards of each of the sacrificed creature's colors.";
}
private MindExtractionEffect(final MindExtractionEffect effect) {

View file

@ -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 doesnt, they lose 5 life and you sacrifice {this}";
+ "player doesn't, they lose 5 life and you sacrifice {this}";
}
public PillarTombsOfAkuEffect(final PillarTombsOfAkuEffect effect) {

View file

@ -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 owners hand this way, you may pay {U}{U}{U}. If you do, return {this} to its owners 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}");

View file

@ -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 planeswalkers 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 planeswalkers 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) {

View file

@ -57,7 +57,7 @@ class RakdosAugermageEffect extends OneShotEffect {
public RakdosAugermageEffect() {
super(Outcome.Discard);
staticText = "reveal your hand and discard a card of target opponents choice";
staticText = "reveal your hand and discard a card of target opponent's choice";
}
public RakdosAugermageEffect(final RakdosAugermageEffect effect) {

View file

@ -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 its attacking";
return "Whenever {this} becomes blocked, it deals 1 damage to the player or planeswalker it's attacking";
}
}

View file

@ -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>(Theyre artifacts with " +
.setText("create two Treasure tokens. <i>(They're artifacts with " +
"\"{T}, Sacrifice this artifact: Add one mana of any color.\")</i>")
));
}

View file

@ -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 doesnt 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) {

View file

@ -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 spells 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) {

View file

@ -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 turns 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) {

View file

@ -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 opponents 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."
));
}

View file

@ -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 players life total before the damage was dealt, " +
"the planeswalkers loyalty before the damage was dealt, or the creatures 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) {

View file

@ -47,8 +47,8 @@ public final class SparkDouble extends CardImpl {
// it enters with an additional loyalty counter on it if its a planeswalker, and it isnt 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 its a creature, "
+ "it enters with an additional loyalty counter on it if its a planeswalker, and it isnt 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);
}

View file

@ -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 spells name";
staticText = "you gain 1 life for each time the chosen letter appears in that spell's name";
}
public StaffOfTheLetterMagusEffect(final StaffOfTheLetterMagusEffect effect) {

View file

@ -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 players 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 players 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;

View file

@ -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) {

View file

@ -144,7 +144,7 @@ class TheFallenApartRestrictionEffect extends RestrictionEffect {
public TheFallenApartRestrictionEffect() {
super(Duration.WhileOnBattlefield);
staticText = "{this} cant attack if it has no legs and cant 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) {

View file

@ -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 cant 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) {

View file

@ -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 spells mana cost or that abilitys 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();
}
}

View file

@ -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 opponents 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 its 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. Its 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 doesnt lose loyalty while hes 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 players 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 players 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 players 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;

View file

@ -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) {

View file

@ -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 creatures 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 creatures 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();

View file

@ -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 dont 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) {

View file

@ -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 sets 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 sets 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) {

View file

@ -52,7 +52,7 @@ public final class XantchaSleeperAgent extends CardImpl {
// {3}: Xantchas 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"));

View file

@ -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 dont 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 dont control one, "
+ "on an Army you control. If you don't control one, "
+ "create a 0/0 black Zombie Army creature token first.)</i>";
}

View file

@ -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 cant 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);