1
0
Fork 0
mirror of https://github.com/correl/mage.git synced 2025-04-09 01:01:06 -09:00

* Artifact you control effects - added card hints;

This commit is contained in:
Oleg Agafonov 2020-06-29 09:28:46 +04:00
parent 621c144ac2
commit e4ebf50d42
19 changed files with 126 additions and 181 deletions

View file

@ -1,36 +1,29 @@
package mage.cards.a;
import java.util.UUID;
import mage.MageInt;
import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.dynamicvalue.common.PermanentsOnBattlefieldCount;
import mage.abilities.dynamicvalue.common.ArtifactYouControlCount;
import mage.abilities.dynamicvalue.common.StaticValue;
import mage.abilities.effects.Effect;
import mage.abilities.effects.common.continuous.BoostSourceEffect;
import mage.abilities.hint.common.ArtifactYouControlHint;
import mage.abilities.keyword.FirstStrikeAbility;
import mage.abilities.keyword.PartnerAbility;
import mage.abilities.keyword.VigilanceAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.*;
import mage.filter.common.FilterControlledPermanent;
import java.util.UUID;
/**
*
* @author spjspj
*/
public final class AkiriLineSlinger extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("artifact you control");
static {
filter.add(CardType.ARTIFACT.getPredicate());
}
public AkiriLineSlinger(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{R}{W}");
addSuperType(SuperType.LEGENDARY);
this.subtype.add(SubType.KOR);
this.subtype.add(SubType.SOLDIER);
@ -45,9 +38,10 @@ public final class AkiriLineSlinger extends CardImpl {
this.addAbility(VigilanceAbility.getInstance());
// Akiri, Line-Slinger gets +1/+0 for each artifact you control.
Effect effect = new BoostSourceEffect(new PermanentsOnBattlefieldCount(filter), StaticValue.get(0), Duration.WhileOnBattlefield);
Effect effect = new BoostSourceEffect(ArtifactYouControlCount.instance, StaticValue.get(0), Duration.WhileOnBattlefield);
effect.setText("{this} gets +1/+0 for each artifact you control");
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, effect));
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, effect)
.addHint(ArtifactYouControlHint.instance));
// Partner
this.addAbility(PartnerAbility.getInstance());

View file

@ -1,47 +1,44 @@
package mage.cards.c;
import java.util.UUID;
import mage.abilities.Ability;
import mage.abilities.common.SimpleActivatedAbility;
import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.costs.mana.GenericManaCost;
import mage.abilities.costs.mana.ManaCostsImpl;
import mage.abilities.dynamicvalue.common.PermanentsOnBattlefieldCount;
import mage.abilities.dynamicvalue.common.ArtifactYouControlCount;
import mage.abilities.dynamicvalue.common.StaticValue;
import mage.abilities.effects.common.AttachEffect;
import mage.abilities.effects.common.continuous.BoostEquippedEffect;
import mage.abilities.hint.common.ArtifactYouControlHint;
import mage.abilities.keyword.EquipAbility;
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.common.FilterControlledPermanent;
import mage.target.common.TargetControlledCreaturePermanent;
import java.util.UUID;
/**
*
* @author Loki
*/
public final class CranialPlating extends CardImpl {
private static final FilterControlledPermanent filterCounted = new FilterControlledPermanent("artifacts you control");
static {
filterCounted.add(CardType.ARTIFACT.getPredicate());
}
public CranialPlating(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{2}");
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{2}");
this.subtype.add(SubType.EQUIPMENT);
// Equipped creature gets +1/+0 for each artifact you control.
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new BoostEquippedEffect(new PermanentsOnBattlefieldCount(filterCounted), StaticValue.get(0))));
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new BoostEquippedEffect(ArtifactYouControlCount.instance, StaticValue.get(0)))
.addHint(ArtifactYouControlHint.instance));
// {B}{B}: Attach Cranial Plating to target creature you control.
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new AttachEffect(Outcome.BoostCreature, "Attach {this} to target creature you control"), new ManaCostsImpl("{B}{B}"));
ability.addTarget(new TargetControlledCreaturePermanent());
this.addAbility(ability);
// Equip {1}
this.addAbility(new EquipAbility(Outcome.BoostCreature, new GenericManaCost(1)));
}

View file

