Fix card text

This commit is contained in:
Plopman 2018-04-18 23:23:08 +02:00
parent 01e9e4b066
commit b69093dfdd
7 changed files with 25 additions and 45 deletions

View file

@ -39,7 +39,7 @@ import mage.cards.CardSetInfo;
import mage.constants.CardType; import mage.constants.CardType;
import mage.constants.SubType; import mage.constants.SubType;
import mage.constants.Zone; import mage.constants.Zone;
import mage.filter.common.FilterControlledLandPermanent; import mage.filter.StaticFilters;
import mage.target.common.TargetControlledPermanent; import mage.target.common.TargetControlledPermanent;
import mage.target.common.TargetLandPermanent; import mage.target.common.TargetLandPermanent;
@ -59,7 +59,7 @@ public class ArmyAnts extends CardImpl {
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD,
new DestroyTargetEffect(), new DestroyTargetEffect(),
new TapSourceCost()); new TapSourceCost());
ability.addCost(new SacrificeTargetCost(new TargetControlledPermanent(new FilterControlledLandPermanent()))); ability.addCost(new SacrificeTargetCost(new TargetControlledPermanent(StaticFilters.FILTER_CONTROLLED_LAND_SHORT_TEXT)));
ability.addTarget(new TargetLandPermanent()); ability.addTarget(new TargetLandPermanent());
this.addAbility(ability); this.addAbility(ability);
} }

View file

@ -35,7 +35,6 @@ import mage.abilities.costs.CostImpl;
import mage.abilities.costs.common.TapSourceCost; import mage.abilities.costs.common.TapSourceCost;
import mage.abilities.costs.mana.GenericManaCost; import mage.abilities.costs.mana.GenericManaCost;
import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.OneShotEffect;
import mage.abilities.effects.RestrictionEffect;
import mage.abilities.effects.common.continuous.GainAbilityAttachedEffect; import mage.abilities.effects.common.continuous.GainAbilityAttachedEffect;
import mage.abilities.keyword.EquipAbility; import mage.abilities.keyword.EquipAbility;
import mage.cards.CardImpl; import mage.cards.CardImpl;
@ -48,6 +47,10 @@ import mage.target.common.TargetCreatureOrPlayer;
import java.util.List; import java.util.List;
import java.util.UUID; import java.util.UUID;
import mage.abilities.effects.common.combat.CantBeBlockedByCreaturesAttachedEffect;
import mage.filter.common.FilterCreaturePermanent;
import mage.filter.predicate.Predicates;
import mage.filter.predicate.mageobject.SubtypePredicate;
/** /**
* *
@ -55,17 +58,27 @@ import java.util.UUID;
*/ */
public class BlazingTorch extends CardImpl { public class BlazingTorch extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Vampires or Zombies");
static {
filter.add(Predicates.or(new SubtypePredicate(SubType.VAMPIRE),
new SubtypePredicate(SubType.ZOMBIE)));
}
public BlazingTorch(UUID ownerId, CardSetInfo setInfo) { public BlazingTorch(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{1}"); super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{1}");
this.subtype.add(SubType.EQUIPMENT); this.subtype.add(SubType.EQUIPMENT);
// Equipped creature can't be blocked by Vampires or Zombies. (!this is a static ability of the equipment) // Equipped creature can't be blocked by Vampires or Zombies. (!this is a static ability of the equipment)
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new BlazingTorchEvasionEffect())); this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD,
new CantBeBlockedByCreaturesAttachedEffect(Duration.WhileOnBattlefield, filter, AttachmentType.EQUIPMENT)));
// Equipped creature has "{tap}, Sacrifice Blazing Torch: Blazing Torch deals 2 damage to target creature or player.") // Equipped creature has "{tap}, Sacrifice Blazing Torch: Blazing Torch deals 2 damage to target creature or player.")
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new BlazingTorchDamageEffect(), new TapSourceCost()); Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new BlazingTorchDamageEffect(), new TapSourceCost());
ability.addCost(new BlazingTorchCost()); ability.addCost(new BlazingTorchCost());
ability.addTarget(new TargetCreatureOrPlayer()); ability.addTarget(new TargetCreatureOrPlayer());
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new GainAbilityAttachedEffect(ability, AttachmentType.EQUIPMENT))); this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new GainAbilityAttachedEffect(ability, AttachmentType.EQUIPMENT)));
// Equip {1} // Equip {1}
this.addAbility(new EquipAbility(Outcome.BoostCreature, new GenericManaCost(1))); this.addAbility(new EquipAbility(Outcome.BoostCreature, new GenericManaCost(1)));
} }
@ -80,40 +93,6 @@ public class BlazingTorch extends CardImpl {
} }
} }
class BlazingTorchEvasionEffect extends RestrictionEffect {
public BlazingTorchEvasionEffect() {
super(Duration.WhileOnBattlefield);
staticText = "Equipped creature can't be blocked by Vampires or Zombies";
}
public BlazingTorchEvasionEffect(final BlazingTorchEvasionEffect effect) {
super(effect);
}
@Override
public boolean applies(Permanent permanent, Ability source, Game game) {
Permanent equipment = game.getPermanent(source.getSourceId());
if (equipment != null && equipment.getAttachedTo() != null) {
Permanent equipped = game.getPermanent(equipment.getAttachedTo());
if (equipped != null && permanent.getId().equals(equipped.getId())) {
return true;
}
}
return false;
}
@Override
public boolean canBeBlocked(Permanent attacker, Permanent blocker, Ability source, Game game) {
return !blocker.hasSubtype(SubType.VAMPIRE, game) && !blocker.hasSubtype(SubType.ZOMBIE, game);
}
@Override
public BlazingTorchEvasionEffect copy() {
return new BlazingTorchEvasionEffect(this);
}
}
class BlazingTorchCost extends CostImpl { class BlazingTorchCost extends CostImpl {
public BlazingTorchCost() { public BlazingTorchCost() {

View file

@ -44,9 +44,9 @@ public class CruelEdict extends CardImpl {
public CruelEdict(UUID ownerId, CardSetInfo setInfo) { public CruelEdict(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{1}{B}"); super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{1}{B}");
this.getSpellAbility().addEffect(new SacrificeEffect(StaticFilters.FILTER_PERMANENT_CREATURE, 1, "Target opponent sacrifices a creature"));
this.getSpellAbility().addTarget(new TargetOpponent());
// Target opponent sacrifices a creature. // Target opponent sacrifices a creature.
this.getSpellAbility().addEffect(new SacrificeEffect(StaticFilters.FILTER_PERMANENT_CREATURE, 1, "Target opponent"));
this.getSpellAbility().addTarget(new TargetOpponent());
} }
public CruelEdict(final CruelEdict card) { public CruelEdict(final CruelEdict card) {

View file

@ -63,7 +63,7 @@ public class HibernationSliver extends CardImpl {
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, effect, new PayLifeCost(2)); Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, effect, new PayLifeCost(2));
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD,
new GainAbilityAllEffect(ability, Duration.WhileOnBattlefield, new GainAbilityAllEffect(ability, Duration.WhileOnBattlefield,
new FilterPermanent(SubType.SLIVER, "All Slivers"), "All Slivers have \"Pay 2 life: Return this permanent to its owner's hand"))); new FilterPermanent(SubType.SLIVER, "All Slivers"), "All Slivers have \"Pay 2 life: Return this permanent to its owner's hand.\"")));
} }
public HibernationSliver(final HibernationSliver card) { public HibernationSliver(final HibernationSliver card) {

View file

@ -42,6 +42,7 @@ import mage.abilities.keyword.TrampleAbility;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
import mage.constants.*; import mage.constants.*;
import mage.filter.StaticFilters;
import mage.filter.common.FilterControlledCreaturePermanent; import mage.filter.common.FilterControlledCreaturePermanent;
import mage.target.TargetPermanent; import mage.target.TargetPermanent;
import mage.target.common.TargetCreaturePermanent; import mage.target.common.TargetCreaturePermanent;
@ -65,7 +66,7 @@ public class OniPossession extends CardImpl {
// At the beginning of your upkeep, sacrifice a creature. // At the beginning of your upkeep, sacrifice a creature.
Ability ability2 = new BeginningOfUpkeepTriggeredAbility( Ability ability2 = new BeginningOfUpkeepTriggeredAbility(
new SacrificeControllerEffect(new FilterControlledCreaturePermanent(), 1, ""), TargetController.YOU, false); new SacrificeControllerEffect(new FilterControlledCreaturePermanent(StaticFilters.FILTER_CONTROLLED_CREATURE_SHORT_TEXT), 1, ""), TargetController.YOU, false);
this.addAbility(ability2); this.addAbility(ability2);
// Enchanted creature gets +3/+3 and has trample. // Enchanted creature gets +3/+3 and has trample.
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new BoostEnchantedEffect(3, 3, Duration.WhileOnBattlefield))); this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new BoostEnchantedEffect(3, 3, Duration.WhileOnBattlefield)));

