updated language for various user choices

This commit is contained in:
Evan Kranzler 2021-02-15 10:19:43 -05:00
parent e2e7df6af2
commit a6255402e3
43 changed files with 66 additions and 99 deletions

View file

@ -105,7 +105,7 @@ class AsForetoldAlternativeCost extends AlternativeCostSourceAbility {
Permanent asForetold = game.getPermanent(getSourceId()); Permanent asForetold = game.getPermanent(getSourceId());
if (controller != null if (controller != null
&& asForetold != null) { && asForetold != null) {
if (controller.chooseUse(Outcome.Neutral, "Do you wish to use " if (controller.chooseUse(Outcome.Neutral, "Use "
+ asForetold.getLogName() + " to pay the alternative cost ?", ability, game)) { + asForetold.getLogName() + " to pay the alternative cost ?", ability, game)) {
wasActivated = super.askToActivateAlternativeCosts(ability, game); wasActivated = super.askToActivateAlternativeCosts(ability, game);
if (wasActivated) { if (wasActivated) {

View file

@ -74,7 +74,7 @@ class AssassinsTrophyEffect extends OneShotEffect {
if (permanent != null) { if (permanent != null) {
Player controller = game.getPlayer(permanent.getControllerId()); Player controller = game.getPlayer(permanent.getControllerId());
if (controller != null) { if (controller != null) {
if (controller.chooseUse(Outcome.PutLandInPlay, "Do you wish to search for a basic land, put it onto the battlefield and then shuffle your library?", source, game)) { if (controller.chooseUse(Outcome.PutLandInPlay, "Search for a basic land, put it onto the battlefield and then shuffle your library?", source, game)) {
TargetCardInLibrary target = new TargetCardInLibrary(StaticFilters.FILTER_CARD_BASIC_LAND); TargetCardInLibrary target = new TargetCardInLibrary(StaticFilters.FILTER_CARD_BASIC_LAND);
if (controller.searchLibrary(target, source, game)) { if (controller.searchLibrary(target, source, game)) {
Card card = controller.getLibrary().getCard(target.getFirstTarget(), game); Card card = controller.getLibrary().getCard(target.getFirstTarget(), game);

View file

@ -67,7 +67,7 @@ class CaravanVigilEffect extends OneShotEffect {
if (card != null) { if (card != null) {
Cards cards = new CardsImpl(card); Cards cards = new CardsImpl(card);
if (MorbidCondition.instance.apply(game, source) if (MorbidCondition.instance.apply(game, source)
&& controller.chooseUse(Outcome.PutLandInPlay, "Do you wish to put the card onto the battlefield instead?", source, game)) { && controller.chooseUse(Outcome.PutLandInPlay, "Put the card onto the battlefield instead?", source, game)) {
controller.moveCards(card, Zone.BATTLEFIELD, source, game); controller.moveCards(card, Zone.BATTLEFIELD, source, game);
} else { } else {
controller.moveCards(card, Zone.HAND, source, game); controller.moveCards(card, Zone.HAND, source, game);

View file

@ -231,21 +231,21 @@ class ChandraPyromasterEffect3 extends OneShotEffect {
Card card = cards.get(target.getFirstTarget(), game); Card card = cards.get(target.getFirstTarget(), game);
if (card != null) { if (card != null) {
ApprovingObject approvingObject = new ApprovingObject(source, game); ApprovingObject approvingObject = new ApprovingObject(source, game);
if (controller.chooseUse(outcome, "Do you wish to cast copy 1 of " + card.getName(), source, game)) { if (controller.chooseUse(outcome, "Cast copy 1 of " + card.getName(), source, game)) {
Card copy1 = game.copyCard(card, source, source.getControllerId()); Card copy1 = game.copyCard(card, source, source.getControllerId());
game.getState().setValue("PlayFromNotOwnHandZone" + copy1.getId(), Boolean.TRUE); game.getState().setValue("PlayFromNotOwnHandZone" + copy1.getId(), Boolean.TRUE);
controller.cast(controller.chooseAbilityForCast(copy1, game, true), controller.cast(controller.chooseAbilityForCast(copy1, game, true),
game, true, approvingObject); game, true, approvingObject);
game.getState().setValue("PlayFromNotOwnHandZone" + copy1.getId(), null); game.getState().setValue("PlayFromNotOwnHandZone" + copy1.getId(), null);
} }
if (controller.chooseUse(outcome, "Do you wish to cast copy 2 of " + card.getName(), source, game)) { if (controller.chooseUse(outcome, "Cast copy 2 of " + card.getName(), source, game)) {
Card copy2 = game.copyCard(card, source, source.getControllerId()); Card copy2 = game.copyCard(card, source, source.getControllerId());
game.getState().setValue("PlayFromNotOwnHandZone" + copy2.getId(), Boolean.TRUE); game.getState().setValue("PlayFromNotOwnHandZone" + copy2.getId(), Boolean.TRUE);
controller.cast(controller.chooseAbilityForCast(copy2, game, true), controller.cast(controller.chooseAbilityForCast(copy2, game, true),
game, true, approvingObject); game, true, approvingObject);
game.getState().setValue("PlayFromNotOwnHandZone" + copy2.getId(), null); game.getState().setValue("PlayFromNotOwnHandZone" + copy2.getId(), null);
} }
if (controller.chooseUse(outcome, "Do you wish to cast copy 3 of " + card.getName(), source, game)) { if (controller.chooseUse(outcome, "Cast copy 3 of " + card.getName(), source, game)) {
Card copy3 = game.copyCard(card, source, source.getControllerId()); Card copy3 = game.copyCard(card, source, source.getControllerId());
game.getState().setValue("PlayFromNotOwnHandZone" + copy3.getId(), Boolean.TRUE); game.getState().setValue("PlayFromNotOwnHandZone" + copy3.getId(), Boolean.TRUE);
controller.cast(controller.chooseAbilityForCast(copy3, game, true), controller.cast(controller.chooseAbilityForCast(copy3, game, true),

View file

@ -90,7 +90,7 @@ class ChecksAndBalancesEffect extends OneShotEffect {
for (UUID uuid : game.getOpponents(spell.getControllerId())) { for (UUID uuid : game.getOpponents(spell.getControllerId())) {
Player player = game.getPlayer(uuid); Player player = game.getPlayer(uuid);
if (player != null) { if (player != null) {
if (!player.chooseUse(outcome, "Do you wish to discard a card to counter " + spell.getLogName() + '?', source, game)) { if (!player.chooseUse(outcome, "Discard a card to counter " + spell.getLogName() + '?', source, game)) {
game.informPlayers(player.getLogName() + " refuses to discard a card to counter " + spell.getLogName()); game.informPlayers(player.getLogName() + " refuses to discard a card to counter " + spell.getLogName());
return true; return true;
} else { } else {

View file

@ -90,7 +90,7 @@ class ChorusOfTheConclaveReplacementEffect extends ReplacementEffectImpl {
int xCost = 0; int xCost = 0;
Player controller = game.getPlayer(source.getControllerId()); Player controller = game.getPlayer(source.getControllerId());
if (controller != null) { if (controller != null) {
if (controller.chooseUse(Outcome.Benefit, "Do you wish to pay the additonal cost to add +1/+1 counters to the creature you cast?", source, game)) { if (controller.chooseUse(Outcome.Benefit, "Pay the additonal cost to add +1/+1 counters to the creature you cast?", source, game)) {
xCost += ManaUtil.playerPaysXGenericMana(false, "Chorus of the Conclave", controller, source, game); xCost += ManaUtil.playerPaysXGenericMana(false, "Chorus of the Conclave", controller, source, game);
// save the x value to be available for ETB replacement effect // save the x value to be available for ETB replacement effect
Object object = game.getState().getValue("spellX" + source.getSourceId()); Object object = game.getState().getValue("spellX" + source.getSourceId());

View file

@ -124,8 +124,7 @@ class CloakOfConfusionEffect extends OneShotEffect {
public boolean apply(Game game, Ability source) { public boolean apply(Game game, Ability source) {
Player controller = game.getPlayer(source.getControllerId()); Player controller = game.getPlayer(source.getControllerId());
Permanent enchantedCreature = game.getPermanent(game.getPermanent(source.getSourceId()).getAttachedTo()); Permanent enchantedCreature = game.getPermanent(game.getPermanent(source.getSourceId()).getAttachedTo());
if (controller != null && controller.chooseUse(outcome, "Do you wish to not assign combat damage from " if (controller != null && controller.chooseUse(outcome, "Have defending player discard a card at random? " + enchantedCreature.getName() + " will not assign combat damage.", source, game)) {
+ enchantedCreature.getName() + " and have the defending player discard a card at random?", source, game)) {
ContinuousEffect effect = new AssignNoCombatDamageTargetEffect(); ContinuousEffect effect = new AssignNoCombatDamageTargetEffect();
effect.setTargetPointer(new FixedTarget(enchantedCreature.getId())); effect.setTargetPointer(new FixedTarget(enchantedCreature.getId()));
game.addEffect(effect, source); game.addEffect(effect, source);

View file

@ -66,7 +66,7 @@ class CoralFightersEffect extends OneShotEffect {
if(card != null) { if(card != null) {
Cards cards = new CardsImpl(card); Cards cards = new CardsImpl(card);
controller.lookAtCards("Coral Fighters", cards, game); controller.lookAtCards("Coral Fighters", cards, game);
if (controller.chooseUse(outcome, "Do you wish to put card on the bottom of player's library?", source, game)) { if (controller.chooseUse(outcome, "Put that card on the bottom of its owner's library?", source, game)) {
controller.moveCardToLibraryWithInfo(card, source, game, Zone.LIBRARY, false, false); controller.moveCardToLibraryWithInfo(card, source, game, Zone.LIBRARY, false, false);
} }
else { else {

View file

@ -82,7 +82,7 @@ class DelverOfSecretsEffect extends OneShotEffect {
Cards cards = new CardsImpl(); Cards cards = new CardsImpl();
cards.add(card); cards.add(card);
player.lookAtCards(sourcePermanent.getName(), cards, game); player.lookAtCards(sourcePermanent.getName(), cards, game);
if (player.chooseUse(Outcome.DrawCard, "Do you wish to reveal the card at the top of the library?", source, game)) { if (player.chooseUse(Outcome.DrawCard, "Reveal the top card of your library?", source, game)) {
player.revealCards(sourcePermanent.getName(), cards, game); player.revealCards(sourcePermanent.getName(), cards, game);
if (filter.match(card, game)) { if (filter.match(card, game)) {
return new TransformSourceEffect(true, true).apply(game, source); return new TransformSourceEffect(true, true).apply(game, source);

View file

@ -83,7 +83,7 @@ class BecomesColorOrColorsEnchantedEffect extends OneShotEffect {
} }
for (int i = 0; i < 5; i++) { for (int i = 0; i < 5; i++) {
if (i > 0) { if (i > 0) {
if (!controller.chooseUse(Outcome.Neutral, "Do you wish to choose another color?", source, game)) { if (!controller.chooseUse(Outcome.Neutral, "Choose another color?", source, game)) {
break; break;
} }
} }

View file

@ -84,7 +84,7 @@ class ElderSpawnEffect extends OneShotEffect {
if (controller != null && sourcePermanent != null) { if (controller != null && sourcePermanent != null) {
TargetControlledPermanent target = new TargetControlledPermanent(1, 1, filter, true); TargetControlledPermanent target = new TargetControlledPermanent(1, 1, filter, true);
SacrificeTargetCost cost = new SacrificeTargetCost(target); SacrificeTargetCost cost = new SacrificeTargetCost(target);
if (!controller.chooseUse(Outcome.AIDontUseIt, "Do you wish to sacrifice an Island?", source, game) if (!controller.chooseUse(Outcome.AIDontUseIt, "Sacrifice an Island?", source, game)
|| !cost.canPay(source, source, source.getControllerId(), game) || !cost.canPay(source, source, source.getControllerId(), game)
|| !cost.pay(source, game, source, source.getControllerId(), true)) { || !cost.pay(source, game, source, source.getControllerId(), true)) {
sourcePermanent.sacrifice(source, game); sourcePermanent.sacrifice(source, game);

View file

@ -84,7 +84,7 @@ class EtherwroughtPageEffect extends OneShotEffect {
CardsImpl cards = new CardsImpl(); CardsImpl cards = new CardsImpl();
cards.add(card); cards.add(card);
controller.lookAtCards("Etherwrought Page", cards, game); controller.lookAtCards("Etherwrought Page", cards, game);
if (controller.chooseUse(Outcome.Neutral, "Do you wish to put the card into your graveyard?", source, game)) { if (controller.chooseUse(Outcome.Neutral, "Put that card into your graveyard?", source, game)) {
return controller.moveCards(card, Zone.GRAVEYARD, source, game); return controller.moveCards(card, Zone.GRAVEYARD, source, game);
} }
return true; return true;

View file

@ -87,7 +87,7 @@ class EvershrikeEffect extends OneShotEffect {
filterAuraCard.add(new AuraCardCanAttachToPermanentId(evershrikePermanent.getId())); filterAuraCard.add(new AuraCardCanAttachToPermanentId(evershrikePermanent.getId()));
filterAuraCard.add(new ConvertedManaCostPredicate(ComparisonType.FEWER_THAN, xAmount)); filterAuraCard.add(new ConvertedManaCostPredicate(ComparisonType.FEWER_THAN, xAmount));
int count = controller.getHand().count(filterAuraCard, game); int count = controller.getHand().count(filterAuraCard, game);
if (count > 0 && controller.chooseUse(Outcome.Benefit, "Do you wish to put an Aura card from your hand onto " + evershrikeCard.getIdName() + "?", source, game)) { if (count > 0 && controller.chooseUse(Outcome.Benefit, "Put an Aura card from your hand onto the battlefield attached to " + evershrikeCard.getIdName() + "?", source, game)) {
TargetCard targetAura = new TargetCard(Zone.HAND, filterAuraCard); TargetCard targetAura = new TargetCard(Zone.HAND, filterAuraCard);
if (controller.choose(Outcome.Benefit, controller.getHand(), targetAura, game)) { if (controller.choose(Outcome.Benefit, controller.getHand(), targetAura, game)) {
Card aura = game.getCard(targetAura.getFirstTarget()); Card aura = game.getCard(targetAura.getFirstTarget());

View file

@ -88,7 +88,7 @@ class GargantuanGorillaSacrificeEffect extends OneShotEffect {
if (controller != null && sourcePermanent != null) { if (controller != null && sourcePermanent != null) {
TargetControlledPermanent target = new TargetControlledPermanent(1, 1, filter, true); TargetControlledPermanent target = new TargetControlledPermanent(1, 1, filter, true);
SacrificeTargetCost cost = new SacrificeTargetCost(target); SacrificeTargetCost cost = new SacrificeTargetCost(target);
if (!controller.chooseUse(Outcome.Benefit, "Do you wish to sacrifice a Forest?", source, game) if (!controller.chooseUse(Outcome.Benefit, "Sacrifice a Forest?", source, game)
|| !cost.canPay(source, source, source.getControllerId(), game) || !cost.canPay(source, source, source.getControllerId(), game)
|| !cost.pay(source, game, source, source.getControllerId(), true)) { || !cost.pay(source, game, source, source.getControllerId(), true)) {
sourcePermanent.sacrifice(source, game); sourcePermanent.sacrifice(source, game);

View file

@ -87,7 +87,7 @@ class GemstoneCavernsAbility extends StaticAbility implements OpeningHandAction
@Override @Override
public boolean askUseOpeningHandAction(Card card, Player player, Game game) { public boolean askUseOpeningHandAction(Card card, Player player, Game game) {
return player.chooseUse(Outcome.PutCardInPlay, "Do you wish to put " + card.getIdName() + " into play?", this, game); return player.chooseUse(Outcome.PutCardInPlay, "Put " + card.getIdName() + " onto the battlefield?", this, game);
} }
@Override @Override

View file

@ -74,7 +74,7 @@ class GeomancersGambitEffect extends OneShotEffect {
if (controller == null) { if (controller == null) {
return false; return false;
} }
if (!controller.chooseUse(Outcome.PutLandInPlay, "Do you wish to search for a basic land, put it onto the battlefield and then shuffle your library?", source, game)) { if (!controller.chooseUse(Outcome.PutLandInPlay, "Search for a basic land, put it onto the battlefield, and then shuffle your library?", source, game)) {
return true; return true;
} }
TargetCardInLibrary target = new TargetCardInLibrary(StaticFilters.FILTER_CARD_BASIC_LAND); TargetCardInLibrary target = new TargetCardInLibrary(StaticFilters.FILTER_CARD_BASIC_LAND);

View file

@ -71,7 +71,7 @@ class GhostQuarterEffect extends OneShotEffect {
Permanent permanent = getTargetPointer().getFirstTargetPermanentOrLKI(game, source); Permanent permanent = getTargetPointer().getFirstTargetPermanentOrLKI(game, source);
if (permanent != null) { if (permanent != null) {
Player controller = game.getPlayer(permanent.getControllerId()); Player controller = game.getPlayer(permanent.getControllerId());
if (controller != null && controller.chooseUse(Outcome.PutLandInPlay, "Do you wish to search for a basic land, put it onto the battlefield and then shuffle your library?", source, game)) { if (controller != null && controller.chooseUse(Outcome.PutLandInPlay, "Search for a basic land, put it onto the battlefield, and then shuffle your library?", source, game)) {
TargetCardInLibrary target = new TargetCardInLibrary(StaticFilters.FILTER_CARD_BASIC_LAND); TargetCardInLibrary target = new TargetCardInLibrary(StaticFilters.FILTER_CARD_BASIC_LAND);
if (controller.searchLibrary(target, source, game)) { if (controller.searchLibrary(target, source, game)) {
Card card = controller.getLibrary().getCard(target.getFirstTarget(), game); Card card = controller.getLibrary().getCard(target.getFirstTarget(), game);

View file

@ -1,26 +1,21 @@
package mage.cards.i; package mage.cards.i;
import java.util.UUID;
import mage.MageInt; import mage.MageInt;
import mage.abilities.Ability;
import mage.abilities.common.DealsCombatDamageToAPlayerTriggeredAbility; import mage.abilities.common.DealsCombatDamageToAPlayerTriggeredAbility;
import mage.abilities.common.SimpleActivatedAbility; import mage.abilities.common.SimpleActivatedAbility;
import mage.abilities.costs.mana.ManaCostsImpl; import mage.abilities.costs.mana.ManaCostsImpl;
import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.common.DrawDiscardControllerEffect;
import mage.abilities.effects.common.continuous.BecomesCreatureSourceEffect; import mage.abilities.effects.common.continuous.BecomesCreatureSourceEffect;
import mage.abilities.mana.BlueManaAbility; import mage.abilities.mana.BlueManaAbility;
import mage.abilities.mana.RedManaAbility; import mage.abilities.mana.RedManaAbility;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
import mage.constants.CardType; import mage.constants.CardType;
import mage.constants.SubType;
import mage.constants.Duration; import mage.constants.Duration;
import mage.constants.Outcome; import mage.constants.SubType;
import mage.constants.Zone;
import mage.game.Game;
import mage.game.permanent.token.TokenImpl; import mage.game.permanent.token.TokenImpl;
import mage.players.Player;
import java.util.UUID;
/** /**
* @author LevelX2 * @author LevelX2
@ -28,17 +23,23 @@ import mage.players.Player;
public final class IzzetKeyrune extends CardImpl { public final class IzzetKeyrune extends CardImpl {
public IzzetKeyrune(UUID ownerId, CardSetInfo setInfo) { public IzzetKeyrune(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{3}"); super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{3}");
// {T}: Add {U} or {R}. // {T}: Add {U} or {R}.
this.addAbility(new BlueManaAbility()); this.addAbility(new BlueManaAbility());
this.addAbility(new RedManaAbility()); this.addAbility(new RedManaAbility());
// {U}{R}: Until end of turn, Izzet Keyrune becomes a 2/1 blue and red Elemental artifact creature. // {U}{R}: Until end of turn, Izzet Keyrune becomes a 2/1 blue and red Elemental artifact creature.
this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new BecomesCreatureSourceEffect(new IzzetKeyruneToken(), "", Duration.EndOfTurn), new ManaCostsImpl("{U}{R}"))); this.addAbility(new SimpleActivatedAbility(new BecomesCreatureSourceEffect(
new IzzetKeyruneToken(), "", Duration.EndOfTurn
), new ManaCostsImpl("{U}{R}")));
// Whenever Izzet Keyrune deals combat damage to a player, you may draw a card. If you do, discard a card. // Whenever Izzet Keyrune deals combat damage to a player, you may draw a card. If you do, discard a card.
this.addAbility(new DealsCombatDamageToAPlayerTriggeredAbility(new IzzetKeyruneEffect(), true)); this.addAbility(new DealsCombatDamageToAPlayerTriggeredAbility(
new DrawDiscardControllerEffect(1, 1, true)
.setText("you may draw a card. If you do, discard a card"),
false
));
} }
private IzzetKeyrune(final IzzetKeyrune card) { private IzzetKeyrune(final IzzetKeyrune card) {
@ -50,37 +51,8 @@ public final class IzzetKeyrune extends CardImpl {
return new IzzetKeyrune(this); return new IzzetKeyrune(this);
} }
private static class IzzetKeyruneEffect extends OneShotEffect {
public IzzetKeyruneEffect() {
super(Outcome.DrawCard);
this.staticText = "you may draw a card. If you do, discard a card";
}
public IzzetKeyruneEffect(final IzzetKeyruneEffect effect) {
super(effect);
}
@Override
public IzzetKeyruneEffect copy() {
return new IzzetKeyruneEffect(this);
}
@Override
public boolean apply(Game game, Ability source) {
Player player = game.getPlayer(source.getControllerId());
if (player != null && player.chooseUse(Outcome.DrawCard, "Do you wish to draw a card? If you do, discard a card.", source, game)) {
if (player.drawCards(1, source, game) > 0) {
player.discard(1, false, false, source, game);
}
return true;
}
return false;
}
}
private static class IzzetKeyruneToken extends TokenImpl { private static class IzzetKeyruneToken extends TokenImpl {
IzzetKeyruneToken() { private IzzetKeyruneToken() {
super("", "2/1 blue and red Elemental artifact creature"); super("", "2/1 blue and red Elemental artifact creature");
cardType.add(CardType.ARTIFACT); cardType.add(CardType.ARTIFACT);
cardType.add(CardType.CREATURE); cardType.add(CardType.CREATURE);
@ -91,7 +63,7 @@ public final class IzzetKeyrune extends CardImpl {
toughness = new MageInt(1); toughness = new MageInt(1);
} }
public IzzetKeyruneToken(final IzzetKeyruneToken token) { private IzzetKeyruneToken(final IzzetKeyruneToken token) {
super(token); super(token);
} }
@ -100,4 +72,3 @@ public final class IzzetKeyrune extends CardImpl {
} }
} }
} }

View file

@ -92,7 +92,7 @@ class JaceTheMindSculptorEffect1 extends OneShotEffect {
if (card != null) { if (card != null) {
Cards cards = new CardsImpl(card); Cards cards = new CardsImpl(card);
controller.lookAtCards("Jace, the Mind Sculptor", cards, game); controller.lookAtCards("Jace, the Mind Sculptor", cards, game);
if (controller.chooseUse(outcome, "Do you wish to put card on the bottom of player's library?", source, game)) { if (controller.chooseUse(outcome, "Put that card on the bottom of its owner's library?", source, game)) {
controller.moveCardToLibraryWithInfo(card, source, game, Zone.LIBRARY, false, false); controller.moveCardToLibraryWithInfo(card, source, game, Zone.LIBRARY, false, false);
} else { } else {
game.informPlayers(controller.getLogName() + " puts the card back on top of the library."); game.informPlayers(controller.getLogName() + " puts the card back on top of the library.");

View file

@ -77,7 +77,7 @@ class MetamorphoseEffect extends OneShotEffect {
Permanent permanent = getTargetPointer().getFirstTargetPermanentOrLKI(game, source); Permanent permanent = getTargetPointer().getFirstTargetPermanentOrLKI(game, source);
if (permanent != null) { if (permanent != null) {
Player controller = game.getPlayer(permanent.getControllerId()); Player controller = game.getPlayer(permanent.getControllerId());
if (controller != null && controller.canRespond() && controller.chooseUse(Outcome.PutCardInPlay, "Do you wish to put an artifact, creature, enchantment, or land card onto the battlefield?", source, game)) { if (controller != null && controller.canRespond() && controller.chooseUse(Outcome.PutCardInPlay, "Put an artifact, creature, enchantment, or land card onto the battlefield?", source, game)) {
TargetCardInHand target = new TargetCardInHand(filter); TargetCardInHand target = new TargetCardInHand(filter);
target.clearChosen(); target.clearChosen();
if (controller.chooseTarget(outcome, target, source, game)) { if (controller.chooseTarget(outcome, target, source, game)) {

View file

@ -89,7 +89,7 @@ class MinionLeshracEffect extends OneShotEffect {
filterCreature.add(AnotherPredicate.instance); filterCreature.add(AnotherPredicate.instance);
TargetControlledPermanent target = new TargetControlledPermanent(filterCreature); TargetControlledPermanent target = new TargetControlledPermanent(filterCreature);
SacrificeTargetCost cost = new SacrificeTargetCost(target); SacrificeTargetCost cost = new SacrificeTargetCost(target);
if (controller.chooseUse(Outcome.AIDontUseIt, "Do you wish to sacrifice another creature to prevent the 5 damage to you?", source, game) if (controller.chooseUse(Outcome.AIDontUseIt, "Sacrifice another creature to prevent the damage?", source, game)
&& cost.canPay(source, source, source.getControllerId(), game) && cost.canPay(source, source, source.getControllerId(), game)
&& cost.pay(source, game, source, source.getControllerId(), true)) { && cost.pay(source, game, source, source.getControllerId(), true)) {
return true; return true;

View file

@ -66,7 +66,7 @@ class MishrasWarMachineEffect extends OneShotEffect {
if (controller != null if (controller != null
&& sourcePermanent != null) { && sourcePermanent != null) {
DiscardCardCost cost = new DiscardCardCost(); DiscardCardCost cost = new DiscardCardCost();
if (controller.chooseUse(Outcome.Benefit, "Do you wish to discard a card to prevent the 3 damage to you?", source, game) if (controller.chooseUse(Outcome.Benefit, "Discard a card to prevent the damage?", source, game)
&& cost.canPay(source, source, source.getControllerId(), game) && cost.canPay(source, source, source.getControllerId(), game)
&& cost.pay(source, game, source, source.getControllerId(), true)) { && cost.pay(source, game, source, source.getControllerId(), true)) {
return true; return true;

View file

@ -81,7 +81,7 @@ class MitoticManipulationEffect extends OneShotEffect {
filter.add(Predicates.or(namePredicates)); filter.add(Predicates.or(namePredicates));
TargetCard target = new TargetCard(Zone.LIBRARY, filter); TargetCard target = new TargetCard(Zone.LIBRARY, filter);
if (cardsFromTop.count(filter, source.getSourceId(), source.getControllerId(), game) > 0 if (cardsFromTop.count(filter, source.getSourceId(), source.getControllerId(), game) > 0
&& controller.chooseUse(Outcome.PutCardInPlay, "Do you wish to put a card on the battlefield?", source, game)) { && controller.chooseUse(Outcome.PutCardInPlay, "Put a card on the battlefield?", source, game)) {
if (controller.choose(Outcome.PutCardInPlay, cardsFromTop, target, game)) { if (controller.choose(Outcome.PutCardInPlay, cardsFromTop, target, game)) {
Card card = cardsFromTop.get(target.getFirstTarget(), game); Card card = cardsFromTop.get(target.getFirstTarget(), game);
if (card != null) { if (card != null) {

View file

@ -62,7 +62,7 @@ class MurderOfCrowsEffect 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 player = game.getPlayer(source.getControllerId());
if (player != null && player.chooseUse(Outcome.DrawCard, "Do you wish to draw a card? If you do, discard a card.", source, game)) { if (player != null && player.chooseUse(Outcome.DrawCard, "Draw a card? If you do, discard a card.", source, game)) {
if (player.drawCards(1, source, game) > 0) { if (player.drawCards(1, source, game) > 0) {
player.discard(1, false, false, source, game); player.discard(1, false, false, source, game);
} }

View file

@ -77,8 +77,8 @@ class OutmaneuverEffect extends AsThoughEffectImpl {
if (blockedCreature != null) { if (blockedCreature != null) {
Player controller = game.getPlayer(blockedCreature.getControllerId()); Player controller = game.getPlayer(blockedCreature.getControllerId());
if (controller != null) { if (controller != null) {
return controller.chooseUse(Outcome.Damage, "Do you wish to assign combat damage for " return controller.chooseUse(Outcome.Damage, "have "
+ blockedCreature.getLogName() + " as though it weren't blocked?", source, game); + blockedCreature.getLogName() + "assign combat damage as though it weren't blocked?", source, game);
} }
} }
return false; return false;

View file

@ -70,7 +70,7 @@ class PrecognitionEffect extends OneShotEffect {
if (card != null) { if (card != null) {
Cards cards = new CardsImpl(card); Cards cards = new CardsImpl(card);
controller.lookAtCards("Precognition", cards, game); controller.lookAtCards("Precognition", cards, game);
if (controller.chooseUse(outcome, "Do you wish to put card on the bottom of player's library?", source, game)) { if (controller.chooseUse(outcome, "Put that card on the bottom of its owner's library?", source, game)) {
controller.moveCardToLibraryWithInfo(card, source, game, Zone.LIBRARY, false, false); controller.moveCardToLibraryWithInfo(card, source, game, Zone.LIBRARY, false, false);
} else { } else {
game.informPlayers(controller.getLogName() + " puts the card back on top of the library."); game.informPlayers(controller.getLogName() + " puts the card back on top of the library.");

View file

@ -104,7 +104,7 @@ class PsychicSurgeryEffect extends OneShotEffect {
if (controller != null && opponent != null) { if (controller != null && opponent != null) {
Cards cards = new CardsImpl(opponent.getLibrary().getTopCards(game, 2)); Cards cards = new CardsImpl(opponent.getLibrary().getTopCards(game, 2));
controller.lookAtCards(source, null, cards, game); controller.lookAtCards(source, null, cards, game);
if (!cards.isEmpty() && controller.chooseUse(Outcome.Exile, "Do you wish to exile a card?", source, game)) { if (!cards.isEmpty() && controller.chooseUse(Outcome.Exile, "Exile a card?", source, game)) {
TargetCard target = new TargetCard(Zone.LIBRARY, new FilterCard("card to exile")); TargetCard target = new TargetCard(Zone.LIBRARY, new FilterCard("card to exile"));
if (controller.choose(Outcome.Exile, cards, target, game)) { if (controller.choose(Outcome.Exile, cards, target, game)) {
Card card = cards.get(target.getFirstTarget(), game); Card card = cards.get(target.getFirstTarget(), game);

View file

@ -77,7 +77,7 @@ class PuresightMerrowEffect extends OneShotEffect {
if (card != null) { if (card != null) {
Cards cards = new CardsImpl(card); Cards cards = new CardsImpl(card);
controller.lookAtCards("Puresight Merrow", cards, game); controller.lookAtCards("Puresight Merrow", cards, game);
if (controller.chooseUse(Outcome.Removal, "Do you wish to exile the card from the top of your library?", source, game)) { if (controller.chooseUse(Outcome.Removal, "Exile the card from the top of your library?", source, game)) {
controller.moveCardToExileWithInfo(card, source.getSourceId(), sourceObject.getIdName(), source, game, Zone.LIBRARY, true); controller.moveCardToExileWithInfo(card, source.getSourceId(), sourceObject.getIdName(), source, game, Zone.LIBRARY, true);
} else { } else {
game.informPlayers(controller.getLogName() + " puts the card back on top of their library."); game.informPlayers(controller.getLogName() + " puts the card back on top of their library.");

View file

@ -79,7 +79,7 @@ class QuestForUlasTempleEffect extends OneShotEffect {
Cards cards = new CardsImpl(card); Cards cards = new CardsImpl(card);
controller.lookAtCards(sourcePermanent.getName(), cards, game); controller.lookAtCards(sourcePermanent.getName(), cards, game);
if (card.isCreature()) { if (card.isCreature()) {
if (controller.chooseUse(Outcome.DrawCard, "Do you wish to reveal the creature card at the top of the library?", source, game)) { if (controller.chooseUse(Outcome.DrawCard, "Reveal the top card of your library?", source, game)) {
controller.revealCards(sourcePermanent.getName(), cards, game); controller.revealCards(sourcePermanent.getName(), cards, game);
Permanent questForUlasTemple = game.getPermanent(source.getSourceId()); Permanent questForUlasTemple = game.getPermanent(source.getSourceId());
if (questForUlasTemple != null) { if (questForUlasTemple != null) {

View file

@ -71,7 +71,7 @@ class RummagingWizardLookLibraryEffect extends OneShotEffect {
CardsImpl cards = new CardsImpl(); CardsImpl cards = new CardsImpl();
cards.add(card); cards.add(card);
controller.lookAtCards("Rummaging Wizard", cards, game); controller.lookAtCards("Rummaging Wizard", cards, game);
if (controller.chooseUse(Outcome.Neutral, "Do you wish to put the card into your graveyard?", source, game)) { if (controller.chooseUse(Outcome.Neutral, "Put that card into your graveyard?", source, game)) {
return controller.moveCards(card, Zone.GRAVEYARD, source, game); return controller.moveCards(card, Zone.GRAVEYARD, source, game);
} }

View file

@ -76,7 +76,7 @@ class SearchForAzcantaLookLibraryEffect extends OneShotEffect {
Card card = controller.getLibrary().getFromTop(game); Card card = controller.getLibrary().getFromTop(game);
if (card != null) { if (card != null) {
controller.lookAtCards(sourceObject.getIdName(), new CardsImpl(card), game); controller.lookAtCards(sourceObject.getIdName(), new CardsImpl(card), game);
if (controller.chooseUse(Outcome.Neutral, "Do you wish to put the card into your graveyard?", source, game)) { if (controller.chooseUse(Outcome.Neutral, "Put that card into your graveyard?", source, game)) {
controller.moveCards(card, Zone.GRAVEYARD, source, game); controller.moveCards(card, Zone.GRAVEYARD, source, game);
} }
if (controller.getGraveyard().size() > 6 && controller.chooseUse(Outcome.Neutral, "Transform " + sourceObject.getLogName() + "?", source, game)) { if (controller.getGraveyard().size() > 6 && controller.chooseUse(Outcome.Neutral, "Transform " + sourceObject.getLogName() + "?", source, game)) {

View file

@ -143,8 +143,7 @@ class ShellOfTheLastKappaCastEffect extends OneShotEffect {
sourcePermanent.getZoneChangeCounter(game))), target, game)) { sourcePermanent.getZoneChangeCounter(game))), target, game)) {
Card card = game.getCard(target.getFirstTarget()); Card card = game.getCard(target.getFirstTarget());
if (card != null if (card != null
&& controller.chooseUse(outcome, "Do you wish to cast card exiled with " && controller.chooseUse(outcome, "Cast " + card.getLogName() + " without paying its mana cost?", source, game)) {
+ sourcePermanent.getLogName() + "?", source, game)) {
game.getState().setValue("PlayFromNotOwnHandZone" + card.getId(), Boolean.TRUE); game.getState().setValue("PlayFromNotOwnHandZone" + card.getId(), Boolean.TRUE);
Boolean cardWasCast = controller.cast(controller.chooseAbilityForCast(card, game, true), Boolean cardWasCast = controller.cast(controller.chooseAbilityForCast(card, game, true),
game, true, new ApprovingObject(source, game)); game, true, new ApprovingObject(source, game));

View file

@ -65,8 +65,7 @@ class SiegeBehemothEffect extends AsThoughEffectImpl {
Player controller = game.getPlayer(source.getControllerId()); Player controller = game.getPlayer(source.getControllerId());
Permanent otherCreature = game.getPermanent(sourceId); Permanent otherCreature = game.getPermanent(sourceId);
if (controller != null && otherCreature != null && otherCreature.isControlledBy(controller.getId())){ if (controller != null && otherCreature != null && otherCreature.isControlledBy(controller.getId())){
return controller.chooseUse(Outcome.Damage, "Do you wish to assign damage for " return controller.chooseUse(Outcome.Damage, "Have " + otherCreature.getLogName() + " assign damage as though it weren't blocked?", source, game);
+ otherCreature.getLogName() + " as though it weren't blocked?", source, game);
} }
} }
return false; return false;

View file

@ -67,7 +67,7 @@ class ThinkTankLookLibraryEffect extends OneShotEffect {
CardsImpl cards = new CardsImpl(); CardsImpl cards = new CardsImpl();
cards.add(card); cards.add(card);
controller.lookAtCards("Think Tank", cards, game); controller.lookAtCards("Think Tank", cards, game);
if (controller.chooseUse(Outcome.Neutral, "Do you wish to put the card into your graveyard?", source, game)) { if (controller.chooseUse(Outcome.Neutral, "Put that card into your graveyard?", source, game)) {
return controller.moveCards(card, Zone.GRAVEYARD, source, game); return controller.moveCards(card, Zone.GRAVEYARD, source, game);
} }

View file

@ -94,7 +94,7 @@ class PayLifeActivePlayerCost extends CostImpl {
} }
int lifeToPayAmount = amount.calculate(game, ability, null); int lifeToPayAmount = amount.calculate(game, ability, null);
if (activatingPlayer.chooseUse(Outcome.LoseLife, "Do you wish to pay " + lifeToPayAmount + " life?", ability, game)) { if (activatingPlayer.chooseUse(Outcome.LoseLife, "Pay " + lifeToPayAmount + " life?", ability, game)) {
this.paid = CardUtil.tryPayLife(lifeToPayAmount, activatingPlayer, source, game); this.paid = CardUtil.tryPayLife(lifeToPayAmount, activatingPlayer, source, game);
return this.paid; return this.paid;
} }

View file

@ -44,7 +44,7 @@ public class ChancellorAbility extends StaticAbility implements OpeningHandActio
@Override @Override
public boolean askUseOpeningHandAction(Card card, Player player, Game game) { public boolean askUseOpeningHandAction(Card card, Player player, Game game) {
return player.chooseUse(Outcome.PutCardInPlay, "Do you wish to reveal " + card.getIdName() + '?', this, game); return player.chooseUse(Outcome.PutCardInPlay, "Reveal " + card.getIdName() + '?', this, game);
} }
@Override @Override

View file

@ -233,20 +233,20 @@ public class LookLibraryAndPickControllerEffect extends LookLibraryControllerEff
} }
private String getMayText() { private String getMayText() {
StringBuilder sb = new StringBuilder("Do you wish to "); StringBuilder sb = new StringBuilder();
switch (targetPickedCards) { switch (targetPickedCards) {
case HAND: case HAND:
if (revealPickedCards) { if (revealPickedCards) {
sb.append("reveal ").append(filter.getMessage()).append(" and put into your hand"); sb.append("Reveal ").append(filter.getMessage()).append(" and put into your hand");
} else { } else {
sb.append("put ").append(filter.getMessage()).append(" into your hand"); sb.append("Put ").append(filter.getMessage()).append(" into your hand");
} }
break; break;
case BATTLEFIELD: case BATTLEFIELD:
sb.append("put ").append(filter.getMessage()).append(" onto the battlefield"); sb.append("Put ").append(filter.getMessage()).append(" onto the battlefield");
break; break;
case GRAVEYARD: case GRAVEYARD:
sb.append("put ").append(filter.getMessage()).append(" into your graveyard"); sb.append("Put ").append(filter.getMessage()).append(" into your graveyard");
break; break;
} }
return sb.append('?').toString(); return sb.append('?').toString();

View file

@ -74,7 +74,7 @@ public class LookLibraryTopCardTargetPlayerEffect extends OneShotEffect {
player.lookAtCards(sourceObject.getIdName(), cards, game); player.lookAtCards(sourceObject.getIdName(), cards, game);
if (putToGraveyard) { if (putToGraveyard) {
for (Card card : cards.getCards(game)) { for (Card card : cards.getCards(game)) {
if (player.chooseUse(outcome, "Do you wish to put card into the player's graveyard?", source, game)) { if (player.chooseUse(outcome, "Put that card into its owner's graveyard?", source, game)) {
player.moveCardToGraveyardWithInfo(card, source, game, Zone.LIBRARY); player.moveCardToGraveyardWithInfo(card, source, game, Zone.LIBRARY);
} else { } else {
game.informPlayers(player.getLogName() + " puts the card back on top of the library."); game.informPlayers(player.getLogName() + " puts the card back on top of the library.");

View file

@ -42,7 +42,7 @@ public class ShuffleIntoLibraryTargetEffect extends OneShotEffect {
Player controller = game.getPlayer(source.getControllerId()); Player controller = game.getPlayer(source.getControllerId());
if (cardObject != null && controller != null && cardObject instanceof Card) { if (cardObject != null && controller != null && cardObject instanceof Card) {
if (!optional if (!optional
|| controller.chooseUse(Outcome.Benefit, "Do you wish to shuffle " + cardObject.getIdName() + " into " || controller.chooseUse(Outcome.Benefit, "Shuffle " + cardObject.getIdName() + " into "
+ (((Card) cardObject).getOwnerId().equals(source.getControllerId()) ? "your" : "its owners") + (((Card) cardObject).getOwnerId().equals(source.getControllerId()) ? "your" : "its owners")
+ " library?", source, game)) { + " library?", source, game)) {
Player owner = game.getPlayer(((Card) cardObject).getOwnerId()); Player owner = game.getPlayer(((Card) cardObject).getOwnerId());

View file

@ -48,7 +48,7 @@ public class BecomesColorOrColorsTargetEffect extends OneShotEffect {
if (controller != null && target != null) { if (controller != null && target != null) {
for (int i = 0; i < 5; i++) { for (int i = 0; i < 5; i++) {
if (i > 0) { if (i > 0) {
if (!controller.chooseUse(Outcome.Neutral, "Do you wish to choose another color?", source, game)) { if (!controller.chooseUse(Outcome.Neutral, "Choose another color?", source, game)) {
break; break;
} }
} }

View file

@ -43,7 +43,7 @@ public class LeylineAbility extends StaticAbility implements MageSingleton, Open
@Override @Override
public boolean askUseOpeningHandAction(Card card, Player player, Game game) { public boolean askUseOpeningHandAction(Card card, Player player, Game game) {
return player.chooseUse(Outcome.PutCardInPlay, "Do you wish to put " + card.getName() + " on the battlefield?", this, game); return player.chooseUse(Outcome.PutCardInPlay, "Put " + card.getName() + " on the battlefield?", this, game);
} }
@Override @Override

View file

@ -352,8 +352,8 @@ public class Combat implements Serializable, Copyable<Combat> {
if (game.replaceEvent(GameEvent.getEvent(GameEvent.EventType.DECLARING_ATTACKERS, attackingPlayerId, attackingPlayerId)) if (game.replaceEvent(GameEvent.getEvent(GameEvent.EventType.DECLARING_ATTACKERS, attackingPlayerId, attackingPlayerId))
|| (!canBand && !canBandWithOther) || (!canBand && !canBandWithOther)
|| !player.chooseUse(Outcome.Benefit, || !player.chooseUse(Outcome.Benefit,
"Do you wish to " + (isBanded ? "band " + attacker.getLogName() (isBanded ? "Band " + attacker.getLogName()
+ " with another " : "form a band with " + attacker.getLogName() + " and an ") + " with another " : "Form a band with " + attacker.getLogName() + " and an ")
+ "attacking creature?", null, game)) { + "attacking creature?", null, game)) {
break; break;
} }

View file

@ -167,8 +167,7 @@ public class CombatGroup implements Serializable, Copyable<CombatGroup> {
} else { } else {
Player player = game.getPlayer(defenderAssignsCombatDamage(game) ? defendingPlayerId : attacker.getControllerId()); Player player = game.getPlayer(defenderAssignsCombatDamage(game) ? defendingPlayerId : attacker.getControllerId());
if ((attacker.getAbilities().containsKey(DamageAsThoughNotBlockedAbility.getInstance().getId()) && if ((attacker.getAbilities().containsKey(DamageAsThoughNotBlockedAbility.getInstance().getId()) &&
player.chooseUse(Outcome.Damage, "Do you wish to assign damage for " player.chooseUse(Outcome.Damage, "Have " + attacker.getLogName() + " assign damage as though it weren't blocked?", null, game)) ||
+ attacker.getLogName() + " as though it weren't blocked?", null, game)) ||
game.getContinuousEffects().asThough(attacker.getId(), AsThoughEffectType.DAMAGE_NOT_BLOCKED, game.getContinuousEffects().asThough(attacker.getId(), AsThoughEffectType.DAMAGE_NOT_BLOCKED,
null, attacker.getControllerId(), game) != null) { null, attacker.getControllerId(), game) != null) {
// for handling creatures like Thorn Elemental // for handling creatures like Thorn Elemental
@ -887,7 +886,7 @@ public class CombatGroup implements Serializable, Copyable<CombatGroup> {
// 10/4/2004 If it is blocked but then all of its blockers are removed before combat damage is assigned, then it won't be able to deal combat damage and you won't be able to use its ability. // 10/4/2004 If it is blocked but then all of its blockers are removed before combat damage is assigned, then it won't be able to deal combat damage and you won't be able to use its ability.
// (same principle should apply if it's blocking and its blocked attacker is removed from combat) // (same principle should apply if it's blocking and its blocked attacker is removed from combat)
if (!((blocked && blockers.isEmpty() && isAttacking) || (attackers.isEmpty() && !isAttacking)) && canDamage(creature, first)) { if (!((blocked && blockers.isEmpty() && isAttacking) || (attackers.isEmpty() && !isAttacking)) && canDamage(creature, first)) {
if (player.chooseUse(Outcome.Damage, "Do you wish to assign " + creature.getLogName() + "'s combat damage divided among defending player and/or any number of defending creatures?", null, game)) { if (player.chooseUse(Outcome.Damage, "Have " + creature.getLogName() + " assign its combat damage divided among defending player and/or any number of defending creatures?", null, game)) {
defendingPlayerAndOrDefendingCreaturesDividedDamage(creature, player, first, game, isAttacking); defendingPlayerAndOrDefendingCreaturesDividedDamage(creature, player, first, game, isAttacking);
return true; return true;
} }