@ -1,37 +1,28 @@
package mage.cards.d;
import java.util.UUID;
import mage.MageInt;
import mage.abilities.common.SimpleActivatedAbility;
import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.costs.mana.ManaCostsImpl;
import mage.abilities.dynamicvalue.common.PermanentsOnBattlefieldCount;
import mage.abilities.dynamicvalue.common.ArtifactYouControlCount;
import mage.abilities.effects.common.CreateTokenEffect;
import mage.abilities.effects.common.continuous.BoostSourceEffect;
import mage.abilities.hint.common.ArtifactYouControlHint;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.SubType;
import mage.constants.Duration;
import mage.constants.TargetController;
import mage.constants.SubType;
import mage.constants.Zone;
import mage.filter.FilterPermanent;
import mage.game.permanent.token.TreasureToken;
import java.util.UUID;
/**
*
* @author TheElk801
*/
public final class DeadeyePlunderers extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("artifact you control");
static {
filter.add(CardType.ARTIFACT.getPredicate());
filter.add(TargetController.YOU.getControllerPredicate());
}
public DeadeyePlunderers(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{U}{B}");
@ -41,8 +32,9 @@ public final class DeadeyePlunderers extends CardImpl {
this.toughness = new MageInt(3);
// Deadeye Plunderers gets +1/+1 for each artifact you control.
PermanentsOnBattlefieldCount count = new PermanentsOnBattlefieldCount(filter);
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new BoostSourceEffect(count, count, Duration.WhileOnBattlefield)));
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD,
new BoostSourceEffect(ArtifactYouControlCount.instance, ArtifactYouControlCount.instance, Duration.WhileOnBattlefield)
).addHint(ArtifactYouControlHint.instance));
// {2}{U}{B}: Create a colorless artifact token named Treasure with "{T}, Sacrifice this artifact: Add one mana of any color."
this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new CreateTokenEffect(new TreasureToken()), new ManaCostsImpl("{2}{U}{B}")));

View file

@ -1,34 +1,30 @@
package mage.cards.f;
import java.util.UUID;
import mage.MageInt;
import mage.abilities.Ability;
import mage.abilities.common.EntersBattlefieldTriggeredAbility;
import mage.abilities.dynamicvalue.common.ArtifactYouControlCount;
import mage.abilities.effects.OneShotEffect;
import mage.abilities.hint.common.ArtifactYouControlHint;
import mage.abilities.keyword.FlyingAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.SubType;
import mage.constants.Outcome;
import mage.filter.FilterPermanent;
import mage.filter.common.FilterControlledPermanent;
import mage.constants.SubType;
import mage.game.Game;
import mage.players.Player;
import java.util.UUID;
/**
*
* @author Loki
*/
public final class FiligreeAngel extends CardImpl {
public FiligreeAngel (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{5}{W}{W}{U}");
public FiligreeAngel(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT, CardType.CREATURE}, "{5}{W}{W}{U}");
this.subtype.add(SubType.ANGEL);
this.power = new MageInt(4);
this.toughness = new MageInt(4);
@ -36,10 +32,10 @@ public final class FiligreeAngel extends CardImpl {
this.addAbility(FlyingAbility.getInstance());
// When Filigree Angel enters the battlefield, you gain 3 life for each artifact you control.
this.addAbility(new EntersBattlefieldTriggeredAbility(new FiligreeAngelEffect()));
this.addAbility(new EntersBattlefieldTriggeredAbility(new FiligreeAngelEffect()).addHint(ArtifactYouControlHint.instance));
}
public FiligreeAngel (final FiligreeAngel card) {
public FiligreeAngel(final FiligreeAngel card) {
super(card);
}
@ -50,12 +46,6 @@ public final class FiligreeAngel extends CardImpl {
}
class FiligreeAngelEffect extends OneShotEffect {
private static final FilterPermanent filter = new FilterControlledPermanent();
static {
filter.add(CardType.ARTIFACT.getPredicate());
}
public FiligreeAngelEffect() {
super(Outcome.GainLife);
@ -70,7 +60,7 @@ class FiligreeAngelEffect extends OneShotEffect {
public boolean apply(Game game, Ability source) {
Player player = game.getPlayer(source.getControllerId());
if (player != null) {
int life = game.getBattlefield().count(filter, source.getSourceId(), source.getControllerId(), game) * 3;
int life = ArtifactYouControlCount.instance.calculate(game, source, this) * 3;
player.gainLife(life, game, source);
}
return true;

View file

@ -1,38 +1,31 @@
package mage.cards.h;
import java.util.UUID;
import mage.abilities.dynamicvalue.common.PermanentsOnBattlefieldCount;
import mage.abilities.dynamicvalue.common.ArtifactYouControlCount;
import mage.abilities.dynamicvalue.common.StaticValue;
import mage.abilities.effects.Effect;
import mage.abilities.effects.common.continuous.BoostTargetEffect;
import mage.abilities.hint.common.ArtifactYouControlHint;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.Duration;
import mage.filter.common.FilterControlledPermanent;
import mage.target.common.TargetCreaturePermanent;
import java.util.UUID;
/**
*
* @author fireshoes
*/
public final class HungerOfTheNim extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("artifact you control");
static {
filter.add(CardType.ARTIFACT.getPredicate());
}
public HungerOfTheNim(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{1}{B}");
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{1}{B}");
// Target creature gets +1/+0 until end of turn for each artifact you control.
Effect effect = new BoostTargetEffect(new PermanentsOnBattlefieldCount(filter), StaticValue.get(0), Duration.EndOfTurn, true);
effect.setText("Target creature gets +1/+0 until end of turn for each artifact you control");
Effect effect = new BoostTargetEffect(ArtifactYouControlCount.instance, StaticValue.get(0), Duration.EndOfTurn, true);
getSpellAbility().addEffect(effect);
getSpellAbility().addTarget(new TargetCreaturePermanent());
getSpellAbility().addHint(ArtifactYouControlHint.instance);
}
public HungerOfTheNim(final HungerOfTheNim card) {

View file

@ -1,9 +1,8 @@
package mage.cards.i;
import java.util.UUID;
import mage.abilities.dynamicvalue.common.PermanentsOnBattlefieldCount;
import mage.abilities.effects.common.continuous.BoostTargetEffect;
import mage.abilities.hint.common.ArtifactYouControlHint;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
@ -11,19 +10,21 @@ import mage.constants.Duration;
import mage.filter.common.FilterControlledArtifactPermanent;
import mage.target.common.TargetCreaturePermanent;
import java.util.UUID;
/**
*
* @author LoneFox
*/
public final class Irradiate extends CardImpl {
public Irradiate(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{3}{B}");
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{3}{B}");
// Target creature gets -1/-1 until end of turn for each artifact you control.
PermanentsOnBattlefieldCount count = new PermanentsOnBattlefieldCount(new FilterControlledArtifactPermanent(), -1);
this.getSpellAbility().addEffect(new BoostTargetEffect(count, count, Duration.EndOfTurn, true));
this.getSpellAbility().addTarget(new TargetCreaturePermanent());
this.getSpellAbility().addHint(ArtifactYouControlHint.instance);
}
public Irradiate(final Irradiate card) {

View file

@ -6,6 +6,7 @@ import mage.abilities.LoyaltyAbility;
import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility;
import mage.abilities.effects.OneShotEffect;
import mage.abilities.effects.common.CreateTokenEffect;
import mage.abilities.hint.common.ArtifactYouControlHint;
import mage.cards.*;
import mage.constants.*;
import mage.counters.CounterType;
@ -19,7 +20,6 @@ import mage.target.Target;
import mage.target.TargetCard;
import mage.target.common.TargetOpponent;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import java.util.UUID;
@ -46,6 +46,7 @@ public final class KarnScionOfUrza extends CardImpl {
// -2: Create a 0/0 colorless Construct artifact creature token with "This creature gets +1/+1 for each artifact you control."
LoyaltyAbility ability3 = new LoyaltyAbility(new KarnConstructEffect(), -2);
ability3.addHint(ArtifactYouControlHint.instance);
this.addAbility(ability3);
}

View file

@ -1,45 +1,37 @@
package mage.cards.m;
import java.util.UUID;
import mage.MageInt;
import mage.abilities.common.DealsCombatDamageToACreatureTriggeredAbility;
import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.dynamicvalue.common.PermanentsOnBattlefieldCount;
import mage.abilities.dynamicvalue.common.ArtifactYouControlCount;
import mage.abilities.dynamicvalue.common.StaticValue;
import mage.abilities.effects.Effect;
import mage.abilities.effects.common.DestroyTargetEffect;
import mage.abilities.effects.common.continuous.BoostSourceEffect;
import mage.abilities.hint.common.ArtifactYouControlHint;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.SubType;
import mage.constants.Duration;
import mage.constants.SubType;
import mage.constants.Zone;
import mage.filter.common.FilterControlledPermanent;
import java.util.UUID;
/**
*
* @author fireshoes
*/
public final class MephiticOoze extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("artifact you control");
static {
filter.add(CardType.ARTIFACT.getPredicate());
}
public MephiticOoze(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{B}");
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{B}");
this.subtype.add(SubType.OOZE);
this.power = new MageInt(0);
this.toughness = new MageInt(5);
// Mephitic Ooze gets +1/+0 for each artifact you control.
Effect effect = new BoostSourceEffect(new PermanentsOnBattlefieldCount(filter), StaticValue.get(0), Duration.WhileOnBattlefield);
effect.setText("{this} gets +1/+0 for each artifact you control");
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, effect));
Effect effect = new BoostSourceEffect(ArtifactYouControlCount.instance, StaticValue.get(0), Duration.WhileOnBattlefield);
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, effect).addHint(ArtifactYouControlHint.instance));
// Whenever Mephitic Ooze deals combat damage to a creature, destroy that creature. The creature can't be regenerated.
this.addAbility(new DealsCombatDamageToACreatureTriggeredAbility(new DestroyTargetEffect(true), false, true));

View file

@ -1,59 +1,50 @@
package mage.cards.n;
import java.util.UUID;
import mage.MageInt;
import mage.abilities.Ability;
import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.condition.common.IsStepCondition;
import mage.abilities.costs.mana.ManaCostsImpl;
import mage.abilities.decorator.ConditionalActivatedAbility;
import mage.abilities.dynamicvalue.common.PermanentsOnBattlefieldCount;
import mage.abilities.dynamicvalue.common.ArtifactYouControlCount;
import mage.abilities.dynamicvalue.common.StaticValue;
import mage.abilities.effects.OneShotEffect;
import mage.abilities.effects.common.ReturnSourceFromGraveyardToBattlefieldEffect;
import mage.abilities.effects.common.continuous.BoostSourceEffect;
import mage.abilities.hint.common.ArtifactYouControlHint;
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.filter.common.FilterControlledCreaturePermanent;
import mage.filter.common.FilterControlledPermanent;
import mage.game.Game;
import mage.game.permanent.Permanent;
import mage.players.Player;
import mage.target.Target;
import mage.target.common.TargetControlledPermanent;
import java.util.UUID;
/**
*
* @author fireshoes
*/
public final class NimDevourer extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("artifact you control");
static {
filter.add(CardType.ARTIFACT.getPredicate());
}
public NimDevourer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{B}{B}");
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{B}{B}");
this.subtype.add(SubType.ZOMBIE);
this.power = new MageInt(4);
this.toughness = new MageInt(1);
// Nim Devourer gets +1/+0 for each artifact you control.
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new BoostSourceEffect(new PermanentsOnBattlefieldCount(filter), StaticValue.get(0), Duration.WhileOnBattlefield)));
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD,
new BoostSourceEffect(ArtifactYouControlCount.instance, StaticValue.get(0), Duration.WhileOnBattlefield))
.addHint(ArtifactYouControlHint.instance)
);
// {B}{B}: Return Nim Devourer from your graveyard to the battlefield, then sacrifice a creature. Activate this ability only during your upkeep.
Ability ability = new ConditionalActivatedAbility(Zone.GRAVEYARD,
new ReturnSourceFromGraveyardToBattlefieldEffect(),
new ManaCostsImpl("{B}{B}"),
Ability ability = new ConditionalActivatedAbility(Zone.GRAVEYARD,
new ReturnSourceFromGraveyardToBattlefieldEffect(),
new ManaCostsImpl("{B}{B}"),
new IsStepCondition(PhaseStep.UPKEEP), null);
ability.addEffect(new NimDevourerEffect());
this.addAbility(ability);

View file

@ -1,35 +1,37 @@
package mage.cards.n;
import java.util.UUID;
import mage.MageInt;
import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.dynamicvalue.common.PermanentsOnBattlefieldCount;
import mage.abilities.dynamicvalue.common.ArtifactYouControlCount;
import mage.abilities.dynamicvalue.common.StaticValue;
import mage.abilities.effects.common.continuous.BoostSourceEffect;
import mage.abilities.hint.common.ArtifactYouControlHint;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.SubType;
import mage.constants.Duration;
import mage.constants.SubType;
import mage.constants.Zone;
import mage.filter.common.FilterControlledArtifactPermanent;
import java.util.UUID;
/**
*
* @author Plopman
*/
public final class NimGrotesque extends CardImpl {
public NimGrotesque(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{6}{B}");
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{6}{B}");
this.subtype.add(SubType.ZOMBIE);
this.power = new MageInt(3);
this.toughness = new MageInt(6);
// Nim Grotesque gets +1/+0 for each artifact you control.
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new BoostSourceEffect(new PermanentsOnBattlefieldCount(new FilterControlledArtifactPermanent()), StaticValue.get(0), Duration.WhileOnBattlefield)));
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD,
new BoostSourceEffect(ArtifactYouControlCount.instance, StaticValue.get(0), Duration.WhileOnBattlefield))
.addHint(ArtifactYouControlHint.instance)
);
}
public NimGrotesque(final NimGrotesque card) {

View file

@ -4,12 +4,12 @@ import mage.MageObject;
import mage.abilities.Ability;
import mage.abilities.Mode;
import mage.abilities.costs.Cost;
import mage.abilities.dynamicvalue.common.ArtifactYouControlCount;
import mage.abilities.effects.OneShotEffect;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.Outcome;
import mage.filter.common.FilterArtifactPermanent;
import mage.game.Game;
import mage.game.stack.StackObject;
import mage.players.Player;
@ -64,7 +64,7 @@ class OverrideEffect extends OneShotEffect {
Player player = game.getPlayer(spell.getControllerId());
Player controller = game.getPlayer(source.getControllerId());
if (player != null && controller != null) {
int amount = game.getBattlefield().countAll(new FilterArtifactPermanent(), source.getControllerId(), game);
int amount = ArtifactYouControlCount.instance.calculate(game, source, this);
if (amount > 0) {
Cost cost = ManaUtil.createManaCost(amount, false);
if (!cost.pay(source, game, spell.getControllerId(), spell.getControllerId(), false)) {

View file

@ -1,9 +1,9 @@
package mage.cards.p;
import java.util.UUID;
import mage.Mana;
import mage.abilities.dynamicvalue.DynamicValue;
import mage.abilities.dynamicvalue.common.PermanentsOnBattlefieldCount;
import mage.abilities.hint.ValueHint;
import mage.abilities.mana.DynamicManaAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
@ -11,8 +11,9 @@ import mage.constants.CardType;
import mage.filter.common.FilterControlledPermanent;
import mage.filter.predicate.mageobject.NamePredicate;
import java.util.UUID;
/**
*
* @author TheElk801
*/
public final class PowerstoneShard extends CardImpl {
@ -28,7 +29,9 @@ public final class PowerstoneShard extends CardImpl {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{3}");
// {T}: Add {C} for each artifact you control named Powerstone Shard.
this.addAbility(new DynamicManaAbility(Mana.ColorlessMana(1), new PermanentsOnBattlefieldCount(filter)));
DynamicValue xValue = new PermanentsOnBattlefieldCount(filter);
this.addAbility(new DynamicManaAbility(Mana.ColorlessMana(1), xValue)
.addHint(new ValueHint("Artifact you control named Powerstone Shard", xValue)));
}
public PowerstoneShard(final PowerstoneShard card) {

View file

@ -1,29 +1,29 @@
package mage.cards.t;
import java.util.UUID;
import mage.abilities.dynamicvalue.common.PermanentsOnBattlefieldCount;
import mage.abilities.dynamicvalue.common.ArtifactYouControlCount;
import mage.abilities.effects.common.DestroyTargetEffect;
import mage.abilities.effects.common.GainLifeEffect;
import mage.abilities.hint.common.ArtifactYouControlHint;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.filter.common.FilterControlledArtifactPermanent;
import mage.target.common.TargetCreaturePermanent;
import java.util.UUID;
/**
*
* @author LevelX2
*/
public final class TidyConclusion extends CardImpl {
public TidyConclusion(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{3}{B}{B}");
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{3}{B}{B}");
// Destroy target creature. You gain 1 life for each artifact you control.
this.getSpellAbility().addEffect(new DestroyTargetEffect());
this.getSpellAbility().addTarget(new TargetCreaturePermanent());
this.getSpellAbility().addEffect(new GainLifeEffect(new PermanentsOnBattlefieldCount(new FilterControlledArtifactPermanent())));
this.getSpellAbility().addEffect(new GainLifeEffect(ArtifactYouControlCount.instance));
this.getSpellAbility().addHint(ArtifactYouControlHint.instance);
}
public TidyConclusion(final TidyConclusion card) {

View file

@ -1,16 +1,17 @@
package mage.cards.u;
import mage.MageInt;
import mage.MageObject;
import mage.Mana;
import mage.abilities.Ability;
import mage.abilities.common.EntersBattlefieldTriggeredAbility;
import mage.abilities.common.SimpleActivatedAbility;
import mage.abilities.costs.common.TapTargetCost;
import mage.abilities.costs.mana.GenericManaCost;
import mage.abilities.effects.ContinuousEffect;
import mage.abilities.effects.OneShotEffect;
import mage.abilities.effects.common.CreateTokenEffect;
import mage.abilities.effects.common.asthought.PlayFromNotOwnHandZoneTargetEffect;
import mage.abilities.hint.common.ArtifactYouControlHint;
import mage.abilities.mana.SimpleManaAbility;
import mage.cards.Card;
import mage.cards.CardImpl;
@ -24,12 +25,8 @@ import mage.game.Game;
import mage.game.permanent.token.KarnConstructToken;
import mage.players.Player;
import mage.target.common.TargetControlledPermanent;
import mage.target.targetpointer.FixedTargets;
import mage.util.CardUtil;
import java.util.UUID;
import mage.MageObject;
import mage.abilities.effects.common.asthought.PlayFromNotOwnHandZoneTargetEffect;
/**
* @author TheElk801
@ -53,7 +50,9 @@ public final class UrzaLordHighArtificer extends CardImpl {
this.toughness = new MageInt(4);
// When Urza, Lord High Artificer enters the battlefield, create a 0/0 colorless Construct artifact creature token with "This creature gets +1/+1 for each artifact you control."
this.addAbility(new EntersBattlefieldTriggeredAbility(new CreateTokenEffect(new KarnConstructToken())));
this.addAbility(new EntersBattlefieldTriggeredAbility(new CreateTokenEffect(new KarnConstructToken()))
.addHint(ArtifactYouControlHint.instance)
);
// Tap an untapped artifact you control: Add {U}.
this.addAbility(new SimpleManaAbility(
@ -100,7 +99,7 @@ class UrzaLordHighArtificerEffect extends OneShotEffect {
}
controller.shuffleLibrary(source, game);
Card card = controller.getLibrary().getFromTop(game);
return PlayFromNotOwnHandZoneTargetEffect.exileAndPlayFromExile(game, source, card,
TargetController.YOU, Duration.EndOfTurn, true);
return PlayFromNotOwnHandZoneTargetEffect.exileAndPlayFromExile(game, source, card,
TargetController.YOU, Duration.EndOfTurn, true);
}
}

View file

@ -1,14 +1,13 @@
package mage.cards.v;
import java.util.UUID;
import mage.Mana;
import mage.abilities.Ability;
import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.costs.common.TapSourceCost;
import mage.abilities.dynamicvalue.common.PermanentsOnBattlefieldCount;
import mage.abilities.effects.mana.DynamicManaEffect;
import mage.abilities.dynamicvalue.common.ArtifactYouControlCount;
import mage.abilities.effects.common.InfoEffect;
import mage.abilities.effects.mana.DynamicManaEffect;
import mage.abilities.hint.common.ArtifactYouControlHint;
import mage.abilities.mana.AnyColorManaAbility;
import mage.abilities.mana.SimpleManaAbility;
import mage.cards.CardImpl;
@ -16,10 +15,10 @@ import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.SuperType;
import mage.constants.Zone;
import mage.filter.StaticFilters;
import java.util.UUID;
/**
*
* @author LevelX2
*/
public final class VaultOfCatlacan extends CardImpl {
@ -40,8 +39,9 @@ public final class VaultOfCatlacan extends CardImpl {
// {T}: Add {U} for each artifact you control.
this.addAbility(new SimpleManaAbility(Zone.BATTLEFIELD,
new DynamicManaEffect(Mana.BlueMana(1), new PermanentsOnBattlefieldCount(StaticFilters.FILTER_CONTROLLED_PERMANENT_ARTIFACT)),
new TapSourceCost()));
new DynamicManaEffect(Mana.BlueMana(1), ArtifactYouControlCount.instance),
new TapSourceCost())
.addHint(ArtifactYouControlHint.instance));
}

View file

@ -9,7 +9,7 @@ import mage.game.Game;
/**
* @author JayDi85
*/
public enum ArtifactsYouControlCount implements DynamicValue {
public enum ArtifactYouControlCount implements DynamicValue {
instance;
@ -19,17 +19,17 @@ public enum ArtifactsYouControlCount implements DynamicValue {
}
@Override
public ArtifactsYouControlCount copy() {
public ArtifactYouControlCount copy() {
return instance;
}
@Override
public String toString() {
return "X";
return "1"; // uses "for each" effects, so must be 1, not X
}
@Override
public String getMessage() {
return "artifacts you control";
return "artifact you control";
}
}

View file

@ -1,7 +1,7 @@
package mage.abilities.hint.common;
import mage.abilities.Ability;
import mage.abilities.dynamicvalue.common.ArtifactsYouControlCount;
import mage.abilities.dynamicvalue.common.ArtifactYouControlCount;
import mage.abilities.hint.Hint;
import mage.abilities.hint.ValueHint;
import mage.game.Game;
@ -9,10 +9,10 @@ import mage.game.Game;
/**
* @author JayDi85
*/
public enum ArtifactsYouControlHint implements Hint {
public enum ArtifactYouControlHint implements Hint {
instance;
private static final Hint hint = new ValueHint("Artifacts you control", ArtifactsYouControlCount.instance);
private static final Hint hint = new ValueHint("Artifacts you control", ArtifactYouControlCount.instance);
@Override
public String getText(Game game, Ability ability) {

View file

@ -2,7 +2,7 @@ package mage.abilities.keyword;
import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.effects.common.AffinityEffect;
import mage.abilities.hint.common.ArtifactsYouControlHint;
import mage.abilities.hint.common.ArtifactYouControlHint;
import mage.constants.Zone;
import mage.filter.StaticFilters;
@ -15,7 +15,7 @@ public class AffinityForArtifactsAbility extends SimpleStaticAbility {
super(Zone.ALL, new AffinityEffect(StaticFilters.FILTER_CONTROLLED_PERMANENT_ARTIFACT));
setRuleAtTheTop(true);
this.addHint(ArtifactsYouControlHint.instance);
this.addHint(ArtifactYouControlHint.instance);
}
public AffinityForArtifactsAbility(final AffinityForArtifactsAbility ability) {

View file

@ -2,14 +2,12 @@ package mage.game.permanent.token;
import mage.MageInt;
import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.dynamicvalue.DynamicValue;
import mage.abilities.dynamicvalue.common.PermanentsOnBattlefieldCount;
import mage.abilities.dynamicvalue.common.ArtifactYouControlCount;
import mage.abilities.effects.common.continuous.BoostSourceEffect;
import mage.constants.CardType;
import mage.constants.Duration;
import mage.constants.SubType;
import mage.constants.Zone;
import mage.filter.common.FilterControlledPermanent;
import java.util.ArrayList;
import java.util.Arrays;
@ -20,12 +18,6 @@ import java.util.List;
*/
public final class KarnConstructToken extends TokenImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("artifacts you control");
static {
filter.add(CardType.ARTIFACT.getPredicate());
}
static final private List<String> tokenImageSets = new ArrayList<>();
static {
@ -41,10 +33,8 @@ public final class KarnConstructToken extends TokenImpl {
power = new MageInt(0);
toughness = new MageInt(0);
DynamicValue value = new PermanentsOnBattlefieldCount(filter);
this.addAbility(new SimpleStaticAbility(
Zone.BATTLEFIELD,
new BoostSourceEffect(value, value, Duration.WhileOnBattlefield)
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD,
new BoostSourceEffect(ArtifactYouControlCount.instance, ArtifactYouControlCount.instance, Duration.WhileOnBattlefield)
.setText("This creature gets +1/+1 for each artifact you control")
));
}