mirror of
https://github.com/magefree/mage.git
synced 2025-12-28 22:42:03 -08:00
Create common implementation for predefined tokens (#11065)
* adds token abilities * updated cards to use new abilities
This commit is contained in:
parent
d67539746e
commit
2cd8bc6f6c
19 changed files with 112 additions and 134 deletions
|
|
@ -3,12 +3,9 @@ package mage.cards.a;
|
|||
import mage.abilities.Ability;
|
||||
import mage.abilities.common.EntersBattlefieldAbility;
|
||||
import mage.abilities.common.EntersBattlefieldControlledTriggeredAbility;
|
||||
import mage.abilities.common.SimpleActivatedAbility;
|
||||
import mage.abilities.costs.common.SacrificeSourceCost;
|
||||
import mage.abilities.costs.mana.GenericManaCost;
|
||||
import mage.abilities.effects.OneShotEffect;
|
||||
import mage.abilities.effects.common.DrawCardSourceControllerEffect;
|
||||
import mage.abilities.effects.common.counter.AddCountersSourceEffect;
|
||||
import mage.abilities.token.ClueAbility;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.choices.Choice;
|
||||
|
|
@ -16,7 +13,6 @@ import mage.choices.ChoiceImpl;
|
|||
import mage.constants.CardType;
|
||||
import mage.constants.Outcome;
|
||||
import mage.constants.SubType;
|
||||
import mage.constants.Zone;
|
||||
import mage.counters.CounterType;
|
||||
import mage.filter.StaticFilters;
|
||||
import mage.game.Game;
|
||||
|
|
@ -51,9 +47,7 @@ public class AgentsToolkit extends CardImpl {
|
|||
));
|
||||
|
||||
// {2}, Sacrifice Agent’s Toolkit: Draw a card.
|
||||
Ability drawAbility = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DrawCardSourceControllerEffect(1), new GenericManaCost(2));
|
||||
drawAbility.addCost(new SacrificeSourceCost());
|
||||
this.addAbility(drawAbility);
|
||||
this.addAbility(new ClueAbility(true));
|
||||
}
|
||||
|
||||
private AgentsToolkit(final AgentsToolkit card) {
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@ import mage.abilities.costs.common.TapSourceCost;
|
|||
import mage.abilities.costs.mana.ManaCostsImpl;
|
||||
import mage.abilities.effects.common.CreateTokenEffect;
|
||||
import mage.abilities.effects.common.DrawCardSourceControllerEffect;
|
||||
import mage.abilities.mana.AnyColorManaAbility;
|
||||
import mage.abilities.token.TreasureAbility;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
|
|
@ -31,12 +31,10 @@ public final class CouriersBriefcase extends CardImpl {
|
|||
this.addAbility(new EntersBattlefieldTriggeredAbility(new CreateTokenEffect(new CitizenGreenWhiteToken())));
|
||||
|
||||
// {T}, Sacrifice Courier's Briefcase: Add one mana of any color.
|
||||
Ability ability = new AnyColorManaAbility();
|
||||
ability.addCost(new SacrificeSourceCost());
|
||||
this.addAbility(ability);
|
||||
this.addAbility(new TreasureAbility(true));
|
||||
|
||||
// {W}{U}{B}{R}{G}, {T}, Sacrifice Courier's Briefcase: Draw three cards.
|
||||
ability = new SimpleActivatedAbility(
|
||||
Ability ability = new SimpleActivatedAbility(
|
||||
new DrawCardSourceControllerEffect(3), new ManaCostsImpl<>("{W}{U}{B}{R}{G}")
|
||||
);
|
||||
ability.addCost(new TapSourceCost());
|
||||
|
|
|
|||
|
|
@ -1,12 +1,10 @@
|
|||
package mage.cards.d;
|
||||
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.common.SimpleActivatedAbility;
|
||||
import mage.abilities.costs.common.SacrificeSourceCost;
|
||||
import mage.abilities.costs.mana.GenericManaCost;
|
||||
import mage.abilities.effects.common.continuous.BecomesCreatureSourceEffect;
|
||||
import mage.abilities.keyword.FlashAbility;
|
||||
import mage.abilities.mana.AnyColorManaAbility;
|
||||
import mage.abilities.token.TreasureAbility;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
|
|
@ -30,9 +28,7 @@ public final class DireMimic extends CardImpl {
|
|||
this.addAbility(FlashAbility.getInstance());
|
||||
|
||||
// {T}, Sacrifice Dire Mimic: Add one mana of any color.
|
||||
Ability ability = new AnyColorManaAbility();
|
||||
ability.addCost(new SacrificeSourceCost());
|
||||
this.addAbility(ability);
|
||||
this.addAbility(new TreasureAbility(true));
|
||||
|
||||
// {3}: Dire Mimic becomes a Shapeshifter artifact creature with base power and toughness 5/5 until end of turn.
|
||||
this.addAbility(new SimpleActivatedAbility(new BecomesCreatureSourceEffect(
|
||||
|
|
|
|||
|
|
@ -6,12 +6,12 @@ import mage.abilities.common.SimpleActivatedAbility;
|
|||
import mage.abilities.costs.common.SacrificeSourceCost;
|
||||
import mage.abilities.costs.common.TapSourceCost;
|
||||
import mage.abilities.costs.mana.GenericManaCost;
|
||||
import mage.abilities.effects.common.GainLifeEffect;
|
||||
import mage.abilities.effects.common.LoseLifeTargetEffect;
|
||||
import mage.abilities.effects.common.UntapTargetEffect;
|
||||
import mage.abilities.effects.common.continuous.GainAbilityTargetEffect;
|
||||
import mage.abilities.effects.common.continuous.GainControlTargetEffect;
|
||||
import mage.abilities.keyword.HasteAbility;
|
||||
import mage.abilities.token.FoodAbility;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
|
|
@ -42,10 +42,7 @@ public final class EriettesTemptingApple extends CardImpl {
|
|||
this.addAbility(ability);
|
||||
|
||||
// {2}, {T}, Sacrifice Eriette's Tempting Apple: You gain 3 life.
|
||||
ability = new SimpleActivatedAbility(new GainLifeEffect(3), new GenericManaCost(2));
|
||||
ability.addCost(new TapSourceCost());
|
||||
ability.addCost(new SacrificeSourceCost());
|
||||
this.addAbility(ability);
|
||||
this.addAbility(new FoodAbility(true));
|
||||
|
||||
// {2}, {T}, Sacrifice Eriette's Tempting Apple: Target opponent loses 3 life.
|
||||
ability = new SimpleActivatedAbility(new LoseLifeTargetEffect(3), new GenericManaCost(2));
|
||||
|
|
|
|||
|
|
@ -1,14 +1,11 @@
|
|||
package mage.cards.g;
|
||||
|
||||
import mage.MageInt;
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.common.SimpleActivatedAbility;
|
||||
import mage.abilities.costs.common.SacrificeSourceCost;
|
||||
import mage.abilities.costs.common.TapSourceCost;
|
||||
import mage.abilities.costs.mana.GenericManaCost;
|
||||
import mage.abilities.effects.common.GainLifeEffect;
|
||||
import mage.abilities.effects.common.combat.CantBeBlockedByCreaturesSourceEffect;
|
||||
import mage.abilities.keyword.HasteAbility;
|
||||
import mage.abilities.token.FoodAbility;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
|
|
@ -49,10 +46,7 @@ public final class Gingerbrute extends CardImpl {
|
|||
));
|
||||
|
||||
// {2}, {T}, Sacrifice Gingerbrute: You gain 3 life.
|
||||
Ability ability = new SimpleActivatedAbility(new GainLifeEffect(3), new GenericManaCost(2));
|
||||
ability.addCost(new TapSourceCost());
|
||||
ability.addCost(new SacrificeSourceCost());
|
||||
this.addAbility(ability);
|
||||
this.addAbility(new FoodAbility(true));
|
||||
}
|
||||
|
||||
private Gingerbrute(final Gingerbrute card) {
|
||||
|
|
|
|||
|
|
@ -2,20 +2,16 @@ package mage.cards.g;
|
|||
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.common.EntersBattlefieldTriggeredAbility;
|
||||
import mage.abilities.common.SimpleActivatedAbility;
|
||||
import mage.abilities.costs.common.SacrificeSourceCost;
|
||||
import mage.abilities.costs.common.TapSourceCost;
|
||||
import mage.abilities.costs.mana.GenericManaCost;
|
||||
import mage.abilities.costs.mana.ManaCostsImpl;
|
||||
import mage.abilities.effects.common.DrawCardSourceControllerEffect;
|
||||
import mage.abilities.effects.common.GainLifeEffect;
|
||||
import mage.abilities.mana.AnyColorManaAbility;
|
||||
import mage.abilities.token.FoodAbility;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.SubType;
|
||||
import mage.constants.Zone;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
|
|
@ -38,10 +34,7 @@ public final class GoldenEgg extends CardImpl {
|
|||
this.addAbility(ability);
|
||||
|
||||
// {2}, {T}, Sacrifice Golden Egg: You gain 3 life.
|
||||
Ability ability1 = new SimpleActivatedAbility(Zone.BATTLEFIELD, new GainLifeEffect(3), new ManaCostsImpl<>("{2}"));
|
||||
ability1.addCost(new TapSourceCost());
|
||||
ability1.addCost(new SacrificeSourceCost());
|
||||
this.addAbility(ability1);
|
||||
this.addAbility(new FoodAbility(true));
|
||||
}
|
||||
|
||||
private GoldenEgg(final GoldenEgg card) {
|
||||
|
|
|
|||
|
|
@ -2,12 +2,9 @@
|
|||
package mage.cards.g;
|
||||
|
||||
import mage.MageInt;
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.costs.common.SacrificeSourceCost;
|
||||
import mage.abilities.keyword.FirstStrikeAbility;
|
||||
import mage.abilities.keyword.MenaceAbility;
|
||||
import mage.abilities.mana.AnyColorManaAbility;
|
||||
import mage.abilities.mana.GreenManaAbility;
|
||||
import mage.abilities.token.TreasureAbility;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
|
|
@ -36,9 +33,7 @@ public final class Goldhound extends CardImpl {
|
|||
this.addAbility(new MenaceAbility(true));
|
||||
|
||||
// {T}, Sacrifice Goldhound: Add one mana of any color.
|
||||
Ability ability = new AnyColorManaAbility();
|
||||
ability.addCost(new SacrificeSourceCost());
|
||||
this.addAbility(ability);
|
||||
this.addAbility(new TreasureAbility(true));
|
||||
}
|
||||
|
||||
private Goldhound(final Goldhound card) {
|
||||
|
|
|
|||
|
|
@ -1,19 +1,18 @@
|
|||
package mage.cards.i;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.UUID;
|
||||
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.common.EntersBattlefieldAbility;
|
||||
import mage.abilities.common.SimpleActivatedAbility;
|
||||
import mage.abilities.costs.common.RemoveCountersSourceCost;
|
||||
import mage.abilities.costs.common.SacrificeSourceCost;
|
||||
import mage.abilities.costs.common.TapSourceCost;
|
||||
import mage.abilities.costs.mana.GenericManaCost;
|
||||
import mage.abilities.dynamicvalue.DynamicValue;
|
||||
import mage.abilities.effects.Effect;
|
||||
import mage.abilities.effects.common.DrawCardSourceControllerEffect;
|
||||
import mage.abilities.effects.common.counter.AddCountersSourceEffect;
|
||||
import mage.abilities.token.ClueAbility;
|
||||
import mage.constants.SubType;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
|
|
@ -21,7 +20,6 @@ import mage.constants.CardType;
|
|||
import mage.counters.CounterType;
|
||||
import mage.filter.StaticFilters;
|
||||
import mage.game.Game;
|
||||
import mage.game.permanent.Permanent;
|
||||
import mage.players.Player;
|
||||
|
||||
/**
|
||||
|
|
@ -48,9 +46,7 @@ public final class InvestigatorsJournal extends CardImpl {
|
|||
this.addAbility(ability);
|
||||
|
||||
// {2}, Sacrifice Investigator's Journal: Draw a card.
|
||||
ability = new SimpleActivatedAbility(new DrawCardSourceControllerEffect(1), new GenericManaCost(2));
|
||||
ability.addCost(new SacrificeSourceCost());
|
||||
this.addAbility(ability);
|
||||
this.addAbility(new ClueAbility(true));
|
||||
}
|
||||
|
||||
private InvestigatorsJournal(final InvestigatorsJournal card) {
|
||||
|
|
|
|||
|
|
@ -3,14 +3,10 @@ package mage.cards.l;
|
|||
import mage.abilities.Ability;
|
||||
import mage.abilities.common.EntersBattlefieldTriggeredAbility;
|
||||
import mage.abilities.common.PutIntoGraveFromBattlefieldSourceTriggeredAbility;
|
||||
import mage.abilities.common.SimpleActivatedAbility;
|
||||
import mage.abilities.costs.common.SacrificeSourceCost;
|
||||
import mage.abilities.costs.common.TapSourceCost;
|
||||
import mage.abilities.costs.mana.GenericManaCost;
|
||||
import mage.abilities.effects.common.DrawCardSourceControllerEffect;
|
||||
import mage.abilities.effects.common.GainLifeEffect;
|
||||
import mage.abilities.effects.common.ShuffleIntoLibrarySourceEffect;
|
||||
import mage.abilities.effects.keyword.ScryEffect;
|
||||
import mage.abilities.token.FoodAbility;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
|
|
@ -34,10 +30,7 @@ public final class Lembas extends CardImpl {
|
|||
this.addAbility(ability);
|
||||
|
||||
// {2}, {T}, Sacrifice Lembas: You gain 3 life.
|
||||
ability = new SimpleActivatedAbility(new GainLifeEffect(3), new GenericManaCost(2));
|
||||
ability.addCost(new TapSourceCost());
|
||||
ability.addCost(new SacrificeSourceCost());
|
||||
this.addAbility(ability);
|
||||
this.addAbility(new FoodAbility(true));
|
||||
|
||||
// When Lembas is put into a graveyard from the battlefield, its owner shuffles it into their library.
|
||||
this.addAbility(new PutIntoGraveFromBattlefieldSourceTriggeredAbility(
|
||||
|
|
|
|||
|
|
@ -1,11 +1,9 @@
|
|||
package mage.cards.m;
|
||||
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.common.SimpleActivatedAbility;
|
||||
import mage.abilities.costs.common.SacrificeSourceCost;
|
||||
import mage.abilities.costs.mana.GenericManaCost;
|
||||
import mage.abilities.effects.common.continuous.BecomesCreatureSourceEffect;
|
||||
import mage.abilities.mana.AnyColorManaAbility;
|
||||
import mage.abilities.token.TreasureAbility;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
|
|
@ -26,9 +24,7 @@ public final class Mimic extends CardImpl {
|
|||
this.subtype.add(SubType.TREASURE);
|
||||
|
||||
// {T}, Sacrifice Mimic: Add one mana of any color.
|
||||
Ability ability = new AnyColorManaAbility();
|
||||
ability.addCost(new SacrificeSourceCost());
|
||||
this.addAbility(ability);
|
||||
this.addAbility(new TreasureAbility(true));
|
||||
|
||||
// {2}: Mimic becomes a Shapeshifter artifact creature with base power and toughness 3/3 until end of turn.
|
||||
this.addAbility(new SimpleActivatedAbility(new BecomesCreatureSourceEffect(
|
||||
|
|
|
|||
|
|
@ -1,11 +1,7 @@
|
|||
package mage.cards.p;
|
||||
|
||||
import mage.MageInt;
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.common.SimpleActivatedAbility;
|
||||
import mage.abilities.costs.common.SacrificeSourceCost;
|
||||
import mage.abilities.costs.mana.GenericManaCost;
|
||||
import mage.abilities.effects.common.DrawCardSourceControllerEffect;
|
||||
import mage.abilities.token.ClueAbility;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
|
|
@ -27,11 +23,7 @@ public final class ParcelMyr extends CardImpl {
|
|||
this.toughness = new MageInt(1);
|
||||
|
||||
// {2}, Sacrifice Parcel Myr: Draw a card
|
||||
Ability ability = new SimpleActivatedAbility(
|
||||
new DrawCardSourceControllerEffect(1), new GenericManaCost(2)
|
||||
);
|
||||
ability.addCost(new SacrificeSourceCost());
|
||||
this.addAbility(ability);
|
||||
this.addAbility(new ClueAbility(true));
|
||||
}
|
||||
|
||||
private ParcelMyr(final ParcelMyr card) {
|
||||
|
|
|
|||
|
|
@ -4,19 +4,15 @@ import mage.MageInt;
|
|||
import mage.MageObjectReference;
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.TriggeredAbilityImpl;
|
||||
import mage.abilities.common.SimpleActivatedAbility;
|
||||
import mage.abilities.common.SimpleStaticAbility;
|
||||
import mage.abilities.costs.common.SacrificeSourceCost;
|
||||
import mage.abilities.costs.common.TapSourceCost;
|
||||
import mage.abilities.costs.mana.GenericManaCost;
|
||||
import mage.abilities.costs.mana.ManaCostsImpl;
|
||||
import mage.abilities.effects.Effect;
|
||||
import mage.abilities.effects.OneShotEffect;
|
||||
import mage.abilities.effects.common.CreateTokenCopyTargetEffect;
|
||||
import mage.abilities.effects.common.GainLifeEffect;
|
||||
import mage.abilities.effects.common.continuous.GainAbilityControlledEffect;
|
||||
import mage.abilities.keyword.DeathtouchAbility;
|
||||
import mage.abilities.keyword.WardAbility;
|
||||
import mage.abilities.token.FoodAbility;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.*;
|
||||
|
|
@ -225,12 +221,7 @@ class ShelobChildOfUngoliantEffect extends OneShotEffect {
|
|||
token.addSubType(SubType.FOOD);
|
||||
|
||||
// {2}, {T}, Sacrifice this artifact: You gain 3 life.
|
||||
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new GainLifeEffect(3), new GenericManaCost(2));
|
||||
ability.addCost(new TapSourceCost());
|
||||
SacrificeSourceCost cost = new SacrificeSourceCost();
|
||||
cost.setText("Sacrifice this artifact");
|
||||
ability.addCost(cost);
|
||||
token.addAbility(ability);
|
||||
token.addAbility(new FoodAbility(false));
|
||||
}).apply(game, source);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -4,14 +4,11 @@ import mage.MageInt;
|
|||
import mage.abilities.Ability;
|
||||
import mage.abilities.common.EntersBattlefieldTriggeredAbility;
|
||||
import mage.abilities.common.SimpleActivatedAbility;
|
||||
import mage.abilities.costs.common.SacrificeSourceCost;
|
||||
import mage.abilities.costs.common.TapSourceCost;
|
||||
import mage.abilities.costs.mana.GenericManaCost;
|
||||
import mage.abilities.costs.mana.ManaCostsImpl;
|
||||
import mage.abilities.effects.common.CreateTokenEffect;
|
||||
import mage.abilities.effects.common.GainLifeEffect;
|
||||
import mage.abilities.effects.common.continuous.AddCardTypeTargetEffect;
|
||||
import mage.abilities.effects.common.continuous.SetBasePowerToughnessTargetEffect;
|
||||
import mage.abilities.token.FoodAbility;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
|
|
@ -59,10 +56,7 @@ public final class ToughCookie extends CardImpl {
|
|||
this.addAbility(ability);
|
||||
|
||||
// {2}, {T}, Sacrifice Tough Cookie: You gain 3 life.
|
||||
ability = new SimpleActivatedAbility(new GainLifeEffect(3), new GenericManaCost(2));
|
||||
ability.addCost(new TapSourceCost());
|
||||
ability.addCost(new SacrificeSourceCost());
|
||||
this.addAbility(ability);
|
||||
this.addAbility(new FoodAbility(true));
|
||||
}
|
||||
|
||||
private ToughCookie(final ToughCookie card) {
|
||||
|
|
|
|||
25
Mage/src/main/java/mage/abilities/token/ClueAbility.java
Normal file
25
Mage/src/main/java/mage/abilities/token/ClueAbility.java
Normal file
|
|
@ -0,0 +1,25 @@
|
|||
package mage.abilities.token;
|
||||
|
||||
import mage.abilities.ActivatedAbilityImpl;
|
||||
import mage.abilities.costs.common.SacrificeSourceCost;
|
||||
import mage.abilities.costs.mana.GenericManaCost;
|
||||
import mage.abilities.effects.common.DrawCardSourceControllerEffect;
|
||||
import mage.constants.Zone;
|
||||
|
||||
public class ClueAbility extends ActivatedAbilityImpl {
|
||||
|
||||
public ClueAbility(boolean named) {
|
||||
super(Zone.BATTLEFIELD, new DrawCardSourceControllerEffect(1), new GenericManaCost(2));
|
||||
// {2}, Sacrifice this artifact: You draw a card.”
|
||||
this.addCost(new SacrificeSourceCost().setText("sacrifice " + (named ? "{this}" : "this artifact")));
|
||||
}
|
||||
|
||||
private ClueAbility(final ClueAbility ability) {
|
||||
super(ability);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ClueAbility copy() {
|
||||
return new ClueAbility(this);
|
||||
}
|
||||
}
|
||||
28
Mage/src/main/java/mage/abilities/token/FoodAbility.java
Normal file
28
Mage/src/main/java/mage/abilities/token/FoodAbility.java
Normal file
|
|
@ -0,0 +1,28 @@
|
|||
package mage.abilities.token;
|
||||
|
||||
import mage.abilities.ActivatedAbilityImpl;
|
||||
import mage.abilities.costs.common.SacrificeSourceCost;
|
||||
import mage.abilities.costs.common.TapSourceCost;
|
||||
import mage.abilities.costs.mana.GenericManaCost;
|
||||
import mage.abilities.effects.common.GainLifeEffect;
|
||||
import mage.constants.Zone;
|
||||
|
||||
public class FoodAbility extends ActivatedAbilityImpl {
|
||||
|
||||
public FoodAbility(boolean named) {
|
||||
super(Zone.BATTLEFIELD, new GainLifeEffect(3), new GenericManaCost(2));
|
||||
// {2}, {T}, Sacrifice this artifact: You gain 3 life.”
|
||||
this.addCost(new TapSourceCost());
|
||||
this.addCost(new SacrificeSourceCost().setText("sacrifice " + (named ? "{this}" : "this artifact")));
|
||||
}
|
||||
|
||||
private FoodAbility(final FoodAbility ability) {
|
||||
super(ability);
|
||||
}
|
||||
|
||||
@Override
|
||||
public FoodAbility copy() {
|
||||
return new FoodAbility(this);
|
||||
}
|
||||
|
||||
}
|
||||
25
Mage/src/main/java/mage/abilities/token/TreasureAbility.java
Normal file
25
Mage/src/main/java/mage/abilities/token/TreasureAbility.java
Normal file
|
|
@ -0,0 +1,25 @@
|
|||
package mage.abilities.token;
|
||||
|
||||
import mage.abilities.costs.common.SacrificeSourceCost;
|
||||
import mage.abilities.costs.common.TapSourceCost;
|
||||
import mage.abilities.effects.mana.AddManaOfAnyColorEffect;
|
||||
import mage.abilities.mana.ActivatedManaAbilityImpl;
|
||||
import mage.constants.Zone;
|
||||
|
||||
public class TreasureAbility extends ActivatedManaAbilityImpl {
|
||||
|
||||
public TreasureAbility(boolean named) {
|
||||
super(Zone.BATTLEFIELD, new AddManaOfAnyColorEffect(), new TapSourceCost());
|
||||
this.addCost(new SacrificeSourceCost().setText("sacrifice " + (named ? "{this}" : "this artifact")));
|
||||
}
|
||||
|
||||
private TreasureAbility(final TreasureAbility ability) {
|
||||
super(ability);
|
||||
}
|
||||
|
||||
@Override
|
||||
public TreasureAbility copy() {
|
||||
return new TreasureAbility(this);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -1,13 +1,8 @@
|
|||
package mage.game.permanent.token;
|
||||
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.common.SimpleActivatedAbility;
|
||||
import mage.abilities.costs.common.SacrificeSourceCost;
|
||||
import mage.abilities.costs.mana.GenericManaCost;
|
||||
import mage.abilities.effects.common.DrawCardSourceControllerEffect;
|
||||
import mage.abilities.token.ClueAbility;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.SubType;
|
||||
import mage.constants.Zone;
|
||||
|
||||
/**
|
||||
*
|
||||
|
|
@ -15,16 +10,12 @@ import mage.constants.Zone;
|
|||
public final class ClueArtifactToken extends TokenImpl {
|
||||
|
||||
public ClueArtifactToken() {
|
||||
super("Clue Token", "colorless Clue artifact token with \"{2}, Sacrifice this artifact: Draw a card.\"");
|
||||
super("Clue Token", "Clue token");
|
||||
cardType.add(CardType.ARTIFACT);
|
||||
subtype.add(SubType.CLUE);
|
||||
|
||||
// {2}, Sacrifice this artifact: Draw a card.
|
||||
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DrawCardSourceControllerEffect(1), new GenericManaCost(2));
|
||||
SacrificeSourceCost cost = new SacrificeSourceCost();
|
||||
cost.setText("Sacrifice this artifact");
|
||||
ability.addCost(cost);
|
||||
this.addAbility(ability);
|
||||
this.addAbility(new ClueAbility(false));
|
||||
}
|
||||
|
||||
protected ClueArtifactToken(final ClueArtifactToken token) {
|
||||
|
|
|
|||
|
|
@ -1,14 +1,8 @@
|
|||
package mage.game.permanent.token;
|
||||
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.common.SimpleActivatedAbility;
|
||||
import mage.abilities.costs.common.SacrificeSourceCost;
|
||||
import mage.abilities.costs.common.TapSourceCost;
|
||||
import mage.abilities.costs.mana.GenericManaCost;
|
||||
import mage.abilities.effects.common.GainLifeEffect;
|
||||
import mage.abilities.token.FoodAbility;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.SubType;
|
||||
import mage.constants.Zone;
|
||||
|
||||
/**
|
||||
* @author jmharmon
|
||||
|
|
@ -21,13 +15,7 @@ public final class FoodToken extends TokenImpl {
|
|||
cardType.add(CardType.ARTIFACT);
|
||||
subtype.add(SubType.FOOD);
|
||||
|
||||
// {2}, {T}, Sacrifice this artifact: You gain 3 life.”
|
||||
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new GainLifeEffect(3), new GenericManaCost(2));
|
||||
ability.addCost(new TapSourceCost());
|
||||
SacrificeSourceCost cost = new SacrificeSourceCost();
|
||||
cost.setText("Sacrifice this artifact");
|
||||
ability.addCost(cost);
|
||||
this.addAbility(ability);
|
||||
this.addAbility(new FoodAbility(false));
|
||||
}
|
||||
|
||||
protected FoodToken(final FoodToken token) {
|
||||
|
|
|
|||
|
|
@ -1,13 +1,8 @@
|
|||
package mage.game.permanent.token;
|
||||
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.costs.common.SacrificeSourceCost;
|
||||
import mage.abilities.costs.common.TapSourceCost;
|
||||
import mage.abilities.effects.mana.AddManaOfAnyColorEffect;
|
||||
import mage.abilities.mana.SimpleManaAbility;
|
||||
import mage.abilities.token.TreasureAbility;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.SubType;
|
||||
import mage.constants.Zone;
|
||||
|
||||
/**
|
||||
* @author TheElk801
|
||||
|
|
@ -19,10 +14,7 @@ public final class TreasureToken extends TokenImpl {
|
|||
cardType.add(CardType.ARTIFACT);
|
||||
subtype.add(SubType.TREASURE);
|
||||
|
||||
// {T}, Sacrifice this artifact: Add one mana of any color.
|
||||
Ability ability = new SimpleManaAbility(Zone.BATTLEFIELD, new AddManaOfAnyColorEffect(), new TapSourceCost());
|
||||
ability.addCost(new SacrificeSourceCost().setText("sacrifice this artifact"));
|
||||
this.addAbility(ability);
|
||||
this.addAbility(new TreasureAbility(false));
|
||||
}
|
||||
|
||||
protected TreasureToken(final TreasureToken token) {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue