mirror of
https://github.com/correl/mage.git
synced 2024-11-15 03:00:16 +00:00
* Chroma ability - added card hints about color amount in permanents cost (example: Outrage Shaman);
This commit is contained in:
parent
5b93f25206
commit
fa8c0259d0
7 changed files with 76 additions and 164 deletions
|
@ -1,30 +1,25 @@
|
|||
|
||||
package mage.cards.h;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.MageInt;
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.common.EntersBattlefieldTriggeredAbility;
|
||||
import mage.abilities.dynamicvalue.DynamicValue;
|
||||
import mage.abilities.dynamicvalue.common.ChromaOutrageShamanCount;
|
||||
import mage.abilities.dynamicvalue.common.ChromaCount;
|
||||
import mage.abilities.dynamicvalue.common.StaticValue;
|
||||
import mage.abilities.effects.ContinuousEffect;
|
||||
import mage.abilities.effects.Effect;
|
||||
import mage.abilities.effects.common.continuous.BoostSourceEffect;
|
||||
import mage.abilities.hint.ValueHint;
|
||||
import mage.abilities.keyword.HasteAbility;
|
||||
import mage.cards.Card;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.SubType;
|
||||
import mage.constants.Duration;
|
||||
import mage.filter.common.FilterControlledPermanent;
|
||||
import mage.game.Game;
|
||||
import mage.constants.ManaType;
|
||||
import mage.constants.SubType;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author jeffwadsworth
|
||||
*
|
||||
*/
|
||||
public final class HeartlashCinder extends CardImpl {
|
||||
|
||||
|
@ -40,13 +35,14 @@ public final class HeartlashCinder extends CardImpl {
|
|||
this.addAbility(HasteAbility.getInstance());
|
||||
|
||||
// Chroma - When Heartlash Cinder enters the battlefield, it gets +X/+0 until end of turn, where X is the number of red mana symbols in the mana costs of permanents you control.
|
||||
ContinuousEffect effect = new BoostSourceEffect(new ChromaHeartlashCinderCount(), StaticValue.get(0), Duration.EndOfTurn, true);
|
||||
DynamicValue xValue = new ChromaCount(ManaType.RED);
|
||||
ContinuousEffect effect = new BoostSourceEffect(xValue, StaticValue.get(0), Duration.EndOfTurn, true);
|
||||
effect.setText("it gets +X/+0 until end of turn, where X is the number of red mana symbols in the mana costs of permanents you control");
|
||||
this.addAbility(new EntersBattlefieldTriggeredAbility(
|
||||
effect, false)
|
||||
.withFlavorWord("Chroma")
|
||||
.addHint(new ValueHint("Red mana symbols in your permanents", xValue))
|
||||
);
|
||||
|
||||
}
|
||||
|
||||
private HeartlashCinder(final HeartlashCinder card) {
|
||||
|
@ -58,32 +54,3 @@ public final class HeartlashCinder extends CardImpl {
|
|||
return new HeartlashCinder(this);
|
||||
}
|
||||
}
|
||||
|
||||
class ChromaHeartlashCinderCount implements DynamicValue {
|
||||
|
||||
private int chroma;
|
||||
|
||||
@Override
|
||||
public int calculate(Game game, Ability sourceAbility, Effect effect) {
|
||||
chroma = 0;
|
||||
for (Card card : game.getBattlefield().getAllActivePermanents(new FilterControlledPermanent(), sourceAbility.getControllerId(), game)) {
|
||||
chroma += card.getManaCost().getMana().getRed();
|
||||
}
|
||||
return chroma;
|
||||
}
|
||||
|
||||
@Override
|
||||
public DynamicValue copy() {
|
||||
return new ChromaOutrageShamanCount();
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "1";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getMessage() {
|
||||
return "";
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,28 +1,29 @@
|
|||
|
||||
package mage.cards.o;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.MageInt;
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.common.EntersBattlefieldTriggeredAbility;
|
||||
import mage.abilities.dynamicvalue.common.ChromaOutrageShamanCount;
|
||||
import mage.abilities.dynamicvalue.DynamicValue;
|
||||
import mage.abilities.dynamicvalue.common.ChromaCount;
|
||||
import mage.abilities.effects.Effect;
|
||||
import mage.abilities.effects.common.DamageTargetEffect;
|
||||
import mage.abilities.hint.ValueHint;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.ManaType;
|
||||
import mage.constants.SubType;
|
||||
import mage.target.common.TargetCreaturePermanent;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author jeffwadsworth
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
* @author jeffwadsworth
|
||||
*/
|
||||
public final class OutrageShaman extends CardImpl {
|
||||
|
||||
public OutrageShaman(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{R}{R}");
|
||||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{R}{R}");
|
||||
this.subtype.add(SubType.GOBLIN);
|
||||
this.subtype.add(SubType.SHAMAN);
|
||||
|
||||
|
@ -30,13 +31,15 @@ public final class OutrageShaman extends CardImpl {
|
|||
this.toughness = new MageInt(2);
|
||||
|
||||
// Chroma - When Outrage Shaman enters the battlefield, it deals damage to target creature equal to the number of red mana symbols in the mana costs of permanents you control.
|
||||
Effect effect = new DamageTargetEffect(new ChromaOutrageShamanCount());
|
||||
DynamicValue xValue = new ChromaCount(ManaType.RED);
|
||||
Effect effect = new DamageTargetEffect(xValue);
|
||||
effect.setText("it deals damage to target creature equal to the number of red mana symbols in the mana costs of permanents you control");
|
||||
Ability ability = new EntersBattlefieldTriggeredAbility(effect, false);
|
||||
ability.addTarget(new TargetCreaturePermanent());
|
||||
ability.withFlavorWord("Chroma");
|
||||
ability.addHint(new ValueHint("Red mana symbols in your permanents", xValue));
|
||||
this.addAbility(ability);
|
||||
|
||||
|
||||
}
|
||||
|
||||
private OutrageShaman(final OutrageShaman card) {
|
||||
|
|
|
@ -1,15 +1,9 @@
|
|||
|
||||
package mage.cards.p;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.effects.Effect;
|
||||
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.filter.FilterCard;
|
||||
|
@ -17,16 +11,15 @@ import mage.game.Game;
|
|||
import mage.players.Player;
|
||||
import mage.target.common.TargetCardInHand;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author jeffwadsworth
|
||||
*
|
||||
*/
|
||||
public final class PhosphorescentFeast extends CardImpl {
|
||||
|
||||
public PhosphorescentFeast(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{2}{G}{G}{G}");
|
||||
|
||||
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{2}{G}{G}{G}");
|
||||
|
||||
// Chroma - Reveal any number of cards in your hand. You gain 2 life for each green mana symbol in those cards' mana costs.
|
||||
Effect effect = new PhosphorescentFeastEffect();
|
||||
|
|
|
@ -1,33 +1,26 @@
|
|||
|
||||
package mage.cards.p;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.MageInt;
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.common.SimpleStaticAbility;
|
||||
import mage.abilities.dynamicvalue.DynamicValue;
|
||||
import mage.abilities.dynamicvalue.common.ChromaCount;
|
||||
import mage.abilities.effects.Effect;
|
||||
import mage.abilities.effects.common.continuous.SetPowerToughnessSourceEffect;
|
||||
import mage.abilities.hint.ValueHint;
|
||||
import mage.abilities.keyword.TrampleAbility;
|
||||
import mage.cards.Card;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.SubType;
|
||||
import mage.constants.Duration;
|
||||
import mage.constants.Zone;
|
||||
import mage.filter.common.FilterControlledPermanent;
|
||||
import mage.game.Game;
|
||||
import mage.constants.*;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author jeffwadsworth
|
||||
*
|
||||
*/
|
||||
public final class Primalcrux extends CardImpl {
|
||||
|
||||
public Primalcrux(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{G}{G}{G}{G}{G}{G}");
|
||||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{G}{G}{G}{G}{G}{G}");
|
||||
this.subtype.add(SubType.ELEMENTAL);
|
||||
|
||||
this.power = new MageInt(0);
|
||||
|
@ -37,9 +30,12 @@ public final class Primalcrux extends CardImpl {
|
|||
this.addAbility(TrampleAbility.getInstance());
|
||||
|
||||
// Chroma - Primalcrux's power and toughness are each equal to the number of green mana symbols in the mana costs of permanents you control.
|
||||
Effect effect = new SetPowerToughnessSourceEffect(new ChromaPrimalcruxCount(), Duration.WhileOnBattlefield);
|
||||
DynamicValue xValue = new ChromaCount(ManaType.GREEN);
|
||||
Effect effect = new SetPowerToughnessSourceEffect(xValue, Duration.WhileOnBattlefield);
|
||||
effect.setText("<i>Chroma</i> — Primalcrux's power and toughness are each equal to the number of green mana symbols in the mana costs of permanents you control.");
|
||||
this.addAbility(new SimpleStaticAbility(Zone.ALL, effect));
|
||||
this.addAbility(new SimpleStaticAbility(Zone.ALL, effect)
|
||||
.addHint(new ValueHint("Green mana symbols in your permanents", xValue))
|
||||
);
|
||||
}
|
||||
|
||||
private Primalcrux(final Primalcrux card) {
|
||||
|
@ -51,32 +47,3 @@ public final class Primalcrux extends CardImpl {
|
|||
return new Primalcrux(this);
|
||||
}
|
||||
}
|
||||
|
||||
class ChromaPrimalcruxCount implements DynamicValue {
|
||||
|
||||
private int chroma;
|
||||
|
||||
@Override
|
||||
public int calculate(Game game, Ability sourceAbility, Effect effect) {
|
||||
chroma = 0;
|
||||
for (Card card : game.getBattlefield().getAllActivePermanents(new FilterControlledPermanent(), sourceAbility.getControllerId(), game)) {
|
||||
chroma += card.getManaCost().getMana().getGreen();
|
||||
}
|
||||
return chroma;
|
||||
}
|
||||
|
||||
@Override
|
||||
public DynamicValue copy() {
|
||||
return new ChromaPrimalcruxCount();
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "1";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getMessage() {
|
||||
return "";
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,31 +1,28 @@
|
|||
|
||||
package mage.cards.s;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.MageInt;
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.common.EntersBattlefieldTriggeredAbility;
|
||||
import mage.abilities.dynamicvalue.DynamicValue;
|
||||
import mage.abilities.dynamicvalue.common.ChromaCount;
|
||||
import mage.abilities.effects.Effect;
|
||||
import mage.abilities.effects.common.CreateTokenEffect;
|
||||
import mage.abilities.hint.ValueHint;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.ManaType;
|
||||
import mage.constants.SubType;
|
||||
import mage.filter.FilterPermanent;
|
||||
import mage.game.Game;
|
||||
import mage.game.permanent.Permanent;
|
||||
import mage.game.permanent.token.GoatToken;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author jeffwadsworth
|
||||
*
|
||||
*/
|
||||
public final class SpringjackShepherd extends CardImpl {
|
||||
|
||||
public SpringjackShepherd(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{W}");
|
||||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{W}");
|
||||
this.subtype.add(SubType.KITHKIN);
|
||||
this.subtype.add(SubType.WIZARD);
|
||||
|
||||
|
@ -33,11 +30,13 @@ public final class SpringjackShepherd extends CardImpl {
|
|||
this.toughness = new MageInt(2);
|
||||
|
||||
// Chroma - When Springjack Shepherd enters the battlefield, create a 0/1 white Goat creature token for each white mana symbol in the mana costs of permanents you control.
|
||||
Effect effect = new CreateTokenEffect(new GoatToken(), new ChromaSpringjackShepherdCount());
|
||||
DynamicValue xValue = new ChromaCount(ManaType.WHITE);
|
||||
Effect effect = new CreateTokenEffect(new GoatToken(), xValue);
|
||||
effect.setText("create a 0/1 white Goat creature token for each white mana symbol in the mana costs of permanents you control.");
|
||||
this.addAbility(new EntersBattlefieldTriggeredAbility(
|
||||
effect, false)
|
||||
.withFlavorWord("Chroma")
|
||||
.addHint(new ValueHint("White mana symbols in your permanents", xValue))
|
||||
);
|
||||
}
|
||||
|
||||
|
@ -49,31 +48,4 @@ public final class SpringjackShepherd extends CardImpl {
|
|||
public SpringjackShepherd copy() {
|
||||
return new SpringjackShepherd(this);
|
||||
}
|
||||
}
|
||||
|
||||
class ChromaSpringjackShepherdCount implements DynamicValue {
|
||||
|
||||
@Override
|
||||
public int calculate(Game game, Ability sourceAbility, Effect effect) {
|
||||
int chroma = 0;
|
||||
for (Permanent permanent : game.getBattlefield().getAllActivePermanents(new FilterPermanent(), sourceAbility.getControllerId(), game)) {
|
||||
chroma += permanent.getManaCost().getMana().getWhite();
|
||||
}
|
||||
return chroma;
|
||||
}
|
||||
|
||||
@Override
|
||||
public DynamicValue copy() {
|
||||
return new ChromaSpringjackShepherdCount();
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "1";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getMessage() {
|
||||
return "";
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,42 +1,43 @@
|
|||
|
||||
package mage.cards.u;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.MageInt;
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.common.SimpleStaticAbility;
|
||||
import mage.abilities.dynamicvalue.DynamicValue;
|
||||
import mage.abilities.effects.Effect;
|
||||
import mage.abilities.effects.common.continuous.SetPowerToughnessSourceEffect;
|
||||
import mage.abilities.hint.ValueHint;
|
||||
import mage.cards.Card;
|
||||
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.game.Game;
|
||||
import mage.players.Player;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author jeffwadsworth
|
||||
*
|
||||
*/
|
||||
public final class UmbraStalker extends CardImpl {
|
||||
|
||||
public UmbraStalker(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{B}{B}{B}");
|
||||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{B}{B}{B}");
|
||||
this.subtype.add(SubType.ELEMENTAL);
|
||||
|
||||
this.power = new MageInt(0);
|
||||
this.toughness = new MageInt(0);
|
||||
|
||||
// Chroma - Umbra Stalker's power and toughness are each equal to the number of black mana symbols in the mana costs of cards in your graveyard.
|
||||
Effect effect = new SetPowerToughnessSourceEffect(new ChromaUmbraStalkerCount(), Duration.WhileOnBattlefield);
|
||||
DynamicValue xValue = new ChromaUmbraStalkerCount();
|
||||
Effect effect = new SetPowerToughnessSourceEffect(xValue, Duration.WhileOnBattlefield);
|
||||
effect.setText("<i>Chroma</i> — Umbra Stalker's power and toughness are each equal to the number of black mana symbols in the mana costs of cards in your graveyard.");
|
||||
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, effect));
|
||||
|
||||
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, effect)
|
||||
.addHint(new ValueHint("Black mana symbols in your graveyard's permanents", xValue))
|
||||
);
|
||||
}
|
||||
|
||||
private UmbraStalker(final UmbraStalker card) {
|
||||
|
@ -51,11 +52,9 @@ public final class UmbraStalker extends CardImpl {
|
|||
|
||||
class ChromaUmbraStalkerCount implements DynamicValue {
|
||||
|
||||
private int chroma;
|
||||
|
||||
@Override
|
||||
public int calculate(Game game, Ability sourceAbility, Effect effect) {
|
||||
chroma = 0;
|
||||
int chroma = 0;
|
||||
Player you = game.getPlayer(sourceAbility.getControllerId());
|
||||
if (you == null) {
|
||||
return 0;
|
||||
|
|
|
@ -4,28 +4,38 @@ import mage.abilities.Ability;
|
|||
import mage.abilities.dynamicvalue.DynamicValue;
|
||||
import mage.abilities.effects.Effect;
|
||||
import mage.cards.Card;
|
||||
import mage.constants.ManaType;
|
||||
import mage.filter.common.FilterControlledPermanent;
|
||||
import mage.game.Game;
|
||||
|
||||
/**
|
||||
* Created by Eric on 9/24/2016.
|
||||
* @author JayDi85
|
||||
*/
|
||||
public class ChromaOutrageShamanCount implements DynamicValue {
|
||||
public class ChromaCount implements DynamicValue {
|
||||
|
||||
private int chroma;
|
||||
private final ManaType needManaType;
|
||||
|
||||
public ChromaCount(ManaType needManaType) {
|
||||
this.needManaType = needManaType;
|
||||
}
|
||||
|
||||
private ChromaCount(final ChromaCount dynamicValue) {
|
||||
super();
|
||||
this.needManaType = dynamicValue.needManaType;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int calculate(Game game, Ability sourceAbility, Effect effect) {
|
||||
chroma = 0;
|
||||
int chroma = 0;
|
||||
for (Card card : game.getBattlefield().getAllActivePermanents(new FilterControlledPermanent(), sourceAbility.getControllerId(), game)) {
|
||||
chroma += card.getManaCost().getMana().getRed();
|
||||
chroma += card.getManaCost().getMana().get(this.needManaType);
|
||||
}
|
||||
return chroma;
|
||||
}
|
||||
|
||||
@Override
|
||||
public DynamicValue copy() {
|
||||
return new ChromaOutrageShamanCount();
|
||||
public ChromaCount copy() {
|
||||
return new ChromaCount(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -37,4 +47,5 @@ public class ChromaOutrageShamanCount implements DynamicValue {
|
|||
public String getMessage() {
|
||||
return "";
|
||||
}
|
||||
}
|
||||
|
||||
}
|
Loading…
Reference in a new issue