mirror of
https://github.com/correl/mage.git
synced 2024-11-15 19:19:33 +00:00
* Manamorphose - Fixed that color choice was not made during resolving the spell (fixed also some other cards).
This commit is contained in:
parent
d6a3288d83
commit
904e62450c
19 changed files with 133 additions and 155 deletions
|
@ -30,12 +30,11 @@ package mage.sets.apocalypse;
|
||||||
|
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
import mage.abilities.effects.common.DestroyTargetEffect;
|
import mage.abilities.effects.common.DestroyTargetEffect;
|
||||||
import mage.constants.CardType;
|
|
||||||
import mage.constants.Rarity;
|
|
||||||
import mage.abilities.effects.common.continious.SetCardColorTargetEffect;
|
import mage.abilities.effects.common.continious.SetCardColorTargetEffect;
|
||||||
import mage.cards.SplitCard;
|
import mage.cards.SplitCard;
|
||||||
import mage.choices.ChoiceColor;
|
import mage.constants.CardType;
|
||||||
import mage.constants.Duration;
|
import mage.constants.Duration;
|
||||||
|
import mage.constants.Rarity;
|
||||||
import mage.target.Target;
|
import mage.target.Target;
|
||||||
import mage.target.common.TargetArtifactPermanent;
|
import mage.target.common.TargetArtifactPermanent;
|
||||||
import mage.target.common.TargetSpellOrPermanent;
|
import mage.target.common.TargetSpellOrPermanent;
|
||||||
|
@ -60,7 +59,6 @@ public class IllusionReality extends SplitCard {
|
||||||
getLeftHalfCard().getSpellAbility().addEffect(new SetCardColorTargetEffect(Duration.EndOfTurn));
|
getLeftHalfCard().getSpellAbility().addEffect(new SetCardColorTargetEffect(Duration.EndOfTurn));
|
||||||
Target target = new TargetSpellOrPermanent();
|
Target target = new TargetSpellOrPermanent();
|
||||||
getLeftHalfCard().getSpellAbility().addTarget(target);
|
getLeftHalfCard().getSpellAbility().addTarget(target);
|
||||||
getLeftHalfCard().getSpellAbility().addChoice(new ChoiceColor());
|
|
||||||
|
|
||||||
// Reality
|
// Reality
|
||||||
// Destroy target artifact.
|
// Destroy target artifact.
|
||||||
|
|
|
@ -35,7 +35,6 @@ import mage.abilities.effects.common.AddManaOfAnyColorEffect;
|
||||||
import mage.abilities.effects.common.counter.AddCountersSourceEffect;
|
import mage.abilities.effects.common.counter.AddCountersSourceEffect;
|
||||||
import mage.abilities.mana.SimpleManaAbility;
|
import mage.abilities.mana.SimpleManaAbility;
|
||||||
import mage.cards.CardImpl;
|
import mage.cards.CardImpl;
|
||||||
import mage.choices.ChoiceColor;
|
|
||||||
import mage.constants.CardType;
|
import mage.constants.CardType;
|
||||||
import mage.constants.Rarity;
|
import mage.constants.Rarity;
|
||||||
import mage.constants.Zone;
|
import mage.constants.Zone;
|
||||||
|
|
|
@ -1,92 +0,0 @@
|
||||||
/*
|
|
||||||
* 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 mage.sets.championsofkamigawa;
|
|
||||||
|
|
||||||
import java.util.UUID;
|
|
||||||
|
|
||||||
import mage.constants.CardType;
|
|
||||||
import mage.constants.Rarity;
|
|
||||||
import mage.constants.Zone;
|
|
||||||
import mage.MageInt;
|
|
||||||
import mage.ObjectColor;
|
|
||||||
import mage.abilities.Ability;
|
|
||||||
import mage.abilities.common.SimpleActivatedAbility;
|
|
||||||
import mage.abilities.costs.mana.ManaCostsImpl;
|
|
||||||
import mage.abilities.effects.common.continious.GainAbilityTargetEffect;
|
|
||||||
import mage.abilities.effects.common.continious.SetCardColorTargetEffect;
|
|
||||||
import mage.abilities.keyword.ProtectionAbility;
|
|
||||||
import mage.cards.CardImpl;
|
|
||||||
import mage.constants.Duration;
|
|
||||||
import mage.filter.FilterCard;
|
|
||||||
import mage.filter.predicate.mageobject.ColorPredicate;
|
|
||||||
import mage.target.common.TargetControlledPermanent;
|
|
||||||
import mage.target.common.TargetSpellOrPermanent;
|
|
||||||
|
|
||||||
/**
|
|
||||||
*
|
|
||||||
* @author LevelX
|
|
||||||
*/
|
|
||||||
public class EightAndAHalfTale extends CardImpl {
|
|
||||||
|
|
||||||
private static final FilterCard filter = new FilterCard("white");
|
|
||||||
|
|
||||||
static {
|
|
||||||
filter.add(new ColorPredicate(ObjectColor.WHITE));
|
|
||||||
}
|
|
||||||
|
|
||||||
public EightAndAHalfTale(UUID ownerId) {
|
|
||||||
super(ownerId, 8, "Eight-and-a-Half-Tails", Rarity.RARE, new CardType[]{CardType.CREATURE}, "{W}{W}");
|
|
||||||
this.expansionSetCode = "CHK";
|
|
||||||
this.supertype.add("Legendary");
|
|
||||||
this.subtype.add("Fox");
|
|
||||||
this.subtype.add("Cleric");
|
|
||||||
this.color.setWhite(true);
|
|
||||||
this.power = new MageInt(2);
|
|
||||||
this.toughness = new MageInt(2);
|
|
||||||
// {1}{W}: Target permanent you control gains protection from white until end of turn.
|
|
||||||
Ability ability1 = new SimpleActivatedAbility(Zone.BATTLEFIELD, new GainAbilityTargetEffect(
|
|
||||||
new ProtectionAbility(filter), Duration.EndOfTurn), new ManaCostsImpl("{1}{W}"));
|
|
||||||
ability1.addTarget(new TargetControlledPermanent());
|
|
||||||
this.addAbility(ability1);
|
|
||||||
// {1}: Target spell or permanent becomes white until end of turn.
|
|
||||||
Ability ability2 = new SimpleActivatedAbility(Zone.BATTLEFIELD, new SetCardColorTargetEffect(
|
|
||||||
ObjectColor.WHITE, Duration.EndOfTurn),new ManaCostsImpl("{1}"));
|
|
||||||
ability2.addTarget(new TargetSpellOrPermanent());
|
|
||||||
this.addAbility(ability2);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
public EightAndAHalfTale(final EightAndAHalfTale card) {
|
|
||||||
super(card);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public EightAndAHalfTale copy() {
|
|
||||||
return new EightAndAHalfTale(this);
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -37,10 +37,12 @@ import mage.cards.CardImpl;
|
||||||
import mage.choices.ChoiceColor;
|
import mage.choices.ChoiceColor;
|
||||||
import mage.constants.CardType;
|
import mage.constants.CardType;
|
||||||
import mage.constants.Duration;
|
import mage.constants.Duration;
|
||||||
|
import mage.constants.Outcome;
|
||||||
import mage.constants.Rarity;
|
import mage.constants.Rarity;
|
||||||
import mage.filter.FilterCard;
|
import mage.filter.FilterCard;
|
||||||
import mage.filter.predicate.mageobject.ColorPredicate;
|
import mage.filter.predicate.mageobject.ColorPredicate;
|
||||||
import mage.game.Game;
|
import mage.game.Game;
|
||||||
|
import mage.players.Player;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
|
@ -55,7 +57,6 @@ public class AkromasBlessing extends CardImpl {
|
||||||
this.color.setWhite(true);
|
this.color.setWhite(true);
|
||||||
|
|
||||||
// Choose a color. Creatures you control gain protection from the chosen color until end of turn.
|
// Choose a color. Creatures you control gain protection from the chosen color until end of turn.
|
||||||
this.getSpellAbility().addChoice(new ChoiceColor());
|
|
||||||
this.getSpellAbility().addEffect(new AcromasBlessingEffect());
|
this.getSpellAbility().addEffect(new AcromasBlessingEffect());
|
||||||
// Cycling {W}
|
// Cycling {W}
|
||||||
this.addAbility(new CyclingAbility(new ManaCostsImpl("{W}")));
|
this.addAbility(new CyclingAbility(new ManaCostsImpl("{W}")));
|
||||||
|
@ -94,11 +95,21 @@ class AcromasBlessingEffect extends GainAbilityControlledEffect {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean apply(Game game, Ability source) {
|
public boolean apply(Game game, Ability source) {
|
||||||
ChoiceColor choice = (ChoiceColor) source.getChoices().get(0);
|
Player controller = game.getPlayer(source.getControllerId());
|
||||||
|
if (controller != null) {
|
||||||
|
ChoiceColor choice = new ChoiceColor();
|
||||||
|
while (!choice.isChosen()) {
|
||||||
|
controller.choose(Outcome.Protect, choice, game);
|
||||||
|
if (!controller.isInGame()) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
filter2.add(new ColorPredicate(choice.getColor()));
|
filter2.add(new ColorPredicate(choice.getColor()));
|
||||||
filter2.setMessage(choice.getChoice());
|
filter2.setMessage(choice.getChoice());
|
||||||
setAbility(new ProtectionAbility(new FilterCard(filter2)));
|
setAbility(new ProtectionAbility(new FilterCard(filter2)));
|
||||||
return super.apply(game, source);
|
return super.apply(game, source);
|
||||||
}
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -48,6 +48,7 @@ import mage.filter.FilterCard;
|
||||||
import mage.filter.predicate.mageobject.ColorPredicate;
|
import mage.filter.predicate.mageobject.ColorPredicate;
|
||||||
import mage.game.Game;
|
import mage.game.Game;
|
||||||
import mage.game.permanent.Permanent;
|
import mage.game.permanent.Permanent;
|
||||||
|
import mage.players.Player;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
|
@ -70,7 +71,6 @@ public class JarethLeonineTitan extends CardImpl {
|
||||||
this.addAbility(new BlocksTriggeredAbility(new BoostSourceEffect(7,7,Duration.EndOfTurn), false));
|
this.addAbility(new BlocksTriggeredAbility(new BoostSourceEffect(7,7,Duration.EndOfTurn), false));
|
||||||
// {W}: Jareth gains protection from the color of your choice until end of turn.
|
// {W}: Jareth gains protection from the color of your choice until end of turn.
|
||||||
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new JarethsGainProtectionFromColorSourceEffect(), new ManaCostsImpl("{W}"));
|
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new JarethsGainProtectionFromColorSourceEffect(), new ManaCostsImpl("{W}"));
|
||||||
ability.addChoice(new ChoiceColor());
|
|
||||||
this.addAbility(ability);
|
this.addAbility(ability);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -104,9 +104,16 @@ class JarethsGainProtectionFromColorSourceEffect extends ContinuousEffectImpl {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean apply(Game game, Ability source) {
|
public boolean apply(Game game, Ability source) {
|
||||||
|
Player controller = game.getPlayer(source.getControllerId());
|
||||||
Permanent creature = game.getPermanent(source.getSourceId());
|
Permanent creature = game.getPermanent(source.getSourceId());
|
||||||
if (creature != null) {
|
if (controller != null && creature != null) {
|
||||||
ChoiceColor choice = (ChoiceColor) source.getChoices().get(0);
|
ChoiceColor choice = new ChoiceColor();
|
||||||
|
while (!choice.isChosen()) {
|
||||||
|
controller.choose(Outcome.Protect, choice, game);
|
||||||
|
if (!controller.isInGame()) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
protectionFilter.add(new ColorPredicate(choice.getColor()));
|
protectionFilter.add(new ColorPredicate(choice.getColor()));
|
||||||
protectionFilter.setMessage(choice.getChoice());
|
protectionFilter.setMessage(choice.getChoice());
|
||||||
ProtectionAbility ability = new ProtectionAbility(protectionFilter);
|
ProtectionAbility ability = new ProtectionAbility(protectionFilter);
|
||||||
|
|
|
@ -41,7 +41,6 @@ import mage.abilities.effects.common.ExileTargetEffect;
|
||||||
import mage.abilities.effects.common.GainLifeEffect;
|
import mage.abilities.effects.common.GainLifeEffect;
|
||||||
import mage.abilities.effects.common.LoseLifeOpponentsEffect;
|
import mage.abilities.effects.common.LoseLifeOpponentsEffect;
|
||||||
import mage.cards.CardImpl;
|
import mage.cards.CardImpl;
|
||||||
import mage.choices.ChoiceColor;
|
|
||||||
import mage.constants.Zone;
|
import mage.constants.Zone;
|
||||||
import mage.filter.FilterCard;
|
import mage.filter.FilterCard;
|
||||||
import mage.filter.common.FilterCreatureCard;
|
import mage.filter.common.FilterCreatureCard;
|
||||||
|
|
|
@ -48,7 +48,6 @@ import mage.abilities.effects.common.AddManaOfAnyColorEffect;
|
||||||
import mage.abilities.effects.common.ReturnToHandSourceEffect;
|
import mage.abilities.effects.common.ReturnToHandSourceEffect;
|
||||||
import mage.abilities.mana.ActivateOncePerTurnManaAbility;
|
import mage.abilities.mana.ActivateOncePerTurnManaAbility;
|
||||||
import mage.cards.CardImpl;
|
import mage.cards.CardImpl;
|
||||||
import mage.choices.ChoiceColor;
|
|
||||||
import mage.constants.TargetController;
|
import mage.constants.TargetController;
|
||||||
import mage.counters.CounterType;
|
import mage.counters.CounterType;
|
||||||
import mage.game.Game;
|
import mage.game.Game;
|
||||||
|
|
|
@ -47,7 +47,6 @@ import mage.abilities.effects.common.continious.PlayWithTheTopCardRevealedEffect
|
||||||
import mage.abilities.mana.ManaAbility;
|
import mage.abilities.mana.ManaAbility;
|
||||||
import mage.abilities.mana.SimpleManaAbility;
|
import mage.abilities.mana.SimpleManaAbility;
|
||||||
import mage.cards.CardImpl;
|
import mage.cards.CardImpl;
|
||||||
import mage.choices.ChoiceColor;
|
|
||||||
import mage.constants.Duration;
|
import mage.constants.Duration;
|
||||||
import mage.game.Game;
|
import mage.game.Game;
|
||||||
|
|
||||||
|
|
|
@ -31,11 +31,13 @@ import java.util.UUID;
|
||||||
import mage.constants.CardType;
|
import mage.constants.CardType;
|
||||||
import mage.constants.Rarity;
|
import mage.constants.Rarity;
|
||||||
import mage.Mana;
|
import mage.Mana;
|
||||||
|
import mage.ObjectColor;
|
||||||
import mage.abilities.Ability;
|
import mage.abilities.Ability;
|
||||||
import mage.abilities.effects.common.DrawCardSourceControllerEffect;
|
import mage.abilities.effects.common.DrawCardSourceControllerEffect;
|
||||||
import mage.abilities.effects.common.ManaEffect;
|
import mage.abilities.effects.common.ManaEffect;
|
||||||
import mage.cards.CardImpl;
|
import mage.cards.CardImpl;
|
||||||
import mage.choices.ChoiceColor;
|
import mage.choices.ChoiceColor;
|
||||||
|
import mage.constants.Outcome;
|
||||||
import mage.game.Game;
|
import mage.game.Game;
|
||||||
import mage.players.Player;
|
import mage.players.Player;
|
||||||
|
|
||||||
|
@ -54,8 +56,7 @@ public class Manamorphose extends CardImpl {
|
||||||
|
|
||||||
// Add two mana in any combination of colors to your mana pool.
|
// Add two mana in any combination of colors to your mana pool.
|
||||||
this.getSpellAbility().addEffect(new ManamorphoseEffect());
|
this.getSpellAbility().addEffect(new ManamorphoseEffect());
|
||||||
this.getSpellAbility().addChoice(new ChoiceColor());
|
|
||||||
this.getSpellAbility().addChoice(new ChoiceColor());
|
|
||||||
// Draw a card.
|
// Draw a card.
|
||||||
this.getSpellAbility().addEffect(new DrawCardSourceControllerEffect(1));
|
this.getSpellAbility().addEffect(new DrawCardSourceControllerEffect(1));
|
||||||
}
|
}
|
||||||
|
@ -93,9 +94,13 @@ class ManamorphoseEffect extends ManaEffect {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
boolean result = false;
|
boolean result = false;
|
||||||
for (int i = 0; i < 2; i++) {
|
for (int i = 0; i < 2; i++) {
|
||||||
ChoiceColor choice = (ChoiceColor) source.getChoices().get(i);
|
ChoiceColor choice = getManaChoice(player, game);
|
||||||
|
if (choice == null) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
Mana mana = null;
|
Mana mana = null;
|
||||||
if (choice.getColor().isBlack()) {
|
if (choice.getColor().isBlack()) {
|
||||||
mana = Mana.BlackMana(1);
|
mana = Mana.BlackMana(1);
|
||||||
|
@ -116,4 +121,17 @@ class ManamorphoseEffect extends ManaEffect {
|
||||||
}
|
}
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private ChoiceColor getManaChoice(Player controller, Game game) {
|
||||||
|
ChoiceColor choice = new ChoiceColor();
|
||||||
|
while (!choice.isChosen()) {
|
||||||
|
controller.choose(Outcome.PutManaInPool, choice, game);
|
||||||
|
if (!controller.isInGame()) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return choice;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -37,9 +37,7 @@ import mage.abilities.decorator.ConditionalManaEffect;
|
||||||
import mage.abilities.effects.common.AddManaOfAnyColorEffect;
|
import mage.abilities.effects.common.AddManaOfAnyColorEffect;
|
||||||
import mage.abilities.effects.common.BasicManaEffect;
|
import mage.abilities.effects.common.BasicManaEffect;
|
||||||
import mage.abilities.mana.ConditionalManaAbility;
|
import mage.abilities.mana.ConditionalManaAbility;
|
||||||
import mage.abilities.mana.SimpleManaAbility;
|
|
||||||
import mage.cards.CardImpl;
|
import mage.cards.CardImpl;
|
||||||
import mage.choices.ChoiceColor;
|
|
||||||
import mage.constants.CardType;
|
import mage.constants.CardType;
|
||||||
import mage.constants.Rarity;
|
import mage.constants.Rarity;
|
||||||
import mage.constants.Zone;
|
import mage.constants.Zone;
|
||||||
|
|
|
@ -28,9 +28,6 @@
|
||||||
package mage.sets.timespiral;
|
package mage.sets.timespiral;
|
||||||
|
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
||||||
import mage.constants.CardType;
|
|
||||||
import mage.constants.Rarity;
|
|
||||||
import mage.abilities.Ability;
|
import mage.abilities.Ability;
|
||||||
import mage.abilities.costs.common.SacrificeSourceCost;
|
import mage.abilities.costs.common.SacrificeSourceCost;
|
||||||
import mage.abilities.costs.common.TapSourceCost;
|
import mage.abilities.costs.common.TapSourceCost;
|
||||||
|
@ -39,7 +36,8 @@ import mage.abilities.effects.common.AddManaOfAnyColorEffect;
|
||||||
import mage.abilities.keyword.SuspendAbility;
|
import mage.abilities.keyword.SuspendAbility;
|
||||||
import mage.abilities.mana.SimpleManaAbility;
|
import mage.abilities.mana.SimpleManaAbility;
|
||||||
import mage.cards.CardImpl;
|
import mage.cards.CardImpl;
|
||||||
import mage.choices.ChoiceColor;
|
import mage.constants.CardType;
|
||||||
|
import mage.constants.Rarity;
|
||||||
import mage.constants.Zone;
|
import mage.constants.Zone;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -161,9 +161,15 @@ class CarpetOfFlowersEffect extends ManaEffect {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean apply(Game game, Ability source) {
|
public boolean apply(Game game, Ability source) {
|
||||||
ChoiceColor choice = (ChoiceColor) source.getChoices().get(0);
|
Player controller = game.getPlayer(source.getControllerId());
|
||||||
Player player = game.getPlayer(source.getControllerId());
|
if (controller != null){
|
||||||
if(player != null){
|
ChoiceColor choice = new ChoiceColor();
|
||||||
|
while (!choice.isChosen()) {
|
||||||
|
controller.choose(Outcome.Protect, choice, game);
|
||||||
|
if (!controller.isInGame()) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
int countMax = game.getBattlefield().count(filter, source.getSourceId(), source.getTargets().getFirstTarget(), game);
|
int countMax = game.getBattlefield().count(filter, source.getSourceId(), source.getTargets().getFirstTarget(), game);
|
||||||
ChoiceImpl choiceCount = new ChoiceImpl(true);
|
ChoiceImpl choiceCount = new ChoiceImpl(true);
|
||||||
LinkedHashSet<String> set = new LinkedHashSet<>();
|
LinkedHashSet<String> set = new LinkedHashSet<>();
|
||||||
|
@ -173,22 +179,22 @@ class CarpetOfFlowersEffect extends ManaEffect {
|
||||||
}
|
}
|
||||||
choiceCount.setChoices(set);
|
choiceCount.setChoices(set);
|
||||||
choiceCount.setMessage("Choose number of mana");
|
choiceCount.setMessage("Choose number of mana");
|
||||||
player.choose(Outcome.PutManaInPool, choiceCount, game);
|
controller.choose(Outcome.PutManaInPool, choiceCount, game);
|
||||||
int count = Integer.parseInt(choiceCount.getChoice());
|
int count = Integer.parseInt(choiceCount.getChoice());
|
||||||
if (choice.getColor().isBlack()) {
|
if (choice.getColor().isBlack()) {
|
||||||
player.getManaPool().addMana(new Mana(0, 0, 0, 0, count, 0, 0), game, source);
|
controller.getManaPool().addMana(new Mana(0, 0, 0, 0, count, 0, 0), game, source);
|
||||||
return true;
|
return true;
|
||||||
} else if (choice.getColor().isBlue()) {
|
} else if (choice.getColor().isBlue()) {
|
||||||
player.getManaPool().addMana(new Mana(0, 0, count, 0, 0, 0, 0), game, source);
|
controller.getManaPool().addMana(new Mana(0, 0, count, 0, 0, 0, 0), game, source);
|
||||||
return true;
|
return true;
|
||||||
} else if (choice.getColor().isRed()) {
|
} else if (choice.getColor().isRed()) {
|
||||||
player.getManaPool().addMana(new Mana(count, 0, 0, 0, 0, 0, 0), game, source);
|
controller.getManaPool().addMana(new Mana(count, 0, 0, 0, 0, 0, 0), game, source);
|
||||||
return true;
|
return true;
|
||||||
} else if (choice.getColor().isGreen()) {
|
} else if (choice.getColor().isGreen()) {
|
||||||
player.getManaPool().addMana(new Mana(0, count, 0, 0, 0, 0, 0), game, source);
|
controller.getManaPool().addMana(new Mana(0, count, 0, 0, 0, 0, 0), game, source);
|
||||||
return true;
|
return true;
|
||||||
} else if (choice.getColor().isWhite()) {
|
} else if (choice.getColor().isWhite()) {
|
||||||
player.getManaPool().addMana(new Mana(0, 0, 0, count, 0, 0, 0), game, source);
|
controller.getManaPool().addMana(new Mana(0, 0, 0, count, 0, 0, 0), game, source);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -34,7 +34,6 @@ import mage.abilities.effects.common.AttachEffect;
|
||||||
import mage.abilities.keyword.EnchantAbility;
|
import mage.abilities.keyword.EnchantAbility;
|
||||||
import mage.abilities.mana.TriggeredManaAbility;
|
import mage.abilities.mana.TriggeredManaAbility;
|
||||||
import mage.cards.CardImpl;
|
import mage.cards.CardImpl;
|
||||||
import mage.choices.ChoiceColor;
|
|
||||||
import mage.constants.CardType;
|
import mage.constants.CardType;
|
||||||
import mage.constants.Outcome;
|
import mage.constants.Outcome;
|
||||||
import mage.constants.Rarity;
|
import mage.constants.Rarity;
|
||||||
|
|
|
@ -56,7 +56,6 @@ public class Persecute extends CardImpl {
|
||||||
|
|
||||||
// Choose a color. Target player reveals his or her hand and discards all cards of that color.
|
// Choose a color. Target player reveals his or her hand and discards all cards of that color.
|
||||||
this.getSpellAbility().addEffect(new PersecuteEffect());
|
this.getSpellAbility().addEffect(new PersecuteEffect());
|
||||||
this.getSpellAbility().addChoice(new ChoiceColor());
|
|
||||||
this.getSpellAbility().addTarget(new TargetPlayer());
|
this.getSpellAbility().addTarget(new TargetPlayer());
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -89,18 +88,24 @@ class PersecuteEffect extends OneShotEffect {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean apply(Game game, Ability source) {
|
public boolean apply(Game game, Ability source) {
|
||||||
Player player = game.getPlayer(source.getFirstTarget());
|
Player controller = game.getPlayer(source.getFirstTarget());
|
||||||
if (player != null) {
|
if (controller != null) {
|
||||||
ChoiceColor choice = (ChoiceColor) source.getChoices().get(0);
|
ChoiceColor choice = new ChoiceColor();
|
||||||
if(choice == null || choice.getColor() == null) {
|
while (!choice.isChosen()) {
|
||||||
|
controller.choose(outcome, choice, game);
|
||||||
|
if (!controller.isInGame()) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
Cards hand = player.getHand();
|
}
|
||||||
player.revealCards("Persecute", hand, game);
|
if (choice.getColor() == null) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
Cards hand = controller.getHand();
|
||||||
|
controller.revealCards("Persecute", hand, game);
|
||||||
Set<Card> cards = hand.getCards(game);
|
Set<Card> cards = hand.getCards(game);
|
||||||
for (Card card : cards) {
|
for (Card card : cards) {
|
||||||
if (card != null && card.getColor().shares(choice.getColor())) {
|
if (card != null && card.getColor().shares(choice.getColor())) {
|
||||||
player.discard(card, source, game);
|
controller.discard(card, source, game);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
|
|
|
@ -43,6 +43,7 @@ import mage.filter.predicate.mageobject.ColorPredicate;
|
||||||
import mage.game.Game;
|
import mage.game.Game;
|
||||||
|
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
import mage.players.Player;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
|
@ -54,7 +55,8 @@ public class BraveTheElements extends CardImpl {
|
||||||
super(ownerId, 4, "Brave the Elements", Rarity.UNCOMMON, new CardType[]{CardType.INSTANT}, "{W}");
|
super(ownerId, 4, "Brave the Elements", Rarity.UNCOMMON, new CardType[]{CardType.INSTANT}, "{W}");
|
||||||
this.expansionSetCode = "ZEN";
|
this.expansionSetCode = "ZEN";
|
||||||
this.color.setWhite(true);
|
this.color.setWhite(true);
|
||||||
this.getSpellAbility().addChoice(new ChoiceColor());
|
|
||||||
|
// Choose a color. White creatures you control gain protection from the chosen color until end of turn.
|
||||||
this.getSpellAbility().addEffect(new BraveTheElementsEffect());
|
this.getSpellAbility().addEffect(new BraveTheElementsEffect());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -77,7 +79,7 @@ class BraveTheElementsEffect extends GainAbilityControlledEffect {
|
||||||
filter1.add(new ColorPredicate(ObjectColor.WHITE));
|
filter1.add(new ColorPredicate(ObjectColor.WHITE));
|
||||||
}
|
}
|
||||||
|
|
||||||
private FilterCard filter2;
|
private final FilterCard filter2;
|
||||||
|
|
||||||
public BraveTheElementsEffect() {
|
public BraveTheElementsEffect() {
|
||||||
super(new ProtectionAbility(new FilterCard()), Duration.EndOfTurn, filter1);
|
super(new ProtectionAbility(new FilterCard()), Duration.EndOfTurn, filter1);
|
||||||
|
@ -97,11 +99,24 @@ class BraveTheElementsEffect extends GainAbilityControlledEffect {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean apply(Game game, Ability source) {
|
public boolean apply(Game game, Ability source) {
|
||||||
ChoiceColor choice = (ChoiceColor) source.getChoices().get(0);
|
Player controller = game.getPlayer(source.getFirstTarget());
|
||||||
|
if (controller != null) {
|
||||||
|
ChoiceColor choice = new ChoiceColor();
|
||||||
|
while (!choice.isChosen()) {
|
||||||
|
controller.choose(outcome, choice, game);
|
||||||
|
if (!controller.isInGame()) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (choice.getColor() == null) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
filter2.add(new ColorPredicate(choice.getColor()));
|
filter2.add(new ColorPredicate(choice.getColor()));
|
||||||
filter2.setMessage(choice.getChoice());
|
filter2.setMessage(choice.getChoice());
|
||||||
setAbility(new ProtectionAbility(new FilterCard(filter2)));
|
setAbility(new ProtectionAbility(new FilterCard(filter2)));
|
||||||
return super.apply(game, source);
|
return super.apply(game, source);
|
||||||
}
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
|
@ -40,7 +40,6 @@ import mage.abilities.effects.OneShotEffect;
|
||||||
import mage.abilities.effects.common.AddManaOfAnyColorEffect;
|
import mage.abilities.effects.common.AddManaOfAnyColorEffect;
|
||||||
import mage.abilities.mana.SimpleManaAbility;
|
import mage.abilities.mana.SimpleManaAbility;
|
||||||
import mage.cards.CardImpl;
|
import mage.cards.CardImpl;
|
||||||
import mage.choices.ChoiceColor;
|
|
||||||
import mage.filter.common.FilterControlledLandPermanent;
|
import mage.filter.common.FilterControlledLandPermanent;
|
||||||
import mage.filter.common.FilterControlledPermanent;
|
import mage.filter.common.FilterControlledPermanent;
|
||||||
import mage.game.Game;
|
import mage.game.Game;
|
||||||
|
|
|
@ -29,13 +29,12 @@
|
||||||
package mage.sets.zendikar;
|
package mage.sets.zendikar;
|
||||||
|
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
import mage.constants.CardType;
|
|
||||||
import mage.constants.Rarity;
|
|
||||||
import mage.MageInt;
|
import mage.MageInt;
|
||||||
import mage.abilities.common.LandfallAbility;
|
import mage.abilities.common.LandfallAbility;
|
||||||
import mage.abilities.effects.common.AddManaOfAnyColorEffect;
|
import mage.abilities.effects.common.AddManaOfAnyColorEffect;
|
||||||
import mage.cards.CardImpl;
|
import mage.cards.CardImpl;
|
||||||
import mage.choices.ChoiceColor;
|
import mage.constants.CardType;
|
||||||
|
import mage.constants.Rarity;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
|
|
|
@ -53,12 +53,19 @@ public class ChooseColorEffect extends OneShotEffect {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean apply(Game game, Ability source) {
|
public boolean apply(Game game, Ability source) {
|
||||||
Player player = game.getPlayer(source.getControllerId());
|
Player controller = game.getPlayer(source.getControllerId());
|
||||||
Permanent permanent = game.getPermanent(source.getSourceId());
|
Permanent permanent = game.getPermanent(source.getSourceId());
|
||||||
if (player != null && permanent != null) {
|
if (controller != null && permanent != null) {
|
||||||
|
ChoiceColor choice = new ChoiceColor();
|
||||||
|
while (!choice.isChosen()) {
|
||||||
|
controller.choose(Outcome.PutManaInPool, choice, game);
|
||||||
|
if (!controller.isInGame()) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
ChoiceColor colorChoice = new ChoiceColor();
|
ChoiceColor colorChoice = new ChoiceColor();
|
||||||
if (player.choose(outcome, colorChoice, game)) {
|
if (controller.choose(outcome, colorChoice, game)) {
|
||||||
game.informPlayers(new StringBuilder(permanent.getLogName()).append(": ").append(player.getName()).append(" has chosen ").append(colorChoice.getChoice()).toString());
|
game.informPlayers(new StringBuilder(permanent.getLogName()).append(": ").append(controller.getName()).append(" has chosen ").append(colorChoice.getChoice()).toString());
|
||||||
game.getState().setValue(source.getSourceId() + "_color", colorChoice.getColor());
|
game.getState().setValue(source.getSourceId() + "_color", colorChoice.getColor());
|
||||||
permanent.addInfo("chosen color", "<font color = 'blue'>Chosen color: " + colorChoice.getColor().getDescription() + "</font>");
|
permanent.addInfo("chosen color", "<font color = 'blue'>Chosen color: " + colorChoice.getColor().getDescription() + "</font>");
|
||||||
}
|
}
|
||||||
|
|
|
@ -43,6 +43,7 @@ import mage.constants.SubLayer;
|
||||||
import mage.game.Game;
|
import mage.game.Game;
|
||||||
import mage.game.permanent.Permanent;
|
import mage.game.permanent.Permanent;
|
||||||
import mage.game.stack.StackObject;
|
import mage.game.stack.StackObject;
|
||||||
|
import mage.players.Player;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author LevelX
|
* @author LevelX
|
||||||
|
@ -77,13 +78,26 @@ public class SetCardColorTargetEffect extends ContinuousEffectImpl {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean apply(Game game, Ability source) {
|
public boolean apply(Game game, Ability source) {
|
||||||
boolean result = false;
|
Player controller = game.getPlayer(source.getControllerId());
|
||||||
ObjectColor objectColor = null;
|
if (controller == null) {
|
||||||
if (setColor == null) {
|
return false;
|
||||||
ChoiceColor choice = (ChoiceColor) source.getChoices().get(0);
|
|
||||||
if (choice != null && choice.getColor() != null) {
|
|
||||||
objectColor = choice.getColor();
|
|
||||||
}
|
}
|
||||||
|
boolean result = false;
|
||||||
|
ObjectColor objectColor;
|
||||||
|
if (setColor == null) {
|
||||||
|
ChoiceColor choice = new ChoiceColor();
|
||||||
|
while (!choice.isChosen()) {
|
||||||
|
controller.choose(Outcome.PutManaInPool, choice, game);
|
||||||
|
if (!controller.isInGame()) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (choice.getColor() != null) {
|
||||||
|
objectColor = choice.getColor();
|
||||||
|
} else {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
game.informPlayers(controller.getName() + " has chosen the color: " + objectColor.toString());
|
||||||
} else {
|
} else {
|
||||||
objectColor = this.setColor;
|
objectColor = this.setColor;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue