mirror of
https://github.com/magefree/mage.git
synced 2026-01-09 20:32:06 -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
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