View file

@ -30,7 +30,7 @@ package mage.cards.s;
import java.util.UUID; import java.util.UUID;
import mage.ObjectColor; import mage.ObjectColor;
import mage.abilities.Ability; import mage.abilities.Ability;
import mage.abilities.common.EntersBattlefieldTriggeredAbility; import mage.abilities.common.AsEntersBattlefieldAbility;
import mage.abilities.common.SimpleStaticAbility; import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.effects.ContinuousEffectImpl; import mage.abilities.effects.ContinuousEffectImpl;
import mage.abilities.effects.common.ChooseColorEffect; import mage.abilities.effects.common.ChooseColorEffect;
@ -59,7 +59,7 @@ public class ShiftingSky extends CardImpl {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{U}"); super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{U}");
// As Shifting Sky enters the battlefield, choose a color. // As Shifting Sky enters the battlefield, choose a color.
this.addAbility(new EntersBattlefieldTriggeredAbility(new ChooseColorEffect(Outcome.Detriment))); this.addAbility(new AsEntersBattlefieldAbility(new ChooseColorEffect(Outcome.Detriment)));
// All nonland permanents are the chosen color. // All nonland permanents are the chosen color.
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new ShiftingSkyEffect())); this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new ShiftingSkyEffect()));

View file

@ -56,7 +56,7 @@ public class SoltariChampion extends CardImpl {
// Shadow // Shadow
this.addAbility(ShadowAbility.getInstance()); this.addAbility(ShadowAbility.getInstance());
// Whenever Soltari Champion attacks, other creatures you control get +1/+1 until end of turn. // Whenever Soltari Champion attacks, other creatures you control get +1/+1 until end of turn.
this.addAbility(new AttacksTriggeredAbility(new BoostControlledEffect(1, 1, Duration.EndOfTurn, StaticFilters.FILTER_PERMANENT_CREATURE, true), false)); this.addAbility(new AttacksTriggeredAbility(new BoostControlledEffect(1, 1, Duration.EndOfTurn, StaticFilters.FILTER_PERMANENT_CREATURES, true), false));
} }
public SoltariChampion(final SoltariChampion card) { public SoltariChampion(final SoltariChampion card) {