diff --git a/Mage.Common/src/mage/view/CardView.java b/Mage.Common/src/mage/view/CardView.java
index 5829fa3a3bf..d0845cd7ae6 100644
--- a/Mage.Common/src/mage/view/CardView.java
+++ b/Mage.Common/src/mage/view/CardView.java
@@ -237,7 +237,7 @@ public class CardView extends SimpleCardView {
this.cardTypes = card.getCardType();
this.subTypes = card.getSubtype();
this.superTypes = card.getSupertype();
- this.color = card.getColor();
+ this.color = card.getColor(game);
this.canTransform = card.canTransform();
this.flipCard = card.isFlipCard();
this.faceDown = game != null ? card.isFaceDown(game) : false;
@@ -313,7 +313,7 @@ public class CardView extends SimpleCardView {
this.cardTypes = object.getCardType();
this.subTypes = object.getSubtype();
this.superTypes = object.getSupertype();
- this.color = object.getColor();
+ this.color = object.getColor(null);
this.manaCost = object.getManaCost().getSymbols();
this.convertedManaCost = object.getManaCost().convertedManaCost();
if (object instanceof PermanentToken) {
@@ -421,7 +421,7 @@ public class CardView extends SimpleCardView {
this.cardTypes = token.getCardType();
this.subTypes = token.getSubtype();
this.superTypes = token.getSupertype();
- this.color = token.getColor();
+ this.color = token.getColor(null);
this.manaCost = token.getManaCost().getSymbols();
this.rarity = Rarity.NA;
this.type = token.getTokenType();
diff --git a/Mage.Common/src/mage/view/StackAbilityView.java b/Mage.Common/src/mage/view/StackAbilityView.java
index b8a08b07692..8cb82fa2ffe 100644
--- a/Mage.Common/src/mage/view/StackAbilityView.java
+++ b/Mage.Common/src/mage/view/StackAbilityView.java
@@ -64,12 +64,12 @@ public class StackAbilityView extends CardView {
this.cardTypes = ability.getCardType();
this.subTypes = ability.getSubtype();
this.superTypes = ability.getSupertype();
- this.color = ability.getColor();
+ this.color = ability.getColor(game);
this.manaCost = ability.getManaCost().getSymbols();
this.cardTypes = ability.getCardType();
this.subTypes = ability.getSubtype();
this.superTypes = ability.getSupertype();
- this.color = ability.getColor();
+ this.color = ability.getColor(game);
this.manaCost = ability.getManaCost().getSymbols();
this.power = ability.getPower().toString();
this.toughness = ability.getToughness().toString();
diff --git a/Mage.Sets/src/mage/sets/alarareborn/GloryscaleViashino.java b/Mage.Sets/src/mage/sets/alarareborn/GloryscaleViashino.java
index 87a8081830f..46d20e93bba 100644
--- a/Mage.Sets/src/mage/sets/alarareborn/GloryscaleViashino.java
+++ b/Mage.Sets/src/mage/sets/alarareborn/GloryscaleViashino.java
@@ -89,7 +89,7 @@ class GloryscaleViashinoAbility extends TriggeredAbilityImpl {
public boolean checkTrigger(GameEvent event, Game game) {
if (event.getType() == GameEvent.EventType.SPELL_CAST) {
Spell spell = game.getStack().getSpell(event.getTargetId());
- if (spell != null && spell.getColor().isMulticolored() && event.getPlayerId().equals(getControllerId())) {
+ if (spell != null && spell.getColor(game).isMulticolored() && event.getPlayerId().equals(getControllerId())) {
return true;
}
}
diff --git a/Mage.Sets/src/mage/sets/alarareborn/KnightOfNewAlara.java b/Mage.Sets/src/mage/sets/alarareborn/KnightOfNewAlara.java
index 8505d0f946e..51ba166beb6 100644
--- a/Mage.Sets/src/mage/sets/alarareborn/KnightOfNewAlara.java
+++ b/Mage.Sets/src/mage/sets/alarareborn/KnightOfNewAlara.java
@@ -102,7 +102,7 @@ class KnightOfNewAlaraEffect extends ContinuousEffectImpl {
public boolean apply(Game game, Ability source) {
for (Permanent creature : game.getBattlefield().getAllActivePermanents(filter, source.getControllerId(), game)) {
if (creature != null && !creature.getId().equals(source.getSourceId())) {
- int colors = creature.getColor().getColorCount();
+ int colors = creature.getColor(game).getColorCount();
creature.addPower(colors);
creature.addToughness(colors);
}
diff --git a/Mage.Sets/src/mage/sets/apocalypse/FireIce.java b/Mage.Sets/src/mage/sets/apocalypse/FireIce.java
index 7f0394cdcd8..18f2d907653 100644
--- a/Mage.Sets/src/mage/sets/apocalypse/FireIce.java
+++ b/Mage.Sets/src/mage/sets/apocalypse/FireIce.java
@@ -51,12 +51,8 @@ public class FireIce extends SplitCard {
super(ownerId, 128, "Fire", "Ice", Rarity.UNCOMMON, new CardType[]{CardType.INSTANT}, "{1}{R}", "{1}{U}", false);
this.expansionSetCode = "APC";
- this.color.setBlue(true);
- this.color.setRed(true);
-
// Fire
// Fire deals 2 damage divided as you choose among one or two target creatures and/or players.
- getLeftHalfCard().getColor().setRed(true);
Effect effect = new DamageMultiEffect(2);
effect.setText("Fire deals 2 damage divided as you choose among one or two target creatures and/or players");
getLeftHalfCard().getSpellAbility().addEffect(effect);
@@ -65,7 +61,6 @@ public class FireIce extends SplitCard {
// Ice
// Tap target permanent.
// Draw a card.
- getRightHalfCard().getColor().setBlue(true);
getRightHalfCard().getSpellAbility().addEffect(new TapTargetEffect());
getRightHalfCard().getSpellAbility().addTarget(new TargetPermanent());
getRightHalfCard().getSpellAbility().addEffect(new DrawCardSourceControllerEffect(1));
diff --git a/Mage.Sets/src/mage/sets/apocalypse/IllusionReality.java b/Mage.Sets/src/mage/sets/apocalypse/IllusionReality.java
index 6a875b15cb1..af059572f70 100644
--- a/Mage.Sets/src/mage/sets/apocalypse/IllusionReality.java
+++ b/Mage.Sets/src/mage/sets/apocalypse/IllusionReality.java
@@ -49,19 +49,14 @@ public class IllusionReality extends SplitCard {
super(ownerId, 129, "Illusion", "Reality", Rarity.UNCOMMON, new CardType[]{CardType.INSTANT}, "{U}", "{2}{G}", false);
this.expansionSetCode = "APC";
- this.color.setBlue(true);
- this.color.setGreen(true);
-
// Illusion
// Target spell or permanent becomes the color of your choice until end of turn.
- getLeftHalfCard().getColor().setBlue(true);
getLeftHalfCard().getSpellAbility().addEffect(new BecomesColorTargetEffect(Duration.EndOfTurn));
Target target = new TargetSpellOrPermanent();
getLeftHalfCard().getSpellAbility().addTarget(target);
// Reality
// Destroy target artifact.
- getRightHalfCard().getColor().setGreen(true);
getRightHalfCard().getSpellAbility().addTarget(new TargetArtifactPermanent());
getRightHalfCard().getSpellAbility().addEffect(new DestroyTargetEffect());
}
diff --git a/Mage.Sets/src/mage/sets/apocalypse/LifeDeath.java b/Mage.Sets/src/mage/sets/apocalypse/LifeDeath.java
index 74b76951c09..1db52a16d06 100644
--- a/Mage.Sets/src/mage/sets/apocalypse/LifeDeath.java
+++ b/Mage.Sets/src/mage/sets/apocalypse/LifeDeath.java
@@ -59,18 +59,13 @@ public class LifeDeath extends SplitCard {
super(ownerId, 130, "Life", "Death", Rarity.UNCOMMON, new CardType[]{CardType.SORCERY}, "{G}", "{1}{B}", false);
this.expansionSetCode = "APC";
- this.color.setGreen(true);
- this.color.setBlack(true);
-
// Life
// All lands you control become 1/1 creatures until end of turn. They're still lands.
- getLeftHalfCard().getColor().setGreen(true);
getLeftHalfCard().getSpellAbility().addEffect(new BecomesCreatureAllEffect(new LifeLandToken(), "lands",
new FilterControlledLandPermanent("lands you control"), Duration.EndOfTurn));
// Death
// Return target creature card from your graveyard to the battlefield. You lose life equal to its converted mana cost.
- getRightHalfCard().getColor().setBlack(true);
Target target = new TargetCardInYourGraveyard(1, new FilterCreatureCard("creature card from your graveyard"));
getRightHalfCard().getSpellAbility().addTarget(target);
getRightHalfCard().getSpellAbility().addEffect(new DeathEffect());
diff --git a/Mage.Sets/src/mage/sets/apocalypse/NightDay.java b/Mage.Sets/src/mage/sets/apocalypse/NightDay.java
index 1a29b3bfe59..51889bf52be 100644
--- a/Mage.Sets/src/mage/sets/apocalypse/NightDay.java
+++ b/Mage.Sets/src/mage/sets/apocalypse/NightDay.java
@@ -59,18 +59,13 @@ public class NightDay extends SplitCard {
super(ownerId, 131, "Night", "Day", Rarity.UNCOMMON, new CardType[]{CardType.INSTANT}, "{B}", "{2}{W}", false);
this.expansionSetCode = "APC";
- this.color.setBlack(true);
- this.color.setWhite(true);
-
// Night
// Target creature gets -1/-1 until end of turn.
- getLeftHalfCard().getColor().setBlack(true);
getLeftHalfCard().getSpellAbility().addEffect(new BoostTargetEffect(-1,-1,Duration.EndOfTurn));
getLeftHalfCard().getSpellAbility().addTarget(new TargetCreaturePermanent());
// Day
// Creatures target player controls get +1/+1 until end of turn.
- getRightHalfCard().getColor().setWhite(true);
getRightHalfCard().getSpellAbility().addTarget(new TargetPlayer());
getRightHalfCard().getSpellAbility().addEffect(new DayEffect());
diff --git a/Mage.Sets/src/mage/sets/apocalypse/OrderChaos.java b/Mage.Sets/src/mage/sets/apocalypse/OrderChaos.java
index af280d76ead..d4e7afbe97e 100644
--- a/Mage.Sets/src/mage/sets/apocalypse/OrderChaos.java
+++ b/Mage.Sets/src/mage/sets/apocalypse/OrderChaos.java
@@ -51,19 +51,14 @@ public class OrderChaos extends SplitCard {
super(ownerId, 132, "Order", "Chaos", Rarity.UNCOMMON, new CardType[]{CardType.INSTANT}, "{3}{W}", "{2}{R}", false);
this.expansionSetCode = "APC";
- this.color.setWhite(true);
- this.color.setRed(true);
-
// Order
// Exile target attacking creature.
- getLeftHalfCard().getColor().setWhite(true);
getLeftHalfCard().getSpellAbility().addEffect(new ExileTargetEffect());
Target target = new TargetAttackingCreature();
getLeftHalfCard().getSpellAbility().addTarget(target);
// Chaos
// Creatures can't block this turn.
- getRightHalfCard().getColor().setRed(true);
getRightHalfCard().getSpellAbility().addEffect(new CantBlockAllEffect(new FilterCreaturePermanent("Creatures"), Duration.EndOfTurn));
}
diff --git a/Mage.Sets/src/mage/sets/avacynrestored/DreadSlaver.java b/Mage.Sets/src/mage/sets/avacynrestored/DreadSlaver.java
index 8dd0ecbfcd2..ff086a81a0f 100644
--- a/Mage.Sets/src/mage/sets/avacynrestored/DreadSlaver.java
+++ b/Mage.Sets/src/mage/sets/avacynrestored/DreadSlaver.java
@@ -138,7 +138,7 @@ class DreadSlaverContiniousEffect extends ContinuousEffectImpl {
break;
case ColorChangingEffects_5:
if (sublayer == SubLayer.NA) {
- creature.getColor().setBlack(true);
+ creature.getColor(game).setBlack(true);
}
break;
}
diff --git a/Mage.Sets/src/mage/sets/betrayersofkamigawa/EmptyShrineKannushi.java b/Mage.Sets/src/mage/sets/betrayersofkamigawa/EmptyShrineKannushi.java
index 13b8dc0930b..56805bbc971 100644
--- a/Mage.Sets/src/mage/sets/betrayersofkamigawa/EmptyShrineKannushi.java
+++ b/Mage.Sets/src/mage/sets/betrayersofkamigawa/EmptyShrineKannushi.java
@@ -93,7 +93,7 @@ class EmptyShrineKannushiProtectionAbility extends ProtectionAbility {
public boolean canTarget(MageObject source, Game game) {
ObjectColor color = new ObjectColor();
for (Permanent permanent: game.getBattlefield().getAllActivePermanents(controllerId)) {
- ObjectColor permanentColor = permanent.getColor();
+ ObjectColor permanentColor = permanent.getColor(game);
if (permanentColor.isColorless()) {
continue;
}
diff --git a/Mage.Sets/src/mage/sets/championsofkamigawa/AkkiLavarunner.java b/Mage.Sets/src/mage/sets/championsofkamigawa/AkkiLavarunner.java
index c30235ab5f1..f0edd96bc58 100644
--- a/Mage.Sets/src/mage/sets/championsofkamigawa/AkkiLavarunner.java
+++ b/Mage.Sets/src/mage/sets/championsofkamigawa/AkkiLavarunner.java
@@ -126,7 +126,7 @@ class TokTokVolcanoBornEffect extends ReplacementEffectImpl {
@Override
public boolean applies(GameEvent event, Ability source, Game game) {
Card card = game.getCard(event.getSourceId());
- if (card != null && card.getColor().isRed()) {
+ if (card != null && card.getColor(game).isRed()) {
return true;
}
return false;
diff --git a/Mage.Sets/src/mage/sets/championsofkamigawa/KondasBanner.java b/Mage.Sets/src/mage/sets/championsofkamigawa/KondasBanner.java
index 251f4c4d820..14109095917 100644
--- a/Mage.Sets/src/mage/sets/championsofkamigawa/KondasBanner.java
+++ b/Mage.Sets/src/mage/sets/championsofkamigawa/KondasBanner.java
@@ -155,7 +155,7 @@ class KondasBannerColorBoostEffect extends BoostAllEffect {
if (equipment != null && equipment.getAttachedTo() != null) {
Permanent equipedCreature = game.getPermanent(equipment.getAttachedTo());
for (Permanent perm : game.getBattlefield().getActivePermanents(filter, source.getControllerId(), source.getSourceId(), game)) {
- if (equipedCreature.getColor().shares(perm.getColor())) {
+ if (equipedCreature.getColor(game).shares(perm.getColor(game))) {
perm.addPower(power.calculate(game, source, this));
perm.addToughness(toughness.calculate(game, source, this));
diff --git a/Mage.Sets/src/mage/sets/commander2013/RoughTumble.java b/Mage.Sets/src/mage/sets/commander2013/RoughTumble.java
index e281caac892..14ec4d4e8be 100644
--- a/Mage.Sets/src/mage/sets/commander2013/RoughTumble.java
+++ b/Mage.Sets/src/mage/sets/commander2013/RoughTumble.java
@@ -55,20 +55,16 @@ public class RoughTumble extends SplitCard {
super(ownerId, 118, "Rough", "Tumble", Rarity.UNCOMMON, new CardType[]{CardType.SORCERY}, "{1}{R}", "{5}{R}", false);
this.expansionSetCode = "C13";
- this.color.setRed(true);
-
// Rough
// Rough deals 2 damage to each creature without flying.
Effect effect = new DamageAllEffect(2, filterWithoutFlying);
effect.setText("Rough deals 2 damage to each creature without flying");
- getLeftHalfCard().getColor().setRed(true);
getLeftHalfCard().getSpellAbility().addEffect(effect);
// Tumble
// Tumble deals 6 damage to each creature with flying.
effect = new DamageAllEffect(6, filterFlying);
effect.setText("Tumble deals 6 damage to each creature with flying");
- getRightHalfCard().getColor().setRed(true);
getRightHalfCard().getSpellAbility().addEffect(effect);
}
diff --git a/Mage.Sets/src/mage/sets/commander2014/NecromanticSelection.java b/Mage.Sets/src/mage/sets/commander2014/NecromanticSelection.java
index 4877ed2151b..b595331cf91 100644
--- a/Mage.Sets/src/mage/sets/commander2014/NecromanticSelection.java
+++ b/Mage.Sets/src/mage/sets/commander2014/NecromanticSelection.java
@@ -168,7 +168,7 @@ class NecromanticSelectionContinuousEffect extends ContinuousEffectImpl {
break;
case ColorChangingEffects_5:
if (sublayer == SubLayer.NA) {
- creature.getColor().setBlack(true);
+ creature.getColor(game).setBlack(true);
}
break;
}
diff --git a/Mage.Sets/src/mage/sets/conflux/FiligreeFracture.java b/Mage.Sets/src/mage/sets/conflux/FiligreeFracture.java
index d232cccae20..1e6b0bb23a1 100644
--- a/Mage.Sets/src/mage/sets/conflux/FiligreeFracture.java
+++ b/Mage.Sets/src/mage/sets/conflux/FiligreeFracture.java
@@ -89,7 +89,7 @@ class FiligreeFractureEffect extends OneShotEffect {
Player player = game.getPlayer(source.getControllerId());
Permanent permanent = (Permanent) game.getLastKnownInformation(source.getFirstTarget(), Zone.BATTLEFIELD);
if (player != null && permanent != null
- && (permanent.getColor().isBlack() || permanent.getColor().isBlue())) {
+ && (permanent.getColor(game).isBlack() || permanent.getColor(game).isBlue())) {
player.drawCards(1, game);
return true;
}
diff --git a/Mage.Sets/src/mage/sets/conflux/KederektParasite.java b/Mage.Sets/src/mage/sets/conflux/KederektParasite.java
index bbe0731e8be..cf42f9ab4af 100644
--- a/Mage.Sets/src/mage/sets/conflux/KederektParasite.java
+++ b/Mage.Sets/src/mage/sets/conflux/KederektParasite.java
@@ -89,7 +89,7 @@ class KederektParasiteTriggeredAbility extends TriggeredAbilityImpl {
if (event.getType() == GameEvent.EventType.DREW_CARD && game.getOpponents(this.getControllerId()).contains(event.getPlayerId())) {
boolean youControlRedPermanent = false;
for (Permanent permanent : game.getBattlefield().getAllActivePermanents(this.getControllerId())) {
- if (permanent.getColor().isRed()) {
+ if (permanent.getColor(game).isRed()) {
youControlRedPermanent = true;
break;
}
diff --git a/Mage.Sets/src/mage/sets/darksteel/MycosynthLattice.java b/Mage.Sets/src/mage/sets/darksteel/MycosynthLattice.java
index f45b2cc3f64..1cd753fd6d0 100644
--- a/Mage.Sets/src/mage/sets/darksteel/MycosynthLattice.java
+++ b/Mage.Sets/src/mage/sets/darksteel/MycosynthLattice.java
@@ -121,36 +121,36 @@ class EverythingIsColorlessEffect extends ContinuousEffectImpl {
ObjectColor colorless = new ObjectColor();
// permaments
for (Permanent perm : game.getBattlefield().getActivePermanents(source.getControllerId(), game)) {
- perm.getColor().setColor(colorless);
+ perm.getColor(game).setColor(colorless);
}
// spells
for (MageObject object : game.getStack()) {
if (object instanceof Spell) {
- object.getColor().setColor(colorless);
+ object.getColor(game).setColor(colorless);
}
}
// exile
for (Card card : game.getExile().getAllCards(game)) {
- card.getColor().setColor(colorless);
+ game.getState().getCreateCardAttribute(card).getColor().setColor(colorless);
}
// command
for (CommandObject commandObject : game.getState().getCommand()) {
- commandObject.getColor().setColor(colorless);
+ commandObject.getColor(game).setColor(colorless);
}
for (UUID playerId : controller.getInRange()) {
Player player = game.getPlayer(playerId);
if (player != null) {
// hand
for (Card card: player.getHand().getCards(game)) {
- card.getColor().setColor(colorless);
+ game.getState().getCreateCardAttribute(card).getColor().setColor(colorless);
}
// library
for (Card card : player.getLibrary().getCards(game)) {
- card.getColor().setColor(colorless);
+ game.getState().getCreateCardAttribute(card).getColor().setColor(colorless);
}
// graveyard
for (Card card : player.getGraveyard().getCards(game)) {
- card.getColor().setColor(colorless);
+ game.getState().getCreateCardAttribute(card).getColor().setColor(colorless);
}
}
}
diff --git a/Mage.Sets/src/mage/sets/dissension/HideSeek.java b/Mage.Sets/src/mage/sets/dissension/HideSeek.java
index 6d407fea200..ec7a7158069 100644
--- a/Mage.Sets/src/mage/sets/dissension/HideSeek.java
+++ b/Mage.Sets/src/mage/sets/dissension/HideSeek.java
@@ -65,21 +65,13 @@ public class HideSeek extends SplitCard {
super(ownerId, 151, "Hide", "Seek", Rarity.UNCOMMON, new CardType[]{CardType.INSTANT}, "{R}{W}", "{W}{B}", false);
this.expansionSetCode = "DIS";
- this.color.setRed(true);
- this.color.setWhite(true);
- this.color.setBlack(true);
-
// Hide
// Put target artifact or enchantment on the bottom of its owner's library.
- getLeftHalfCard().getColor().setRed(true);
- getLeftHalfCard().getColor().setWhite(true);
getLeftHalfCard().getSpellAbility().addEffect(new PutOnLibraryTargetEffect(false));
getLeftHalfCard().getSpellAbility().addTarget(new TargetPermanent(filter));
// Seek
// Search target opponent's library for a card and exile it. You gain life equal to its converted mana cost. Then that player shuffles his or her library..
- getRightHalfCard().getColor().setWhite(true);
- getRightHalfCard().getColor().setBlack(true);
getRightHalfCard().getSpellAbility().addEffect(new SeekEffect());
getRightHalfCard().getSpellAbility().addTarget(new TargetOpponent());
diff --git a/Mage.Sets/src/mage/sets/dissension/OddsEnds.java b/Mage.Sets/src/mage/sets/dissension/OddsEnds.java
index 761f8a793df..c30478d4cc9 100644
--- a/Mage.Sets/src/mage/sets/dissension/OddsEnds.java
+++ b/Mage.Sets/src/mage/sets/dissension/OddsEnds.java
@@ -65,21 +65,13 @@ public class OddsEnds extends SplitCard {
super(ownerId, 153, "Odds", "Ends", Rarity.RARE, new CardType[]{CardType.INSTANT}, "{U}{R}", "{3}{R}{W}", false);
this.expansionSetCode = "DIS";
- this.color.setBlue(true);
- this.color.setRed(true);
- this.color.setWhite(true);
-
// Odds
// Flip a coin. If it comes up heads, counter target instant or sorcery spell. If it comes up tails, copy that spell and you may choose new targets for the copy.
- getLeftHalfCard().getColor().setBlue(true);
- getLeftHalfCard().getColor().setRed(true);
getLeftHalfCard().getSpellAbility().addEffect(new OddsEffect());
getLeftHalfCard().getSpellAbility().addTarget(new TargetSpell(filter));
// Ends
// Target player sacrifices two attacking creatures.
- getRightHalfCard().getColor().setRed(true);
- getRightHalfCard().getColor().setWhite(true);
getRightHalfCard().getSpellAbility().addEffect(new SacrificeEffect(new FilterAttackingCreature(), 2, "Target player"));
getRightHalfCard().getSpellAbility().addTarget(new TargetPlayer());
diff --git a/Mage.Sets/src/mage/sets/dissension/PillarOfTheParuns.java b/Mage.Sets/src/mage/sets/dissension/PillarOfTheParuns.java
index c1be32d897e..8278800e994 100644
--- a/Mage.Sets/src/mage/sets/dissension/PillarOfTheParuns.java
+++ b/Mage.Sets/src/mage/sets/dissension/PillarOfTheParuns.java
@@ -96,7 +96,7 @@ class MultiColoredSpellCastManaCondition extends ManaCondition implements Condit
public boolean apply(Game game, Ability source) {
if (source instanceof SpellAbility) {
MageObject object = game.getObject(source.getSourceId());
- if (object != null && object.getColor().getColorCount() > 1) {
+ if (object != null && object.getColor(game).getColorCount() > 1) {
return true;
}
}
diff --git a/Mage.Sets/src/mage/sets/dissension/ResearchDevelopment.java b/Mage.Sets/src/mage/sets/dissension/ResearchDevelopment.java
index 6862047730f..353b431a555 100644
--- a/Mage.Sets/src/mage/sets/dissension/ResearchDevelopment.java
+++ b/Mage.Sets/src/mage/sets/dissension/ResearchDevelopment.java
@@ -57,18 +57,10 @@ public class ResearchDevelopment extends SplitCard {
super(ownerId, 155, "Research", "Development", Rarity.RARE, new CardType[]{CardType.INSTANT}, "{G}{U}", "{3}{U}{R}", false);
this.expansionSetCode = "DIS";
- this.color.setGreen(true);
- this.color.setBlue(true);
- this.color.setRed(true);
-
// Choose up to four cards you own from outside the game and shuffle them into your library.
- getLeftHalfCard().getColor().setGreen(true);
- getLeftHalfCard().getColor().setBlue(true);
getLeftHalfCard().getSpellAbility().addEffect(new ResearchEffect());
// Put a 3/1 red Elemental creature token onto the battlefield unless any opponent has you draw a card. Repeat this process two more times.
- getRightHalfCard().getColor().setBlue(true);
- getRightHalfCard().getColor().setRed(true);
getRightHalfCard().getSpellAbility().addEffect(new DevelopmentEffect());
}
diff --git a/Mage.Sets/src/mage/sets/dissension/SupplyDemand.java b/Mage.Sets/src/mage/sets/dissension/SupplyDemand.java
index db0edc63172..8eae6bf7da0 100644
--- a/Mage.Sets/src/mage/sets/dissension/SupplyDemand.java
+++ b/Mage.Sets/src/mage/sets/dissension/SupplyDemand.java
@@ -56,20 +56,12 @@ public class SupplyDemand extends SplitCard {
super(ownerId, 157, "Supply", "Demand", Rarity.UNCOMMON, new CardType[]{CardType.SORCERY}, "{1}{W}{U}", "{X}{G}{W}", false);
this.expansionSetCode = "DIS";
- this.color.setGreen(true);
- this.color.setWhite(true);
- this.color.setBlue(true);
-
// Demand
// Search your library for a multicolored card, reveal it, and put it into your hand. Then shuffle your library.
- getLeftHalfCard().getColor().setBlue(true);
- getLeftHalfCard().getColor().setWhite(true);
getLeftHalfCard().getSpellAbility().addEffect(new SearchLibraryPutInHandEffect(new TargetCardInLibrary(1, filter), true));
// Supply
// Put X 1/1 green Saproling creature tokens onto the battlefield.
- getRightHalfCard().getColor().setWhite(true);
- getRightHalfCard().getColor().setGreen(true);
getRightHalfCard().getSpellAbility().addEffect(new CreateTokenEffect(new SaprolingToken(), new ManacostVariableValue()));
}
diff --git a/Mage.Sets/src/mage/sets/dragonsmaze/AliveWell.java b/Mage.Sets/src/mage/sets/dragonsmaze/AliveWell.java
index e7c5a1be8a6..7c327b0b424 100644
--- a/Mage.Sets/src/mage/sets/dragonsmaze/AliveWell.java
+++ b/Mage.Sets/src/mage/sets/dragonsmaze/AliveWell.java
@@ -50,18 +50,13 @@ public class AliveWell extends SplitCard {
super(ownerId, 121, "Alive", "Well", Rarity.UNCOMMON, new CardType[]{CardType.SORCERY}, "{3}{G}","{W}", true);
this.expansionSetCode = "DGM";
- this.color.setGreen(true);
- this.color.setWhite(true);
-
// Alive
// Put a 3/3 green Centaur creature token onto the battlefield.
- getLeftHalfCard().getColor().setGreen(true);
getLeftHalfCard().getSpellAbility().addEffect(new CreateTokenEffect(new CentaurToken()));
// Well
// You gain 2 life for each creature you control.
- getRightHalfCard().getColor().setWhite(true);
getRightHalfCard().getSpellAbility().addEffect(new WellEffect());
}
diff --git a/Mage.Sets/src/mage/sets/dragonsmaze/ArmedDangerous.java b/Mage.Sets/src/mage/sets/dragonsmaze/ArmedDangerous.java
index b72294c0f8b..9e254100237 100644
--- a/Mage.Sets/src/mage/sets/dragonsmaze/ArmedDangerous.java
+++ b/Mage.Sets/src/mage/sets/dragonsmaze/ArmedDangerous.java
@@ -51,19 +51,14 @@ public class ArmedDangerous extends SplitCard {
super(ownerId, 122, "Armed", "Dangerous", Rarity.UNCOMMON, new CardType[]{CardType.SORCERY}, "{1}{R}", "{3}{G}", true);
this.expansionSetCode = "DGM";
- this.color.setRed(true);
- this.color.setGreen(true);
-
// Armed
// Target creature gets +1/+1 and gains double strike until end of turn.
- getLeftHalfCard().getColor().setRed(true);
getLeftHalfCard().getSpellAbility().addEffect(new BoostTargetEffect(1,1, Duration.EndOfTurn));
getLeftHalfCard().getSpellAbility().addEffect(new GainAbilityTargetEffect(DoubleStrikeAbility.getInstance(), Duration.EndOfTurn));
getLeftHalfCard().getSpellAbility().addTarget(new TargetCreaturePermanent());
// Dangerous
// All creatures able to block target creature this turn do so.
- getRightHalfCard().getColor().setGreen(true);
getRightHalfCard().getSpellAbility().addEffect(new MustBeBlockedByAllTargetEffect(Duration.EndOfTurn));
getRightHalfCard().getSpellAbility().addTarget(new TargetCreaturePermanent());
diff --git a/Mage.Sets/src/mage/sets/dragonsmaze/BeckCall.java b/Mage.Sets/src/mage/sets/dragonsmaze/BeckCall.java
index 5aa0750d09b..ad25ec436b2 100644
--- a/Mage.Sets/src/mage/sets/dragonsmaze/BeckCall.java
+++ b/Mage.Sets/src/mage/sets/dragonsmaze/BeckCall.java
@@ -55,20 +55,12 @@ public class BeckCall extends SplitCard {
super(ownerId, 123, "Beck", "Call", Rarity.RARE, new CardType[]{CardType.SORCERY}, "{G}{U}", "{4}{W}{U}", true);
this.expansionSetCode = "DGM";
- this.color.setWhite(true);
- this.color.setBlue(true);
- this.color.setGreen(true);
-
// Beck
// Whenever a creature enters the battlefield this turn, you may draw a card.
- getLeftHalfCard().getColor().setGreen(true);
- getLeftHalfCard().getColor().setBlue(true);
getLeftHalfCard().getSpellAbility().addEffect(new CreateDelayedTriggeredAbilityEffect(new BeckTriggeredAbility()));
// Call
// Put four 1/1 white Bird creature tokens with flying onto the battlefield.
- getRightHalfCard().getColor().setWhite(true);
- getRightHalfCard().getColor().setBlue(true);
getRightHalfCard().getSpellAbility().addEffect(new CreateTokenEffect(new BirdToken(),4));
}
diff --git a/Mage.Sets/src/mage/sets/dragonsmaze/DownDirty.java b/Mage.Sets/src/mage/sets/dragonsmaze/DownDirty.java
index 8f6e6827ec5..9619feceec8 100644
--- a/Mage.Sets/src/mage/sets/dragonsmaze/DownDirty.java
+++ b/Mage.Sets/src/mage/sets/dragonsmaze/DownDirty.java
@@ -49,18 +49,13 @@ public class DownDirty extends SplitCard {
super(ownerId, 126, "Down", "Dirty", Rarity.UNCOMMON, new CardType[]{CardType.SORCERY}, "{3}{B}", "{2}{G}", true);
this.expansionSetCode = "DGM";
- this.color.setBlack(true);
- this.color.setGreen(true);
-
// Down
// Target player discards two cards.
- getLeftHalfCard().getColor().setBlack(true);
getLeftHalfCard().getSpellAbility().addEffect(new DiscardTargetEffect(2));
getLeftHalfCard().getSpellAbility().addTarget(new TargetPlayer());
// Dirty
// Return target card from your graveyard to your hand.
- getRightHalfCard().getColor().setGreen(true);
getRightHalfCard().getSpellAbility().addEffect(new ReturnFromGraveyardToHandTargetEffect());
getRightHalfCard().getSpellAbility().addTarget(new TargetCardInYourGraveyard());
diff --git a/Mage.Sets/src/mage/sets/dragonsmaze/FarAway.java b/Mage.Sets/src/mage/sets/dragonsmaze/FarAway.java
index a35e569b005..1deba123e03 100644
--- a/Mage.Sets/src/mage/sets/dragonsmaze/FarAway.java
+++ b/Mage.Sets/src/mage/sets/dragonsmaze/FarAway.java
@@ -50,18 +50,13 @@ public class FarAway extends SplitCard {
super(ownerId, 127, "Far", "Away", Rarity.UNCOMMON, new CardType[]{CardType.INSTANT}, "{1}{U}", "{2}{B}", true);
this.expansionSetCode = "DGM";
- this.color.setBlue(true);
- this.color.setBlack(true);
-
// Far
// Return target creature to its owner's hand.
- getLeftHalfCard().getColor().setBlue(true);
getLeftHalfCard().getSpellAbility().addEffect(new ReturnToHandTargetEffect());
getLeftHalfCard().getSpellAbility().addTarget(new TargetCreaturePermanent());
// Away
// Target player sacrifices a creature.
- getRightHalfCard().getColor().setBlack(true);
getRightHalfCard().getSpellAbility().addEffect(new SacrificeEffect(new FilterCreaturePermanent(), 1, "Target player"));
getRightHalfCard().getSpellAbility().addTarget(new TargetPlayer());
diff --git a/Mage.Sets/src/mage/sets/dragonsmaze/FleshBlood.java b/Mage.Sets/src/mage/sets/dragonsmaze/FleshBlood.java
index daf7132e91e..547266d6b68 100644
--- a/Mage.Sets/src/mage/sets/dragonsmaze/FleshBlood.java
+++ b/Mage.Sets/src/mage/sets/dragonsmaze/FleshBlood.java
@@ -60,14 +60,8 @@ public class FleshBlood extends SplitCard {
super(ownerId, 128, "Flesh", "Blood", Rarity.RARE, new CardType[]{CardType.SORCERY}, "{3}{B}{G}", "{R}{G}",true);
this.expansionSetCode = "DGM";
- this.color.setBlack(true);
- this.color.setGreen(true);
- this.color.setRed(true);
-
// Flesh
// Exile target creature card from a graveyard. Put X +1/+1 counters on target creature, where X is the power of the card you exiled.
- getLeftHalfCard().getColor().setBlack(true);
- getLeftHalfCard().getColor().setGreen(true);
Target target = new TargetCardInGraveyard(new FilterCreatureCard());
getLeftHalfCard().getSpellAbility().addTarget(target);
getLeftHalfCard().getSpellAbility().addTarget(new TargetCreaturePermanent());
@@ -75,8 +69,6 @@ public class FleshBlood extends SplitCard {
// Blood
// Target creature you control deals damage equal to its power to target creature or player.
- getRightHalfCard().getColor().setRed(true);
- getRightHalfCard().getColor().setGreen(true);
getRightHalfCard().getSpellAbility().addTarget(new TargetControlledCreaturePermanent());
getRightHalfCard().getSpellAbility().addTarget(new TargetCreatureOrPlayer());
getRightHalfCard().getSpellAbility().addEffect(new BloodEffect());
diff --git a/Mage.Sets/src/mage/sets/dragonsmaze/GiveTake.java b/Mage.Sets/src/mage/sets/dragonsmaze/GiveTake.java
index ab375aaf048..9a9ac0ba54b 100644
--- a/Mage.Sets/src/mage/sets/dragonsmaze/GiveTake.java
+++ b/Mage.Sets/src/mage/sets/dragonsmaze/GiveTake.java
@@ -52,20 +52,15 @@ public class GiveTake extends SplitCard {
super(ownerId, 129, "Give", "Take", Rarity.UNCOMMON, new CardType[]{CardType.SORCERY}, "{2}{G}","{2}{U}", true);
this.expansionSetCode = "DGM";
- this.color.setGreen(true);
- this.color.setBlue(true);
-
// Give
// Put three +1/+1 counters on target creature.
getLeftHalfCard().getSpellAbility().addEffect(new AddCountersTargetEffect(CounterType.P1P1.createInstance(3)));
getLeftHalfCard().getSpellAbility().addTarget(new TargetCreaturePermanent());
- getLeftHalfCard().getColor().setGreen(true);
// Take
// Remove all +1/+1 counters from target creature you control. Draw that many cards.
getRightHalfCard().getSpellAbility().addEffect(new TakeEffect());
getRightHalfCard().getSpellAbility().addTarget(new TargetControlledCreaturePermanent());
- getLeftHalfCard().getColor().setBlue(true);
}
public GiveTake(final GiveTake card) {
diff --git a/Mage.Sets/src/mage/sets/dragonsmaze/ProfitLoss.java b/Mage.Sets/src/mage/sets/dragonsmaze/ProfitLoss.java
index afb564d344c..c5b6d8b250a 100644
--- a/Mage.Sets/src/mage/sets/dragonsmaze/ProfitLoss.java
+++ b/Mage.Sets/src/mage/sets/dragonsmaze/ProfitLoss.java
@@ -57,17 +57,12 @@ public class ProfitLoss extends SplitCard {
super(ownerId, 130, "Profit", "Loss", Rarity.UNCOMMON, new CardType[]{CardType.INSTANT}, "{1}{W}", "{2}{B}", true);
this.expansionSetCode = "DGM";
- this.color.setWhite(true);
- this.color.setBlack(true);
-
// Profit
// Creatures you control get +1/+1 until end of turn.
- getLeftHalfCard().getColor().setBlue(true);
getLeftHalfCard().getSpellAbility().addEffect(new BoostControlledEffect(1,1, Duration.EndOfTurn, new FilterCreaturePermanent()));
// Loss
// Creatures your opponents control get -1/-1 until end of turn.
- getRightHalfCard().getColor().setBlack(true);
getRightHalfCard().getSpellAbility().addEffect(new BoostAllEffect(-1, -1, Duration.EndOfTurn, filter, false));
}
diff --git a/Mage.Sets/src/mage/sets/dragonsmaze/ProtectServe.java b/Mage.Sets/src/mage/sets/dragonsmaze/ProtectServe.java
index 78264e782c5..56db78c159b 100644
--- a/Mage.Sets/src/mage/sets/dragonsmaze/ProtectServe.java
+++ b/Mage.Sets/src/mage/sets/dragonsmaze/ProtectServe.java
@@ -48,18 +48,13 @@ public class ProtectServe extends SplitCard {
super(ownerId, 131, "Protect", "Serve", Rarity.UNCOMMON, new CardType[]{CardType.INSTANT}, "{2}{W}", "{1}{U}", true);
this.expansionSetCode = "DGM";
- this.color.setWhite(true);
- this.color.setBlue(true);
-
// Protect
// Target creature gets +2/+4 until end of turn.
- getLeftHalfCard().getColor().setWhite(true);
getLeftHalfCard().getSpellAbility().addEffect(new BoostTargetEffect(2,4, Duration.EndOfTurn));
getLeftHalfCard().getSpellAbility().addTarget(new TargetCreaturePermanent());
// Serve
// Target creature gets -6/-0 until end of turn.
- getRightHalfCard().getColor().setBlue(true);
getRightHalfCard().getSpellAbility().addEffect(new BoostTargetEffect(-6,0, Duration.EndOfTurn));
getRightHalfCard().getSpellAbility().addTarget(new TargetCreaturePermanent());
diff --git a/Mage.Sets/src/mage/sets/dragonsmaze/ReadyWilling.java b/Mage.Sets/src/mage/sets/dragonsmaze/ReadyWilling.java
index 727fdcdb378..d67e095eb89 100644
--- a/Mage.Sets/src/mage/sets/dragonsmaze/ReadyWilling.java
+++ b/Mage.Sets/src/mage/sets/dragonsmaze/ReadyWilling.java
@@ -53,14 +53,8 @@ public class ReadyWilling extends SplitCard {
super(ownerId, 132, "Ready", "Willing", Rarity.RARE, new CardType[]{CardType.INSTANT}, "{1}{G}{W}", "{1}{W}{B}", true);
this.expansionSetCode = "DGM";
- this.color.setGreen(true);
- this.color.setWhite(true);
- this.color.setBlack(true);
-
// Ready
// Creatures you control are indestructible this turn. Untap each creature you control.
- getLeftHalfCard().getColor().setGreen(true);
- getLeftHalfCard().getColor().setWhite(true);
Effect effect = new GainAbilityAllEffect(IndestructibleAbility.getInstance(), Duration.EndOfTurn, new FilterControlledCreaturePermanent("Creatures you controll"), false);
effect.setText("Creatures you control are indestructible this turn");
getLeftHalfCard().getSpellAbility().addEffect(effect);
@@ -68,8 +62,6 @@ public class ReadyWilling extends SplitCard {
// Willing
// Creatures you control gain deathtouch and lifelink until end of turn.
- getRightHalfCard().getColor().setWhite(true);
- getRightHalfCard().getColor().setBlack(true);
getRightHalfCard().getSpellAbility().addEffect(new GainAbilityControlledEffect(DeathtouchAbility.getInstance(), Duration.EndOfTurn, new FilterCreaturePermanent("Creatures")) );
effect = new GainAbilityControlledEffect(LifelinkAbility.getInstance(), Duration.EndOfTurn, new FilterCreaturePermanent("Creatures"));
effect.setText("Creatures you control gain lifelink until end of turn");
diff --git a/Mage.Sets/src/mage/sets/dragonsmaze/ToilTrouble.java b/Mage.Sets/src/mage/sets/dragonsmaze/ToilTrouble.java
index e9ada699a40..b6b39e004bb 100644
--- a/Mage.Sets/src/mage/sets/dragonsmaze/ToilTrouble.java
+++ b/Mage.Sets/src/mage/sets/dragonsmaze/ToilTrouble.java
@@ -54,19 +54,14 @@ public class ToilTrouble extends SplitCard {
super(ownerId, 133, "Toil", "Trouble", Rarity.UNCOMMON, new CardType[]{CardType.SORCERY}, "{2}{B}", "{2}{R}",true);
this.expansionSetCode = "DGM";
- this.color.setBlack(true);
- this.color.setRed(true);
-
// Toil
// Target player draws two cards and loses 2 life.
- getLeftHalfCard().getColor().setBlack(true);
getLeftHalfCard().getSpellAbility().addTarget(new TargetPlayer());
getLeftHalfCard().getSpellAbility().addEffect(new DrawCardTargetEffect(2));
getLeftHalfCard().getSpellAbility().addEffect(new LoseLifeTargetEffect(2));
// Trouble
// Trouble deals damage to target player equal to the number of cards in that player's hand.
- getRightHalfCard().getColor().setRed(true);
Effect effect = new DamageTargetEffect(new TargetPlayerCardsInHandCount());
effect.setText("Trouble deals damage to target player equal to the number of cards in that player's hand");
getRightHalfCard().getSpellAbility().addEffect(effect);
diff --git a/Mage.Sets/src/mage/sets/dragonsmaze/TurnBurn.java b/Mage.Sets/src/mage/sets/dragonsmaze/TurnBurn.java
index 01ea29ed0ab..db568c91fc8 100644
--- a/Mage.Sets/src/mage/sets/dragonsmaze/TurnBurn.java
+++ b/Mage.Sets/src/mage/sets/dragonsmaze/TurnBurn.java
@@ -29,11 +29,9 @@ package mage.sets.dragonsmaze;
import java.util.UUID;
import mage.MageInt;
-import mage.ObjectColor;
import mage.abilities.effects.Effect;
import mage.abilities.effects.common.DamageTargetEffect;
import mage.abilities.effects.common.continuous.BecomesCreatureTargetEffect;
-import mage.abilities.effects.common.continuous.LoseAllAbilitiesTargetEffect;
import mage.cards.SplitCard;
import mage.constants.CardType;
import mage.constants.Duration;
@@ -52,12 +50,8 @@ public class TurnBurn extends SplitCard {
super(ownerId, 134, "Turn", "Burn", Rarity.UNCOMMON, new CardType[]{CardType.INSTANT}, "{2}{U}", "{1}{R}", true);
this.expansionSetCode = "DGM";
- this.color.setBlue(true);
- this.color.setRed(true);
-
// Turn
// Until end of turn, target creature loses all abilities and becomes a red Weird with base power and toughness 0/1.
- getLeftHalfCard().getColor().setBlue(true);
Effect effect = new BecomesCreatureTargetEffect(new WeirdToken(), true, false, Duration.EndOfTurn);
effect.setText("Until end of turn, target creature loses all abilities and becomes a red Weird with base power and toughness 0/1");
getLeftHalfCard().getSpellAbility().addEffect(effect);
@@ -65,7 +59,6 @@ public class TurnBurn extends SplitCard {
// Burn
// Burn deals 2 damage to target creature or player.
- getRightHalfCard().getColor().setRed(true);
effect = new DamageTargetEffect(2);
effect.setText("Burn deals 2 damage to target creature or player");
getRightHalfCard().getSpellAbility().addEffect(effect);
diff --git a/Mage.Sets/src/mage/sets/dragonsmaze/WearTear.java b/Mage.Sets/src/mage/sets/dragonsmaze/WearTear.java
index b9f6babda76..7b68dd26a31 100644
--- a/Mage.Sets/src/mage/sets/dragonsmaze/WearTear.java
+++ b/Mage.Sets/src/mage/sets/dragonsmaze/WearTear.java
@@ -47,19 +47,14 @@ public class WearTear extends SplitCard {
super(ownerId, 135, "Wear", "Tear", Rarity.UNCOMMON, new CardType[]{CardType.INSTANT}, "{1}{R}", "{W}", true);
this.expansionSetCode = "DGM";
- this.color.setRed(true);
- this.color.setWhite(true);
-
// Wear
// Destroy target artifact.
- getLeftHalfCard().getColor().setRed(true);
getLeftHalfCard().getSpellAbility().addEffect(new DestroyTargetEffect());
Target target = new TargetArtifactPermanent();
getLeftHalfCard().getSpellAbility().addTarget(target);
// Tear
// Destroy target enchantment.
- getRightHalfCard().getColor().setWhite(true);
getRightHalfCard().getSpellAbility().addEffect(new DestroyTargetEffect());
target = new TargetPermanent(new FilterEnchantment());
getRightHalfCard().getSpellAbility().addTarget(target);
diff --git a/Mage.Sets/src/mage/sets/dragonsoftarkir/DisplayOfDominance.java b/Mage.Sets/src/mage/sets/dragonsoftarkir/DisplayOfDominance.java
index 04b2d05bc3b..43d9ebeb73a 100644
--- a/Mage.Sets/src/mage/sets/dragonsoftarkir/DisplayOfDominance.java
+++ b/Mage.Sets/src/mage/sets/dragonsoftarkir/DisplayOfDominance.java
@@ -124,7 +124,7 @@ class DisplayOfDominanceEffect extends ContinuousRuleModifyingEffectImpl {
MageObject mageObject = game.getObject(event.getSourceId());
if (game.getPlayer(ability.getControllerId()).hasOpponent(event.getPlayerId(), game) &&
mageObject instanceof Spell &&
- (mageObject.getColor().isBlack() || mageObject.getColor().isBlue())) {
+ (mageObject.getColor(game).isBlack() || mageObject.getColor(game).isBlue())) {
Permanent permanent = game.getPermanent(event.getTargetId());
return permanent != null && permanent.getControllerId().equals(ability.getControllerId());
}
diff --git a/Mage.Sets/src/mage/sets/eventide/BloomTender.java b/Mage.Sets/src/mage/sets/eventide/BloomTender.java
index da2614e5d88..f4544ddc232 100644
--- a/Mage.Sets/src/mage/sets/eventide/BloomTender.java
+++ b/Mage.Sets/src/mage/sets/eventide/BloomTender.java
@@ -106,19 +106,19 @@ class BloomTenderEffect extends ManaEffect {
if (controller != null) {
Mana mana = new Mana();
for (Permanent permanent : game.getBattlefield().getAllActivePermanents(controller.getId())) {
- if (mana.getBlack() == 0 && permanent.getColor().isBlack()) {
+ if (mana.getBlack() == 0 && permanent.getColor(game).isBlack()) {
mana.addBlack();
}
- if (mana.getBlue() == 0 && permanent.getColor().isBlue()) {
+ if (mana.getBlue() == 0 && permanent.getColor(game).isBlue()) {
mana.addBlue();
}
- if (mana.getRed() == 0 && permanent.getColor().isRed()) {
+ if (mana.getRed() == 0 && permanent.getColor(game).isRed()) {
mana.addRed();
}
- if (mana.getGreen() == 0 && permanent.getColor().isGreen()) {
+ if (mana.getGreen() == 0 && permanent.getColor(game).isGreen()) {
mana.addGreen();
}
- if (mana.getWhite() == 0 && permanent.getColor().isWhite()) {
+ if (mana.getWhite() == 0 && permanent.getColor(game).isWhite()) {
mana.addWhite();
}
}
diff --git a/Mage.Sets/src/mage/sets/eventide/IndigoFaerie.java b/Mage.Sets/src/mage/sets/eventide/IndigoFaerie.java
index e7b6df7e5c6..ba3a0ef16ad 100644
--- a/Mage.Sets/src/mage/sets/eventide/IndigoFaerie.java
+++ b/Mage.Sets/src/mage/sets/eventide/IndigoFaerie.java
@@ -101,7 +101,7 @@ class BecomesBlueTargetEffect extends ContinuousEffectImpl {
public boolean apply(Game game, Ability source) {
Permanent permanent = game.getPermanent(source.getFirstTarget());
if (permanent != null) {
- permanent.getColor().setBlue(true);
+ permanent.getColor(game).setBlue(true);
return true;
}
return false;
diff --git a/Mage.Sets/src/mage/sets/fifthedition/Hydroblast.java b/Mage.Sets/src/mage/sets/fifthedition/Hydroblast.java
index fbc117f5c72..00e1a79ae3d 100644
--- a/Mage.Sets/src/mage/sets/fifthedition/Hydroblast.java
+++ b/Mage.Sets/src/mage/sets/fifthedition/Hydroblast.java
@@ -89,7 +89,7 @@ class HydroblastCounterEffect extends OneShotEffect {
@Override
public boolean apply(Game game, Ability source) {
- if (game.getStack().getSpell(source.getFirstTarget()).getColor().isRed()) {
+ if (game.getStack().getSpell(source.getFirstTarget()).getColor(game).isRed()) {
game.getStack().counter(source.getFirstTarget(), source.getSourceId(), game);
}
return true;
@@ -119,7 +119,7 @@ class HydroblastDestroyEffect extends OneShotEffect {
@Override
public boolean apply(Game game, Ability source) {
Permanent permanent = game.getPermanent(source.getTargets().getFirstTarget());
- if (permanent != null && permanent.getColor().isRed()) {
+ if (permanent != null && permanent.getColor(game).isRed()) {
permanent.destroy(source.getSourceId(), game, false);
}
return true;
diff --git a/Mage.Sets/src/mage/sets/fifthedition/Justice.java b/Mage.Sets/src/mage/sets/fifthedition/Justice.java
index ff880f4384c..ffa932141df 100644
--- a/Mage.Sets/src/mage/sets/fifthedition/Justice.java
+++ b/Mage.Sets/src/mage/sets/fifthedition/Justice.java
@@ -95,7 +95,7 @@ class JusticeTriggeredAbility extends TriggeredAbilityImpl {
|| event.getType() == GameEvent.EventType.DAMAGED_PLAYER
|| event.getType() == GameEvent.EventType.DAMAGED_PLANESWALKER) {
MageObject sourceObject = game.getObject(event.getSourceId());
- if (sourceObject.getColor().isRed()) {
+ if (sourceObject.getColor(game).isRed()) {
if (sourceObject instanceof Permanent && sourceObject.getCardType().contains(CardType.CREATURE)
|| sourceObject instanceof Spell) {
this.getEffects().get(0).setValue("damageAmount", event.getAmount());
diff --git a/Mage.Sets/src/mage/sets/futuresight/DryadArbor.java b/Mage.Sets/src/mage/sets/futuresight/DryadArbor.java
index 19da16a3ccf..9de739559ab 100644
--- a/Mage.Sets/src/mage/sets/futuresight/DryadArbor.java
+++ b/Mage.Sets/src/mage/sets/futuresight/DryadArbor.java
@@ -49,7 +49,7 @@ public class DryadArbor extends CardImpl {
this.power = new MageInt(1);
this.toughness = new MageInt(1);
- this.getColor().setGreen(true);
+ this.color.setGreen(true);
// (Dryad Arbor isn't a spell, it's affected by summoning sickness, and it has "{tap}: Add {G} to your mana pool.")
this.addAbility(new GreenManaAbility());
diff --git a/Mage.Sets/src/mage/sets/futuresight/GlitteringWish.java b/Mage.Sets/src/mage/sets/futuresight/GlitteringWish.java
index cff98bf319b..3f4ea5a174f 100644
--- a/Mage.Sets/src/mage/sets/futuresight/GlitteringWish.java
+++ b/Mage.Sets/src/mage/sets/futuresight/GlitteringWish.java
@@ -82,7 +82,7 @@ class GlitteringWishEffect extends OneShotEffect {
@Override
public boolean apply(MageObject input, Game game) {
- return input.getColor().isMulticolored();
+ return input.getColor(game).isMulticolored();
}
@Override
diff --git a/Mage.Sets/src/mage/sets/gatecrash/LazavDimirMastermind.java b/Mage.Sets/src/mage/sets/gatecrash/LazavDimirMastermind.java
index e795b43c9ef..b3172590881 100644
--- a/Mage.Sets/src/mage/sets/gatecrash/LazavDimirMastermind.java
+++ b/Mage.Sets/src/mage/sets/gatecrash/LazavDimirMastermind.java
@@ -120,7 +120,7 @@ class LazavDimirEffect extends ContinuousEffectImpl {
}
permanent.getPower().setValue(cardToCopy.getPower().getValue());
permanent.getToughness().setValue(cardToCopy.getToughness().getValue());
- permanent.getColor().setColor(cardToCopy.getColor());
+ permanent.getColor(game).setColor(cardToCopy.getColor(game));
permanent.getManaCost().clear();
permanent.getManaCost().add(cardToCopy.getManaCost());
permanent.getCardType().clear();
diff --git a/Mage.Sets/src/mage/sets/iceage/Pyroblast.java b/Mage.Sets/src/mage/sets/iceage/Pyroblast.java
index 536577b0297..04784cb21bf 100644
--- a/Mage.Sets/src/mage/sets/iceage/Pyroblast.java
+++ b/Mage.Sets/src/mage/sets/iceage/Pyroblast.java
@@ -89,7 +89,7 @@ class PyroblastCounterTargetEffect extends OneShotEffect {
@Override
public boolean apply(Game game, Ability source) {
- if(game.getStack().getSpell(source.getFirstTarget()).getColor().isBlue()){
+ if(game.getStack().getSpell(source.getFirstTarget()).getColor(game).isBlue()){
game.getStack().counter(source.getFirstTarget(), source.getSourceId(), game);
}
return true;
@@ -122,7 +122,7 @@ class DestroyTargetEffect extends OneShotEffect {
@Override
public boolean apply(Game game, Ability source) {
Permanent permanent = game.getPermanent(source.getTargets().getFirstTarget());
- if (permanent != null && permanent.getColor().isBlue()) {
+ if (permanent != null && permanent.getColor(game).isBlue()) {
permanent.destroy(source.getSourceId(), game, false);
}
return true;
diff --git a/Mage.Sets/src/mage/sets/innistrad/EssenceOfTheWild.java b/Mage.Sets/src/mage/sets/innistrad/EssenceOfTheWild.java
index 90844048974..657f77a94c3 100644
--- a/Mage.Sets/src/mage/sets/innistrad/EssenceOfTheWild.java
+++ b/Mage.Sets/src/mage/sets/innistrad/EssenceOfTheWild.java
@@ -137,7 +137,7 @@ class EssenceOfTheWildCopyEffect extends ContinuousEffectImpl {
Permanent permanent = game.getPermanent(targetId);
if (permanent != null) {
permanent.setName(essence.getName());
- permanent.getColor().setColor(essence.getColor());
+ permanent.getColor(game).setColor(essence.getColor(game));
permanent.getManaCost().clear();
permanent.getManaCost().add(essence.getManaCost());
permanent.getCardType().clear();
diff --git a/Mage.Sets/src/mage/sets/innistrad/GrimoireOfTheDead.java b/Mage.Sets/src/mage/sets/innistrad/GrimoireOfTheDead.java
index 1e986905fd4..84e2bdea4ef 100644
--- a/Mage.Sets/src/mage/sets/innistrad/GrimoireOfTheDead.java
+++ b/Mage.Sets/src/mage/sets/innistrad/GrimoireOfTheDead.java
@@ -146,7 +146,7 @@ class GrimoireOfTheDeadEffect2 extends ContinuousEffectImpl {
switch (layer) {
case ColorChangingEffects_5:
if (sublayer == SubLayer.NA) {
- permanent.getColor().setBlack(true);
+ permanent.getColor(game).setBlack(true);
}
break;
case TypeChangingEffects_4:
diff --git a/Mage.Sets/src/mage/sets/invasion/AssaultBattery.java b/Mage.Sets/src/mage/sets/invasion/AssaultBattery.java
index b658ba52cc7..7eb110ec646 100644
--- a/Mage.Sets/src/mage/sets/invasion/AssaultBattery.java
+++ b/Mage.Sets/src/mage/sets/invasion/AssaultBattery.java
@@ -50,12 +50,8 @@ public class AssaultBattery extends SplitCard {
super(ownerId, 295, "Assault", "Battery", Rarity.UNCOMMON, new CardType[]{CardType.SORCERY}, "{R}", "{3}{G}", false);
this.expansionSetCode = "INV";
- this.color.setRed(true);
- this.color.setGreen(true);
-
// Assault
// Assault deals 2 damage to target creature or player.
- getLeftHalfCard().getColor().setRed(true);
Effect effect = new DamageTargetEffect(2);
effect.setText("Assault deals 2 damage to target creature or player");
getLeftHalfCard().getSpellAbility().addEffect(effect);
@@ -63,7 +59,6 @@ public class AssaultBattery extends SplitCard {
// Battery
// Put a 3/3 green Elephant creature token onto the battlefield.
- getRightHalfCard().getColor().setGreen(true);
getRightHalfCard().getSpellAbility().addEffect(new CreateTokenEffect(new ElephantToken()));
}
diff --git a/Mage.Sets/src/mage/sets/journeyintonyx/HallOfTriumph.java b/Mage.Sets/src/mage/sets/journeyintonyx/HallOfTriumph.java
index 9b93ba4a784..8e4ad8a781f 100644
--- a/Mage.Sets/src/mage/sets/journeyintonyx/HallOfTriumph.java
+++ b/Mage.Sets/src/mage/sets/journeyintonyx/HallOfTriumph.java
@@ -138,7 +138,7 @@ class HallOfTriumphBoostControlledEffect extends ContinuousEffectImpl {
ObjectColor color = (ObjectColor) game.getState().getValue(source.getSourceId() + "_color");
if (color != null) {
for (Permanent perm: game.getBattlefield().getAllActivePermanents(filter, source.getControllerId(), game)) {
- if (perm.getColor().shares(color)) {
+ if (perm.getColor(game).shares(color)) {
perm.addPower(1);
perm.addToughness(1);
}
diff --git a/Mage.Sets/src/mage/sets/khansoftarkir/GhostfireBlade.java b/Mage.Sets/src/mage/sets/khansoftarkir/GhostfireBlade.java
index 9d62871250a..2b01c9e92ac 100644
--- a/Mage.Sets/src/mage/sets/khansoftarkir/GhostfireBlade.java
+++ b/Mage.Sets/src/mage/sets/khansoftarkir/GhostfireBlade.java
@@ -67,7 +67,7 @@ public class GhostfireBlade extends CardImpl {
public void adjustCosts(Ability ability, Game game) {
if (ability instanceof EquipAbility) {
Permanent targetCreature = game.getPermanent(ability.getTargets().getFirstTarget());
- if (targetCreature != null && targetCreature.getColor().isColorless()) {
+ if (targetCreature != null && targetCreature.getColor(game).isColorless()) {
CardUtil.reduceCost(ability, 2);
}
}
diff --git a/Mage.Sets/src/mage/sets/khansoftarkir/SarkhanTheDragonspeaker.java b/Mage.Sets/src/mage/sets/khansoftarkir/SarkhanTheDragonspeaker.java
index f8aea6b73bc..cb84a4e3e85 100644
--- a/Mage.Sets/src/mage/sets/khansoftarkir/SarkhanTheDragonspeaker.java
+++ b/Mage.Sets/src/mage/sets/khansoftarkir/SarkhanTheDragonspeaker.java
@@ -135,7 +135,7 @@ class SarkhanTheDragonspeakerEffect extends ContinuousEffectImpl {
}
break;
case ColorChangingEffects_5:
- permanent.getColor().setColor(ObjectColor.RED);
+ permanent.getColor(game).setColor(ObjectColor.RED);
break;
case AbilityAddingRemovingEffects_6:
if (sublayer == SubLayer.NA) {
diff --git a/Mage.Sets/src/mage/sets/legends/Abomination.java b/Mage.Sets/src/mage/sets/legends/Abomination.java
index 8ccb34a1237..0c33a7c7818 100644
--- a/Mage.Sets/src/mage/sets/legends/Abomination.java
+++ b/Mage.Sets/src/mage/sets/legends/Abomination.java
@@ -95,7 +95,7 @@ class AbominationTriggeredAbility extends TriggeredAbilityImpl {
Permanent blocked = game.getPermanent(event.getTargetId());
Permanent abomination = game.getPermanent(sourceId);
if (blocker != null && blocker != abomination
- && blocker.getColor().isWhite()
+ && blocker.getColor(game).isWhite()
&& blocked == abomination) {
for (Effect effect : this.getEffects()) {
effect.setTargetPointer(new FixedTarget(event.getSourceId()));
@@ -103,14 +103,14 @@ class AbominationTriggeredAbility extends TriggeredAbilityImpl {
}
}
if (blocker != null && blocker == abomination
- && game.getPermanent(event.getTargetId()).getColor().isWhite()) {
+ && game.getPermanent(event.getTargetId()).getColor(game).isWhite()) {
for (Effect effect : this.getEffects()) {
effect.setTargetPointer(new FixedTarget(event.getTargetId()));
return true;
}
}
if (blocker != null && blocker != abomination
- && blocker.getColor().isGreen()
+ && blocker.getColor(game).isGreen()
&& blocked == abomination) {
for (Effect effect : this.getEffects()) {
effect.setTargetPointer(new FixedTarget(event.getSourceId()));
@@ -118,7 +118,7 @@ class AbominationTriggeredAbility extends TriggeredAbilityImpl {
}
}
if (blocker != null && blocker == abomination
- && game.getPermanent(event.getTargetId()).getColor().isGreen()) {
+ && game.getPermanent(event.getTargetId()).getColor(game).isGreen()) {
for (Effect effect : this.getEffects()) {
effect.setTargetPointer(new FixedTarget(event.getTargetId()));
return true;
diff --git a/Mage.Sets/src/mage/sets/limitedalpha/CrystalRod.java b/Mage.Sets/src/mage/sets/limitedalpha/CrystalRod.java
index fb43ebc33d1..3b0b24aff4a 100644
--- a/Mage.Sets/src/mage/sets/limitedalpha/CrystalRod.java
+++ b/Mage.Sets/src/mage/sets/limitedalpha/CrystalRod.java
@@ -86,7 +86,7 @@ class CrystalRodAbility extends TriggeredAbilityImpl {
public boolean checkTrigger(GameEvent event, Game game) {
if (event.getType() == GameEvent.EventType.SPELL_CAST) {
Spell spell = game.getStack().getSpell(event.getTargetId());
- if (spell != null && spell.getColor().contains(ObjectColor.BLUE)) {
+ if (spell != null && spell.getColor(game).contains(ObjectColor.BLUE)) {
return true;
}
}
diff --git a/Mage.Sets/src/mage/sets/limitedalpha/IronStar.java b/Mage.Sets/src/mage/sets/limitedalpha/IronStar.java
index 24c38dacdff..0ff69ced1f0 100644
--- a/Mage.Sets/src/mage/sets/limitedalpha/IronStar.java
+++ b/Mage.Sets/src/mage/sets/limitedalpha/IronStar.java
@@ -86,7 +86,7 @@ class IronStarAbility extends TriggeredAbilityImpl {
public boolean checkTrigger(GameEvent event, Game game) {
if (event.getType() == GameEvent.EventType.SPELL_CAST) {
Spell spell = game.getStack().getSpell(event.getTargetId());
- if (spell != null && spell.getColor().contains(ObjectColor.RED)) {
+ if (spell != null && spell.getColor(game).contains(ObjectColor.RED)) {
return true;
}
}
diff --git a/Mage.Sets/src/mage/sets/limitedalpha/IvoryCup.java b/Mage.Sets/src/mage/sets/limitedalpha/IvoryCup.java
index 03ce902aa2e..cfde122dc89 100644
--- a/Mage.Sets/src/mage/sets/limitedalpha/IvoryCup.java
+++ b/Mage.Sets/src/mage/sets/limitedalpha/IvoryCup.java
@@ -85,7 +85,7 @@ class IvoryCupAbility extends TriggeredAbilityImpl {
public boolean checkTrigger(GameEvent event, Game game) {
if (event.getType() == GameEvent.EventType.SPELL_CAST) {
Spell spell = game.getStack().getSpell(event.getTargetId());
- if (spell != null && spell.getColor().contains(ObjectColor.WHITE)) {
+ if (spell != null && spell.getColor(game).contains(ObjectColor.WHITE)) {
return true;
}
}
diff --git a/Mage.Sets/src/mage/sets/limitedalpha/ThroneOfBone.java b/Mage.Sets/src/mage/sets/limitedalpha/ThroneOfBone.java
index 57cb3044207..529bd128f8d 100644
--- a/Mage.Sets/src/mage/sets/limitedalpha/ThroneOfBone.java
+++ b/Mage.Sets/src/mage/sets/limitedalpha/ThroneOfBone.java
@@ -86,7 +86,7 @@ class ThroneOfBoneAbility extends TriggeredAbilityImpl {
public boolean checkTrigger(GameEvent event, Game game) {
if (event.getType() == GameEvent.EventType.SPELL_CAST) {
Spell spell = game.getStack().getSpell(event.getTargetId());
- if (spell != null && spell.getColor().contains(ObjectColor.BLACK)) {
+ if (spell != null && spell.getColor(game).contains(ObjectColor.BLACK)) {
return true;
}
}
diff --git a/Mage.Sets/src/mage/sets/limitedalpha/WoodenSphere.java b/Mage.Sets/src/mage/sets/limitedalpha/WoodenSphere.java
index 54c93977a9c..f342a150cc6 100644
--- a/Mage.Sets/src/mage/sets/limitedalpha/WoodenSphere.java
+++ b/Mage.Sets/src/mage/sets/limitedalpha/WoodenSphere.java
@@ -86,7 +86,7 @@ class WoodenSphereAbility extends TriggeredAbilityImpl {
public boolean checkTrigger(GameEvent event, Game game) {
if (event.getType() == GameEvent.EventType.SPELL_CAST) {
Spell spell = game.getStack().getSpell(event.getTargetId());
- if (spell != null && spell.getColor().contains(ObjectColor.GREEN)) {
+ if (spell != null && spell.getColor(game).contains(ObjectColor.GREEN)) {
return true;
}
}
diff --git a/Mage.Sets/src/mage/sets/limitedbeta/Fork.java b/Mage.Sets/src/mage/sets/limitedbeta/Fork.java
index 4db929c4711..534f9d774c7 100644
--- a/Mage.Sets/src/mage/sets/limitedbeta/Fork.java
+++ b/Mage.Sets/src/mage/sets/limitedbeta/Fork.java
@@ -93,7 +93,7 @@ class ForkEffect extends OneShotEffect {
Spell spell = game.getStack().getSpell(targetPointer.getFirst(game, source));
if (spell != null) {
Spell copy = spell.copySpell();
- copy.getColor().setRed(true);
+ copy.getColor(game).setRed(true);
copy.setControllerId(controller.getId());
copy.setCopiedSpell(true);
game.getStack().push(copy);
diff --git a/Mage.Sets/src/mage/sets/magic2010/DreadWarlock.java b/Mage.Sets/src/mage/sets/magic2010/DreadWarlock.java
index 2ee1ab461ab..4d6639a4fc5 100644
--- a/Mage.Sets/src/mage/sets/magic2010/DreadWarlock.java
+++ b/Mage.Sets/src/mage/sets/magic2010/DreadWarlock.java
@@ -114,7 +114,7 @@ class DreadWarlockEffect extends RestrictionEffect {
@Override
public boolean canBeBlocked(Permanent attacker, Permanent blocker, Ability source, Game game) {
- if (blocker.getColor().isBlack()) {
+ if (blocker.getColor(game).isBlack()) {
return true;
}
return false;
diff --git a/Mage.Sets/src/mage/sets/magic2010/RiseFromTheGrave.java b/Mage.Sets/src/mage/sets/magic2010/RiseFromTheGrave.java
index 5596fd7914c..7a6ca7f3494 100644
--- a/Mage.Sets/src/mage/sets/magic2010/RiseFromTheGrave.java
+++ b/Mage.Sets/src/mage/sets/magic2010/RiseFromTheGrave.java
@@ -98,7 +98,7 @@ class RiseFromTheGraveEffect extends ContinuousEffectImpl {
break;
case ColorChangingEffects_5:
if (sublayer == SubLayer.NA) {
- creature.getColor().setBlack(true);
+ creature.getColor(game).setBlack(true);
}
break;
}
diff --git a/Mage.Sets/src/mage/sets/magic2010/VampireNocturnus.java b/Mage.Sets/src/mage/sets/magic2010/VampireNocturnus.java
index 48e1bf123e7..526e6fe4405 100644
--- a/Mage.Sets/src/mage/sets/magic2010/VampireNocturnus.java
+++ b/Mage.Sets/src/mage/sets/magic2010/VampireNocturnus.java
@@ -126,7 +126,7 @@ class VampireNocturnusCondition implements Condition {
if (player != null) {
Card card = player.getLibrary().getFromTop(game);
if (card != null) {
- return card.getColor().isBlack();
+ return card.getColor(game).isBlack();
}
}
return false;
diff --git a/Mage.Sets/src/mage/sets/magic2011/FireServant.java b/Mage.Sets/src/mage/sets/magic2011/FireServant.java
index 3ce806c9eeb..20458e7d2de 100644
--- a/Mage.Sets/src/mage/sets/magic2011/FireServant.java
+++ b/Mage.Sets/src/mage/sets/magic2011/FireServant.java
@@ -100,7 +100,7 @@ class FireServantEffect extends ReplacementEffectImpl {
StackObject spell = game.getStack().getStackObject(event.getSourceId());
return spell != null &&
spell.getControllerId().equals(source.getControllerId()) &&
- spell.getColor().isRed() &&
+ spell.getColor(game).isRed() &&
(spell.getCardType().contains(CardType.INSTANT) || spell.getCardType().contains(CardType.SORCERY));
}
diff --git a/Mage.Sets/src/mage/sets/magic2012/ChandrasPhoenix.java b/Mage.Sets/src/mage/sets/magic2012/ChandrasPhoenix.java
index 39fde9af860..27c7871fafe 100644
--- a/Mage.Sets/src/mage/sets/magic2012/ChandrasPhoenix.java
+++ b/Mage.Sets/src/mage/sets/magic2012/ChandrasPhoenix.java
@@ -91,7 +91,7 @@ class ChandrasPhoenixTriggeredAbility extends TriggeredAbilityImpl {
if (game.getOpponents(this.controllerId).contains(event.getPlayerId())) {
Card c = game.getCard(event.getSourceId());
if (c != null) {
- if (c.getColor().isRed() && (c.getCardType().contains(CardType.PLANESWALKER) || c.getCardType().contains(CardType.INSTANT) || c.getCardType().contains(CardType.SORCERY))) {
+ if (c.getColor(game).isRed() && (c.getCardType().contains(CardType.PLANESWALKER) || c.getCardType().contains(CardType.INSTANT) || c.getCardType().contains(CardType.SORCERY))) {
return true;
}
}
diff --git a/Mage.Sets/src/mage/sets/magic2014/FiendslayerPaladin.java b/Mage.Sets/src/mage/sets/magic2014/FiendslayerPaladin.java
index 1f4efab0209..b20cc8df831 100644
--- a/Mage.Sets/src/mage/sets/magic2014/FiendslayerPaladin.java
+++ b/Mage.Sets/src/mage/sets/magic2014/FiendslayerPaladin.java
@@ -123,8 +123,8 @@ class FiendslayerPaladinEffect extends ContinuousRuleModifyingEffectImpl {
Card targetCard = game.getCard(event.getTargetId());
StackObject stackObject = (StackObject) game.getStack().getStackObject(event.getSourceId());
if (targetCard != null && stackObject != null && targetCard.getId().equals(source.getSourceId())) {
- if (stackObject.getColor().contains(ObjectColor.BLACK)
- || stackObject.getColor().contains(ObjectColor.RED)) {
+ if (stackObject.getColor(game).contains(ObjectColor.BLACK)
+ || stackObject.getColor(game).contains(ObjectColor.RED)) {
if (!stackObject.getControllerId().equals(source.getControllerId())
&& stackObject.getCardType().contains(CardType.INSTANT)
|| stackObject.getCardType().contains(CardType.SORCERY)) {
diff --git a/Mage.Sets/src/mage/sets/magic2015/AvacynGuardianAngel.java b/Mage.Sets/src/mage/sets/magic2015/AvacynGuardianAngel.java
index 05e0d807513..0e6d2fa2706 100644
--- a/Mage.Sets/src/mage/sets/magic2015/AvacynGuardianAngel.java
+++ b/Mage.Sets/src/mage/sets/magic2015/AvacynGuardianAngel.java
@@ -127,7 +127,7 @@ class AvacynGuardianAngelPreventToCreatureEffect extends PreventionEffectImpl {
&& event.getTargetId().equals(getTargetPointer().getFirst(game, source))) {
ChoiceColor choice = (ChoiceColor) source.getChoices().get(0);
MageObject sourceObject = game.getObject(event.getSourceId());
- if (sourceObject != null && choice != null && sourceObject.getColor().shares(choice.getColor())) {
+ if (sourceObject != null && choice != null && sourceObject.getColor(game).shares(choice.getColor())) {
return true;
}
}
@@ -166,7 +166,7 @@ class AvacynGuardianAngelPreventToPlayerEffect extends PreventionEffectImpl {
&& event.getTargetId().equals(getTargetPointer().getFirst(game, source))) {
ChoiceColor choice = (ChoiceColor) source.getChoices().get(0);
MageObject sourceObject = game.getObject(event.getSourceId());
- if (sourceObject != null && choice != null && sourceObject.getColor().shares(choice.getColor())) {
+ if (sourceObject != null && choice != null && sourceObject.getColor(game).shares(choice.getColor())) {
return true;
}
}
diff --git a/Mage.Sets/src/mage/sets/magic2015/PolymorphistsJest.java b/Mage.Sets/src/mage/sets/magic2015/PolymorphistsJest.java
index 44c582583e5..e48c828a987 100644
--- a/Mage.Sets/src/mage/sets/magic2015/PolymorphistsJest.java
+++ b/Mage.Sets/src/mage/sets/magic2015/PolymorphistsJest.java
@@ -115,12 +115,12 @@ class PolymorphistsJestEffect extends ContinuousEffectImpl {
break;
case ColorChangingEffects_5:
if (sublayer == SubLayer.NA) {
- permanent.getColor().setBlack(false);
- permanent.getColor().setGreen(false);
- permanent.getColor().setBlue(false);
- permanent.getColor().setWhite(false);
- permanent.getColor().setBlack(false);
- permanent.getColor().setColor(ObjectColor.BLUE);
+ permanent.getColor(game).setBlack(false);
+ permanent.getColor(game).setGreen(false);
+ permanent.getColor(game).setBlue(false);
+ permanent.getColor(game).setWhite(false);
+ permanent.getColor(game).setBlack(false);
+ permanent.getColor(game).setColor(ObjectColor.BLUE);
}
break;
case AbilityAddingRemovingEffects_6:
diff --git a/Mage.Sets/src/mage/sets/magic2015/SoulOfRavnica.java b/Mage.Sets/src/mage/sets/magic2015/SoulOfRavnica.java
index f6c4344da3b..e77bbcf0fb3 100644
--- a/Mage.Sets/src/mage/sets/magic2015/SoulOfRavnica.java
+++ b/Mage.Sets/src/mage/sets/magic2015/SoulOfRavnica.java
@@ -103,19 +103,19 @@ class SoulOfRavnicaEffect extends OneShotEffect {
if (controller != null) {
HashSet colors = new HashSet<>();
for (Permanent permanent : game.getBattlefield().getAllActivePermanents(controller.getId())) {
- if (permanent.getColor().isBlack()) {
+ if (permanent.getColor(game).isBlack()) {
colors.add(ObjectColor.BLACK);
}
- if (permanent.getColor().isBlue()) {
+ if (permanent.getColor(game).isBlue()) {
colors.add(ObjectColor.BLUE);
}
- if (permanent.getColor().isRed()) {
+ if (permanent.getColor(game).isRed()) {
colors.add(ObjectColor.RED);
}
- if (permanent.getColor().isGreen()) {
+ if (permanent.getColor(game).isGreen()) {
colors.add(ObjectColor.GREEN);
}
- if (permanent.getColor().isWhite()) {
+ if (permanent.getColor(game).isWhite()) {
colors.add(ObjectColor.WHITE);
}
}
diff --git a/Mage.Sets/src/mage/sets/mirrodin/ChromeMox.java b/Mage.Sets/src/mage/sets/mirrodin/ChromeMox.java
index dab4e360d89..00e8256abb9 100644
--- a/Mage.Sets/src/mage/sets/mirrodin/ChromeMox.java
+++ b/Mage.Sets/src/mage/sets/mirrodin/ChromeMox.java
@@ -151,7 +151,7 @@ class ChromeMoxManaEffect extends ManaEffect {
if (imprintedCard != null) {
Choice choice = new ChoiceImpl(true);
choice.setMessage("Pick a mana color");
- ObjectColor color = imprintedCard.getColor();
+ ObjectColor color = imprintedCard.getColor(game);
if (color.isBlack()) {
choice.getChoices().add("Black");
}
diff --git a/Mage.Sets/src/mage/sets/modernmasters2015/KarplusanStrider.java b/Mage.Sets/src/mage/sets/modernmasters2015/KarplusanStrider.java
index cedb57ab93d..81ceb5b06eb 100644
--- a/Mage.Sets/src/mage/sets/modernmasters2015/KarplusanStrider.java
+++ b/Mage.Sets/src/mage/sets/modernmasters2015/KarplusanStrider.java
@@ -111,7 +111,7 @@ class KarplusanStriderEffect extends ContinuousRuleModifyingEffectImpl {
Permanent targettedPermanent = game.getPermanent(event.getTargetId());
Spell sourceSpell = game.getStack().getSpell(event.getSourceId());
if (targettedPermanent != null && sourceSpell != null) {
- return sourceSpell.getColor().isBlue() || sourceSpell.getColor().isBlack();
+ return sourceSpell.getColor(game).isBlue() || sourceSpell.getColor(game).isBlack();
}
}
return false;
diff --git a/Mage.Sets/src/mage/sets/newphyrexia/CagedSun.java b/Mage.Sets/src/mage/sets/newphyrexia/CagedSun.java
index 67e7b0fdfc7..e7fdb969e10 100644
--- a/Mage.Sets/src/mage/sets/newphyrexia/CagedSun.java
+++ b/Mage.Sets/src/mage/sets/newphyrexia/CagedSun.java
@@ -111,7 +111,7 @@ class CagedSunEffect2 extends ContinuousEffectImpl {
ObjectColor color = (ObjectColor) game.getState().getValue(permanent.getId() + "_color");
if (color != null) {
for (Permanent perm: game.getBattlefield().getAllActivePermanents(filter, source.getControllerId(), game)) {
- if (perm.getColor().contains(color)) {
+ if (perm.getColor(game).contains(color)) {
perm.addPower(1);
perm.addToughness(1);
}
diff --git a/Mage.Sets/src/mage/sets/ninthedition/Deathgazer.java b/Mage.Sets/src/mage/sets/ninthedition/Deathgazer.java
index fa3a2db0fee..6bd0b64e1dd 100644
--- a/Mage.Sets/src/mage/sets/ninthedition/Deathgazer.java
+++ b/Mage.Sets/src/mage/sets/ninthedition/Deathgazer.java
@@ -87,7 +87,7 @@ class DeathgazerTriggeredAbility extends TriggeredAbilityImpl {
if (event.getType() == GameEvent.EventType.BLOCKER_DECLARED) {
if (event.getSourceId().equals(this.getSourceId())) {
Permanent permanent = game.getPermanent(event.getTargetId());
- if(permanent != null && !permanent.getColor().isBlack())
+ if(permanent != null && !permanent.getColor(game).isBlack())
{
for (Effect effect : this.getEffects()) {
effect.setTargetPointer(new FixedTarget(event.getTargetId()));
@@ -97,7 +97,7 @@ class DeathgazerTriggeredAbility extends TriggeredAbilityImpl {
}
if (event.getTargetId().equals(this.getSourceId())) {
Permanent permanent = game.getPermanent(event.getSourceId());
- if(permanent != null && !permanent.getColor().isBlack())
+ if(permanent != null && !permanent.getColor(game).isBlack())
{
for (Effect effect : this.getEffects()) {
effect.setTargetPointer(new FixedTarget(event.getSourceId()));
diff --git a/Mage.Sets/src/mage/sets/odyssey/EarnestFellowship.java b/Mage.Sets/src/mage/sets/odyssey/EarnestFellowship.java
index 4014969ef3f..583ed4bcfe5 100644
--- a/Mage.Sets/src/mage/sets/odyssey/EarnestFellowship.java
+++ b/Mage.Sets/src/mage/sets/odyssey/EarnestFellowship.java
@@ -97,9 +97,9 @@ class EarnestFellowshipEffect extends ContinuousEffectImpl {
@Override
public boolean apply(Game game, Ability source) {
for (Permanent permanent : game.getBattlefield().getActivePermanents(filter, source.getControllerId(), game)) {
- if (permanent.getColor().hasColor()) {
+ if (permanent.getColor(game).hasColor()) {
List colorPredicates = new ArrayList<>();
- for (ObjectColor color : permanent.getColor().getColors()) {
+ for (ObjectColor color : permanent.getColor(game).getColors()) {
colorPredicates.add(new ColorPredicate(color));
}
FilterCard filterColors = new FilterCard("its colors");
diff --git a/Mage.Sets/src/mage/sets/odyssey/TestamentOfFaith.java b/Mage.Sets/src/mage/sets/odyssey/TestamentOfFaith.java
index 4b9149507ce..c19111128ea 100644
--- a/Mage.Sets/src/mage/sets/odyssey/TestamentOfFaith.java
+++ b/Mage.Sets/src/mage/sets/odyssey/TestamentOfFaith.java
@@ -127,8 +127,8 @@ class TestamentOfFaithBecomesCreatureSourceEffect extends ContinuousEffectImpl i
break;
case ColorChangingEffects_5:
if (sublayer == SubLayer.NA) {
- if (token.getColor().hasColor()) {
- permanent.getColor().setColor(token.getColor());
+ if (token.getColor(game).hasColor()) {
+ permanent.getColor(game).setColor(token.getColor(game));
}
}
break;
diff --git a/Mage.Sets/src/mage/sets/planarchaos/BoomBust.java b/Mage.Sets/src/mage/sets/planarchaos/BoomBust.java
index 5f9bd3bf3b3..b73609a114a 100644
--- a/Mage.Sets/src/mage/sets/planarchaos/BoomBust.java
+++ b/Mage.Sets/src/mage/sets/planarchaos/BoomBust.java
@@ -60,11 +60,8 @@ public class BoomBust extends SplitCard {
super(ownerId, 112, "Boom", "Bust", Rarity.RARE, new CardType[]{CardType.SORCERY}, "{1}{R}", "{5}{R}", false);
this.expansionSetCode = "PLC";
- this.color.setRed(true);
-
// Boom
// Destroy target land you control and target land you don't control.
- getLeftHalfCard().getColor().setRed(true);
Effect effect = new DestroyTargetEffect();
effect.setText("Destroy target land you control and target land you don't control");
getLeftHalfCard().getSpellAbility().addEffect(effect);
@@ -73,7 +70,6 @@ public class BoomBust extends SplitCard {
// Bust
// Destroy all lands.
- getRightHalfCard().getColor().setRed(true);
getRightHalfCard().getSpellAbility().addEffect(new DestroyAllEffect(new FilterLandPermanent()));
}
diff --git a/Mage.Sets/src/mage/sets/planarchaos/DeadGone.java b/Mage.Sets/src/mage/sets/planarchaos/DeadGone.java
index ceab6f00f7c..199da64c059 100644
--- a/Mage.Sets/src/mage/sets/planarchaos/DeadGone.java
+++ b/Mage.Sets/src/mage/sets/planarchaos/DeadGone.java
@@ -1,6 +1,5 @@
package mage.sets.planarchaos;
-import mage.abilities.Mode;
import mage.abilities.effects.common.DamageTargetEffect;
import mage.abilities.effects.common.ReturnToHandTargetEffect;
import mage.cards.Card;
@@ -27,17 +26,14 @@ public class DeadGone extends SplitCard {
public DeadGone(UUID ownerId) {
super(ownerId, 113, "Dead", "Gone", Rarity.COMMON, new CardType[]{CardType.INSTANT}, "{R}", "{2}{R}", false);
this.expansionSetCode = "PLC";
- this.color.setRed(true);
// Dead
// Dead deals 2 damage to target creature.
- getLeftHalfCard().getColor().setRed(true);
getLeftHalfCard().getSpellAbility().addEffect(new DeadDamageEffect());
getLeftHalfCard().getSpellAbility().addTarget(new TargetCreaturePermanent());
// Gone
// Return target creature you don't control to its owner's hand.
- getRightHalfCard().getColor().setRed(true);
getRightHalfCard().getSpellAbility().addEffect(new ReturnToHandTargetEffect());
getRightHalfCard().getSpellAbility().addTarget(new TargetCreaturePermanent(filter));
}
diff --git a/Mage.Sets/src/mage/sets/planarchaos/LifeAndLimb.java b/Mage.Sets/src/mage/sets/planarchaos/LifeAndLimb.java
index ef75978269e..09813d3f59c 100644
--- a/Mage.Sets/src/mage/sets/planarchaos/LifeAndLimb.java
+++ b/Mage.Sets/src/mage/sets/planarchaos/LifeAndLimb.java
@@ -116,7 +116,7 @@ class LifeAndLimbEffect extends ContinuousEffectImpl {
}
break;
case ColorChangingEffects_5:
- permanent.getColor().setColor(ObjectColor.GREEN);
+ permanent.getColor(game).setColor(ObjectColor.GREEN);
break;
case AbilityAddingRemovingEffects_6:
boolean flag = false;
diff --git a/Mage.Sets/src/mage/sets/planeshift/MeteorCrater.java b/Mage.Sets/src/mage/sets/planeshift/MeteorCrater.java
index 813ac559688..c64976c569b 100644
--- a/Mage.Sets/src/mage/sets/planeshift/MeteorCrater.java
+++ b/Mage.Sets/src/mage/sets/planeshift/MeteorCrater.java
@@ -178,7 +178,7 @@ class MeteorCraterEffect extends ManaEffect {
List controlledPermanents = game.getBattlefield().getActivePermanents(filter, source.getControllerId(), game);
Mana types = new Mana();
for (Permanent permanent : controlledPermanents) {
- ObjectColor color = permanent.getColor();
+ ObjectColor color = permanent.getColor(game);
if (color.isBlack()) {
types.add(Mana.BlackMana);
}
diff --git a/Mage.Sets/src/mage/sets/planeshift/ShiftingSky.java b/Mage.Sets/src/mage/sets/planeshift/ShiftingSky.java
index c856eb587af..cf386bea42c 100644
--- a/Mage.Sets/src/mage/sets/planeshift/ShiftingSky.java
+++ b/Mage.Sets/src/mage/sets/planeshift/ShiftingSky.java
@@ -28,7 +28,6 @@
package mage.sets.planeshift;
import java.util.UUID;
-import mage.MageObject;
import mage.ObjectColor;
import mage.abilities.Ability;
import mage.abilities.common.EntersBattlefieldTriggeredAbility;
@@ -113,7 +112,7 @@ class ShiftingSkyEffect extends OneShotEffect {
Player p = game.getPlayer(playerId);
if (p != null) {
for (Permanent chosen : game.getBattlefield().getAllActivePermanents(filter, playerId, game)) {
- setObject(chosen, colorString);
+ setObject(chosen, colorString, game);
}
}
}
@@ -127,22 +126,22 @@ class ShiftingSkyEffect extends OneShotEffect {
return new ShiftingSkyEffect(this);
}
- private void setObject(Permanent chosen, String colorString) {
+ private void setObject(Permanent chosen, String colorString, Game game) {
switch (colorString) {
case "W":
- chosen.getColor().setWhite(true);
+ chosen.getColor(game).setWhite(true);
break;
case "B":
- chosen.getColor().setBlack(true);
+ chosen.getColor(game).setBlack(true);
break;
case "U":
- chosen.getColor().setBlue(true);
+ chosen.getColor(game).setBlue(true);
break;
case "G":
- chosen.getColor().setGreen(true);
+ chosen.getColor(game).setGreen(true);
break;
case "R":
- chosen.getColor().setRed(true);
+ chosen.getColor(game).setRed(true);
break;
}
}
diff --git a/Mage.Sets/src/mage/sets/ravnica/CrownOfConvergence.java b/Mage.Sets/src/mage/sets/ravnica/CrownOfConvergence.java
index d65d95c083c..4493234abf8 100644
--- a/Mage.Sets/src/mage/sets/ravnica/CrownOfConvergence.java
+++ b/Mage.Sets/src/mage/sets/ravnica/CrownOfConvergence.java
@@ -104,7 +104,7 @@ class CrownOfConvergenceColorBoostEffect extends BoostAllEffect {
Card topCard = you.getLibrary().getFromTop(game);
if (topCard != null) {
for (Permanent permanent: game.getBattlefield().getActivePermanents(filter, source.getControllerId(), source.getSourceId(), game)) {
- if (permanent.getColor().shares(topCard.getColor()) && !permanent.getColor().isColorless()) {
+ if (permanent.getColor(game).shares(topCard.getColor(game)) && !permanent.getColor(game).isColorless()) {
permanent.addPower(power.calculate(game, source, this));
permanent.addToughness(toughness.calculate(game, source, this));
}
diff --git a/Mage.Sets/src/mage/sets/ravnica/DimirDoppelganger.java b/Mage.Sets/src/mage/sets/ravnica/DimirDoppelganger.java
index 9cc2cf0d14b..d1354b7a3a5 100644
--- a/Mage.Sets/src/mage/sets/ravnica/DimirDoppelganger.java
+++ b/Mage.Sets/src/mage/sets/ravnica/DimirDoppelganger.java
@@ -107,7 +107,7 @@ class DimirDoppelgangerEffect extends ContinuousEffectImpl {
permanent.setName(cardToCopy.getName());
permanent.getPower().setValue(cardToCopy.getPower().getValue());
permanent.getToughness().setValue(cardToCopy.getToughness().getValue());
- permanent.getColor().setColor(cardToCopy.getColor());
+ permanent.getColor(game).setColor(cardToCopy.getColor(game));
permanent.getManaCost().clear();
permanent.getManaCost().add(cardToCopy.getManaCost());
permanent.getCardType().clear();
diff --git a/Mage.Sets/src/mage/sets/ravnica/LeaveNoTrace.java b/Mage.Sets/src/mage/sets/ravnica/LeaveNoTrace.java
index cf9a98f6318..ac98d00f4a2 100644
--- a/Mage.Sets/src/mage/sets/ravnica/LeaveNoTrace.java
+++ b/Mage.Sets/src/mage/sets/ravnica/LeaveNoTrace.java
@@ -92,10 +92,10 @@ class LeaveNoTraceEffect extends OneShotEffect {
public boolean apply(Game game, Ability source) {
Permanent target = game.getPermanent(targetPointer.getFirst(game, source));
if (target != null) {
- ObjectColor color = target.getColor();
+ ObjectColor color = target.getColor(game);
target.destroy(source.getSourceId(), game, false);
for (Permanent p : game.getBattlefield().getActivePermanents(filter, source.getControllerId(), game)) {
- if (p.getColor().shares(color)) {
+ if (p.getColor(game).shares(color)) {
p.destroy(source.getSourceId(), game, false);
}
}
diff --git a/Mage.Sets/src/mage/sets/ravnica/RallyTheRighteous.java b/Mage.Sets/src/mage/sets/ravnica/RallyTheRighteous.java
index 077dfb18391..71ee000110e 100644
--- a/Mage.Sets/src/mage/sets/ravnica/RallyTheRighteous.java
+++ b/Mage.Sets/src/mage/sets/ravnica/RallyTheRighteous.java
@@ -93,10 +93,10 @@ class RallyTheRighteousUntapEffect extends OneShotEffect {
public boolean apply(Game game, Ability source) {
Permanent target = game.getPermanent(getTargetPointer().getFirst(game, source));
if (target != null) {
- ObjectColor color = target.getColor();
+ ObjectColor color = target.getColor(game);
target.untap(game);
for (Permanent permanent : game.getBattlefield().getActivePermanents(new FilterCreaturePermanent(), source.getControllerId(), source.getSourceId(), game)) {
- if (permanent.getColor().shares(color) && !permanent.getId().equals(target.getId())) {
+ if (permanent.getColor(game).shares(color) && !permanent.getId().equals(target.getId())) {
permanent.untap(game);
}
}
@@ -124,10 +124,10 @@ class RallyTheRighteousBoostEffect extends ContinuousEffectImpl {
Permanent target = game.getPermanent(getTargetPointer().getFirst(game, source));
if (target != null) {
affectedObjectList.add(new MageObjectReference(target, game));
- ObjectColor color = target.getColor();
+ ObjectColor color = target.getColor(game);
target.addPower(2);
for (Permanent permanent : game.getBattlefield().getActivePermanents(new FilterCreaturePermanent(), source.getControllerId(), source.getSourceId(), game)) {
- if (!permanent.getId().equals(target.getId()) && permanent.getColor().shares(color)) {
+ if (!permanent.getId().equals(target.getId()) && permanent.getColor(game).shares(color)) {
affectedObjectList.add(new MageObjectReference(permanent, game));
}
}
diff --git a/Mage.Sets/src/mage/sets/returntoravnica/CivicSaber.java b/Mage.Sets/src/mage/sets/returntoravnica/CivicSaber.java
index d463ae79988..9274fc8cd53 100644
--- a/Mage.Sets/src/mage/sets/returntoravnica/CivicSaber.java
+++ b/Mage.Sets/src/mage/sets/returntoravnica/CivicSaber.java
@@ -84,7 +84,7 @@ class CivicSaberColorCount implements DynamicValue {
if (equipment != null) {
Permanent permanent = game.getPermanent(equipment.getAttachedTo());
if (permanent != null) {
- count = permanent.getColor().getColorCount();
+ count = permanent.getColor(game).getColorCount();
}
}
return count;
diff --git a/Mage.Sets/src/mage/sets/returntoravnica/GraveBetrayal.java b/Mage.Sets/src/mage/sets/returntoravnica/GraveBetrayal.java
index 9ca8f30b745..c83780397b9 100644
--- a/Mage.Sets/src/mage/sets/returntoravnica/GraveBetrayal.java
+++ b/Mage.Sets/src/mage/sets/returntoravnica/GraveBetrayal.java
@@ -195,7 +195,7 @@ class GraveBetrayalContiniousEffect extends ContinuousEffectImpl {
break;
case ColorChangingEffects_5:
if (sublayer == SubLayer.NA) {
- creature.getColor().setBlack(true);
+ creature.getColor(game).setBlack(true);
}
break;
}
diff --git a/Mage.Sets/src/mage/sets/returntoravnica/LobberCrew.java b/Mage.Sets/src/mage/sets/returntoravnica/LobberCrew.java
index 9d8a1a6b558..74623e0cfbe 100644
--- a/Mage.Sets/src/mage/sets/returntoravnica/LobberCrew.java
+++ b/Mage.Sets/src/mage/sets/returntoravnica/LobberCrew.java
@@ -97,7 +97,7 @@ class LobberCrewTriggeredAbility extends TriggeredAbilityImpl {
public boolean checkTrigger(GameEvent event, Game game) {
if (event.getType() == GameEvent.EventType.SPELL_CAST) {
Spell spell = game.getStack().getSpell(event.getTargetId());
- if (spell != null && spell.getColor().isMulticolored() && event.getPlayerId().equals(getControllerId())) {
+ if (spell != null && spell.getColor(game).isMulticolored() && event.getPlayerId().equals(getControllerId())) {
return true;
}
}
diff --git a/Mage.Sets/src/mage/sets/returntoravnica/Pyroconvergence.java b/Mage.Sets/src/mage/sets/returntoravnica/Pyroconvergence.java
index cb2b6d91a03..1bbf63022c7 100644
--- a/Mage.Sets/src/mage/sets/returntoravnica/Pyroconvergence.java
+++ b/Mage.Sets/src/mage/sets/returntoravnica/Pyroconvergence.java
@@ -85,7 +85,7 @@ class PyroconvergenceTriggeredAbility extends TriggeredAbilityImpl {
public boolean checkTrigger(GameEvent event, Game game) {
if (event.getType() == GameEvent.EventType.SPELL_CAST) {
Spell spell = game.getStack().getSpell(event.getTargetId());
- if (spell != null && spell.getColor().isMulticolored() && event.getPlayerId().equals(getControllerId())) {
+ if (spell != null && spell.getColor(game).isMulticolored() && event.getPlayerId().equals(getControllerId())) {
return true;
}
}
diff --git a/Mage.Sets/src/mage/sets/returntoravnica/TabletOfTheGuilds.java b/Mage.Sets/src/mage/sets/returntoravnica/TabletOfTheGuilds.java
index 9d6141b3a98..b844e1a25c7 100644
--- a/Mage.Sets/src/mage/sets/returntoravnica/TabletOfTheGuilds.java
+++ b/Mage.Sets/src/mage/sets/returntoravnica/TabletOfTheGuilds.java
@@ -138,10 +138,10 @@ class TabletOfTheGuildsGainLifeEffect extends OneShotEffect {
ObjectColor color1 = new ObjectColor((String) game.getState().getValue(source.getSourceId() + "_color1"));
ObjectColor color2 = new ObjectColor((String) game.getState().getValue(source.getSourceId() + "_color2"));
int amount = 0;
- if (spell.getColor().contains(color1)) {
+ if (spell.getColor(game).contains(color1)) {
++amount;
}
- if (spell.getColor().contains(color2)) {
+ if (spell.getColor(game).contains(color2)) {
++amount;
}
if (amount > 0) {
diff --git a/Mage.Sets/src/mage/sets/riseoftheeldrazi/AllIsDust.java b/Mage.Sets/src/mage/sets/riseoftheeldrazi/AllIsDust.java
index d1350b361ba..ab16b725378 100644
--- a/Mage.Sets/src/mage/sets/riseoftheeldrazi/AllIsDust.java
+++ b/Mage.Sets/src/mage/sets/riseoftheeldrazi/AllIsDust.java
@@ -76,7 +76,7 @@ class AllIsDustEffect extends OneShotEffect {
public boolean apply(Game game, Ability source) {
List permanents = game.getBattlefield().getActivePermanents(source.getControllerId(), game);
for (Permanent p : permanents) {
- if (!p.getColor().isColorless()) {
+ if (!p.getColor(game).isColorless()) {
p.sacrifice(source.getSourceId(), game);
}
}
diff --git a/Mage.Sets/src/mage/sets/riseoftheeldrazi/CurseOfWizardry.java b/Mage.Sets/src/mage/sets/riseoftheeldrazi/CurseOfWizardry.java
index d03c36b7c12..e91deb95bb9 100644
--- a/Mage.Sets/src/mage/sets/riseoftheeldrazi/CurseOfWizardry.java
+++ b/Mage.Sets/src/mage/sets/riseoftheeldrazi/CurseOfWizardry.java
@@ -131,7 +131,7 @@ class CurseOfWizardryPlayerCastsSpellChosenColorTriggeredAbility extends Trigger
if (chosenColor != null) {
if (event.getType() == GameEvent.EventType.SPELL_CAST) {
Spell spell = game.getStack().getSpell(event.getTargetId());
- if (spell != null && spell.getColor().shares(chosenColor)) {
+ if (spell != null && spell.getColor(game).shares(chosenColor)) {
this.getEffects().get(0).setTargetPointer(new FixedTarget(event.getPlayerId()));
return true;
}
diff --git a/Mage.Sets/src/mage/sets/riseoftheeldrazi/EldraziTemple.java b/Mage.Sets/src/mage/sets/riseoftheeldrazi/EldraziTemple.java
index d677a7c819f..07282e367fa 100644
--- a/Mage.Sets/src/mage/sets/riseoftheeldrazi/EldraziTemple.java
+++ b/Mage.Sets/src/mage/sets/riseoftheeldrazi/EldraziTemple.java
@@ -96,6 +96,6 @@ class EldraziTempleCondition implements Condition {
@Override
public boolean apply(Game game, Ability source) {
MageObject object = game.getObject(source.getSourceId());
- return object != null && object.hasSubtype("Eldrazi") && object.getColor().isColorless();
+ return object != null && object.hasSubtype("Eldrazi") && object.getColor(game).isColorless();
}
}
diff --git a/Mage.Sets/src/mage/sets/riseoftheeldrazi/ZulaportEnforcer.java b/Mage.Sets/src/mage/sets/riseoftheeldrazi/ZulaportEnforcer.java
index effbf4a5858..a1b8a492f4b 100644
--- a/Mage.Sets/src/mage/sets/riseoftheeldrazi/ZulaportEnforcer.java
+++ b/Mage.Sets/src/mage/sets/riseoftheeldrazi/ZulaportEnforcer.java
@@ -133,7 +133,7 @@ class ZulaportEnforcerEffect extends RestrictionEffect {
@Override
public boolean canBeBlocked(Permanent attacker, Permanent blocker, Ability source, Game game) {
- if (blocker.getColor().isBlack()) {
+ if (blocker.getColor(game).isBlack()) {
return true;
}
return false;
diff --git a/Mage.Sets/src/mage/sets/scarsofmirrodin/GrandArchitect.java b/Mage.Sets/src/mage/sets/scarsofmirrodin/GrandArchitect.java
index c2e167aebfc..267b4e2852a 100644
--- a/Mage.Sets/src/mage/sets/scarsofmirrodin/GrandArchitect.java
+++ b/Mage.Sets/src/mage/sets/scarsofmirrodin/GrandArchitect.java
@@ -125,11 +125,11 @@ class GrandArchitectEffect extends ContinuousEffectImpl {
public boolean apply(Game game, Ability source) {
Permanent permanent = game.getPermanent(source.getFirstTarget());
if (permanent != null) {
- permanent.getColor().setRed(false);
- permanent.getColor().setWhite(false);
- permanent.getColor().setGreen(false);
- permanent.getColor().setBlue(true);
- permanent.getColor().setBlack(false);
+ permanent.getColor(game).setRed(false);
+ permanent.getColor(game).setWhite(false);
+ permanent.getColor(game).setGreen(false);
+ permanent.getColor(game).setBlue(true);
+ permanent.getColor(game).setBlack(false);
return true;
}
return false;
diff --git a/Mage.Sets/src/mage/sets/scarsofmirrodin/LiegeOfTheTangle.java b/Mage.Sets/src/mage/sets/scarsofmirrodin/LiegeOfTheTangle.java
index f17f803ebe9..13089d5f07d 100644
--- a/Mage.Sets/src/mage/sets/scarsofmirrodin/LiegeOfTheTangle.java
+++ b/Mage.Sets/src/mage/sets/scarsofmirrodin/LiegeOfTheTangle.java
@@ -145,7 +145,7 @@ class LiegeOfTheTangleEffect extends ContinuousEffectImpl {
break;
case ColorChangingEffects_5:
if (sublayer == SubLayer.NA) {
- perm.getColor().setColor(token.getColor());
+ perm.getColor(game).setColor(token.getColor(game));
}
break;
case PTChangingEffects_7:
diff --git a/Mage.Sets/src/mage/sets/scarsofmirrodin/QuicksilverGargantuan.java b/Mage.Sets/src/mage/sets/scarsofmirrodin/QuicksilverGargantuan.java
index 07a5ef4dde3..a02bb9ccda7 100644
--- a/Mage.Sets/src/mage/sets/scarsofmirrodin/QuicksilverGargantuan.java
+++ b/Mage.Sets/src/mage/sets/scarsofmirrodin/QuicksilverGargantuan.java
@@ -93,7 +93,7 @@ public class QuicksilverGargantuan extends CardImpl {
Card card = game.getCard(source.getFirstTarget());
Permanent permanent = game.getPermanent(source.getSourceId());
permanent.setName(card.getName());
- permanent.getColor().setColor(card.getColor());
+ permanent.getColor(game).setColor(card.getColor(game));
permanent.getManaCost().clear();
permanent.getManaCost().add(card.getManaCost());
permanent.getCardType().clear();
diff --git a/Mage.Sets/src/mage/sets/seventhedition/DarkestHour.java b/Mage.Sets/src/mage/sets/seventhedition/DarkestHour.java
index 280425a5827..19022d75324 100644
--- a/Mage.Sets/src/mage/sets/seventhedition/DarkestHour.java
+++ b/Mage.Sets/src/mage/sets/seventhedition/DarkestHour.java
@@ -83,7 +83,7 @@ class DarkestHourEffect extends ContinuousEffectImpl {
@Override
public boolean apply(Game game, Ability source) {
for (Permanent permanent : game.getBattlefield().getActivePermanents(new FilterCreaturePermanent(), source.getControllerId(), source.getSourceId(), game)) {
- permanent.getColor().setColor(ObjectColor.BLACK);
+ permanent.getColor(game).setColor(ObjectColor.BLACK);
}
return true;
}
diff --git a/Mage.Sets/src/mage/sets/shadowmoor/ConsignToDream.java b/Mage.Sets/src/mage/sets/shadowmoor/ConsignToDream.java
index 99f3493addf..5375589abe6 100644
--- a/Mage.Sets/src/mage/sets/shadowmoor/ConsignToDream.java
+++ b/Mage.Sets/src/mage/sets/shadowmoor/ConsignToDream.java
@@ -90,8 +90,8 @@ class ConsignToDreamEffect extends OneShotEffect {
public boolean apply(Game game, Ability source) {
Permanent target = game.getPermanent(source.getFirstTarget());
if (target != null) {
- if (target.getColor().contains(ObjectColor.RED)
- || target.getColor().contains(ObjectColor.GREEN)) {
+ if (target.getColor(game).contains(ObjectColor.RED)
+ || target.getColor(game).contains(ObjectColor.GREEN)) {
applied = target.moveToZone(Zone.LIBRARY, source.getSourceId(), game, true);
} else {
applied = target.moveToZone(Zone.HAND, source.getSourceId(), game, false);
diff --git a/Mage.Sets/src/mage/sets/shadowmoor/Gloomlance.java b/Mage.Sets/src/mage/sets/shadowmoor/Gloomlance.java
index 38c20be6e2c..84c70998249 100644
--- a/Mage.Sets/src/mage/sets/shadowmoor/Gloomlance.java
+++ b/Mage.Sets/src/mage/sets/shadowmoor/Gloomlance.java
@@ -90,8 +90,8 @@ class GloomlanceEffect extends OneShotEffect {
Player targetController = game.getPlayer(targetCreature.getControllerId());
targetCreature.destroy(source.getSourceId(), game, false);
Permanent destroyedCreature = game.getPermanentOrLKIBattlefield(source.getFirstTarget());
- if (destroyedCreature.getColor().isGreen()
- || destroyedCreature.getColor().isWhite()) {
+ if (destroyedCreature.getColor(game).isGreen()
+ || destroyedCreature.getColor(game).isWhite()) {
targetController.discard(1, false, source, game);
return true;
}
diff --git a/Mage.Sets/src/mage/sets/shadowmoor/GloomwidowsFeast.java b/Mage.Sets/src/mage/sets/shadowmoor/GloomwidowsFeast.java
index 64695d2f25b..f2b8a590bef 100644
--- a/Mage.Sets/src/mage/sets/shadowmoor/GloomwidowsFeast.java
+++ b/Mage.Sets/src/mage/sets/shadowmoor/GloomwidowsFeast.java
@@ -101,8 +101,8 @@ class GloomwidowsFeastEffect extends OneShotEffect {
if (targetCreature != null) {
targetCreature.destroy(source.getSourceId(), game, false);
Permanent destroyedCreature = game.getPermanentOrLKIBattlefield(source.getFirstTarget());
- if (destroyedCreature.getColor().isBlue()
- || destroyedCreature.getColor().isBlack()) {
+ if (destroyedCreature.getColor(game).isBlue()
+ || destroyedCreature.getColor(game).isBlack()) {
SpiderToken token = new SpiderToken();
token.putOntoBattlefield(1, game, source.getSourceId(), source.getControllerId());
return true;
diff --git a/Mage.Sets/src/mage/sets/shadowmoor/IlluminatedFolio.java b/Mage.Sets/src/mage/sets/shadowmoor/IlluminatedFolio.java
index 82b79bb4866..68e79db064f 100644
--- a/Mage.Sets/src/mage/sets/shadowmoor/IlluminatedFolio.java
+++ b/Mage.Sets/src/mage/sets/shadowmoor/IlluminatedFolio.java
@@ -122,7 +122,7 @@ class TargetTwoCardsWithTheSameColorInHand extends TargetCardInHand {
Card chosenCard = cardsToCheck.get(entry.getKey(), game);
if (chosenCard != null) {
for (UUID cardToCheck : cardsToCheck) {
- if (!cardToCheck.equals(chosenCard.getId()) && chosenCard.getColor().equals(game.getCard(cardToCheck).getColor())) {
+ if (!cardToCheck.equals(chosenCard.getId()) && chosenCard.getColor(game).equals(game.getCard(cardToCheck).getColor(game))) {
newPossibleTargets.add(cardToCheck);
}
}
@@ -131,7 +131,7 @@ class TargetTwoCardsWithTheSameColorInHand extends TargetCardInHand {
} else {
for (UUID cardToCheck : cardsToCheck) {
FilterCard colorFilter = new FilterCard();
- colorFilter.add(new ColorPredicate(game.getCard(cardToCheck).getColor()));
+ colorFilter.add(new ColorPredicate(game.getCard(cardToCheck).getColor(game)));
if (cardsToCheck.count(colorFilter, game) > 1) {
newPossibleTargets.add(cardToCheck);
}
@@ -150,7 +150,7 @@ class TargetTwoCardsWithTheSameColorInHand extends TargetCardInHand {
int possibleCards = 0;
for (UUID cardToCheck : cardsToCheck) {
FilterCard colorFilter = new FilterCard();
- colorFilter.add(new ColorPredicate(game.getCard(cardToCheck).getColor()));
+ colorFilter.add(new ColorPredicate(game.getCard(cardToCheck).getColor(game)));
if (cardsToCheck.count(colorFilter, game) > 1) {
++possibleCards;
}
@@ -165,12 +165,12 @@ class TargetTwoCardsWithTheSameColorInHand extends TargetCardInHand {
if (card != null) {
if (targets.size() == 1) {
Card card2 = game.getCard(targets.entrySet().iterator().next().getKey());
- if (card2 != null && card2.getColor().equals(card.getColor())) {
+ if (card2 != null && card2.getColor(game).equals(card.getColor(game))) {
return true;
}
} else {
FilterCard colorFilter = new FilterCard();
- colorFilter.add(new ColorPredicate(card.getColor()));
+ colorFilter.add(new ColorPredicate(card.getColor(game)));
Player player = game.getPlayer(card.getOwnerId());
if (player.getHand().getCards(colorFilter, game).size() > 1) {
return true;
diff --git a/Mage.Sets/src/mage/sets/shadowmoor/InquisitorsSnare.java b/Mage.Sets/src/mage/sets/shadowmoor/InquisitorsSnare.java
index e32dac76740..6e2d4644565 100644
--- a/Mage.Sets/src/mage/sets/shadowmoor/InquisitorsSnare.java
+++ b/Mage.Sets/src/mage/sets/shadowmoor/InquisitorsSnare.java
@@ -96,8 +96,8 @@ class InquisitorsSnareEffect extends OneShotEffect {
FilterCreaturePermanent filter = new FilterCreaturePermanent();
filter.add(new PermanentIdPredicate(targetCreature.getId()));
game.addEffect(new PreventAllDamageByAllEffect(filter, Duration.EndOfTurn, false), source);
- if (targetCreature.getColor().contains(ObjectColor.BLACK)
- || targetCreature.getColor().contains(ObjectColor.RED)) {
+ if (targetCreature.getColor(game).contains(ObjectColor.BLACK)
+ || targetCreature.getColor(game).contains(ObjectColor.RED)) {
return targetCreature.destroy(source.getSourceId(), game, false);
}
}
diff --git a/Mage.Sets/src/mage/sets/shadowmoor/LureboundScarecrow.java b/Mage.Sets/src/mage/sets/shadowmoor/LureboundScarecrow.java
index 68066d70307..0ee0aabd1b4 100644
--- a/Mage.Sets/src/mage/sets/shadowmoor/LureboundScarecrow.java
+++ b/Mage.Sets/src/mage/sets/shadowmoor/LureboundScarecrow.java
@@ -135,7 +135,7 @@ class LureboundScarecrowTriggeredAbility extends StateTriggeredAbility {
ObjectColor color = (ObjectColor) game.getState().getValue(card.getId() + "_color");
if (color != null) {
for (Permanent perm: game.getBattlefield().getAllActivePermanents(controllerId)) {
- if (perm.getColor().contains(color))
+ if (perm.getColor(game).contains(color))
return false;
}
return true;
diff --git a/Mage.Sets/src/mage/sets/shadowmoor/OonaQueenOfTheFae.java b/Mage.Sets/src/mage/sets/shadowmoor/OonaQueenOfTheFae.java
index 6e783d289df..8a6a73d484f 100644
--- a/Mage.Sets/src/mage/sets/shadowmoor/OonaQueenOfTheFae.java
+++ b/Mage.Sets/src/mage/sets/shadowmoor/OonaQueenOfTheFae.java
@@ -112,7 +112,7 @@ class OonaQueenOfTheFaeEffect extends OneShotEffect {
for(int i = 0; i < cardsToExile; i++) {
Card card = opponent.getLibrary().removeFromTop(game);
if (card != null) {
- if (card.getColor().contains(choice.getColor())) {
+ if (card.getColor(game).contains(choice.getColor())) {
cardsWithColor++;
}
card.moveToExile(null, null, source.getSourceId(), game);
diff --git a/Mage.Sets/src/mage/sets/shadowmoor/PaintersServant.java b/Mage.Sets/src/mage/sets/shadowmoor/PaintersServant.java
index 18dbad17b8b..10364727e8c 100644
--- a/Mage.Sets/src/mage/sets/shadowmoor/PaintersServant.java
+++ b/Mage.Sets/src/mage/sets/shadowmoor/PaintersServant.java
@@ -135,22 +135,22 @@ class PaintersServantEffect extends ContinuousEffectImpl {
}
String colorString = color.toString();
for (Permanent perm : game.getBattlefield().getActivePermanents(source.getControllerId(), game)) {
- setObjectColor(perm, colorString);
+ setObjectColor(perm, colorString, game);
}
// Stack
for (MageObject object : game.getStack()) {
if (object instanceof Spell) {
- setObjectColor(object, colorString);
+ setObjectColor(object, colorString, game);
}
}
// Exile
for (Card card : game.getExile().getAllCards(game)) {
- setObjectColor(card, colorString);
+ setCardColor(card, colorString, game);
}
// Command
for (CommandObject commandObject : game.getState().getCommand()) {
if (commandObject instanceof Commander) {
- setObjectColor(commandObject, colorString);
+ setObjectColor(commandObject, colorString, game);
}
}
@@ -159,15 +159,15 @@ class PaintersServantEffect extends ContinuousEffectImpl {
if (player != null) {
// Hand
for (Card card : player.getHand().getCards(game)) {
- setObjectColor(card, colorString);
+ setCardColor(card, colorString, game);
}
// Library
for (Card card : player.getLibrary().getCards(game)) {
- setObjectColor(card, colorString);
+ setCardColor(card, colorString, game);
}
// Graveyard
for (Card card : player.getGraveyard().getCards(game)) {
- setObjectColor(card, colorString);
+ setCardColor(card, colorString, game);
}
}
}
@@ -175,23 +175,44 @@ class PaintersServantEffect extends ContinuousEffectImpl {
}
return false;
}
-
- protected static void setObjectColor(MageObject obj, String colorString) {
- switch (colorString) {
+
+ protected static void setCardColor(Card card, String colorString, Game game) {
+ ObjectColor color = game.getState().getCreateCardAttribute(card).getColor();
+ switch (colorString) {
case "W":
- obj.getColor().setWhite(true);
+ color.setWhite(true);
break;
case "B":
- obj.getColor().setBlack(true);
+ color.setBlack(true);
break;
case "U":
- obj.getColor().setBlue(true);
+ color.setBlue(true);
break;
case "G":
- obj.getColor().setGreen(true);
+ color.setGreen(true);
break;
case "R":
- obj.getColor().setRed(true);
+ color.setRed(true);
+ break;
+ }
+ }
+
+ protected static void setObjectColor(MageObject obj, String colorString, Game game) {
+ switch (colorString) {
+ case "W":
+ obj.getColor(game).setWhite(true);
+ break;
+ case "B":
+ obj.getColor(game).setBlack(true);
+ break;
+ case "U":
+ obj.getColor(game).setBlue(true);
+ break;
+ case "G":
+ obj.getColor(game).setGreen(true);
+ break;
+ case "R":
+ obj.getColor(game).setRed(true);
break;
}
}
diff --git a/Mage.Sets/src/mage/sets/shadowmoor/Scrapbasket.java b/Mage.Sets/src/mage/sets/shadowmoor/Scrapbasket.java
index 6c14dc47e3b..c590ed08a1c 100644
--- a/Mage.Sets/src/mage/sets/shadowmoor/Scrapbasket.java
+++ b/Mage.Sets/src/mage/sets/shadowmoor/Scrapbasket.java
@@ -92,11 +92,11 @@ class BecomesAllColorsEffect extends ContinuousEffectImpl {
public boolean apply(Game game, Ability source) {
Permanent permanent = game.getPermanent(source.getSourceId());
if (permanent != null) {
- permanent.getColor().setBlack(true);
- permanent.getColor().setBlue(true);
- permanent.getColor().setRed(true);
- permanent.getColor().setGreen(true);
- permanent.getColor().setWhite(true);
+ permanent.getColor(game).setBlack(true);
+ permanent.getColor(game).setBlue(true);
+ permanent.getColor(game).setRed(true);
+ permanent.getColor(game).setGreen(true);
+ permanent.getColor(game).setWhite(true);
return true;
}
return false;
diff --git a/Mage.Sets/src/mage/sets/tempest/Grindstone.java b/Mage.Sets/src/mage/sets/tempest/Grindstone.java
index aac4ee1fec2..f2b73cbca18 100644
--- a/Mage.Sets/src/mage/sets/tempest/Grindstone.java
+++ b/Mage.Sets/src/mage/sets/tempest/Grindstone.java
@@ -114,8 +114,8 @@ class GrindstoneEffect extends OneShotEffect {
Card card1 = targetPlayer.getLibrary().removeFromTop(game);
if (targetPlayer.getLibrary().size() > 0) {
Card card2 = targetPlayer.getLibrary().removeFromTop(game);
- if (card1.getColor().hasColor() && card2.getColor().hasColor()) {
- colorShared = card1.getColor().shares(card2.getColor());
+ if (card1.getColor(game).hasColor() && card2.getColor(game).hasColor()) {
+ colorShared = card1.getColor(game).shares(card2.getColor(game));
}
}
}
diff --git a/Mage.Sets/src/mage/sets/tempest/LightOfDay.java b/Mage.Sets/src/mage/sets/tempest/LightOfDay.java
index 8924dcf50bb..17348a8cb6d 100644
--- a/Mage.Sets/src/mage/sets/tempest/LightOfDay.java
+++ b/Mage.Sets/src/mage/sets/tempest/LightOfDay.java
@@ -95,7 +95,7 @@ class LightOfDayEffect extends ReplacementEffectImpl {
if (permanent != null) {
Player player = game.getPlayer(source.getControllerId());
if (player.getInRange().contains(permanent.getControllerId())) {
- if (permanent.getColor().isBlack()) {
+ if (permanent.getColor(game).isBlack()) {
return true;
}
}
diff --git a/Mage.Sets/src/mage/sets/tenthedition/AngelsFeather.java b/Mage.Sets/src/mage/sets/tenthedition/AngelsFeather.java
index 88610167c3d..2d01c26e37f 100644
--- a/Mage.Sets/src/mage/sets/tenthedition/AngelsFeather.java
+++ b/Mage.Sets/src/mage/sets/tenthedition/AngelsFeather.java
@@ -82,7 +82,7 @@ class AngelsFeatherAbility extends TriggeredAbilityImpl {
public boolean checkTrigger(GameEvent event, Game game) {
if (event.getType() == EventType.SPELL_CAST) {
Spell spell = game.getStack().getSpell(event.getTargetId());
- if (spell != null && spell.getColor().isWhite()) {
+ if (spell != null && spell.getColor(game).isWhite()) {
return true;
}
}
diff --git a/Mage.Sets/src/mage/sets/tenthedition/DragonsClaw.java b/Mage.Sets/src/mage/sets/tenthedition/DragonsClaw.java
index ec8e5916f51..3fb21d7d48c 100644
--- a/Mage.Sets/src/mage/sets/tenthedition/DragonsClaw.java
+++ b/Mage.Sets/src/mage/sets/tenthedition/DragonsClaw.java
@@ -82,7 +82,7 @@ class DragonsClawAbility extends TriggeredAbilityImpl {
public boolean checkTrigger(GameEvent event, Game game) {
if (event.getType() == EventType.SPELL_CAST) {
Spell spell = game.getStack().getSpell(event.getTargetId());
- if (spell != null && spell.getColor().isRed()) {
+ if (spell != null && spell.getColor(game).isRed()) {
return true;
}
}
diff --git a/Mage.Sets/src/mage/sets/tenthedition/KrakensEye.java b/Mage.Sets/src/mage/sets/tenthedition/KrakensEye.java
index 9a81eacf97d..81e51ec0539 100644
--- a/Mage.Sets/src/mage/sets/tenthedition/KrakensEye.java
+++ b/Mage.Sets/src/mage/sets/tenthedition/KrakensEye.java
@@ -82,7 +82,7 @@ class KrakensEyeAbility extends TriggeredAbilityImpl {
public boolean checkTrigger(GameEvent event, Game game) {
if (event.getType() == EventType.SPELL_CAST) {
Spell spell = game.getStack().getSpell(event.getTargetId());
- if (spell != null && spell.getColor().isBlue()) {
+ if (spell != null && spell.getColor(game).isBlue()) {
return true;
}
}
diff --git a/Mage.Sets/src/mage/sets/tenthedition/WurmsTooth.java b/Mage.Sets/src/mage/sets/tenthedition/WurmsTooth.java
index d211eb06b33..31b2ff02519 100644
--- a/Mage.Sets/src/mage/sets/tenthedition/WurmsTooth.java
+++ b/Mage.Sets/src/mage/sets/tenthedition/WurmsTooth.java
@@ -82,7 +82,7 @@ class WurmsToothAbility extends TriggeredAbilityImpl {
public boolean checkTrigger(GameEvent event, Game game) {
if (event.getType() == EventType.SPELL_CAST) {
Spell spell = game.getStack().getSpell(event.getTargetId());
- if (spell != null && spell.getColor().isGreen()) {
+ if (spell != null && spell.getColor(game).isGreen()) {
return true;
}
}
diff --git a/Mage.Sets/src/mage/sets/timeshifted/SolkanarTheSwampKing.java b/Mage.Sets/src/mage/sets/timeshifted/SolkanarTheSwampKing.java
index d0d9f4bbeb3..282bb67dd00 100644
--- a/Mage.Sets/src/mage/sets/timeshifted/SolkanarTheSwampKing.java
+++ b/Mage.Sets/src/mage/sets/timeshifted/SolkanarTheSwampKing.java
@@ -91,7 +91,7 @@ class SolkanarTheSwampKingAbility extends TriggeredAbilityImpl {
public boolean checkTrigger(GameEvent event, Game game) {
if (event.getType() == GameEvent.EventType.SPELL_CAST) {
Spell spell = game.getStack().getSpell(event.getTargetId());
- if (spell != null && spell.getColor().isBlack()) {
+ if (spell != null && spell.getColor(game).isBlack()) {
return true;
}
}
diff --git a/Mage.Sets/src/mage/sets/timespiral/AncestralVision.java b/Mage.Sets/src/mage/sets/timespiral/AncestralVision.java
index f3ef3a34260..08a51389a09 100644
--- a/Mage.Sets/src/mage/sets/timespiral/AncestralVision.java
+++ b/Mage.Sets/src/mage/sets/timespiral/AncestralVision.java
@@ -46,7 +46,7 @@ public class AncestralVision extends CardImpl {
super(ownerId, 48, "Ancestral Vision", Rarity.RARE, new CardType[]{CardType.SORCERY}, "");
this.expansionSetCode = "TSP";
- this.getColor().setBlue(true);
+ this.color.setBlue(true);
// Suspend 4-{U}
this.addAbility(new SuspendAbility(4, new ManaCostsImpl("U"), this));
diff --git a/Mage.Sets/src/mage/sets/timespiral/GauntletOfPower.java b/Mage.Sets/src/mage/sets/timespiral/GauntletOfPower.java
index fec94eac07e..9cbcd3812c5 100644
--- a/Mage.Sets/src/mage/sets/timespiral/GauntletOfPower.java
+++ b/Mage.Sets/src/mage/sets/timespiral/GauntletOfPower.java
@@ -116,7 +116,7 @@ class GauntletOfPowerEffect1 extends ContinuousEffectImpl {
ObjectColor color = (ObjectColor) game.getState().getValue(source.getSourceId() + "_color");
if (color != null) {
for (Permanent perm: game.getBattlefield().getActivePermanents(filter, source.getControllerId(), source.getSourceId(), game)) {
- if (perm.getColor().contains(color)) {
+ if (perm.getColor(game).contains(color)) {
perm.addPower(1);
perm.addToughness(1);
}
diff --git a/Mage.Sets/src/mage/sets/timespiral/GhostflameSliver.java b/Mage.Sets/src/mage/sets/timespiral/GhostflameSliver.java
index 7b1e4be27d7..ffbf3229a90 100644
--- a/Mage.Sets/src/mage/sets/timespiral/GhostflameSliver.java
+++ b/Mage.Sets/src/mage/sets/timespiral/GhostflameSliver.java
@@ -87,7 +87,7 @@ class GhostflameSliverEffect extends ContinuousEffectImpl {
public boolean apply(Game game, Ability source) {
for (Permanent perm : game.getBattlefield().getActivePermanents(source.getControllerId(), game)) {
if (filter.match(perm, game)) {
- perm.getColor().setColor(colorless);
+ perm.getColor(game).setColor(colorless);
}
}
return true;
diff --git a/Mage.Sets/src/mage/sets/urzaslegacy/ThranLens.java b/Mage.Sets/src/mage/sets/urzaslegacy/ThranLens.java
index 254189c4f63..7dfb1ef2d11 100644
--- a/Mage.Sets/src/mage/sets/urzaslegacy/ThranLens.java
+++ b/Mage.Sets/src/mage/sets/urzaslegacy/ThranLens.java
@@ -74,7 +74,7 @@ public class ThranLens extends CardImpl {
@Override
public boolean apply(Game game, Ability source) {
for (Permanent perm: game.getBattlefield().getActivePermanents(source.getControllerId(), game)) {
- perm.getColor().setColor(colorless);
+ perm.getColor(game).setColor(colorless);
}
return true;
}
diff --git a/Mage.Sets/src/mage/sets/urzassaga/Bereavement.java b/Mage.Sets/src/mage/sets/urzassaga/Bereavement.java
index 780d76549e3..84c1d1371e4 100644
--- a/Mage.Sets/src/mage/sets/urzassaga/Bereavement.java
+++ b/Mage.Sets/src/mage/sets/urzassaga/Bereavement.java
@@ -84,7 +84,7 @@ class BereavementTriggeredAbility extends TriggeredAbilityImpl {
public boolean checkTrigger(GameEvent event, Game game) {
if (event.getType() == GameEvent.EventType.ZONE_CHANGE && ((ZoneChangeEvent)event).isDiesEvent()) {
Permanent permanent = (Permanent) game.getLastKnownInformation(event.getTargetId(), Zone.BATTLEFIELD);
- if (permanent != null && permanent.getCardType().contains(CardType.CREATURE) && permanent.getColor().isGreen()) {
+ if (permanent != null && permanent.getCardType().contains(CardType.CREATURE) && permanent.getColor(game).isGreen()) {
this.getEffects().get(0).setTargetPointer(new FixedTarget(permanent.getControllerId()));
return true;
}
diff --git a/Mage.Sets/src/mage/sets/urzassaga/Persecute.java b/Mage.Sets/src/mage/sets/urzassaga/Persecute.java
index dccaf70e7d6..5c83ad2eeaf 100644
--- a/Mage.Sets/src/mage/sets/urzassaga/Persecute.java
+++ b/Mage.Sets/src/mage/sets/urzassaga/Persecute.java
@@ -103,7 +103,7 @@ class PersecuteEffect extends OneShotEffect {
controller.revealCards("Persecute", hand, game);
Set cards = hand.getCards(game);
for (Card card : cards) {
- if (card != null && card.getColor().shares(choice.getColor())) {
+ if (card != null && card.getColor(game).shares(choice.getColor())) {
controller.discard(card, source, game);
}
}
diff --git a/Mage.Sets/src/mage/sets/urzassaga/TitaniasChosen.java b/Mage.Sets/src/mage/sets/urzassaga/TitaniasChosen.java
index ccb6947cae5..98192bb6e63 100644
--- a/Mage.Sets/src/mage/sets/urzassaga/TitaniasChosen.java
+++ b/Mage.Sets/src/mage/sets/urzassaga/TitaniasChosen.java
@@ -91,7 +91,7 @@ class TitaniasChosenAbility extends TriggeredAbilityImpl {
public boolean checkTrigger(GameEvent event, Game game) {
if (event.getType() == EventType.SPELL_CAST) {
Spell spell = game.getStack().getSpell(event.getTargetId());
- if (spell != null && spell.getColor().isGreen()) {
+ if (spell != null && spell.getColor(game).isGreen()) {
return true;
}
}
diff --git a/Mage.Sets/src/mage/sets/vintagemasters/VolrathsShapeshifter.java b/Mage.Sets/src/mage/sets/vintagemasters/VolrathsShapeshifter.java
index cd9b949838f..98aeac7b4a3 100644
--- a/Mage.Sets/src/mage/sets/vintagemasters/VolrathsShapeshifter.java
+++ b/Mage.Sets/src/mage/sets/vintagemasters/VolrathsShapeshifter.java
@@ -105,7 +105,7 @@ class VolrathsShapeshifterEffect extends ContinuousEffectImpl {
permanent.getPower().setValue(card.getPower().getValue());
permanent.getToughness().setValue(card.getToughness().getValue());
- permanent.getColor().setColor(card.getColor());
+ permanent.getColor(game).setColor(card.getColor(game));
permanent.getManaCost().clear();
permanent.getManaCost().add(card.getManaCost());
permanent.getCardType().clear();
diff --git a/Mage.Sets/src/mage/sets/visions/ElephantGrass.java b/Mage.Sets/src/mage/sets/visions/ElephantGrass.java
index 11f14fe5eb5..bbbe371753c 100644
--- a/Mage.Sets/src/mage/sets/visions/ElephantGrass.java
+++ b/Mage.Sets/src/mage/sets/visions/ElephantGrass.java
@@ -90,7 +90,7 @@ class ElephantGrassReplacementEffect extends ReplacementEffectImpl {
public boolean applies(GameEvent event, Ability source, Game game) {
if (event.getTargetId().equals(source.getControllerId()) ) {
Permanent creature = game.getPermanent(event.getSourceId());
- if(creature != null && creature.getColor().isBlack()){
+ if(creature != null && creature.getColor(game).isBlack()){
return true;
}
}
@@ -145,7 +145,7 @@ class ElephantGrassReplacementEffect2 extends ReplacementEffectImpl {
public boolean applies(GameEvent event, Ability source, Game game) {
if (event.getTargetId().equals(source.getControllerId()) ) {
Permanent creature = game.getPermanent(event.getSourceId());
- if (creature != null && !creature.getColor().isBlack()) {
+ if (creature != null && !creature.getColor(game).isBlack()) {
Player attackedPlayer = game.getPlayer(event.getTargetId());
if (attackedPlayer != null) {
// only if a player is attacked. Attacking a planeswalker is free
diff --git a/Mage.Sets/src/mage/sets/worldwake/KorFirewalker.java b/Mage.Sets/src/mage/sets/worldwake/KorFirewalker.java
index 3e9552fac4a..9e46e536a43 100644
--- a/Mage.Sets/src/mage/sets/worldwake/KorFirewalker.java
+++ b/Mage.Sets/src/mage/sets/worldwake/KorFirewalker.java
@@ -100,7 +100,7 @@ class KorFirewalkerAbility extends TriggeredAbilityImpl {
public boolean checkTrigger(GameEvent event, Game game) {
if (event.getType() == GameEvent.EventType.SPELL_CAST) {
Spell spell = game.getStack().getSpell(event.getTargetId());
- if (spell != null && spell.getColor().isRed()) {
+ if (spell != null && spell.getColor(game).isRed()) {
return true;
}
}
diff --git a/Mage.Sets/src/mage/sets/worldwake/PermafrostTrap.java b/Mage.Sets/src/mage/sets/worldwake/PermafrostTrap.java
index 27d3d4f059e..0dd3fc178fd 100644
--- a/Mage.Sets/src/mage/sets/worldwake/PermafrostTrap.java
+++ b/Mage.Sets/src/mage/sets/worldwake/PermafrostTrap.java
@@ -102,7 +102,7 @@ class PermafrostTrapWatcher extends Watcher {
}
if (event.getType() == GameEvent.EventType.ENTERS_THE_BATTLEFIELD) {
Permanent perm = game.getPermanent(event.getTargetId());
- if (perm.getCardType().contains(CardType.CREATURE) && perm.getColor().contains(ObjectColor.GREEN) && !perm.getControllerId().equals(controllerId)) {
+ if (perm.getCardType().contains(CardType.CREATURE) && perm.getColor(game).contains(ObjectColor.GREEN) && !perm.getControllerId().equals(controllerId)) {
condition = true;
}
}
diff --git a/Mage.Sets/src/mage/sets/worldwake/RefractionTrap.java b/Mage.Sets/src/mage/sets/worldwake/RefractionTrap.java
index 8064807857f..27641883e14 100644
--- a/Mage.Sets/src/mage/sets/worldwake/RefractionTrap.java
+++ b/Mage.Sets/src/mage/sets/worldwake/RefractionTrap.java
@@ -106,7 +106,7 @@ class RefractionTrapWatcher extends Watcher {
if (event.getType() == GameEvent.EventType.SPELL_CAST
&& game.getOpponents(controllerId).contains(event.getPlayerId())) {
Spell spell = game.getStack().getSpell(event.getTargetId());
- if (spell.getColor().isRed()) {
+ if (spell.getColor(game).isRed()) {
if (spell.getCardType().contains(CardType.INSTANT)
|| spell.getCardType().contains(CardType.SORCERY)) {
condition = true;
diff --git a/Mage.Sets/src/mage/sets/worldwake/RicochetTrap.java b/Mage.Sets/src/mage/sets/worldwake/RicochetTrap.java
index 573cb143468..f831a87dc80 100644
--- a/Mage.Sets/src/mage/sets/worldwake/RicochetTrap.java
+++ b/Mage.Sets/src/mage/sets/worldwake/RicochetTrap.java
@@ -110,7 +110,7 @@ class RicochetTrapWatcher extends Watcher {
if (event.getType() == EventType.SPELL_CAST
&& game.getOpponents(controllerId).contains(event.getPlayerId())) {
Spell spell = game.getStack().getSpell(event.getTargetId());
- if (spell.getColor().isBlue()) {
+ if (spell.getColor(game).isBlue()) {
condition = true;
}
}
diff --git a/Mage.Sets/src/mage/sets/worldwake/SlingbowTrap.java b/Mage.Sets/src/mage/sets/worldwake/SlingbowTrap.java
index c91558c586a..6d3fa2bceeb 100644
--- a/Mage.Sets/src/mage/sets/worldwake/SlingbowTrap.java
+++ b/Mage.Sets/src/mage/sets/worldwake/SlingbowTrap.java
@@ -101,7 +101,7 @@ class SlingbowTrapAlternativeCost extends AlternativeCostImpl {
List attackers = game.getCombat().getAttackers();
for (UUID creatureId : attackers) {
Permanent creature = game.getPermanent(creatureId);
- if (creature.getColor().isBlack()
+ if (creature.getColor(game).isBlack()
&& creature.getAbilities().contains(FlyingAbility.getInstance())) {
return true;
}
diff --git a/Mage.Sets/src/mage/sets/zendikar/ChandraAblaze.java b/Mage.Sets/src/mage/sets/zendikar/ChandraAblaze.java
index fb8c03d134b..e7451fd3a29 100644
--- a/Mage.Sets/src/mage/sets/zendikar/ChandraAblaze.java
+++ b/Mage.Sets/src/mage/sets/zendikar/ChandraAblaze.java
@@ -145,7 +145,7 @@ class ChandraAblazeEffect2 extends OneShotEffect {
@Override
public boolean apply(Game game, Ability source) {
Card card = (Card) this.getValue("discardedCard");
- if (card != null && card.getColor().isRed()) {
+ if (card != null && card.getColor(game).isRed()) {
Permanent permanent = game.getPermanent(targetPointer.getFirst(game, source));
if (permanent != null) {
permanent.damage(4, source.getSourceId(), game, false, true);
diff --git a/Mage.Sets/src/mage/sets/zendikar/IonaShieldOfEmeria.java b/Mage.Sets/src/mage/sets/zendikar/IonaShieldOfEmeria.java
index 8bfef2890eb..6bf1a7ce352 100644
--- a/Mage.Sets/src/mage/sets/zendikar/IonaShieldOfEmeria.java
+++ b/Mage.Sets/src/mage/sets/zendikar/IonaShieldOfEmeria.java
@@ -151,7 +151,7 @@ class IonaShieldOfEmeriaReplacementEffect extends ContinuousRuleModifyingEffectI
if (game.getOpponents(source.getControllerId()).contains(event.getPlayerId()) ) {
ObjectColor chosenColor = (ObjectColor) game.getState().getValue(source.getSourceId() + "_color");
Card card = game.getCard(event.getSourceId());
- if (chosenColor != null && card != null && card.getColor().contains(chosenColor)) {
+ if (chosenColor != null && card != null && card.getColor(game).contains(chosenColor)) {
return true;
}
}
diff --git a/Mage.Tests/src/test/java/org/mage/test/AI/basic/CastCreaturesTest.java b/Mage.Tests/src/test/java/org/mage/test/AI/basic/CastCreaturesTest.java
index f7b3649f421..f65e7655177 100644
--- a/Mage.Tests/src/test/java/org/mage/test/AI/basic/CastCreaturesTest.java
+++ b/Mage.Tests/src/test/java/org/mage/test/AI/basic/CastCreaturesTest.java
@@ -29,6 +29,7 @@ package org.mage.test.AI.basic;
import mage.constants.PhaseStep;
import mage.constants.Zone;
+import org.junit.Ignore;
import org.junit.Test;
import org.mage.test.serverside.base.CardTestPlayerBaseAI;
@@ -51,4 +52,33 @@ public class CastCreaturesTest extends CardTestPlayerBaseAI {
assertPermanentCount(playerA, "Silvercoat Lion", 1);
}
+
+ @Test
+ public void testSimpleCast2() {
+ addCard(Zone.HAND, playerA, "Silvercoat Lion");
+ addCard(Zone.HAND, playerA, "Silvercoat Lion");
+ addCard(Zone.BATTLEFIELD, playerA, "Plains", 2);
+ addCard(Zone.BATTLEFIELD, playerA, "Mountain", 2);
+
+ setStopAt(1, PhaseStep.BEGIN_COMBAT);
+ execute();
+
+ assertPermanentCount(playerA, "Silvercoat Lion", 2);
+ }
+
+ @Test
+ @Ignore // AI should cast Myr Enforcer -> Check why it does not
+ public void testSimpleCast3() {
+ // Affinity for artifacts (This spell costs less to cast for each artifact you control.)
+ addCard(Zone.HAND, playerA, "Myr Enforcer");
+ // {T}: Add to your mana pool.
+ // {T}, {1}, Sacrifice Mind Stone: Draw a card.
+ addCard(Zone.BATTLEFIELD, playerA, "Mind Stone", 3);
+ addCard(Zone.BATTLEFIELD, playerA, "Mountain", 1);
+
+ setStopAt(1, PhaseStep.BEGIN_COMBAT);
+ execute();
+
+ assertPermanentCount(playerA, "Myr Enforcer", 1);
+ }
}
diff --git a/Mage.Tests/src/test/java/org/mage/test/cards/continuous/PaintersServantTest.java b/Mage.Tests/src/test/java/org/mage/test/cards/continuous/PaintersServantTest.java
new file mode 100644
index 00000000000..9ad87ebb8c5
--- /dev/null
+++ b/Mage.Tests/src/test/java/org/mage/test/cards/continuous/PaintersServantTest.java
@@ -0,0 +1,157 @@
+/*
+ * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification, are
+ * permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice, this list of
+ * conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright notice, this list
+ * of conditions and the following disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * The views and conclusions contained in the software and documentation are those of the
+ * authors and should not be interpreted as representing official policies, either expressed
+ * or implied, of BetaSteward_at_googlemail.com.
+ */
+package org.mage.test.cards.continuous;
+
+import mage.cards.Card;
+import mage.constants.PhaseStep;
+import mage.constants.Zone;
+import mage.game.permanent.Permanent;
+import org.junit.Assert;
+import org.junit.Test;
+import org.mage.test.serverside.base.CardTestPlayerBase;
+
+/**
+ *
+ * @author LevelX2
+ */
+public class PaintersServantTest extends CardTestPlayerBase {
+
+ /**
+ * Test that the added color is applied as Painter's Servant is on the battlefield
+ */
+ @Test
+ public void testColorSet() {
+ // As Painter's Servant enters the battlefield, choose a color.
+ // All cards that aren't on the battlefield, spells, and permanents are the chosen color in addition to their other colors.
+ addCard(Zone.HAND, playerA, "Painter's Servant", 1);
+ addCard(Zone.BATTLEFIELD, playerA, "Swamp", 2);
+
+ addCard(Zone.HAND, playerA, "Lightning Bolt");
+ addCard(Zone.BATTLEFIELD, playerA, "Silvercoat Lion");
+ addCard(Zone.GRAVEYARD, playerA, "Silvercoat Lion");
+
+ addCard(Zone.HAND, playerB, "Lightning Bolt");
+ addCard(Zone.BATTLEFIELD, playerB, "Silvercoat Lion");
+ addCard(Zone.GRAVEYARD, playerA, "Silvercoat Lion");
+
+ castSpell(1, PhaseStep.PRECOMBAT_MAIN, playerA, "Painter's Servant");
+ setChoice(playerA, "Blue");
+
+ setStopAt(1, PhaseStep.BEGIN_COMBAT);
+ execute();
+
+ assertPermanentCount(playerA, "Painter's Servant", 1);
+
+ Permanent silvercoatLion = getPermanent("Silvercoat Lion", playerA);
+ Assert.assertEquals(true, silvercoatLion.getColor(currentGame).isWhite());
+ Assert.assertEquals(true, silvercoatLion.getColor(currentGame).isBlue());
+
+ silvercoatLion = getPermanent("Silvercoat Lion", playerB);
+ Assert.assertEquals(true, silvercoatLion.getColor(currentGame).isWhite());
+ Assert.assertEquals(true, silvercoatLion.getColor(currentGame).isBlue());
+
+ for(Card card: playerA.getHand().getCards(currentGame)) {
+ Assert.assertEquals(true, card.getColor(currentGame).isRed());
+ Assert.assertEquals(true, card.getColor(currentGame).isBlue());
+ }
+ for(Card card: playerB.getHand().getCards(currentGame)) {
+ Assert.assertEquals(true, card.getColor(currentGame).isRed());
+ Assert.assertEquals(true, card.getColor(currentGame).isBlue());
+ }
+ for(Card card: playerA.getGraveyard().getCards(currentGame)) {
+ Assert.assertEquals(true, card.getColor(currentGame).isWhite());
+ Assert.assertEquals(true, card.getColor(currentGame).isBlue());
+ }
+ for(Card card: playerB.getGraveyard().getCards(currentGame)) {
+ Assert.assertEquals(true, card.getColor(currentGame).isWhite());
+ Assert.assertEquals(true, card.getColor(currentGame).isBlue());
+ }
+
+ }
+
+ /**
+ * Test that the added color is no longer applied as Painter's Servant has left the battlefield
+ */
+ @Test
+ public void testColorReset() {
+ // As Painter's Servant enters the battlefield, choose a color.
+ // All cards that aren't on the battlefield, spells, and permanents are the chosen color in addition to their other colors.
+ addCard(Zone.HAND, playerA, "Painter's Servant", 1);
+ addCard(Zone.BATTLEFIELD, playerA, "Swamp", 2);
+
+ addCard(Zone.HAND, playerA, "Lightning Bolt");
+ addCard(Zone.BATTLEFIELD, playerA, "Silvercoat Lion");
+ addCard(Zone.GRAVEYARD, playerA, "Silvercoat Lion");
+
+ addCard(Zone.HAND, playerB, "Lightning Bolt",2);
+ addCard(Zone.BATTLEFIELD, playerB, "Silvercoat Lion");
+ addCard(Zone.GRAVEYARD, playerB, "Silvercoat Lion");
+ addCard(Zone.BATTLEFIELD, playerB, "Mountain", 1);
+
+ castSpell(1, PhaseStep.PRECOMBAT_MAIN, playerA, "Painter's Servant");
+ setChoice(playerA, "Blue");
+
+ castSpell(1, PhaseStep.POSTCOMBAT_MAIN, playerB, "Lightning Bolt", "Painter's Servant");
+
+ setStopAt(1, PhaseStep.END_TURN);
+ execute();
+
+ assertGraveyardCount(playerA, "Painter's Servant", 1);
+
+ Permanent silvercoatLion = getPermanent("Silvercoat Lion", playerA);
+ Assert.assertEquals(true, silvercoatLion.getColor(currentGame).isWhite());
+ Assert.assertEquals(false, silvercoatLion.getColor(currentGame).isBlue());
+
+ silvercoatLion = getPermanent("Silvercoat Lion", playerB);
+ Assert.assertEquals(true, silvercoatLion.getColor(currentGame).isWhite());
+ Assert.assertEquals(false, silvercoatLion.getColor(currentGame).isBlue());
+
+ for(Card card: playerA.getHand().getCards(currentGame)) {
+ Assert.assertEquals(true, card.getColor(currentGame).isRed());
+ Assert.assertEquals(false, card.getColor(currentGame).isBlue());
+ }
+ for(Card card: playerB.getHand().getCards(currentGame)) {
+ Assert.assertEquals(true, card.getColor(currentGame).isRed());
+ Assert.assertEquals(false, card.getColor(currentGame).isBlue());
+ }
+ for(Card card: playerA.getGraveyard().getCards(currentGame)) {
+ if(card.getName().equals("Silvercoat Lion")) {
+ Assert.assertEquals(true, card.getColor(currentGame).isWhite());
+ Assert.assertEquals(false, card.getColor(currentGame).isBlue());
+ }
+ }
+ for(Card card: playerB.getGraveyard().getCards(currentGame)) {
+ if(card.getName().equals("Silvercoat Lion")) {
+ Assert.assertEquals(true, card.getColor(currentGame).isWhite());
+ Assert.assertEquals(false, card.getColor(currentGame).isBlue());
+ }
+ }
+
+ }
+
+}
diff --git a/Mage/src/mage/MageObject.java b/Mage/src/mage/MageObject.java
index 0694e0dfd7f..c2bd51447c8 100644
--- a/Mage/src/mage/MageObject.java
+++ b/Mage/src/mage/MageObject.java
@@ -26,7 +26,7 @@ public interface MageObject extends MageItem, Serializable {
Abilities getAbilities();
boolean hasAbility(UUID abilityId, Game game);
- ObjectColor getColor();
+ ObjectColor getColor(Game game);
ManaCosts getManaCost();
MageInt getPower();
diff --git a/Mage/src/mage/MageObjectImpl.java b/Mage/src/mage/MageObjectImpl.java
index 075dfe1dc62..1d0c6400bcb 100644
--- a/Mage/src/mage/MageObjectImpl.java
+++ b/Mage/src/mage/MageObjectImpl.java
@@ -157,7 +157,7 @@ public abstract class MageObjectImpl implements MageObject {
}
@Override
- public ObjectColor getColor() {
+ public ObjectColor getColor(Game game) {
return color;
}
diff --git a/Mage/src/mage/abilities/effects/common/CopyEffect.java b/Mage/src/mage/abilities/effects/common/CopyEffect.java
index c9eeb76f353..bbb1d6ba0ba 100644
--- a/Mage/src/mage/abilities/effects/common/CopyEffect.java
+++ b/Mage/src/mage/abilities/effects/common/CopyEffect.java
@@ -97,7 +97,7 @@ public class CopyEffect extends ContinuousEffectImpl {
return false;
}
permanent.setName(target.getName());
- permanent.getColor().setColor(target.getColor());
+ permanent.getColor(game).setColor(target.getColor(game));
permanent.getManaCost().clear();
permanent.getManaCost().add(target.getManaCost());
permanent.getCardType().clear();
diff --git a/Mage/src/mage/abilities/effects/common/CopyTokenEffect.java b/Mage/src/mage/abilities/effects/common/CopyTokenEffect.java
index 24b30457dda..c614624f4b9 100644
--- a/Mage/src/mage/abilities/effects/common/CopyTokenEffect.java
+++ b/Mage/src/mage/abilities/effects/common/CopyTokenEffect.java
@@ -29,7 +29,7 @@ public class CopyTokenEffect extends ContinuousEffectImpl {
public boolean apply(Game game, Ability source) {
Permanent permanent = game.getPermanent(source.getSourceId());
permanent.setName(token.getName());
- permanent.getColor().setColor(token.getColor());
+ permanent.getColor(game).setColor(token.getColor(game));
permanent.getCardType().clear();
for (CardType type: token.getCardType()) {
permanent.getCardType().add(type);
diff --git a/Mage/src/mage/abilities/effects/common/continuous/AddCardColorAttachedEffect.java b/Mage/src/mage/abilities/effects/common/continuous/AddCardColorAttachedEffect.java
index 93e1b523160..b81b21de6f6 100644
--- a/Mage/src/mage/abilities/effects/common/continuous/AddCardColorAttachedEffect.java
+++ b/Mage/src/mage/abilities/effects/common/continuous/AddCardColorAttachedEffect.java
@@ -63,15 +63,15 @@ public class AddCardColorAttachedEffect extends ContinuousEffectImpl {
Permanent target = game.getPermanent(equipment.getAttachedTo());
if (target != null) {
if (addedColor.isBlack())
- target.getColor().setBlack(true);
+ target.getColor(game).setBlack(true);
if (addedColor.isBlue())
- target.getColor().setBlue(true);
+ target.getColor(game).setBlue(true);
if (addedColor.isWhite())
- target.getColor().setWhite(true);
+ target.getColor(game).setWhite(true);
if (addedColor.isGreen())
- target.getColor().setGreen(true);
+ target.getColor(game).setGreen(true);
if (addedColor.isRed())
- target.getColor().setRed(true);
+ target.getColor(game).setRed(true);
}
}
return true;
diff --git a/Mage/src/mage/abilities/effects/common/continuous/BecomesBasicLandEnchantedEffect.java b/Mage/src/mage/abilities/effects/common/continuous/BecomesBasicLandEnchantedEffect.java
index 27c18a29b57..068fee171e2 100644
--- a/Mage/src/mage/abilities/effects/common/continuous/BecomesBasicLandEnchantedEffect.java
+++ b/Mage/src/mage/abilities/effects/common/continuous/BecomesBasicLandEnchantedEffect.java
@@ -85,11 +85,11 @@ public class BecomesBasicLandEnchantedEffect extends ContinuousEffectImpl {
if (permanent != null) {
switch (layer) {
case ColorChangingEffects_5:
- permanent.getColor().setWhite(false);
- permanent.getColor().setGreen(false);
- permanent.getColor().setBlack(false);
- permanent.getColor().setBlue(false);
- permanent.getColor().setRed(false);
+ permanent.getColor(game).setWhite(false);
+ permanent.getColor(game).setGreen(false);
+ permanent.getColor(game).setBlack(false);
+ permanent.getColor(game).setBlue(false);
+ permanent.getColor(game).setRed(false);
break;
case AbilityAddingRemovingEffects_6:
permanent.removeAllAbilities(source.getSourceId(), game);
diff --git a/Mage/src/mage/abilities/effects/common/continuous/BecomesColorTargetEffect.java b/Mage/src/mage/abilities/effects/common/continuous/BecomesColorTargetEffect.java
index 6c74ef7e58c..b93a7cfff53 100644
--- a/Mage/src/mage/abilities/effects/common/continuous/BecomesColorTargetEffect.java
+++ b/Mage/src/mage/abilities/effects/common/continuous/BecomesColorTargetEffect.java
@@ -107,7 +107,7 @@ public class BecomesColorTargetEffect extends ContinuousEffectImpl {
MageObject o = game.getObject(targetId);
if (o != null) {
if (o instanceof Permanent || o instanceof StackObject) {
- o.getColor().setColor(objectColor);
+ o.getColor(game).setColor(objectColor);
result = true;
}
}
diff --git a/Mage/src/mage/abilities/effects/common/continuous/BecomesCreatureAllEffect.java b/Mage/src/mage/abilities/effects/common/continuous/BecomesCreatureAllEffect.java
index 50802b7894e..f891657cff5 100644
--- a/Mage/src/mage/abilities/effects/common/continuous/BecomesCreatureAllEffect.java
+++ b/Mage/src/mage/abilities/effects/common/continuous/BecomesCreatureAllEffect.java
@@ -93,8 +93,8 @@ public class BecomesCreatureAllEffect extends ContinuousEffectImpl {
break;
case ColorChangingEffects_5:
if (sublayer == SubLayer.NA) {
- if (token.getColor().hasColor())
- permanent.getColor().setColor(token.getColor());
+ if (token.getColor(game).hasColor())
+ permanent.getColor(game).setColor(token.getColor(game));
}
break;
case AbilityAddingRemovingEffects_6:
diff --git a/Mage/src/mage/abilities/effects/common/continuous/BecomesCreatureAttachedEffect.java b/Mage/src/mage/abilities/effects/common/continuous/BecomesCreatureAttachedEffect.java
index 89f97a867d5..329ed1d78e4 100644
--- a/Mage/src/mage/abilities/effects/common/continuous/BecomesCreatureAttachedEffect.java
+++ b/Mage/src/mage/abilities/effects/common/continuous/BecomesCreatureAttachedEffect.java
@@ -115,14 +115,14 @@ public class BecomesCreatureAttachedEffect extends ContinuousEffectImpl {
case ColorChangingEffects_5:
if (sublayer == SubLayer.NA) {
if (loseOther) {
- permanent.getColor().setBlack(false);
- permanent.getColor().setGreen(false);
- permanent.getColor().setBlue(false);
- permanent.getColor().setWhite(false);
- permanent.getColor().setRed(false);
+ permanent.getColor(game).setBlack(false);
+ permanent.getColor(game).setGreen(false);
+ permanent.getColor(game).setBlue(false);
+ permanent.getColor(game).setWhite(false);
+ permanent.getColor(game).setRed(false);
}
- if (token.getColor().hasColor()) {
- permanent.getColor().setColor(token.getColor());
+ if (token.getColor(game).hasColor()) {
+ permanent.getColor(game).setColor(token.getColor(game));
}
}
break;
diff --git a/Mage/src/mage/abilities/effects/common/continuous/BecomesCreatureSourceEffect.java b/Mage/src/mage/abilities/effects/common/continuous/BecomesCreatureSourceEffect.java
index ee60cdf57eb..927f8974466 100644
--- a/Mage/src/mage/abilities/effects/common/continuous/BecomesCreatureSourceEffect.java
+++ b/Mage/src/mage/abilities/effects/common/continuous/BecomesCreatureSourceEffect.java
@@ -105,8 +105,8 @@ public class BecomesCreatureSourceEffect extends ContinuousEffectImpl implements
break;
case ColorChangingEffects_5:
if (sublayer == SubLayer.NA) {
- if (token.getColor().hasColor()) {
- permanent.getColor().setColor(token.getColor());
+ if (token.getColor(game).hasColor()) {
+ permanent.getColor(game).setColor(token.getColor(game));
}
}
break;
diff --git a/Mage/src/mage/abilities/effects/common/continuous/BecomesCreatureTargetEffect.java b/Mage/src/mage/abilities/effects/common/continuous/BecomesCreatureTargetEffect.java
index 8bee7f94b8f..10c22909b9d 100644
--- a/Mage/src/mage/abilities/effects/common/continuous/BecomesCreatureTargetEffect.java
+++ b/Mage/src/mage/abilities/effects/common/continuous/BecomesCreatureTargetEffect.java
@@ -111,14 +111,14 @@ public class BecomesCreatureTargetEffect extends ContinuousEffectImpl {
case ColorChangingEffects_5:
if (sublayer == SubLayer.NA) {
if (loseAllAbilities) {
- permanent.getColor().setBlack(false);
- permanent.getColor().setGreen(false);
- permanent.getColor().setBlue(false);
- permanent.getColor().setWhite(false);
- permanent.getColor().setBlack(false);
+ permanent.getColor(game).setBlack(false);
+ permanent.getColor(game).setGreen(false);
+ permanent.getColor(game).setBlue(false);
+ permanent.getColor(game).setWhite(false);
+ permanent.getColor(game).setBlack(false);
}
- if (token.getColor().hasColor()) {
- permanent.getColor().setColor(token.getColor());
+ if (token.getColor(game).hasColor()) {
+ permanent.getColor(game).setColor(token.getColor(game));
}
}
break;
diff --git a/Mage/src/mage/abilities/effects/common/continuous/BecomesFaceDownCreatureAllEffect.java b/Mage/src/mage/abilities/effects/common/continuous/BecomesFaceDownCreatureAllEffect.java
index 3896cd97f6e..3abed713076 100644
--- a/Mage/src/mage/abilities/effects/common/continuous/BecomesFaceDownCreatureAllEffect.java
+++ b/Mage/src/mage/abilities/effects/common/continuous/BecomesFaceDownCreatureAllEffect.java
@@ -118,7 +118,7 @@ public class BecomesFaceDownCreatureAllEffect extends ContinuousEffectImpl imple
permanent.getManaCost().clear();
break;
case ColorChangingEffects_5:
- permanent.getColor().setColor(new ObjectColor());
+ permanent.getColor(game).setColor(new ObjectColor());
break;
case AbilityAddingRemovingEffects_6:
Card card = game.getCard(permanent.getId()); //
diff --git a/Mage/src/mage/abilities/effects/common/continuous/BecomesFaceDownCreatureEffect.java b/Mage/src/mage/abilities/effects/common/continuous/BecomesFaceDownCreatureEffect.java
index 14bb52a456b..cd0831f27df 100644
--- a/Mage/src/mage/abilities/effects/common/continuous/BecomesFaceDownCreatureEffect.java
+++ b/Mage/src/mage/abilities/effects/common/continuous/BecomesFaceDownCreatureEffect.java
@@ -175,7 +175,7 @@ public class BecomesFaceDownCreatureEffect extends ContinuousEffectImpl implemen
permanent.getSubtype().clear();
break;
case ColorChangingEffects_5:
- permanent.getColor().setColor(new ObjectColor());
+ permanent.getColor(game).setColor(new ObjectColor());
break;
case AbilityAddingRemovingEffects_6:
Card card = game.getCard(permanent.getId()); //
diff --git a/Mage/src/mage/abilities/effects/common/continuous/SetCardColorAttachedEffect.java b/Mage/src/mage/abilities/effects/common/continuous/SetCardColorAttachedEffect.java
index 9cdf7026418..dd32ebda2fb 100644
--- a/Mage/src/mage/abilities/effects/common/continuous/SetCardColorAttachedEffect.java
+++ b/Mage/src/mage/abilities/effects/common/continuous/SetCardColorAttachedEffect.java
@@ -61,7 +61,7 @@ public class SetCardColorAttachedEffect extends ContinuousEffectImpl {
if (equipment != null && equipment.getAttachedTo() != null) {
Permanent target = game.getPermanent(equipment.getAttachedTo());
if (target != null) {
- target.getColor().setColor(setColor);
+ target.getColor(game).setColor(setColor);
return true;
}
}
diff --git a/Mage/src/mage/abilities/effects/common/continuous/SetCardColorSourceEffect.java b/Mage/src/mage/abilities/effects/common/continuous/SetCardColorSourceEffect.java
index 85340707a5b..e45ed9f9a42 100644
--- a/Mage/src/mage/abilities/effects/common/continuous/SetCardColorSourceEffect.java
+++ b/Mage/src/mage/abilities/effects/common/continuous/SetCardColorSourceEffect.java
@@ -75,7 +75,7 @@ public class SetCardColorSourceEffect extends ContinuousEffectImpl {
MageObject o = game.getObject(source.getSourceId());
if (o != null) {
if (o instanceof Permanent || o instanceof StackObject) {
- o.getColor().setColor(setColor);
+ o.getColor(game).setColor(setColor);
}
}
diff --git a/Mage/src/mage/abilities/keyword/ConvokeAbility.java b/Mage/src/mage/abilities/keyword/ConvokeAbility.java
index 9449efcb458..ef920d57d42 100644
--- a/Mage/src/mage/abilities/keyword/ConvokeAbility.java
+++ b/Mage/src/mage/abilities/keyword/ConvokeAbility.java
@@ -207,7 +207,7 @@ class ConvokeEffect extends OneShotEffect {
String manaName;
if (!perm.isTapped() && perm.tap(game)) {
ManaPool manaPool = controller.getManaPool();
- Choice chooseManaType = buildChoice(perm.getColor(), unpaid.getMana());
+ Choice chooseManaType = buildChoice(perm.getColor(game), unpaid.getMana());
if (chooseManaType.getChoices().size() > 0) {
if (chooseManaType.getChoices().size() > 1) {
chooseManaType.getChoices().add("Colorless");
diff --git a/Mage/src/mage/abilities/keyword/FearAbility.java b/Mage/src/mage/abilities/keyword/FearAbility.java
index a860cfd25aa..9324251eb86 100644
--- a/Mage/src/mage/abilities/keyword/FearAbility.java
+++ b/Mage/src/mage/abilities/keyword/FearAbility.java
@@ -91,7 +91,7 @@ class FearEffect extends RestrictionEffect implements MageSingleton {
@Override
public boolean canBeBlocked(Permanent attacker, Permanent blocker, Ability source, Game game) {
- if (blocker.getCardType().contains(CardType.ARTIFACT) || blocker.getColor().isBlack()) {
+ if (blocker.getCardType().contains(CardType.ARTIFACT) || blocker.getColor(game).isBlack()) {
return true;
}
return false;
diff --git a/Mage/src/mage/abilities/keyword/IntimidateAbility.java b/Mage/src/mage/abilities/keyword/IntimidateAbility.java
index c48b166f428..01e8b02bc56 100644
--- a/Mage/src/mage/abilities/keyword/IntimidateAbility.java
+++ b/Mage/src/mage/abilities/keyword/IntimidateAbility.java
@@ -64,7 +64,7 @@ class IntimidateEffect extends RestrictionEffect implements MageSingleton {
if (blocker.getCardType().contains(CardType.ARTIFACT) && (blocker.getCardType().contains(CardType.CREATURE))) {
result = true;
}
- if (attacker.getColor().shares(blocker.getColor())) {
+ if (attacker.getColor(game).shares(blocker.getColor(game))) {
result = true;
}
return result;
diff --git a/Mage/src/mage/abilities/keyword/MorphAbility.java b/Mage/src/mage/abilities/keyword/MorphAbility.java
index d6ec2347383..362be6c6191 100644
--- a/Mage/src/mage/abilities/keyword/MorphAbility.java
+++ b/Mage/src/mage/abilities/keyword/MorphAbility.java
@@ -219,7 +219,7 @@ public class MorphAbility extends StaticAbility implements AlternativeSourceCost
}
}
// change spell colors
- ObjectColor spellColor = spell.getColor();
+ ObjectColor spellColor = spell.getColor(game);
spellColor.setBlack(false);
spellColor.setRed(false);
spellColor.setGreen(false);
@@ -297,7 +297,7 @@ public class MorphAbility extends StaticAbility implements AlternativeSourceCost
mageObject.getPower().initValue(2);
mageObject.getToughness().initValue(2);
mageObject.getAbilities().clear();
- mageObject.getColor().setColor(new ObjectColor());
+ mageObject.getColor(null).setColor(new ObjectColor());
mageObject.setName("");
mageObject.getCardType().clear();
mageObject.getCardType().add(CardType.CREATURE);
diff --git a/Mage/src/mage/abilities/keyword/TransformAbility.java b/Mage/src/mage/abilities/keyword/TransformAbility.java
index 55a97861b70..9b01d319c02 100644
--- a/Mage/src/mage/abilities/keyword/TransformAbility.java
+++ b/Mage/src/mage/abilities/keyword/TransformAbility.java
@@ -69,7 +69,7 @@ public class TransformAbility extends SimpleStaticAbility {
}
permanent.setName(sourceCard.getName());
- permanent.getColor().setColor(sourceCard.getColor());
+ permanent.getColor(game).setColor(sourceCard.getColor(game));
permanent.getManaCost().clear();
permanent.getManaCost().add(sourceCard.getManaCost());
permanent.getCardType().clear();
diff --git a/Mage/src/mage/cards/Card.java b/Mage/src/mage/cards/Card.java
index f89865d773b..91217b0c02a 100644
--- a/Mage/src/mage/cards/Card.java
+++ b/Mage/src/mage/cards/Card.java
@@ -33,6 +33,7 @@ import java.util.List;
import java.util.UUID;
import mage.MageObject;
import mage.Mana;
+import mage.ObjectColor;
import mage.abilities.Abilities;
import mage.abilities.Ability;
import mage.abilities.SpellAbility;
@@ -134,5 +135,5 @@ public interface Card extends MageObject {
*/
Card getMainCard();
- void setZone(Zone zone, Game game);
+ void setZone(Zone zone, Game game);
}
diff --git a/Mage/src/mage/cards/CardImpl.java b/Mage/src/mage/cards/CardImpl.java
index 9458a22fe17..b656ae3bf29 100644
--- a/Mage/src/mage/cards/CardImpl.java
+++ b/Mage/src/mage/cards/CardImpl.java
@@ -36,6 +36,7 @@ import java.util.UUID;
import mage.MageObject;
import mage.MageObjectImpl;
import mage.Mana;
+import mage.ObjectColor;
import mage.abilities.Abilities;
import mage.abilities.AbilitiesImpl;
import mage.abilities.Ability;
@@ -59,6 +60,7 @@ import static mage.constants.Zone.PICK;
import static mage.constants.Zone.STACK;
import mage.counters.Counter;
import mage.counters.Counters;
+import mage.game.CardAttribute;
import mage.game.CardState;
import mage.game.Game;
import mage.game.command.Commander;
@@ -763,5 +765,15 @@ public abstract class CardImpl extends MageObjectImpl implements Card {
public void setSpellAbility(SpellAbility ability) {
spellAbility = ability;
}
-
+
+ @Override
+ public ObjectColor getColor(Game game) {
+ if (game != null) {
+ CardAttribute cardAttribute = game.getState().getCardAttribute(getId());
+ if (cardAttribute != null) {
+ return cardAttribute.getColor();
+ }
+ }
+ return super.getColor(game); //To change body of generated methods, choose Tools | Templates.
+ }
}
diff --git a/Mage/src/mage/cards/repository/CardInfo.java b/Mage/src/mage/cards/repository/CardInfo.java
index 4b1c4905f13..901ab028540 100644
--- a/Mage/src/mage/cards/repository/CardInfo.java
+++ b/Mage/src/mage/cards/repository/CardInfo.java
@@ -132,11 +132,11 @@ public class CardInfo {
this.secondSideName = secondSide.getName();
}
- this.blue = card.getColor().isBlue();
- this.black = card.getColor().isBlack();
- this.green = card.getColor().isGreen();
- this.red = card.getColor().isRed();
- this.white = card.getColor().isWhite();
+ this.blue = card.getColor(null).isBlue();
+ this.black = card.getColor(null).isBlack();
+ this.green = card.getColor(null).isGreen();
+ this.red = card.getColor(null).isRed();
+ this.white = card.getColor(null).isWhite();
this.setTypes(card.getCardType());
this.setSubtypes(card.getSubtype());
diff --git a/Mage/src/mage/filter/predicate/mageobject/ColorPredicate.java b/Mage/src/mage/filter/predicate/mageobject/ColorPredicate.java
index 0eba7899aff..74e5164049d 100644
--- a/Mage/src/mage/filter/predicate/mageobject/ColorPredicate.java
+++ b/Mage/src/mage/filter/predicate/mageobject/ColorPredicate.java
@@ -46,7 +46,7 @@ public class ColorPredicate implements Predicate {
@Override
public boolean apply(MageObject input, Game game) {
- return input.getColor().contains(color);
+ return input.getColor(game).contains(color);
}
@Override
diff --git a/Mage/src/mage/filter/predicate/mageobject/ColorlessPredicate.java b/Mage/src/mage/filter/predicate/mageobject/ColorlessPredicate.java
index 8a7718bf386..fa6b88d4bcd 100644
--- a/Mage/src/mage/filter/predicate/mageobject/ColorlessPredicate.java
+++ b/Mage/src/mage/filter/predicate/mageobject/ColorlessPredicate.java
@@ -39,7 +39,7 @@ public class ColorlessPredicate implements Predicate {
@Override
public boolean apply(MageObject input, Game game) {
- return input.getColor().isColorless();
+ return input.getColor(game).isColorless();
}
@Override
diff --git a/Mage/src/mage/filter/predicate/mageobject/MonocoloredPredicate.java b/Mage/src/mage/filter/predicate/mageobject/MonocoloredPredicate.java
index f6bd95ba51c..dbb0ba54834 100644
--- a/Mage/src/mage/filter/predicate/mageobject/MonocoloredPredicate.java
+++ b/Mage/src/mage/filter/predicate/mageobject/MonocoloredPredicate.java
@@ -39,7 +39,7 @@ public class MonocoloredPredicate implements Predicate {
@Override
public boolean apply(MageObject input, Game game) {
- return 1 == input.getColor().getColorCount();
+ return 1 == input.getColor(game).getColorCount();
}
@Override
diff --git a/Mage/src/mage/filter/predicate/mageobject/MulticoloredPredicate.java b/Mage/src/mage/filter/predicate/mageobject/MulticoloredPredicate.java
index 196ad51753a..6aca6494c25 100644
--- a/Mage/src/mage/filter/predicate/mageobject/MulticoloredPredicate.java
+++ b/Mage/src/mage/filter/predicate/mageobject/MulticoloredPredicate.java
@@ -39,7 +39,7 @@ public class MulticoloredPredicate implements Predicate {
@Override
public boolean apply(MageObject input, Game game) {
- return 1 < input.getColor().getColorCount();
+ return 1 < input.getColor(game).getColorCount();
}
@Override
diff --git a/Mage/src/mage/filter/predicate/mageobject/SharesColorWithSourcePredicate.java b/Mage/src/mage/filter/predicate/mageobject/SharesColorWithSourcePredicate.java
index caf9ae4306a..8633e960971 100644
--- a/Mage/src/mage/filter/predicate/mageobject/SharesColorWithSourcePredicate.java
+++ b/Mage/src/mage/filter/predicate/mageobject/SharesColorWithSourcePredicate.java
@@ -22,7 +22,7 @@ public class SharesColorWithSourcePredicate implements ObjectSourcePlayerPredica
public boolean apply(ObjectSourcePlayer input, Game game) {
MageObject sourceObject = game.getObject(input.getSourceId());
if (sourceObject != null) {
- return input.getObject().getColor().shares(sourceObject.getColor());
+ return input.getObject().getColor(game).shares(sourceObject.getColor(game));
}
return false;
diff --git a/Mage/src/mage/game/CardAttribute.java b/Mage/src/mage/game/CardAttribute.java
new file mode 100644
index 00000000000..95b4659ab7d
--- /dev/null
+++ b/Mage/src/mage/game/CardAttribute.java
@@ -0,0 +1,29 @@
+/*
+ * To change this license header, choose License Headers in Project Properties.
+ * To change this template file, choose Tools | Templates
+ * and open the template in the editor.
+ */
+package mage.game;
+
+import java.io.Serializable;
+import mage.ObjectColor;
+import mage.cards.Card;
+
+/**
+ * This class saves changed attributes of cards (e.g. in graveyard, exile or player hands or libraries).
+ *
+ * @author LevelX2
+ */
+public class CardAttribute implements Serializable {
+
+ protected ObjectColor color;
+
+ public CardAttribute(Card card) {
+ color = card.getColor(null).copy();
+ }
+
+ public ObjectColor getColor() {
+ return color;
+ }
+
+}
diff --git a/Mage/src/mage/game/GameState.java b/Mage/src/mage/game/GameState.java
index 7d6d7eb7f8d..ebfdc555a19 100644
--- a/Mage/src/mage/game/GameState.java
+++ b/Mage/src/mage/game/GameState.java
@@ -109,6 +109,7 @@ public class GameState implements Serializable, Copyable {
private Map zones = new HashMap<>();
private List simultaneousEvents = new ArrayList<>();
private Map cardState = new HashMap<>();
+ private Map cardAttribute = new HashMap<>();
private Map zoneChangeCounter = new HashMap<>();
private Map copiedCards = new HashMap<>();
private int permanentOrderNumber;
@@ -831,6 +832,7 @@ public class GameState implements Serializable, Copyable {
for (CardState state: cardState.values()) {
state.clearAbilities();
}
+ cardAttribute.clear();
}
public void clear() {
@@ -892,11 +894,23 @@ public class GameState implements Serializable, Copyable {
public CardState getCardState(UUID cardId) {
if (!cardState.containsKey(cardId)) {
cardState.put(cardId, new CardState());
- // cardState.putIfAbsent(cardId, new CardState());
}
return cardState.get(cardId);
}
+ public CardAttribute getCardAttribute(UUID cardId) {
+ return cardAttribute.get(cardId);
+ }
+
+ public CardAttribute getCreateCardAttribute(Card card) {
+ CardAttribute cardAtt = cardAttribute.get(card.getId());
+ if (cardAtt == null) {
+ cardAtt = new CardAttribute(card);
+ cardAttribute.put(card.getId(), cardAtt);
+ }
+ return cardAtt;
+ }
+
public void addWatcher(Watcher watcher) {
this.watchers.add(watcher);
}
diff --git a/Mage/src/mage/game/command/Commander.java b/Mage/src/mage/game/command/Commander.java
index 0602bafbec1..ff0a5565263 100644
--- a/Mage/src/mage/game/command/Commander.java
+++ b/Mage/src/mage/game/command/Commander.java
@@ -149,8 +149,8 @@ public class Commander implements CommandObject{
}
@Override
- public ObjectColor getColor() {
- return card.getColor();
+ public ObjectColor getColor(Game game) {
+ return card.getColor(game);
}
@Override
diff --git a/Mage/src/mage/game/command/Emblem.java b/Mage/src/mage/game/command/Emblem.java
index 468aa9cc730..79d74ca8885 100644
--- a/Mage/src/mage/game/command/Emblem.java
+++ b/Mage/src/mage/game/command/Emblem.java
@@ -150,7 +150,7 @@ public class Emblem implements CommandObject {
}
@Override
- public ObjectColor getColor() {
+ public ObjectColor getColor(Game game) {
return emptyColor;
}
diff --git a/Mage/src/mage/game/permanent/PermanentCard.java b/Mage/src/mage/game/permanent/PermanentCard.java
index 220905b133e..c6994cb72ed 100644
--- a/Mage/src/mage/game/permanent/PermanentCard.java
+++ b/Mage/src/mage/game/permanent/PermanentCard.java
@@ -99,7 +99,7 @@ public class PermanentCard extends PermanentImpl {
this.abilities.setSourceId(objectId);
this.cardType.clear();
this.cardType.addAll(card.getCardType());
- this.color = card.getColor().copy();
+ this.color = card.getColor(null).copy();
this.manaCost = card.getManaCost().copy();
this.power = card.getPower().copy();
this.toughness = card.getToughness().copy();
diff --git a/Mage/src/mage/game/permanent/PermanentImpl.java b/Mage/src/mage/game/permanent/PermanentImpl.java
index 5bfc16c5428..e50d04cb09f 100644
--- a/Mage/src/mage/game/permanent/PermanentImpl.java
+++ b/Mage/src/mage/game/permanent/PermanentImpl.java
@@ -38,6 +38,7 @@ import java.util.Map;
import java.util.UUID;
import mage.MageObject;
import mage.MageObjectReference;
+import mage.ObjectColor;
import mage.abilities.Abilities;
import mage.abilities.Ability;
import mage.abilities.effects.ContinuousEffect;
@@ -1359,5 +1360,11 @@ public abstract class PermanentImpl extends CardImpl implements Permanent {
public void setCreateOrder(int createOrder) {
this.createOrder = createOrder;
}
-
+
+ @Override
+ public ObjectColor getColor(Game game) {
+ return color;
+ }
+
+
}
diff --git a/Mage/src/mage/game/permanent/PermanentToken.java b/Mage/src/mage/game/permanent/PermanentToken.java
index 69d2aa37442..be5e63776a0 100644
--- a/Mage/src/mage/game/permanent/PermanentToken.java
+++ b/Mage/src/mage/game/permanent/PermanentToken.java
@@ -82,7 +82,7 @@ public class PermanentToken extends PermanentImpl {
this.getManaCost().add(cost.copy());
}
this.cardType = token.getCardType();
- this.color = token.getColor().copy();
+ this.color = token.getColor(game).copy();
this.power.initValue(token.getPower().getValue());
this.toughness.initValue(token.getToughness().getValue());
this.supertype = token.getSupertype();
diff --git a/Mage/src/mage/game/stack/Spell.java b/Mage/src/mage/game/stack/Spell.java
index 7fe9215ad07..bbb1ef01d8f 100644
--- a/Mage/src/mage/game/stack/Spell.java
+++ b/Mage/src/mage/game/stack/Spell.java
@@ -81,7 +81,7 @@ public class Spell extends StackObjImpl implements Card {
public Spell(Card card, SpellAbility ability, UUID controllerId, Zone fromZone) {
this.card = card;
- this.color = card.getColor().copy();
+ this.color = card.getColor(null).copy();
id = ability.getId();
this.ability = ability;
this.ability.setControllerId(controllerId);
@@ -431,7 +431,7 @@ public class Spell extends StackObjImpl implements Card {
}
@Override
- public ObjectColor getColor() {
+ public ObjectColor getColor(Game game) {
return color;
}
diff --git a/Mage/src/mage/game/stack/StackAbility.java b/Mage/src/mage/game/stack/StackAbility.java
index 835d8bf1014..021ac659dbe 100644
--- a/Mage/src/mage/game/stack/StackAbility.java
+++ b/Mage/src/mage/game/stack/StackAbility.java
@@ -175,7 +175,7 @@ public class StackAbility extends StackObjImpl implements Ability {
}
@Override
- public ObjectColor getColor() {
+ public ObjectColor getColor(Game game) {
return emptyColor;
}
diff --git a/Mage/src/mage/util/GameLog.java b/Mage/src/mage/util/GameLog.java
index b302a09d3dc..082178a1168 100644
--- a/Mage/src/mage/util/GameLog.java
+++ b/Mage/src/mage/util/GameLog.java
@@ -56,7 +56,7 @@ public class GameLog {
}
public static String getColoredObjectName(MageObject mageObject) {
- return "" + mageObject.getName() + " ["+mageObject.getId().toString().substring(0,3) + "]";
+ return "" + mageObject.getName() + " ["+mageObject.getId().toString().substring(0,3) + "]";
}
public static String getNeutralColoredText(String text) {
diff --git a/Mage/src/mage/util/functions/CopyTokenFunction.java b/Mage/src/mage/util/functions/CopyTokenFunction.java
index 28e737801b1..001c8188202 100644
--- a/Mage/src/mage/util/functions/CopyTokenFunction.java
+++ b/Mage/src/mage/util/functions/CopyTokenFunction.java
@@ -83,7 +83,7 @@ public class CopyTokenFunction implements Function {
}
target.setName(sourceObj.getName());
- target.getColor().setColor(sourceObj.getColor());
+ target.getColor(null).setColor(sourceObj.getColor(null));
target.getManaCost().clear();
target.getManaCost().add(sourceObj.getManaCost());
target.getCardType().clear();
diff --git a/Mage/src/mage/util/trace/TraceUtil.java b/Mage/src/mage/util/trace/TraceUtil.java
index 7c413213b85..b4da8fb9850 100644
--- a/Mage/src/mage/util/trace/TraceUtil.java
+++ b/Mage/src/mage/util/trace/TraceUtil.java
@@ -59,7 +59,7 @@ public class TraceUtil {
for (UUID blockerId : group.getBlockers()) {
Permanent blocker = game.getPermanent(blockerId);
if (blocker != null && !blocker.getCardType().contains(CardType.ARTIFACT)
- && !attacker.getColor().shares(blocker.getColor())) {
+ && !attacker.getColor(game).shares(blocker.getColor(game))) {
log.warn("Found creature with intimidate blocked by non artifact not sharing color creature");
traceCombat(game, attacker, blocker);
}