mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-17 19:28:01 +00:00
translate ability/effects all interactive message(in Android because Chinese word wrap doesn't work,do not translate StackDescription for now)
This commit is contained in:
@@ -8,6 +8,7 @@ import forge.game.player.Player;
|
|||||||
import forge.game.spellability.SpellAbility;
|
import forge.game.spellability.SpellAbility;
|
||||||
import forge.game.trigger.TriggerType;
|
import forge.game.trigger.TriggerType;
|
||||||
import forge.game.zone.ZoneType;
|
import forge.game.zone.ZoneType;
|
||||||
|
import forge.util.Localizer;
|
||||||
|
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
@@ -23,7 +24,7 @@ public class AbandonEffect extends SpellAbilityEffect {
|
|||||||
Player controller = source.getController();
|
Player controller = source.getController();
|
||||||
|
|
||||||
boolean isOptional = sa.hasParam("Optional");
|
boolean isOptional = sa.hasParam("Optional");
|
||||||
if (isOptional && !controller.getController().confirmAction(sa, null, "Would you like to abandon the scheme " + source + "?")) {
|
if (isOptional && !controller.getController().confirmAction(sa, null, Localizer.getInstance().getMessage("lblWouldYoulikeAbandon") + " " + source + "?")) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -9,6 +9,7 @@ import forge.game.spellability.TargetRestrictions;
|
|||||||
import forge.game.zone.ZoneType;
|
import forge.game.zone.ZoneType;
|
||||||
import forge.util.collect.FCollection;
|
import forge.util.collect.FCollection;
|
||||||
import forge.util.Lang;
|
import forge.util.Lang;
|
||||||
|
import forge.util.Localizer;
|
||||||
|
|
||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
|
|
||||||
@@ -51,7 +52,7 @@ public class ActivateAbilityEffect extends SpellAbilityEffect {
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
SpellAbility manaAb = p.getController().chooseSingleSpellForEffect(
|
SpellAbility manaAb = p.getController().chooseSingleSpellForEffect(
|
||||||
possibleAb, sa, "Choose a mana ability:", ImmutableMap.of());
|
possibleAb, sa, Localizer.getInstance().getMessage("lblChooseManaAbility"), ImmutableMap.of());
|
||||||
p.getController().playChosenSpellAbility(manaAb);
|
p.getController().playChosenSpellAbility(manaAb);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,6 +8,7 @@ import forge.game.player.Player;
|
|||||||
import forge.game.spellability.SpellAbility;
|
import forge.game.spellability.SpellAbility;
|
||||||
import forge.game.trigger.Trigger;
|
import forge.game.trigger.Trigger;
|
||||||
import forge.game.trigger.TriggerHandler;
|
import forge.game.trigger.TriggerHandler;
|
||||||
|
import forge.util.Localizer;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@@ -61,7 +62,7 @@ public class AddTurnEffect extends SpellAbilityEffect {
|
|||||||
extra.setCantSetSchemesInMotion(true);
|
extra.setCantSetSchemesInMotion(true);
|
||||||
}
|
}
|
||||||
if (sa.hasParam("ShowMessage")) {
|
if (sa.hasParam("ShowMessage")) {
|
||||||
p.getGame().getAction().nofityOfValue(sa, p, p + " takes an extra turn.", null);
|
p.getGame().getAction().nofityOfValue(sa, p, p + " " + Localizer.getInstance().getMessage("lblTakesExtraTurn"), null);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -17,6 +17,7 @@ import forge.game.player.PlayerController;
|
|||||||
import forge.game.spellability.SpellAbility;
|
import forge.game.spellability.SpellAbility;
|
||||||
import forge.game.zone.ZoneType;
|
import forge.game.zone.ZoneType;
|
||||||
import forge.util.Lang;
|
import forge.util.Lang;
|
||||||
|
import forge.util.Localizer;
|
||||||
|
|
||||||
public class AmassEffect extends SpellAbilityEffect {
|
public class AmassEffect extends SpellAbilityEffect {
|
||||||
|
|
||||||
@@ -80,7 +81,7 @@ public class AmassEffect extends SpellAbilityEffect {
|
|||||||
}
|
}
|
||||||
|
|
||||||
CardCollectionView tgtCards = CardLists.getType(activator.getCardsIn(ZoneType.Battlefield), "Army");
|
CardCollectionView tgtCards = CardLists.getType(activator.getCardsIn(ZoneType.Battlefield), "Army");
|
||||||
tgtCards = pc.chooseCardsForEffect(tgtCards, sa, "Choose an army to put counters on", 1, 1, false);
|
tgtCards = pc.chooseCardsForEffect(tgtCards, sa, Localizer.getInstance().getMessage("lblChooseAnArmy"), 1, 1, false);
|
||||||
|
|
||||||
GameEntityCounterTable table = new GameEntityCounterTable();
|
GameEntityCounterTable table = new GameEntityCounterTable();
|
||||||
for(final Card tgtCard : tgtCards) {
|
for(final Card tgtCard : tgtCards) {
|
||||||
|
|||||||
@@ -16,6 +16,7 @@ import forge.game.ability.SpellAbilityEffect;
|
|||||||
import forge.game.card.Card;
|
import forge.game.card.Card;
|
||||||
import forge.game.player.Player;
|
import forge.game.player.Player;
|
||||||
import forge.game.spellability.SpellAbility;
|
import forge.game.spellability.SpellAbility;
|
||||||
|
import forge.util.Localizer;
|
||||||
|
|
||||||
public class AssignGroupEffect extends SpellAbilityEffect {
|
public class AssignGroupEffect extends SpellAbilityEffect {
|
||||||
|
|
||||||
@@ -49,7 +50,7 @@ public class AssignGroupEffect extends SpellAbilityEffect {
|
|||||||
Multimap<SpellAbility, GameObject> result = ArrayListMultimap.create();
|
Multimap<SpellAbility, GameObject> result = ArrayListMultimap.create();
|
||||||
|
|
||||||
for (GameObject g : defined) {
|
for (GameObject g : defined) {
|
||||||
final String title = "Choose ability for " + g.toString();
|
final String title = Localizer.getInstance().getMessage("lblChooseAbilityFor") + " " + g.toString();
|
||||||
Map<String, Object> params = Maps.newHashMap();
|
Map<String, Object> params = Maps.newHashMap();
|
||||||
params.put("Affected", g);
|
params.put("Affected", g);
|
||||||
|
|
||||||
|
|||||||
@@ -16,6 +16,7 @@ import forge.game.spellability.TargetRestrictions;
|
|||||||
import forge.game.zone.ZoneType;
|
import forge.game.zone.ZoneType;
|
||||||
import forge.util.collect.FCollection;
|
import forge.util.collect.FCollection;
|
||||||
import forge.util.Lang;
|
import forge.util.Lang;
|
||||||
|
import forge.util.Localizer;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@@ -60,7 +61,7 @@ public class AttachEffect extends SpellAbilityEffect {
|
|||||||
|
|
||||||
// If Cast Targets will be checked on the Stack
|
// If Cast Targets will be checked on the Stack
|
||||||
for (final Card attachment : attachments) {
|
for (final Card attachment : attachments) {
|
||||||
String message = "Do you want to attach " + attachment + " to " + attachTo + "?";
|
String message = Localizer.getInstance().getMessage("lblDoYouWantAttach") + " " + attachment + " " + Localizer.getInstance().getMessage("lblTo") + " " + attachTo + "?";
|
||||||
if ( sa.hasParam("Optional") && !p.getController().confirmAction(sa, null, message) )
|
if ( sa.hasParam("Optional") && !p.getController().confirmAction(sa, null, message) )
|
||||||
continue;
|
continue;
|
||||||
handleAttachment(attachment, attachTo, sa);
|
handleAttachment(attachment, attachTo, sa);
|
||||||
@@ -173,7 +174,7 @@ public class AttachEffect extends SpellAbilityEffect {
|
|||||||
players.add(player);
|
players.add(player);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
final Player pa = p.getController().chooseSingleEntityForEffect(players, aura, source + " - Select a player to attach to.");
|
final Player pa = p.getController().chooseSingleEntityForEffect(players, aura, source + " - " + Localizer.getInstance().getMessage("lblSelectAPlayerAttachTo"));
|
||||||
if (pa != null) {
|
if (pa != null) {
|
||||||
handleAura(source, pa);
|
handleAura(source, pa);
|
||||||
return true;
|
return true;
|
||||||
@@ -186,7 +187,7 @@ public class AttachEffect extends SpellAbilityEffect {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
final Card o = p.getController().chooseSingleEntityForEffect(list, aura, source + " - Select a card to attach to.");
|
final Card o = p.getController().chooseSingleEntityForEffect(list, aura, source + " - " + Localizer.getInstance().getMessage("lblSelectACardAttachTo"));
|
||||||
if (o != null) {
|
if (o != null) {
|
||||||
handleAura(source, o);
|
handleAura(source, o);
|
||||||
//source.enchantEntity((Card) o);
|
//source.enchantEntity((Card) o);
|
||||||
|
|||||||
@@ -11,6 +11,7 @@ import forge.game.player.PlayerActionConfirmMode;
|
|||||||
import forge.game.spellability.AbilitySub;
|
import forge.game.spellability.AbilitySub;
|
||||||
import forge.game.spellability.SpellAbility;
|
import forge.game.spellability.SpellAbility;
|
||||||
import forge.util.collect.FCollection;
|
import forge.util.collect.FCollection;
|
||||||
|
import forge.util.Localizer;
|
||||||
|
|
||||||
public class BidLifeEffect extends SpellAbilityEffect {
|
public class BidLifeEffect extends SpellAbilityEffect {
|
||||||
@Override
|
@Override
|
||||||
@@ -27,7 +28,7 @@ public class BidLifeEffect extends SpellAbilityEffect {
|
|||||||
if (sa.hasParam("StartBidding")) {
|
if (sa.hasParam("StartBidding")) {
|
||||||
String start = sa.getParam("StartBidding");
|
String start = sa.getParam("StartBidding");
|
||||||
if ("Any".equals(start)) {
|
if ("Any".equals(start)) {
|
||||||
startBidding = activator.getController().announceRequirements(sa, "Choose a starting bid", true);
|
startBidding = activator.getController().announceRequirements(sa, Localizer.getInstance().getMessage("lblChooseStartingBid"), true);
|
||||||
} else {
|
} else {
|
||||||
startBidding = AbilityUtils.calculateAmount(host, start, sa);
|
startBidding = AbilityUtils.calculateAmount(host, start, sa);
|
||||||
}
|
}
|
||||||
@@ -54,12 +55,12 @@ public class BidLifeEffect extends SpellAbilityEffect {
|
|||||||
willBid = false;
|
willBid = false;
|
||||||
for (final Player p : bidPlayers) {
|
for (final Player p : bidPlayers) {
|
||||||
final boolean result = p.getController().confirmBidAction(sa, PlayerActionConfirmMode.BidLife,
|
final boolean result = p.getController().confirmBidAction(sa, PlayerActionConfirmMode.BidLife,
|
||||||
"Do you want to top bid? Current Bid =" + bid, bid, winner);
|
Localizer.getInstance().getMessage("lblDoYouWantTopBid") + bid, bid, winner);
|
||||||
willBid |= result;
|
willBid |= result;
|
||||||
if (result) { // a different choose number
|
if (result) { // a different choose number
|
||||||
bid += p.getController().chooseNumber(sa, "Bid life:", 1, 9);
|
bid += p.getController().chooseNumber(sa, Localizer.getInstance().getMessage("lblBidLife") + ":", 1, 9);
|
||||||
winner = p;
|
winner = p;
|
||||||
host.getGame().getAction().nofityOfValue(sa, p, "topped bid with " + bid + " life", p);
|
host.getGame().getAction().nofityOfValue(sa, p, Localizer.getInstance().getMessage("lblTopBidWith") + " " + bid + " " + Localizer.getInstance().getMessage("lbllife"), p);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ import forge.game.card.Card;
|
|||||||
import forge.game.card.CardCollectionView;
|
import forge.game.card.CardCollectionView;
|
||||||
import forge.game.spellability.SpellAbility;
|
import forge.game.spellability.SpellAbility;
|
||||||
import forge.game.zone.ZoneType;
|
import forge.game.zone.ZoneType;
|
||||||
|
import forge.util.Localizer;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@@ -30,7 +31,7 @@ public class BondEffect extends SpellAbilityEffect {
|
|||||||
Card partner = cards.getFirst();
|
Card partner = cards.getFirst();
|
||||||
// skip choice if only one card on list
|
// skip choice if only one card on list
|
||||||
if (cards.size() > 1) {
|
if (cards.size() > 1) {
|
||||||
partner = sa.getActivatingPlayer().getController().chooseSingleEntityForEffect(cards, sa, "Select a card to pair with");
|
partner = sa.getActivatingPlayer().getController().chooseSingleEntityForEffect(cards, sa, Localizer.getInstance().getMessage("lblSelectACardPair"));
|
||||||
}
|
}
|
||||||
|
|
||||||
// pair choices together
|
// pair choices together
|
||||||
|
|||||||
@@ -13,6 +13,7 @@ import forge.game.spellability.SpellAbility;
|
|||||||
import forge.game.spellability.SpellAbilityStackInstance;
|
import forge.game.spellability.SpellAbilityStackInstance;
|
||||||
import forge.game.spellability.TargetRestrictions;
|
import forge.game.spellability.TargetRestrictions;
|
||||||
import forge.util.collect.FCollectionView;
|
import forge.util.collect.FCollectionView;
|
||||||
|
import forge.util.Localizer;
|
||||||
|
|
||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
|
|
||||||
@@ -44,7 +45,7 @@ public class ChangeCombatantsEffect extends SpellAbilityEffect {
|
|||||||
final GameEntity originalDefender = combat.getDefenderByAttacker(c);
|
final GameEntity originalDefender = combat.getDefenderByAttacker(c);
|
||||||
final FCollectionView<GameEntity> defs = combat.getDefenders();
|
final FCollectionView<GameEntity> defs = combat.getDefenders();
|
||||||
final GameEntity defender = sa.getActivatingPlayer().getController().chooseSingleEntityForEffect(defs, sa,
|
final GameEntity defender = sa.getActivatingPlayer().getController().chooseSingleEntityForEffect(defs, sa,
|
||||||
"Choose which defender to attack with " + c, false);
|
Localizer.getInstance().getMessage("lblChooseDefenderToAttackWith") + " " + c, false);
|
||||||
if (originalDefender != null && !originalDefender.equals(defender)) {
|
if (originalDefender != null && !originalDefender.equals(defender)) {
|
||||||
AttackingBand ab = combat.getBandOfAttacker(c);
|
AttackingBand ab = combat.getBandOfAttacker(c);
|
||||||
if (ab != null) {
|
if (ab != null) {
|
||||||
|
|||||||
@@ -11,6 +11,7 @@ import forge.game.spellability.SpellAbilityStackInstance;
|
|||||||
import forge.game.spellability.TargetChoices;
|
import forge.game.spellability.TargetChoices;
|
||||||
import forge.game.zone.MagicStack;
|
import forge.game.zone.MagicStack;
|
||||||
import forge.util.Aggregates;
|
import forge.util.Aggregates;
|
||||||
|
import forge.util.Localizer;
|
||||||
|
|
||||||
import org.apache.commons.lang3.tuple.ImmutablePair;
|
import org.apache.commons.lang3.tuple.ImmutablePair;
|
||||||
import org.apache.commons.lang3.tuple.Pair;
|
import org.apache.commons.lang3.tuple.Pair;
|
||||||
@@ -50,7 +51,7 @@ public class ChangeTargetsEffect extends SpellAbilityEffect {
|
|||||||
// Redirect rules read 'you MAY choose new targets' ... okay!
|
// Redirect rules read 'you MAY choose new targets' ... okay!
|
||||||
// TODO: Don't even ask to change targets, if the SA and subs don't actually have targets
|
// TODO: Don't even ask to change targets, if the SA and subs don't actually have targets
|
||||||
boolean isOptional = sa.hasParam("Optional");
|
boolean isOptional = sa.hasParam("Optional");
|
||||||
if (isOptional && !chooser.getController().confirmAction(sa, null, "Do you want to change targets of " + tgtSA.getHostCard() + "?")) {
|
if (isOptional && !chooser.getController().confirmAction(sa, null, Localizer.getInstance().getMessage("lblDoYouWantChangeTargets") + " " + tgtSA.getHostCard() + "?")) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
if (changesOneTarget) {
|
if (changesOneTarget) {
|
||||||
|
|||||||
@@ -14,6 +14,7 @@ import forge.game.card.Card;
|
|||||||
import forge.game.event.GameEventCardStatsChanged;
|
import forge.game.event.GameEventCardStatsChanged;
|
||||||
import forge.game.spellability.SpellAbility;
|
import forge.game.spellability.SpellAbility;
|
||||||
import forge.util.TextUtil;
|
import forge.util.TextUtil;
|
||||||
|
import forge.util.Localizer;
|
||||||
|
|
||||||
public class ChangeTextEffect extends SpellAbilityEffect {
|
public class ChangeTextEffect extends SpellAbilityEffect {
|
||||||
|
|
||||||
@@ -33,7 +34,7 @@ public class ChangeTextEffect extends SpellAbilityEffect {
|
|||||||
final String[] changedColorWordsArray = sa.getParam("ChangeColorWord").split(" ");
|
final String[] changedColorWordsArray = sa.getParam("ChangeColorWord").split(" ");
|
||||||
if (changedColorWordsArray[0].equals("Choose")) {
|
if (changedColorWordsArray[0].equals("Choose")) {
|
||||||
originalColor = sa.getActivatingPlayer().getController().chooseColor(
|
originalColor = sa.getActivatingPlayer().getController().chooseColor(
|
||||||
"Choose a color word to replace", sa, ColorSet.ALL_COLORS);
|
Localizer.getInstance().getMessage("lblChooseColorReplace"), sa, ColorSet.ALL_COLORS);
|
||||||
changedColorWordOriginal = TextUtil.capitalize(MagicColor.toLongString(originalColor));
|
changedColorWordOriginal = TextUtil.capitalize(MagicColor.toLongString(originalColor));
|
||||||
} else {
|
} else {
|
||||||
changedColorWordOriginal = changedColorWordsArray[0];
|
changedColorWordOriginal = changedColorWordsArray[0];
|
||||||
@@ -48,7 +49,7 @@ public class ChangeTextEffect extends SpellAbilityEffect {
|
|||||||
possibleNewColors = ColorSet.fromMask(originalColor).inverse();
|
possibleNewColors = ColorSet.fromMask(originalColor).inverse();
|
||||||
}
|
}
|
||||||
final byte newColor = sa.getActivatingPlayer().getController().chooseColor(
|
final byte newColor = sa.getActivatingPlayer().getController().chooseColor(
|
||||||
"Choose a new color word", sa, possibleNewColors);
|
Localizer.getInstance().getMessage("lblChooseNewColor"), sa, possibleNewColors);
|
||||||
changedColorWordNew = TextUtil.capitalize(MagicColor.toLongString(newColor));
|
changedColorWordNew = TextUtil.capitalize(MagicColor.toLongString(newColor));
|
||||||
} else {
|
} else {
|
||||||
changedColorWordNew = changedColorWordsArray[1];
|
changedColorWordNew = changedColorWordsArray[1];
|
||||||
|
|||||||
@@ -14,6 +14,7 @@ import forge.game.zone.Zone;
|
|||||||
import forge.game.zone.ZoneType;
|
import forge.game.zone.ZoneType;
|
||||||
import forge.util.Lang;
|
import forge.util.Lang;
|
||||||
import forge.util.TextUtil;
|
import forge.util.TextUtil;
|
||||||
|
import forge.util.Localizer;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
@@ -102,11 +103,11 @@ public class ChangeZoneAllEffect extends SpellAbilityEffect {
|
|||||||
} else {
|
} else {
|
||||||
final StringBuilder sb = new StringBuilder();
|
final StringBuilder sb = new StringBuilder();
|
||||||
|
|
||||||
sb.append("Move ");
|
sb.append(Localizer.getInstance().getMessage("lblMove") + " ");
|
||||||
sb.append(targets);
|
sb.append(targets);
|
||||||
sb.append(" from ");
|
sb.append(" " + Localizer.getInstance().getMessage("lblFrom") + " ");
|
||||||
sb.append(Lang.joinHomogenous(origin));
|
sb.append(Lang.joinHomogenous(origin));
|
||||||
sb.append(" to ");
|
sb.append(" " + Localizer.getInstance().getMessage("lblTo") + " ");
|
||||||
sb.append(destination);
|
sb.append(destination);
|
||||||
sb.append("?");
|
sb.append("?");
|
||||||
|
|
||||||
|
|||||||
@@ -32,6 +32,7 @@ import forge.util.MessageUtil;
|
|||||||
import forge.util.TextUtil;
|
import forge.util.TextUtil;
|
||||||
import forge.util.collect.FCollection;
|
import forge.util.collect.FCollection;
|
||||||
import forge.util.collect.FCollectionView;
|
import forge.util.collect.FCollectionView;
|
||||||
|
import forge.util.Localizer;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
@@ -439,7 +440,7 @@ public class ChangeZoneEffect extends SpellAbilityEffect {
|
|||||||
hostCard.addRemembered(CardUtil.getLKICopy(tgtC));
|
hostCard.addRemembered(CardUtil.getLKICopy(tgtC));
|
||||||
}
|
}
|
||||||
|
|
||||||
final String prompt = TextUtil.concatWithSpace("Do you want to move", tgtC.toString(), "from", origin.toString(), "to", TextUtil.addSuffix(destination.toString(),"?"));
|
final String prompt = TextUtil.concatWithSpace(Localizer.getInstance().getMessage("lblDoYouWantMove"), tgtC.toString(), Localizer.getInstance().getMessage("lblFrom"), origin.toString(), Localizer.getInstance().getMessage("lblTo"), TextUtil.addSuffix(destination.toString(),"?"));
|
||||||
if (optional && !player.getController().confirmAction(sa, null, prompt) )
|
if (optional && !player.getController().confirmAction(sa, null, prompt) )
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
@@ -503,7 +504,7 @@ public class ChangeZoneEffect extends SpellAbilityEffect {
|
|||||||
list = CardLists.getValidCards(game.getCardsIn(ZoneType.Battlefield), sa.getParam("AttachedTo"), tgtC.getController(), tgtC);
|
list = CardLists.getValidCards(game.getCardsIn(ZoneType.Battlefield), sa.getParam("AttachedTo"), tgtC.getController(), tgtC);
|
||||||
}
|
}
|
||||||
if (!list.isEmpty()) {
|
if (!list.isEmpty()) {
|
||||||
Card attachedTo = player.getController().chooseSingleEntityForEffect(list, sa, tgtC + " - Select a card to attach to.");
|
Card attachedTo = player.getController().chooseSingleEntityForEffect(list, sa, tgtC + " - " + Localizer.getInstance().getMessage("lblSelectACardAttachTo"));
|
||||||
tgtC.attachToEntity(attachedTo);
|
tgtC.attachToEntity(attachedTo);
|
||||||
} else { // When it should enter the battlefield attached to an illegal permanent it fails
|
} else { // When it should enter the battlefield attached to an illegal permanent it fails
|
||||||
continue;
|
continue;
|
||||||
@@ -513,7 +514,7 @@ public class ChangeZoneEffect extends SpellAbilityEffect {
|
|||||||
if (sa.hasParam("AttachedToPlayer")) {
|
if (sa.hasParam("AttachedToPlayer")) {
|
||||||
FCollectionView<Player> list = AbilityUtils.getDefinedPlayers(hostCard, sa.getParam("AttachedToPlayer"), sa);
|
FCollectionView<Player> list = AbilityUtils.getDefinedPlayers(hostCard, sa.getParam("AttachedToPlayer"), sa);
|
||||||
if (!list.isEmpty()) {
|
if (!list.isEmpty()) {
|
||||||
Player attachedTo = player.getController().chooseSingleEntityForEffect(list, sa, tgtC + " - Select a player to attach to.");
|
Player attachedTo = player.getController().chooseSingleEntityForEffect(list, sa, tgtC + " - " + Localizer.getInstance().getMessage("lblSelectAPlayerAttachTo"));
|
||||||
tgtC.attachToEntity(attachedTo);
|
tgtC.attachToEntity(attachedTo);
|
||||||
}
|
}
|
||||||
else { // When it should enter the battlefield attached to an illegal player it fails
|
else { // When it should enter the battlefield attached to an illegal player it fails
|
||||||
@@ -560,7 +561,7 @@ public class ChangeZoneEffect extends SpellAbilityEffect {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
defender = player.getController().chooseSingleEntityForEffect(e, sa, "Declare a defender for " + movedCard );
|
defender = player.getController().chooseSingleEntityForEffect(e, sa, Localizer.getInstance().getMessage("lblDeclareDefenderFor") + " " + movedCard );
|
||||||
}
|
}
|
||||||
if (defender != null) {
|
if (defender != null) {
|
||||||
combat.addAttacker(movedCard, defender);
|
combat.addAttacker(movedCard, defender);
|
||||||
@@ -727,7 +728,7 @@ public class ChangeZoneEffect extends SpellAbilityEffect {
|
|||||||
|
|
||||||
final StringBuilder sb = new StringBuilder();
|
final StringBuilder sb = new StringBuilder();
|
||||||
sb.append(sa.getParam("AlternativeMessage")).append(" ");
|
sb.append(sa.getParam("AlternativeMessage")).append(" ");
|
||||||
sb.append(altFetchList.size()).append(" cards match your searching type in Alternate Zones.");
|
sb.append(altFetchList.size()).append(" " + Localizer.getInstance().getMessage("lblCardMatchSearchingTypeInAlternateZones"));
|
||||||
|
|
||||||
if (!decider.getController().confirmAction(sa, PlayerActionConfirmMode.ChangeZoneFromAltSource, sb.toString())) {
|
if (!decider.getController().confirmAction(sa, PlayerActionConfirmMode.ChangeZoneFromAltSource, sb.toString())) {
|
||||||
origin = alt;
|
origin = alt;
|
||||||
@@ -749,7 +750,7 @@ public class ChangeZoneEffect extends SpellAbilityEffect {
|
|||||||
|
|
||||||
final boolean optional = sa.hasParam("Optional");
|
final boolean optional = sa.hasParam("Optional");
|
||||||
if (optional) {
|
if (optional) {
|
||||||
String message = MessageUtil.formatMessage(defined ? "Put that card from {player's} " + Lang.joinHomogenous(origin).toLowerCase() + " to " + destination.name().toLowerCase() : "Search {player's} " + Lang.joinHomogenous(origin).toLowerCase() + "?", decider, player);
|
String message = MessageUtil.formatMessage(defined ? Localizer.getInstance().getMessage("lblPutThatCardFrom") + " {player's} " + Lang.joinHomogenous(origin).toLowerCase() + " " + Localizer.getInstance().getMessage("lblTo") + " " + destination.name().toLowerCase() : Localizer.getInstance().getMessage("lblSearch") + " {player's} " + Lang.joinHomogenous(origin).toLowerCase() + "?", decider, player);
|
||||||
if (!decider.getController().confirmAction(sa, PlayerActionConfirmMode.ChangeZoneGeneral, message)) {
|
if (!decider.getController().confirmAction(sa, PlayerActionConfirmMode.ChangeZoneGeneral, message)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -801,10 +802,10 @@ public class ChangeZoneEffect extends SpellAbilityEffect {
|
|||||||
final int fetchNum = Math.min(player.getCardsIn(ZoneType.Library).size(), 4);
|
final int fetchNum = Math.min(player.getCardsIn(ZoneType.Library).size(), 4);
|
||||||
CardCollectionView shown = !decider.hasKeyword("LimitSearchLibrary") ? player.getCardsIn(ZoneType.Library) : player.getCardsIn(ZoneType.Library, fetchNum);
|
CardCollectionView shown = !decider.hasKeyword("LimitSearchLibrary") ? player.getCardsIn(ZoneType.Library) : player.getCardsIn(ZoneType.Library, fetchNum);
|
||||||
// Look at whole library before moving onto choosing a card
|
// Look at whole library before moving onto choosing a card
|
||||||
delayedReveal = new DelayedReveal(shown, ZoneType.Library, PlayerView.get(player), source.getName() + " - Looking at cards in ");
|
delayedReveal = new DelayedReveal(shown, ZoneType.Library, PlayerView.get(player), source.getName() + " - " + Localizer.getInstance().getMessage("lblLookingCardIn") + " ");
|
||||||
}
|
}
|
||||||
else if (origin.contains(ZoneType.Hand) && player.isOpponentOf(decider)) {
|
else if (origin.contains(ZoneType.Hand) && player.isOpponentOf(decider)) {
|
||||||
delayedReveal = new DelayedReveal(player.getCardsIn(ZoneType.Hand), ZoneType.Hand, PlayerView.get(player), source.getName() + " - Looking at cards in ");
|
delayedReveal = new DelayedReveal(player.getCardsIn(ZoneType.Hand), ZoneType.Hand, PlayerView.get(player), source.getName() + " - " + Localizer.getInstance().getMessage("lblLookingCardIn") + " ");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -821,7 +822,7 @@ public class ChangeZoneEffect extends SpellAbilityEffect {
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
SpellAbility tgtSA = decider.getController().getAbilityToPlay(tgtCard, sas);
|
SpellAbility tgtSA = decider.getController().getAbilityToPlay(tgtCard, sas);
|
||||||
if (!decider.getController().confirmAction(tgtSA, null, "Do you want to play " + tgtCard + "?")) {
|
if (!decider.getController().confirmAction(tgtSA, null, Localizer.getInstance().getMessage("lblDoYouWantPlay") + " " + tgtCard + "?")) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
// if played, that card cannot be found
|
// if played, that card cannot be found
|
||||||
@@ -853,7 +854,7 @@ public class ChangeZoneEffect extends SpellAbilityEffect {
|
|||||||
final boolean champion = sa.hasParam("Champion");
|
final boolean champion = sa.hasParam("Champion");
|
||||||
final boolean forget = sa.hasParam("ForgetChanged");
|
final boolean forget = sa.hasParam("ForgetChanged");
|
||||||
final boolean imprint = sa.hasParam("Imprint");
|
final boolean imprint = sa.hasParam("Imprint");
|
||||||
String selectPrompt = sa.hasParam("SelectPrompt") ? sa.getParam("SelectPrompt") : MessageUtil.formatMessage("Select a card from {player's} " + Lang.joinHomogenous(origin).toLowerCase(), decider, player);
|
String selectPrompt = sa.hasParam("SelectPrompt") ? sa.getParam("SelectPrompt") : MessageUtil.formatMessage(Localizer.getInstance().getMessage("lblSelectCardFrom") + " {player's} " + Lang.joinHomogenous(origin).toLowerCase(), decider, player);
|
||||||
final String totalcmc = sa.getParam("WithTotalCMC");
|
final String totalcmc = sa.getParam("WithTotalCMC");
|
||||||
int totcmc = AbilityUtils.calculateAmount(source, totalcmc, sa);
|
int totcmc = AbilityUtils.calculateAmount(source, totalcmc, sa);
|
||||||
|
|
||||||
@@ -866,9 +867,9 @@ public class ChangeZoneEffect extends SpellAbilityEffect {
|
|||||||
if (! sa.hasParam("SelectPrompt")) {
|
if (! sa.hasParam("SelectPrompt")) {
|
||||||
// new default messaging for multi select
|
// new default messaging for multi select
|
||||||
if (fetchList.size() > changeNum) {
|
if (fetchList.size() > changeNum) {
|
||||||
selectPrompt = MessageUtil.formatMessage("Select up to " + changeNum + " cards from {player's} " + Lang.joinHomogenous(origin).toLowerCase(), decider, player);
|
selectPrompt = MessageUtil.formatMessage(Localizer.getInstance().getMessage("lblSelectUpTo") + " " + changeNum + " " + Localizer.getInstance().getMessage("lblCardsFrom") + " {player's} " + Lang.joinHomogenous(origin).toLowerCase(), decider, player);
|
||||||
} else {
|
} else {
|
||||||
selectPrompt = MessageUtil.formatMessage("Select cards from {player's} " + Lang.joinHomogenous(origin).toLowerCase(), decider, player);
|
selectPrompt = MessageUtil.formatMessage(Localizer.getInstance().getMessage("lblSelectCardsFrom") + " {player's} " + Lang.joinHomogenous(origin).toLowerCase(), decider, player);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// ensure that selection is within maximum allowed changeNum
|
// ensure that selection is within maximum allowed changeNum
|
||||||
@@ -930,7 +931,7 @@ public class ChangeZoneEffect extends SpellAbilityEffect {
|
|||||||
|
|
||||||
if (c == null) {
|
if (c == null) {
|
||||||
final int num = Math.min(fetchList.size(), changeNum - i);
|
final int num = Math.min(fetchList.size(), changeNum - i);
|
||||||
String message = "Cancel Search? Up to " + num + " more card" + (num != 1 ? "s" : "") + " can be selected.";
|
String message = Localizer.getInstance().getMessage("lblCancelSearchUpTo") + " " + num + " " + Localizer.getInstance().getMessage("lblMoreCard") + (num != 1 ? "s" : "") + " " + Localizer.getInstance().getMessage("lblCanBeSelected");
|
||||||
|
|
||||||
if (fetchList.isEmpty() || decider.getController().confirmAction(sa, PlayerActionConfirmMode.ChangeZoneGeneral, message)) {
|
if (fetchList.isEmpty() || decider.getController().confirmAction(sa, PlayerActionConfirmMode.ChangeZoneGeneral, message)) {
|
||||||
break;
|
break;
|
||||||
@@ -1001,7 +1002,7 @@ public class ChangeZoneEffect extends SpellAbilityEffect {
|
|||||||
if (!list.isEmpty()) {
|
if (!list.isEmpty()) {
|
||||||
Card attachedTo = null;
|
Card attachedTo = null;
|
||||||
if (list.size() > 1) {
|
if (list.size() > 1) {
|
||||||
attachedTo = decider.getController().chooseSingleEntityForEffect(list, sa, c + " - Select a card to attach to.");
|
attachedTo = decider.getController().chooseSingleEntityForEffect(list, sa, c + " - " + Localizer.getInstance().getMessage("lblSelectACardAttachTo"));
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
attachedTo = list.get(0);
|
attachedTo = list.get(0);
|
||||||
@@ -1019,7 +1020,7 @@ public class ChangeZoneEffect extends SpellAbilityEffect {
|
|||||||
if (sa.hasParam("AttachedToPlayer")) {
|
if (sa.hasParam("AttachedToPlayer")) {
|
||||||
FCollectionView<Player> list = AbilityUtils.getDefinedPlayers(source, sa.getParam("AttachedToPlayer"), sa);
|
FCollectionView<Player> list = AbilityUtils.getDefinedPlayers(source, sa.getParam("AttachedToPlayer"), sa);
|
||||||
if (!list.isEmpty()) {
|
if (!list.isEmpty()) {
|
||||||
Player attachedTo = player.getController().chooseSingleEntityForEffect(list, sa, c + " - Select a player to attach to.");
|
Player attachedTo = player.getController().chooseSingleEntityForEffect(list, sa, c + " - " + Localizer.getInstance().getMessage("lblSelectAPlayerAttachTo"));
|
||||||
c.attachToEntity(attachedTo);
|
c.attachToEntity(attachedTo);
|
||||||
}
|
}
|
||||||
else { // When it should enter the battlefield attached to an illegal permanent it fails
|
else { // When it should enter the battlefield attached to an illegal permanent it fails
|
||||||
@@ -1042,7 +1043,7 @@ public class ChangeZoneEffect extends SpellAbilityEffect {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
defender = player.getController().chooseSingleEntityForEffect(e, sa, "Declare a defender for " + c );
|
defender = player.getController().chooseSingleEntityForEffect(e, sa, Localizer.getInstance().getMessage("lblDeclareDefenderFor") + " " + c );
|
||||||
}
|
}
|
||||||
if (defender != null) {
|
if (defender != null) {
|
||||||
combat.addAttacker(c, defender);
|
combat.addAttacker(c, defender);
|
||||||
|
|||||||
@@ -18,6 +18,7 @@ import forge.game.spellability.TargetRestrictions;
|
|||||||
import forge.game.zone.ZoneType;
|
import forge.game.zone.ZoneType;
|
||||||
import forge.util.Aggregates;
|
import forge.util.Aggregates;
|
||||||
import forge.util.Lang;
|
import forge.util.Lang;
|
||||||
|
import forge.util.Localizer;
|
||||||
|
|
||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
|
|
||||||
@@ -98,10 +99,10 @@ public class ChooseCardEffect extends SpellAbilityEffect {
|
|||||||
int chosenP = 0;
|
int chosenP = 0;
|
||||||
while (!creature.isEmpty()) {
|
while (!creature.isEmpty()) {
|
||||||
Card c = p.getController().chooseSingleEntityForEffect(creature, sa,
|
Card c = p.getController().chooseSingleEntityForEffect(creature, sa,
|
||||||
"Select creature(s) with total power less than or equal to " + (totP - chosenP - negativeNum)
|
Localizer.getInstance().getMessage("lblSelectCreatureWithTotalPowerLessOrEqualTo") + " " + (totP - chosenP - negativeNum)
|
||||||
+ "\r\n(Selected:" + chosenPool + ")\r\n" + "(Total Power: " + chosenP + ")", chosenP <= totP);
|
+ "\r\n(" + Localizer.getInstance().getMessage("lblSelected") + ":" + chosenPool + ")\r\n(" + Localizer.getInstance().getMessage("lblTotalPower") + ": " + chosenP + ")", chosenP <= totP);
|
||||||
if (c == null) {
|
if (c == null) {
|
||||||
if (p.getController().confirmAction(sa, PlayerActionConfirmMode.OptionalChoose, "Cancel Choose?")) {
|
if (p.getController().confirmAction(sa, PlayerActionConfirmMode.OptionalChoose, Localizer.getInstance().getMessage("lblCancelChooseConfirm"))) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
@@ -118,7 +119,7 @@ public class ChooseCardEffect extends SpellAbilityEffect {
|
|||||||
if (sa.hasParam("AtRandom") && !choices.isEmpty()) {
|
if (sa.hasParam("AtRandom") && !choices.isEmpty()) {
|
||||||
Aggregates.random(choices, validAmount, chosen);
|
Aggregates.random(choices, validAmount, chosen);
|
||||||
} else {
|
} else {
|
||||||
String title = sa.hasParam("ChoiceTitle") ? sa.getParam("ChoiceTitle") : "Choose a card ";
|
String title = sa.hasParam("ChoiceTitle") ? sa.getParam("ChoiceTitle") : Localizer.getInstance().getMessage("lblChooseaCard") + " ";
|
||||||
chosen.addAll(p.getController().chooseCardsForEffect(choices, sa, title, minAmount, validAmount, !sa.hasParam("Mandatory")));
|
chosen.addAll(p.getController().chooseCardsForEffect(choices, sa, title, minAmount, validAmount, !sa.hasParam("Mandatory")));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -22,6 +22,7 @@ import forge.game.spellability.TargetRestrictions;
|
|||||||
import forge.item.PaperCard;
|
import forge.item.PaperCard;
|
||||||
import forge.util.Aggregates;
|
import forge.util.Aggregates;
|
||||||
import forge.util.ComparableOp;
|
import forge.util.ComparableOp;
|
||||||
|
import forge.util.Localizer;
|
||||||
|
|
||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
|
|
||||||
@@ -99,10 +100,11 @@ public class ChooseCardNameEffect extends SpellAbilityEffect {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
Collections.sort(faces);
|
Collections.sort(faces);
|
||||||
chosen = p.getController().chooseCardName(sa, faces, "Choose a card name");
|
chosen = p.getController().chooseCardName(sa, faces, Localizer.getInstance().getMessage("lblChooseACardName"));
|
||||||
} else {
|
} else {
|
||||||
// use CardFace because you might name a alternate name
|
// use CardFace because you might name a alternate name
|
||||||
final String message = validDesc.equals("card") ? "Name a card" : "Name a " + validDesc + " card.";
|
//"name a card" in mtg card oracle text is "choose a card name",change text
|
||||||
|
final String message = validDesc.equals("card") ? Localizer.getInstance().getMessage("lblChooseACardName") : Localizer.getInstance().getMessage("lblChooseA") + validDesc + Localizer.getInstance().getMessage("lblCardName") + ".";
|
||||||
|
|
||||||
Predicate<ICardFace> cpp = Predicates.alwaysTrue();
|
Predicate<ICardFace> cpp = Predicates.alwaysTrue();
|
||||||
if (sa.hasParam("ValidCards")) {
|
if (sa.hasParam("ValidCards")) {
|
||||||
@@ -114,7 +116,7 @@ public class ChooseCardNameEffect extends SpellAbilityEffect {
|
|||||||
|
|
||||||
host.setNamedCard(chosen);
|
host.setNamedCard(chosen);
|
||||||
if(!randomChoice) {
|
if(!randomChoice) {
|
||||||
p.getGame().getAction().nofityOfValue(sa, host, p.getName() + " picked " + chosen, p);
|
p.getGame().getAction().nofityOfValue(sa, host, p.getName() + " " + Localizer.getInstance().getMessage("lblPicked") + " " + chosen, p);
|
||||||
p.setNamedCard(chosen);
|
p.setNamedCard(chosen);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -7,6 +7,7 @@ import forge.game.player.Player;
|
|||||||
import forge.game.spellability.SpellAbility;
|
import forge.game.spellability.SpellAbility;
|
||||||
import forge.game.spellability.TargetRestrictions;
|
import forge.game.spellability.TargetRestrictions;
|
||||||
import forge.util.Lang;
|
import forge.util.Lang;
|
||||||
|
import forge.util.Localizer;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
@@ -51,25 +52,25 @@ public class ChooseColorEffect extends SpellAbilityEffect {
|
|||||||
int cntMax = sa.hasParam("TwoColors") ? 2 : sa.hasParam("OrColors") ? colorChoices.size() : 1;
|
int cntMax = sa.hasParam("TwoColors") ? 2 : sa.hasParam("OrColors") ? colorChoices.size() : 1;
|
||||||
String prompt;
|
String prompt;
|
||||||
if (cntMax == 1) {
|
if (cntMax == 1) {
|
||||||
prompt = "Choose a color";
|
prompt = Localizer.getInstance().getMessage("lblChooseAColor");
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
prompt = "Choose " + Lang.getNumeral(cntMin);
|
prompt = Localizer.getInstance().getMessage("lblChoose") + " " + Lang.getNumeral(cntMin);
|
||||||
if (cntMax > cntMin) {
|
if (cntMax > cntMin) {
|
||||||
if (cntMax >= MagicColor.NUMBER_OR_COLORS) {
|
if (cntMax >= MagicColor.NUMBER_OR_COLORS) {
|
||||||
prompt += " or more";
|
prompt += " " + Localizer.getInstance().getMessage("lblOrMore");
|
||||||
} else {
|
} else {
|
||||||
prompt += " to " + Lang.getNumeral(cntMax);
|
prompt += " " + Localizer.getInstance().getMessage("lblTo") + " " + Lang.getNumeral(cntMax);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
prompt += " colors";
|
prompt += " " + Localizer.getInstance().getMessage("lblColors");
|
||||||
}
|
}
|
||||||
chosenColors = p.getController().chooseColors(prompt, sa, cntMin, cntMax, colorChoices);
|
chosenColors = p.getController().chooseColors(prompt, sa, cntMin, cntMax, colorChoices);
|
||||||
if (chosenColors.isEmpty()) {
|
if (chosenColors.isEmpty()) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
card.setChosenColors(chosenColors);
|
card.setChosenColors(chosenColors);
|
||||||
p.getGame().getAction().nofityOfValue(sa, card, p.getName() + " picked " + Lang.joinHomogenous(chosenColors), p);
|
p.getGame().getAction().nofityOfValue(sa, card, p.getName() + " " + Localizer.getInstance().getMessage("lblPicked") + " " + Lang.joinHomogenous(chosenColors), p);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -10,6 +10,7 @@ import forge.game.player.Player;
|
|||||||
import forge.game.player.PlayerController.BinaryChoiceType;
|
import forge.game.player.PlayerController.BinaryChoiceType;
|
||||||
import forge.game.spellability.SpellAbility;
|
import forge.game.spellability.SpellAbility;
|
||||||
import forge.util.collect.FCollection;
|
import forge.util.collect.FCollection;
|
||||||
|
import forge.util.Localizer;
|
||||||
|
|
||||||
public class ChooseDirectionEffect extends SpellAbilityEffect {
|
public class ChooseDirectionEffect extends SpellAbilityEffect {
|
||||||
@Override
|
@Override
|
||||||
@@ -18,11 +19,11 @@ public class ChooseDirectionEffect extends SpellAbilityEffect {
|
|||||||
final Game game = source.getGame();
|
final Game game = source.getGame();
|
||||||
final FCollection<Player> left = new FCollection<>(game.getPlayers());
|
final FCollection<Player> left = new FCollection<>(game.getPlayers());
|
||||||
// TODO: We'd better set up turn order UI here
|
// TODO: We'd better set up turn order UI here
|
||||||
final String info = "Left (clockwise): " + left + "\r\nRight (anticlockwise):" + Lists.reverse(left);
|
final String info = Localizer.getInstance().getMessage("lblLeftClockwise") + ": " + left + "\r\n" + Localizer.getInstance().getMessage("lblRightAntiClockwise") + ":" + Lists.reverse(left);
|
||||||
sa.getActivatingPlayer().getController().notifyOfValue(sa, source, info);
|
sa.getActivatingPlayer().getController().notifyOfValue(sa, source, info);
|
||||||
|
|
||||||
boolean chosen = sa.getActivatingPlayer().getController().chooseBinary(sa,
|
boolean chosen = sa.getActivatingPlayer().getController().chooseBinary(sa,
|
||||||
"Choose a direction", BinaryChoiceType.LeftOrRight);
|
Localizer.getInstance().getMessage("lblChooseDirection"), BinaryChoiceType.LeftOrRight);
|
||||||
source.setChosenDirection(chosen ? Direction.Left : Direction.Right);
|
source.setChosenDirection(chosen ? Direction.Left : Direction.Right);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -9,6 +9,7 @@ import forge.game.event.GameEventCardModeChosen;
|
|||||||
import forge.game.player.Player;
|
import forge.game.player.Player;
|
||||||
import forge.game.spellability.SpellAbility;
|
import forge.game.spellability.SpellAbility;
|
||||||
import forge.util.MyRandom;
|
import forge.util.MyRandom;
|
||||||
|
import forge.util.Localizer;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@@ -69,7 +70,7 @@ public class ChooseGenericEffect extends SpellAbilityEffect {
|
|||||||
int idxChosen = MyRandom.getRandom().nextInt(abilities.size());
|
int idxChosen = MyRandom.getRandom().nextInt(abilities.size());
|
||||||
chosenSA = abilities.get(idxChosen);
|
chosenSA = abilities.get(idxChosen);
|
||||||
} else {
|
} else {
|
||||||
chosenSA = p.getController().chooseSingleSpellForEffect(abilities, sa, "Choose one",
|
chosenSA = p.getController().chooseSingleSpellForEffect(abilities, sa, Localizer.getInstance().getMessage("lblChooseOne"),
|
||||||
ImmutableMap.of());
|
ImmutableMap.of());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -10,6 +10,7 @@ import forge.game.spellability.AbilitySub;
|
|||||||
import forge.game.spellability.SpellAbility;
|
import forge.game.spellability.SpellAbility;
|
||||||
import forge.game.spellability.TargetRestrictions;
|
import forge.game.spellability.TargetRestrictions;
|
||||||
import forge.util.MyRandom;
|
import forge.util.MyRandom;
|
||||||
|
import forge.util.Localizer;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
@@ -57,7 +58,7 @@ public class ChooseNumberEffect extends SpellAbilityEffect {
|
|||||||
chosen = MyRandom.getRandom().nextInt(max - min) + min;
|
chosen = MyRandom.getRandom().nextInt(max - min) + min;
|
||||||
p.getGame().getAction().nofityOfValue(sa, p, Integer.toString(chosen), null);
|
p.getGame().getAction().nofityOfValue(sa, p, Integer.toString(chosen), null);
|
||||||
} else {
|
} else {
|
||||||
String title = sa.hasParam("ListTitle") ? sa.getParam("ListTitle") : "Choose a number";
|
String title = sa.hasParam("ListTitle") ? sa.getParam("ListTitle") : Localizer.getInstance().getMessage("lblChooseNumber");
|
||||||
if (anyNumber) {
|
if (anyNumber) {
|
||||||
Integer value = p.getController().announceRequirements(sa, title, true);
|
Integer value = p.getController().announceRequirements(sa, title, true);
|
||||||
chosen = (value == null ? 0 : value);
|
chosen = (value == null ? 0 : value);
|
||||||
@@ -72,7 +73,7 @@ public class ChooseNumberEffect extends SpellAbilityEffect {
|
|||||||
card.setChosenNumber(chosen);
|
card.setChosenNumber(chosen);
|
||||||
}
|
}
|
||||||
if (sa.hasParam("Notify")) {
|
if (sa.hasParam("Notify")) {
|
||||||
p.getGame().getAction().nofityOfValue(sa, card, p.getName() + " picked " + chosen, p);
|
p.getGame().getAction().nofityOfValue(sa, card, p.getName() + " " + Localizer.getInstance().getMessage("lblPicked") + " " + chosen, p);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -85,7 +86,7 @@ public class ChooseNumberEffect extends SpellAbilityEffect {
|
|||||||
for (Entry<Player, Integer> ev : chooseMap.entrySet()) {
|
for (Entry<Player, Integer> ev : chooseMap.entrySet()) {
|
||||||
int num = ev.getValue();
|
int num = ev.getValue();
|
||||||
Player player = ev.getKey();
|
Player player = ev.getKey();
|
||||||
sb.append(player).append(" chose ").append(num);
|
sb.append(player).append(" " + Localizer.getInstance().getMessage("lblChose") + " ").append(num);
|
||||||
sb.append("\r\n");
|
sb.append("\r\n");
|
||||||
if (num > highest) {
|
if (num > highest) {
|
||||||
highestNum.clear();
|
highestNum.clear();
|
||||||
|
|||||||
@@ -9,6 +9,7 @@ import forge.game.spellability.SpellAbility;
|
|||||||
import forge.game.spellability.TargetRestrictions;
|
import forge.game.spellability.TargetRestrictions;
|
||||||
import forge.util.Aggregates;
|
import forge.util.Aggregates;
|
||||||
import forge.util.collect.FCollectionView;
|
import forge.util.collect.FCollectionView;
|
||||||
|
import forge.util.Localizer;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@@ -37,7 +38,7 @@ public class ChoosePlayerEffect extends SpellAbilityEffect {
|
|||||||
final FCollectionView<Player> choices = sa.hasParam("Choices") ? AbilityUtils.getDefinedPlayers(
|
final FCollectionView<Player> choices = sa.hasParam("Choices") ? AbilityUtils.getDefinedPlayers(
|
||||||
sa.getHostCard(), sa.getParam("Choices"), sa) : sa.getActivatingPlayer().getGame().getPlayersInTurnOrder();
|
sa.getHostCard(), sa.getParam("Choices"), sa) : sa.getActivatingPlayer().getGame().getPlayersInTurnOrder();
|
||||||
|
|
||||||
final String choiceDesc = sa.hasParam("ChoiceTitle") ? sa.getParam("ChoiceTitle") : "Choose a player";
|
final String choiceDesc = sa.hasParam("ChoiceTitle") ? sa.getParam("ChoiceTitle") : Localizer.getInstance().getMessage("lblChoosePlayer");
|
||||||
final boolean random = sa.hasParam("Random");
|
final boolean random = sa.hasParam("Random");
|
||||||
|
|
||||||
for (final Player p : tgtPlayers) {
|
for (final Player p : tgtPlayers) {
|
||||||
|
|||||||
@@ -12,6 +12,7 @@ import forge.game.spellability.SpellAbility;
|
|||||||
import forge.game.spellability.SpellAbilityStackInstance;
|
import forge.game.spellability.SpellAbilityStackInstance;
|
||||||
import forge.game.spellability.TargetRestrictions;
|
import forge.game.spellability.TargetRestrictions;
|
||||||
import forge.game.zone.ZoneType;
|
import forge.game.zone.ZoneType;
|
||||||
|
import forge.util.Localizer;
|
||||||
|
|
||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
|
|
||||||
@@ -134,7 +135,7 @@ public class ChooseSourceEffect extends SpellAbilityEffect {
|
|||||||
final CardCollection chosen = new CardCollection();
|
final CardCollection chosen = new CardCollection();
|
||||||
if (tgt == null || p.canBeTargetedBy(sa)) {
|
if (tgt == null || p.canBeTargetedBy(sa)) {
|
||||||
for (int i = 0; i < validAmount; i++) {
|
for (int i = 0; i < validAmount; i++) {
|
||||||
final String choiceTitle = sa.hasParam("ChoiceTitle") ? sa.getParam("ChoiceTitle") : "Choose a source ";
|
final String choiceTitle = sa.hasParam("ChoiceTitle") ? sa.getParam("ChoiceTitle") : Localizer.getInstance().getMessage("lblChooseSource") + " ";
|
||||||
Card o = null;
|
Card o = null;
|
||||||
do {
|
do {
|
||||||
o = p.getController().chooseSingleEntityForEffect(sourcesToChooseFrom, sa, choiceTitle);
|
o = p.getController().chooseSingleEntityForEffect(sourcesToChooseFrom, sa, choiceTitle);
|
||||||
|
|||||||
@@ -12,6 +12,7 @@ import forge.game.spellability.SpellAbility;
|
|||||||
import forge.game.trigger.TriggerType;
|
import forge.game.trigger.TriggerType;
|
||||||
import forge.game.zone.PlayerZone;
|
import forge.game.zone.PlayerZone;
|
||||||
import forge.game.zone.ZoneType;
|
import forge.game.zone.ZoneType;
|
||||||
|
import forge.util.Localizer;
|
||||||
|
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
@@ -74,7 +75,7 @@ public class ClashEffect extends SpellAbilityEffect {
|
|||||||
*/
|
*/
|
||||||
final Card source = sa.getHostCard();
|
final Card source = sa.getHostCard();
|
||||||
final Player player = source.getController();
|
final Player player = source.getController();
|
||||||
final Player opponent = sa.getActivatingPlayer().getController().chooseSingleEntityForEffect(player.getOpponents(), sa, "Choose a opponent") ;
|
final Player opponent = sa.getActivatingPlayer().getController().chooseSingleEntityForEffect(player.getOpponents(), sa, Localizer.getInstance().getMessage("lblChooseOpponent")) ;
|
||||||
final ZoneType lib = ZoneType.Library;
|
final ZoneType lib = ZoneType.Library;
|
||||||
|
|
||||||
if (sa.hasParam("RememberClasher")) {
|
if (sa.hasParam("RememberClasher")) {
|
||||||
@@ -110,11 +111,11 @@ public class ClashEffect extends SpellAbilityEffect {
|
|||||||
|
|
||||||
// TODO: Split cards will return two CMC values, so both players may become winners of clash
|
// TODO: Split cards will return two CMC values, so both players may become winners of clash
|
||||||
|
|
||||||
reveal.append(player).append(" reveals: ").append(pCard.getName()).append(". CMC = ").append(pCMC);
|
reveal.append(player).append(" " + Localizer.getInstance().getMessage("lblReveals") + ": ").append(pCard.getName()).append(". " + Localizer.getInstance().getMessage("lblCMC") + "= ").append(pCMC);
|
||||||
reveal.append("\r\n");
|
reveal.append("\r\n");
|
||||||
reveal.append(opponent).append(" reveals: ").append(oCard.getName()).append(". CMC = ").append(oCMC);
|
reveal.append(opponent).append(" " + Localizer.getInstance().getMessage("lblReveals") + ": ").append(oCard.getName()).append(". " + Localizer.getInstance().getMessage("lblCMC") + "= ").append(oCMC);
|
||||||
reveal.append("\r\n\r\n");
|
reveal.append("\r\n\r\n");
|
||||||
reveal.append(player).append(pCMC > oCMC ? " wins clash." : " loses clash.");
|
reveal.append(player).append(pCMC > oCMC ? " " + Localizer.getInstance().getMessage("lblWinsClash") + "." : " " + Localizer.getInstance().getMessage("lblLosesClash") + ".");
|
||||||
|
|
||||||
player.getGame().getAction().nofityOfValue(sa, source, reveal.toString(), null);
|
player.getGame().getAction().nofityOfValue(sa, source, reveal.toString(), null);
|
||||||
clashMoveToTopOrBottom(player, pCard, sa);
|
clashMoveToTopOrBottom(player, pCard, sa);
|
||||||
|
|||||||
@@ -9,6 +9,7 @@ import forge.game.event.GameEventCardStatsChanged;
|
|||||||
import forge.game.player.Player;
|
import forge.game.player.Player;
|
||||||
import forge.game.spellability.SpellAbility;
|
import forge.game.spellability.SpellAbility;
|
||||||
import forge.game.zone.ZoneType;
|
import forge.game.zone.ZoneType;
|
||||||
|
import forge.util.Localizer;
|
||||||
|
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@@ -78,7 +79,7 @@ public class CloneEffect extends SpellAbilityEffect {
|
|||||||
|
|
||||||
choices = CardLists.getValidCards(choices, sa.getParam("Choices"), activator, host);
|
choices = CardLists.getValidCards(choices, sa.getParam("Choices"), activator, host);
|
||||||
|
|
||||||
String title = sa.hasParam("ChoiceTitle") ? sa.getParam("ChoiceTitle") : "Choose a card ";
|
String title = sa.hasParam("ChoiceTitle") ? sa.getParam("ChoiceTitle") : Localizer.getInstance().getMessage("lblChooseaCard") + " ";
|
||||||
cardToCopy = activator.getController().chooseSingleEntityForEffect(choices, sa, title, false);
|
cardToCopy = activator.getController().chooseSingleEntityForEffect(choices, sa, title, false);
|
||||||
} else if (sa.hasParam("Defined")) {
|
} else if (sa.hasParam("Defined")) {
|
||||||
List<Card> cloneSources = AbilityUtils.getDefinedCards(host, sa.getParam("Defined"), sa);
|
List<Card> cloneSources = AbilityUtils.getDefinedCards(host, sa.getParam("Defined"), sa);
|
||||||
@@ -93,7 +94,7 @@ public class CloneEffect extends SpellAbilityEffect {
|
|||||||
}
|
}
|
||||||
|
|
||||||
final boolean optional = sa.hasParam("Optional");
|
final boolean optional = sa.hasParam("Optional");
|
||||||
if (optional && !host.getController().getController().confirmAction(sa, null, "Do you want to copy " + cardToCopy + "?")) {
|
if (optional && !host.getController().getController().confirmAction(sa, null, Localizer.getInstance().getMessage("lblDoYouWantCopy") + " " + cardToCopy + "?")) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -7,6 +7,7 @@ import forge.game.card.CardCollectionView;
|
|||||||
import forge.game.player.Player;
|
import forge.game.player.Player;
|
||||||
import forge.game.spellability.SpellAbility;
|
import forge.game.spellability.SpellAbility;
|
||||||
import forge.game.zone.ZoneType;
|
import forge.game.zone.ZoneType;
|
||||||
|
import forge.util.Localizer;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@@ -35,9 +36,9 @@ public class ControlExchangeVariantEffect extends SpellAbilityEffect {
|
|||||||
CardCollectionView list2 = AbilityUtils.filterListByType(player2.getCardsIn(zone), type, sa);
|
CardCollectionView list2 = AbilityUtils.filterListByType(player2.getCardsIn(zone), type, sa);
|
||||||
int max = Math.min(list1.size(), list2.size());
|
int max = Math.min(list1.size(), list2.size());
|
||||||
// choose the same number of cards
|
// choose the same number of cards
|
||||||
CardCollectionView chosen1 = activator.getController().chooseCardsForEffect(list1, sa, "Choose cards: " + player1, 0, max, true);
|
CardCollectionView chosen1 = activator.getController().chooseCardsForEffect(list1, sa, Localizer.getInstance().getMessage("lblChooseCards") + ":" + player1, 0, max, true);
|
||||||
int num = chosen1.size();
|
int num = chosen1.size();
|
||||||
CardCollectionView chosen2 = activator.getController().chooseCardsForEffect(list2, sa, "Choose cards: " + player2, num, num, true);
|
CardCollectionView chosen2 = activator.getController().chooseCardsForEffect(list2, sa, Localizer.getInstance().getMessage("lblChooseCards") + ":" + player2, num, num, true);
|
||||||
// check all cards can be controlled by the other player
|
// check all cards can be controlled by the other player
|
||||||
for (final Card c : chosen1) {
|
for (final Card c : chosen1) {
|
||||||
if (!c.canBeControlledBy(player2)) {
|
if (!c.canBeControlledBy(player2)) {
|
||||||
|
|||||||
@@ -22,6 +22,7 @@ import forge.game.spellability.Ability;
|
|||||||
import forge.game.spellability.SpellAbility;
|
import forge.game.spellability.SpellAbility;
|
||||||
import forge.game.zone.ZoneType;
|
import forge.game.zone.ZoneType;
|
||||||
import forge.util.collect.FCollectionView;
|
import forge.util.collect.FCollectionView;
|
||||||
|
import forge.util.Localizer;
|
||||||
|
|
||||||
public class ControlGainEffect extends SpellAbilityEffect {
|
public class ControlGainEffect extends SpellAbilityEffect {
|
||||||
/* (non-Javadoc)
|
/* (non-Javadoc)
|
||||||
@@ -227,7 +228,7 @@ public class ControlGainEffect extends SpellAbilityEffect {
|
|||||||
final FCollectionView<GameEntity> e = combat.getDefenders();
|
final FCollectionView<GameEntity> e = combat.getDefenders();
|
||||||
|
|
||||||
final GameEntity defender = sa.getActivatingPlayer().getController().chooseSingleEntityForEffect(e, sa,
|
final GameEntity defender = sa.getActivatingPlayer().getController().chooseSingleEntityForEffect(e, sa,
|
||||||
"Declare a defender for " + tgtC);
|
Localizer.getInstance().getMessage("lblDeclareDefenderFor") + " " + tgtC);
|
||||||
|
|
||||||
if (defender != null) {
|
if (defender != null) {
|
||||||
combat.addAttacker(tgtC, defender);
|
combat.addAttacker(tgtC, defender);
|
||||||
|
|||||||
@@ -27,6 +27,7 @@ import forge.util.Aggregates;
|
|||||||
import forge.util.TextUtil;
|
import forge.util.TextUtil;
|
||||||
import forge.util.collect.FCollectionView;
|
import forge.util.collect.FCollectionView;
|
||||||
import forge.util.PredicateString.StringOp;
|
import forge.util.PredicateString.StringOp;
|
||||||
|
import forge.util.Localizer;
|
||||||
|
|
||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
|
|
||||||
@@ -64,7 +65,7 @@ public class CopyPermanentEffect extends SpellAbilityEffect {
|
|||||||
final long timestamp = game.getNextTimestamp();
|
final long timestamp = game.getNextTimestamp();
|
||||||
|
|
||||||
if (sa.hasParam("Optional")) {
|
if (sa.hasParam("Optional")) {
|
||||||
if (!activator.getController().confirmAction(sa, null, "Copy this permanent?")) {
|
if (!activator.getController().confirmAction(sa, null, Localizer.getInstance().getMessage("lblCopyPermanentConfirm"))) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -145,7 +146,7 @@ public class CopyPermanentEffect extends SpellAbilityEffect {
|
|||||||
CardCollectionView choices = game.getCardsIn(ZoneType.Battlefield);
|
CardCollectionView choices = game.getCardsIn(ZoneType.Battlefield);
|
||||||
choices = CardLists.getValidCards(choices, sa.getParam("Choices"), activator, host);
|
choices = CardLists.getValidCards(choices, sa.getParam("Choices"), activator, host);
|
||||||
if (!choices.isEmpty()) {
|
if (!choices.isEmpty()) {
|
||||||
String title = sa.hasParam("ChoiceTitle") ? sa.getParam("ChoiceTitle") : "Choose a card ";
|
String title = sa.hasParam("ChoiceTitle") ? sa.getParam("ChoiceTitle") : Localizer.getInstance().getMessage("lblChooseaCard") +" ";
|
||||||
|
|
||||||
Card choosen = chooser.getController().chooseSingleEntityForEffect(choices, sa, title, false);
|
Card choosen = chooser.getController().chooseSingleEntityForEffect(choices, sa, title, false);
|
||||||
|
|
||||||
@@ -206,12 +207,12 @@ public class CopyPermanentEffect extends SpellAbilityEffect {
|
|||||||
GameEntity defender;
|
GameEntity defender;
|
||||||
if ("True".equals(attacked)) {
|
if ("True".equals(attacked)) {
|
||||||
FCollectionView<GameEntity> defs = game.getCombat().getDefenders();
|
FCollectionView<GameEntity> defs = game.getCombat().getDefenders();
|
||||||
defender = c.getController().getController().chooseSingleEntityForEffect(defs, sa, "Choose which defender to attack with " + c, false);
|
defender = c.getController().getController().chooseSingleEntityForEffect(defs, sa, Localizer.getInstance().getMessage("lblChooseDefenderToAttackWith") + " " + c, false);
|
||||||
} else {
|
} else {
|
||||||
defender = AbilityUtils.getDefinedPlayers(host, sa.getParam("CopyAttacking"), sa).get(0);
|
defender = AbilityUtils.getDefinedPlayers(host, sa.getParam("CopyAttacking"), sa).get(0);
|
||||||
if (sa.hasParam("ChoosePlayerOrPlaneswalker") && defender != null) {
|
if (sa.hasParam("ChoosePlayerOrPlaneswalker") && defender != null) {
|
||||||
FCollectionView<GameEntity> defs = game.getCombat().getDefendersControlledBy((Player) defender);
|
FCollectionView<GameEntity> defs = game.getCombat().getDefendersControlledBy((Player) defender);
|
||||||
defender = c.getController().getController().chooseSingleEntityForEffect(defs, sa, "Choose which defender to attack with " + c + " {defender: "+ defender + "}", false);
|
defender = c.getController().getController().chooseSingleEntityForEffect(defs, sa, Localizer.getInstance().getMessage("lblChooseDefenderToAttackWith") + " " + c + " {" + Localizer.getInstance().getMessage("lblDefender") + ": " + defender + "}", false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
game.getCombat().addAttacker(copyInPlay, defender);
|
game.getCombat().addAttacker(copyInPlay, defender);
|
||||||
@@ -243,7 +244,7 @@ public class CopyPermanentEffect extends SpellAbilityEffect {
|
|||||||
list = CardLists.getValidCards(list, sa.getParam("AttachedTo"), copyInPlay.getController(), copyInPlay);
|
list = CardLists.getValidCards(list, sa.getParam("AttachedTo"), copyInPlay.getController(), copyInPlay);
|
||||||
}
|
}
|
||||||
if (!list.isEmpty()) {
|
if (!list.isEmpty()) {
|
||||||
Card attachedTo = activator.getController().chooseSingleEntityForEffect(list, sa, copyInPlay + " - Select a card to attach to.");
|
Card attachedTo = activator.getController().chooseSingleEntityForEffect(list, sa, copyInPlay + " - " + Localizer.getInstance().getMessage("lblSelectACardAttachTo"));
|
||||||
|
|
||||||
copyInPlay.attachToEntity(attachedTo);
|
copyInPlay.attachToEntity(attachedTo);
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@@ -15,6 +15,7 @@ import forge.game.player.Player;
|
|||||||
import forge.game.spellability.AbilitySub;
|
import forge.game.spellability.AbilitySub;
|
||||||
import forge.game.spellability.SpellAbility;
|
import forge.game.spellability.SpellAbility;
|
||||||
import forge.util.Lang;
|
import forge.util.Lang;
|
||||||
|
import forge.util.Localizer;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Iterator;
|
import java.util.Iterator;
|
||||||
@@ -66,7 +67,7 @@ public class CopySpellAbilityEffect extends SpellAbilityEffect {
|
|||||||
}
|
}
|
||||||
|
|
||||||
boolean isOptional = sa.hasParam("Optional");
|
boolean isOptional = sa.hasParam("Optional");
|
||||||
if (isOptional && !controller.getController().confirmAction(sa, null, "Do you want to copy the spell " + card + "?")) {
|
if (isOptional && !controller.getController().confirmAction(sa, null, Localizer.getInstance().getMessage("lblDoyouWantCopyTheSpell") + " " + card + "?")) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -84,7 +85,7 @@ public class CopySpellAbilityEffect extends SpellAbilityEffect {
|
|||||||
final int spellCount = Integer.parseInt(sa.getParam("CopyMultipleSpells"));
|
final int spellCount = Integer.parseInt(sa.getParam("CopyMultipleSpells"));
|
||||||
|
|
||||||
for (int multi = 0; multi < spellCount && !tgtSpells.isEmpty(); multi++) {
|
for (int multi = 0; multi < spellCount && !tgtSpells.isEmpty(); multi++) {
|
||||||
String prompt = "Select " + Lang.getOrdinal(multi + 1) + " spell to copy to stack";
|
String prompt = Localizer.getInstance().getMessage("lblSelectMultiSpellCopyToStack").replace("%d", Lang.getOrdinal(multi + 1));
|
||||||
SpellAbility chosen = controller.getController().chooseSingleSpellForEffect(tgtSpells, sa, prompt,
|
SpellAbility chosen = controller.getController().chooseSingleSpellForEffect(tgtSpells, sa, prompt,
|
||||||
ImmutableMap.of());
|
ImmutableMap.of());
|
||||||
SpellAbility copiedSpell = CardFactory.copySpellAbilityAndPossiblyHost(card, chosen.getHostCard(), chosen, true);
|
SpellAbility copiedSpell = CardFactory.copySpellAbilityAndPossiblyHost(card, chosen.getHostCard(), chosen, true);
|
||||||
@@ -96,7 +97,7 @@ public class CopySpellAbilityEffect extends SpellAbilityEffect {
|
|||||||
}
|
}
|
||||||
else if (sa.hasParam("CopyForEachCanTarget")) {
|
else if (sa.hasParam("CopyForEachCanTarget")) {
|
||||||
SpellAbility chosenSA = controller.getController().chooseSingleSpellForEffect(tgtSpells, sa,
|
SpellAbility chosenSA = controller.getController().chooseSingleSpellForEffect(tgtSpells, sa,
|
||||||
"Select a spell to copy", ImmutableMap.of());
|
Localizer.getInstance().getMessage("lblSelectASpellCopy"), ImmutableMap.of());
|
||||||
chosenSA.setActivatingPlayer(controller);
|
chosenSA.setActivatingPlayer(controller);
|
||||||
// Find subability or rootability that has targets
|
// Find subability or rootability that has targets
|
||||||
SpellAbility targetedSA = chosenSA;
|
SpellAbility targetedSA = chosenSA;
|
||||||
@@ -144,7 +145,7 @@ public class CopySpellAbilityEffect extends SpellAbilityEffect {
|
|||||||
valid.remove(originalTarget);
|
valid.remove(originalTarget);
|
||||||
mayChooseNewTargets = false;
|
mayChooseNewTargets = false;
|
||||||
if (sa.hasParam("ChooseOnlyOne")) {
|
if (sa.hasParam("ChooseOnlyOne")) {
|
||||||
Card choice = controller.getController().chooseSingleEntityForEffect(valid, sa, "Choose one");
|
Card choice = controller.getController().chooseSingleEntityForEffect(valid, sa, Localizer.getInstance().getMessage("lblChooseOne"));
|
||||||
SpellAbility copy = CardFactory.copySpellAbilityAndPossiblyHost(card, chosenSA.getHostCard(), chosenSA, true);
|
SpellAbility copy = CardFactory.copySpellAbilityAndPossiblyHost(card, chosenSA.getHostCard(), chosenSA, true);
|
||||||
resetFirstTargetOnCopy(copy, choice, targetedSA);
|
resetFirstTargetOnCopy(copy, choice, targetedSA);
|
||||||
copies.add(copy);
|
copies.add(copy);
|
||||||
@@ -164,7 +165,7 @@ public class CopySpellAbilityEffect extends SpellAbilityEffect {
|
|||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
SpellAbility chosenSA = controller.getController().chooseSingleSpellForEffect(tgtSpells, sa,
|
SpellAbility chosenSA = controller.getController().chooseSingleSpellForEffect(tgtSpells, sa,
|
||||||
"Select a spell to copy", ImmutableMap.of());
|
Localizer.getInstance().getMessage("lblSelectASpellCopy"), ImmutableMap.of());
|
||||||
chosenSA.setActivatingPlayer(controller);
|
chosenSA.setActivatingPlayer(controller);
|
||||||
for (int i = 0; i < amount; i++) {
|
for (int i = 0; i < amount; i++) {
|
||||||
SpellAbility copy = CardFactory.copySpellAbilityAndPossiblyHost(
|
SpellAbility copy = CardFactory.copySpellAbilityAndPossiblyHost(
|
||||||
|
|||||||
@@ -12,6 +12,7 @@ import forge.game.spellability.SpellAbility;
|
|||||||
import forge.game.spellability.SpellAbilityStackInstance;
|
import forge.game.spellability.SpellAbilityStackInstance;
|
||||||
import forge.game.spellability.SpellPermanent;
|
import forge.game.spellability.SpellPermanent;
|
||||||
import forge.game.trigger.TriggerType;
|
import forge.game.trigger.TriggerType;
|
||||||
|
import forge.util.Localizer;
|
||||||
|
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@@ -174,7 +175,7 @@ public class CounterEffect extends SpellAbilityEffect {
|
|||||||
String destination = srcSA.hasParam("Destination") ? srcSA.getParam("Destination") : tgtSA.isAftermath() ? "Exile" : "Graveyard";
|
String destination = srcSA.hasParam("Destination") ? srcSA.getParam("Destination") : tgtSA.isAftermath() ? "Exile" : "Graveyard";
|
||||||
if (srcSA.hasParam("DestinationChoice")) {//Hinder
|
if (srcSA.hasParam("DestinationChoice")) {//Hinder
|
||||||
List<String> pos = Arrays.asList(srcSA.getParam("DestinationChoice").split(","));
|
List<String> pos = Arrays.asList(srcSA.getParam("DestinationChoice").split(","));
|
||||||
destination = srcSA.getActivatingPlayer().getController().chooseSomeType("a destination to remove", tgtSA, pos, null);
|
destination = srcSA.getActivatingPlayer().getController().chooseSomeType(Localizer.getInstance().getMessage("lblRemoveDestination"), tgtSA, pos, null);
|
||||||
}
|
}
|
||||||
if (tgtSA.isAbility()) {
|
if (tgtSA.isAbility()) {
|
||||||
// For Ability-targeted counterspells - do not move it anywhere,
|
// For Ability-targeted counterspells - do not move it anywhere,
|
||||||
|
|||||||
@@ -12,6 +12,7 @@ import forge.game.player.Player;
|
|||||||
import forge.game.player.PlayerController;
|
import forge.game.player.PlayerController;
|
||||||
import forge.game.spellability.SpellAbility;
|
import forge.game.spellability.SpellAbility;
|
||||||
import forge.game.zone.ZoneType;
|
import forge.game.zone.ZoneType;
|
||||||
|
import forge.util.Localizer;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
@@ -110,7 +111,8 @@ public class CountersMoveEffect extends SpellAbilityEffect {
|
|||||||
// only select cards if the counterNum is any
|
// only select cards if the counterNum is any
|
||||||
if (counterNum.equals("Any")) {
|
if (counterNum.equals("Any")) {
|
||||||
StringBuilder sb = new StringBuilder();
|
StringBuilder sb = new StringBuilder();
|
||||||
sb.append("Choose cards to take ").append(cType.getName()).append(" counters from");
|
|
||||||
|
sb.append(Localizer.getInstance().getMessage("lblChooseTakeCountersCard").replace("%s", cType.getName()));
|
||||||
|
|
||||||
srcCards = player.getController().chooseCardsForEffect(srcCards, sa, sb.toString(), 0, srcCards.size(), true);
|
srcCards = player.getController().chooseCardsForEffect(srcCards, sa, sb.toString(), 0, srcCards.size(), true);
|
||||||
}
|
}
|
||||||
@@ -135,8 +137,8 @@ public class CountersMoveEffect extends SpellAbilityEffect {
|
|||||||
params.put("Source", src);
|
params.put("Source", src);
|
||||||
params.put("Target", dest);
|
params.put("Target", dest);
|
||||||
StringBuilder sb = new StringBuilder();
|
StringBuilder sb = new StringBuilder();
|
||||||
sb.append("Take how many ").append(cType.getName());
|
sb.append(Localizer.getInstance().getMessage("lblTakeHowMany") + " ").append(cType.getName());
|
||||||
sb.append(" counters from ").append(src).append("?");
|
sb.append(" " + Localizer.getInstance().getMessage("lblCountersFrom") + " ").append(src).append("?");
|
||||||
cnum = player.getController().chooseNumber(sa, sb.toString(), 0, cmax, params);
|
cnum = player.getController().chooseNumber(sa, sb.toString(), 0, cmax, params);
|
||||||
} else {
|
} else {
|
||||||
cnum = AbilityUtils.calculateAmount(host, counterNum, sa);
|
cnum = AbilityUtils.calculateAmount(host, counterNum, sa);
|
||||||
@@ -172,8 +174,8 @@ public class CountersMoveEffect extends SpellAbilityEffect {
|
|||||||
|
|
||||||
if (counterNum.equals("Any")) {
|
if (counterNum.equals("Any")) {
|
||||||
StringBuilder sb = new StringBuilder();
|
StringBuilder sb = new StringBuilder();
|
||||||
sb.append("Choose cards to get ").append(cType.getName());
|
sb.append(Localizer.getInstance().getMessage("lblChooseCardToGet") + " ").append(cType.getName());
|
||||||
sb.append(" counters from ").append(source).append(".");
|
sb.append(" " + Localizer.getInstance().getMessage("lblCountersFrom") + " ").append(source).append(".");
|
||||||
|
|
||||||
tgtCards = player.getController().chooseCardsForEffect(
|
tgtCards = player.getController().chooseCardsForEffect(
|
||||||
tgtCards, sa, sb.toString(), 0, tgtCards.size(), true);
|
tgtCards, sa, sb.toString(), 0, tgtCards.size(), true);
|
||||||
@@ -201,7 +203,7 @@ public class CountersMoveEffect extends SpellAbilityEffect {
|
|||||||
params.put("Source", source);
|
params.put("Source", source);
|
||||||
params.put("Target", cur);
|
params.put("Target", cur);
|
||||||
StringBuilder sb = new StringBuilder();
|
StringBuilder sb = new StringBuilder();
|
||||||
sb.append("Put how many ").append(cType.getName()).append(" counters on ").append(cur).append("?");
|
sb.append(Localizer.getInstance().getMessage("lblPutHowMany") + " ").append(cType.getName()).append(" " + Localizer.getInstance().getMessage("lblCountersOn") + " ").append(cur).append("?");
|
||||||
int cnum = player.getController().chooseNumber(sa, sb.toString(), 0, source.getCounters(cType), params);
|
int cnum = player.getController().chooseNumber(sa, sb.toString(), 0, source.getCounters(cType), params);
|
||||||
|
|
||||||
if (cnum > 0) {
|
if (cnum > 0) {
|
||||||
@@ -261,8 +263,8 @@ public class CountersMoveEffect extends SpellAbilityEffect {
|
|||||||
params.put("Source", source);
|
params.put("Source", source);
|
||||||
params.put("Target", cur);
|
params.put("Target", cur);
|
||||||
StringBuilder sb = new StringBuilder();
|
StringBuilder sb = new StringBuilder();
|
||||||
sb.append("Take how many ").append(cType.getName());
|
sb.append(Localizer.getInstance().getMessage("lblTakeHowMany") + " ").append(cType.getName());
|
||||||
sb.append(" counters from ").append(source).append("?");
|
sb.append(" " + Localizer.getInstance().getMessage("lblCountersFrom") + " ").append(source).append("?");
|
||||||
cntToMove = pc.chooseNumber(sa, sb.toString(), 0, cntToMove, params);
|
cntToMove = pc.chooseNumber(sa, sb.toString(), 0, cntToMove, params);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -289,7 +291,7 @@ public class CountersMoveEffect extends SpellAbilityEffect {
|
|||||||
Map<String, Object> params = Maps.newHashMap();
|
Map<String, Object> params = Maps.newHashMap();
|
||||||
params.put("Source", source);
|
params.put("Source", source);
|
||||||
params.put("Target", dest);
|
params.put("Target", dest);
|
||||||
String title = "Select type counters to remove";
|
String title = Localizer.getInstance().getMessage("lblSelectRemoveCounterType");
|
||||||
CounterType chosenType = pc.chooseCounterType(typeChoices, sa, title, params);
|
CounterType chosenType = pc.chooseCounterType(typeChoices, sa, title, params);
|
||||||
|
|
||||||
params = Maps.newHashMap();
|
params = Maps.newHashMap();
|
||||||
@@ -297,7 +299,7 @@ public class CountersMoveEffect extends SpellAbilityEffect {
|
|||||||
params.put("Source", source);
|
params.put("Source", source);
|
||||||
params.put("Target", dest);
|
params.put("Target", dest);
|
||||||
StringBuilder sb = new StringBuilder();
|
StringBuilder sb = new StringBuilder();
|
||||||
sb.append("Take how many ").append(chosenType.getName()).append(" counters?");
|
sb.append(Localizer.getInstance().getMessage("lblTakeHowMany") + " ").append(chosenType.getName()).append(" " + Localizer.getInstance().getMessage("lblCounters") + "?");
|
||||||
int chosenAmount = pc.chooseNumber(
|
int chosenAmount = pc.chooseNumber(
|
||||||
sa, sb.toString(), 0, Math.min(tgtCounters.get(chosenType), cntToMove), params);
|
sa, sb.toString(), 0, Math.min(tgtCounters.get(chosenType), cntToMove), params);
|
||||||
|
|
||||||
|
|||||||
@@ -14,6 +14,7 @@ import forge.game.player.PlayerPredicates;
|
|||||||
import forge.game.spellability.SpellAbility;
|
import forge.game.spellability.SpellAbility;
|
||||||
import forge.game.zone.ZoneType;
|
import forge.game.zone.ZoneType;
|
||||||
import forge.util.collect.FCollection;
|
import forge.util.collect.FCollection;
|
||||||
|
import forge.util.Localizer;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@@ -42,7 +43,7 @@ public class CountersProliferateEffect extends SpellAbilityEffect {
|
|||||||
list.addAll(CardLists.filter(game.getCardsIn(ZoneType.Battlefield), CardPredicates.hasCounters()));
|
list.addAll(CardLists.filter(game.getCardsIn(ZoneType.Battlefield), CardPredicates.hasCounters()));
|
||||||
|
|
||||||
List<GameEntity> result = pc.chooseEntitiesForEffect(list, 0, list.size(), null, sa,
|
List<GameEntity> result = pc.chooseEntitiesForEffect(list, 0, list.size(), null, sa,
|
||||||
"Choose any number of permanents and/or players for proliferate", p);
|
Localizer.getInstance().getMessage("lblChooseProliferateTarget"), p);
|
||||||
|
|
||||||
GameEntityCounterTable table = new GameEntityCounterTable();
|
GameEntityCounterTable table = new GameEntityCounterTable();
|
||||||
for (final GameEntity ge : result) {
|
for (final GameEntity ge : result) {
|
||||||
|
|||||||
@@ -26,6 +26,7 @@ import forge.game.trigger.TriggerType;
|
|||||||
import forge.game.zone.Zone;
|
import forge.game.zone.Zone;
|
||||||
import forge.game.zone.ZoneType;
|
import forge.game.zone.ZoneType;
|
||||||
import forge.util.Aggregates;
|
import forge.util.Aggregates;
|
||||||
|
import forge.util.Localizer;
|
||||||
|
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Iterator;
|
import java.util.Iterator;
|
||||||
@@ -129,7 +130,7 @@ public class CountersPutEffect extends SpellAbilityEffect {
|
|||||||
if (sa.hasParam("Bolster")) {
|
if (sa.hasParam("Bolster")) {
|
||||||
CardCollection creatsYouCtrl = CardLists.filter(activator.getCardsIn(ZoneType.Battlefield), Presets.CREATURES);
|
CardCollection creatsYouCtrl = CardLists.filter(activator.getCardsIn(ZoneType.Battlefield), Presets.CREATURES);
|
||||||
CardCollection leastToughness = new CardCollection(Aggregates.listWithMin(creatsYouCtrl, CardPredicates.Accessors.fnGetDefense));
|
CardCollection leastToughness = new CardCollection(Aggregates.listWithMin(creatsYouCtrl, CardPredicates.Accessors.fnGetDefense));
|
||||||
tgtCards.addAll(pc.chooseCardsForEffect(leastToughness, sa, "Choose a creature with the least toughness", 1, 1, false));
|
tgtCards.addAll(pc.chooseCardsForEffect(leastToughness, sa, Localizer.getInstance().getMessage("lblChooseACreatureWithLeastToughness"), 1, 1, false));
|
||||||
tgtObjects.addAll(tgtCards);
|
tgtObjects.addAll(tgtCards);
|
||||||
} else {
|
} else {
|
||||||
tgtObjects.addAll(getDefinedOrTargeted(sa, "Defined"));
|
tgtObjects.addAll(getDefinedOrTargeted(sa, "Defined"));
|
||||||
@@ -183,7 +184,7 @@ public class CountersPutEffect extends SpellAbilityEffect {
|
|||||||
Map<String, Object> params = Maps.newHashMap();
|
Map<String, Object> params = Maps.newHashMap();
|
||||||
params.put("Target", obj);
|
params.put("Target", obj);
|
||||||
StringBuilder sb = new StringBuilder();
|
StringBuilder sb = new StringBuilder();
|
||||||
sb.append("Select counter type to add to ");
|
sb.append(Localizer.getInstance().getMessage("lblSelectCounterTypeAddTo") + " ");
|
||||||
sb.append(obj);
|
sb.append(obj);
|
||||||
counterType = pc.chooseCounterType(choices, sa, sb.toString(), params);
|
counterType = pc.chooseCounterType(choices, sa, sb.toString(), params);
|
||||||
}
|
}
|
||||||
@@ -199,7 +200,7 @@ public class CountersPutEffect extends SpellAbilityEffect {
|
|||||||
Map<String, Object> params = Maps.newHashMap();
|
Map<String, Object> params = Maps.newHashMap();
|
||||||
params.put("Target", obj);
|
params.put("Target", obj);
|
||||||
params.put("CounterType", counterType);
|
params.put("CounterType", counterType);
|
||||||
counterAmount = pc.chooseNumber(sa, "How many counters?", 0, counterAmount, params);
|
counterAmount = pc.chooseNumber(sa, Localizer.getInstance().getMessage("lblHowManyCounters"), 0, counterAmount, params);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Adapt need extra logic
|
// Adapt need extra logic
|
||||||
@@ -235,8 +236,8 @@ public class CountersPutEffect extends SpellAbilityEffect {
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
String message = "Do you want to put " + counterAmount + " +1/+1 counters on " + gameCard + " ?";
|
String message = Localizer.getInstance().getMessage("lblDoYouWantPutTargetP1P1CountersOn").replace("%d", String.valueOf(counterAmount)) + " " + gameCard + " ?";
|
||||||
Player chooser = pc.chooseSingleEntityForEffect(activator.getOpponents(), sa, "Choose an opponent");
|
Player chooser = pc.chooseSingleEntityForEffect(activator.getOpponents(), sa, Localizer.getInstance().getMessage("lblChooseAnOpponent"));
|
||||||
|
|
||||||
if (chooser.getController().confirmAction(sa, PlayerActionConfirmMode.Tribute, message)) {
|
if (chooser.getController().confirmAction(sa, PlayerActionConfirmMode.Tribute, message)) {
|
||||||
gameCard.setTributed(true);
|
gameCard.setTributed(true);
|
||||||
|
|||||||
@@ -13,6 +13,7 @@ import forge.game.spellability.SpellAbility;
|
|||||||
import forge.game.zone.Zone;
|
import forge.game.zone.Zone;
|
||||||
import forge.game.zone.ZoneType;
|
import forge.game.zone.ZoneType;
|
||||||
import forge.util.Lang;
|
import forge.util.Lang;
|
||||||
|
import forge.util.Localizer;
|
||||||
|
|
||||||
import com.google.common.collect.Lists;
|
import com.google.common.collect.Lists;
|
||||||
import com.google.common.collect.Maps;
|
import com.google.common.collect.Maps;
|
||||||
@@ -97,11 +98,11 @@ public class CountersPutOrRemoveEffect extends SpellAbilityEffect {
|
|||||||
list = Lists.newArrayList(ctype);
|
list = Lists.newArrayList(ctype);
|
||||||
}
|
}
|
||||||
|
|
||||||
String prompt = "Select type of counters to add or remove";
|
String prompt = Localizer.getInstance().getMessage("lblSelectCounterTypeToAddOrRemove");
|
||||||
CounterType chosenType = pc.chooseCounterType(list, sa, prompt, params);
|
CounterType chosenType = pc.chooseCounterType(list, sa, prompt, params);
|
||||||
|
|
||||||
params.put("CounterType", chosenType);
|
params.put("CounterType", chosenType);
|
||||||
prompt = "What to do with that '" + chosenType.getName() + "' counter ";
|
prompt = Localizer.getInstance().getMessage("lblWhatToDoWithTargetCounter").replace("%s", chosenType.getName()) + " ";
|
||||||
Boolean putCounter = pc.chooseBinary(sa, prompt, BinaryChoiceType.AddOrRemove, params);
|
Boolean putCounter = pc.chooseBinary(sa, prompt, BinaryChoiceType.AddOrRemove, params);
|
||||||
|
|
||||||
if (putCounter) {
|
if (putCounter) {
|
||||||
|
|||||||
@@ -13,6 +13,7 @@ import forge.game.player.PlayerController;
|
|||||||
import forge.game.spellability.SpellAbility;
|
import forge.game.spellability.SpellAbility;
|
||||||
import forge.game.zone.Zone;
|
import forge.game.zone.Zone;
|
||||||
import forge.game.zone.ZoneType;
|
import forge.game.zone.ZoneType;
|
||||||
|
import forge.util.Localizer;
|
||||||
|
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
@@ -84,8 +85,8 @@ public class CountersRemoveEffect extends SpellAbilityEffect {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (sa.hasParam("Optional")) {
|
if (sa.hasParam("Optional")) {
|
||||||
String ctrs = cntToRemove > 1 ? "counters" : num.equals("All") ? "all counters" : "a counter";
|
String ctrs = cntToRemove > 1 ? Localizer.getInstance().getMessage("lblCounters") : num.equals("All") ? Localizer.getInstance().getMessage("lblAllCounters") : Localizer.getInstance().getMessage("lblACounters");
|
||||||
if (!sa.getActivatingPlayer().getController().confirmAction(sa, null, "Remove " + ctrs + "?")) {
|
if (!sa.getActivatingPlayer().getController().confirmAction(sa, null, Localizer.getInstance().getMessage("lblRemove") + " " + ctrs + "?")) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -130,7 +131,7 @@ public class CountersRemoveEffect extends SpellAbilityEffect {
|
|||||||
srcCards = CardLists.getValidCards(srcCards, sa.getParam("ValidSource"), player, card, sa);
|
srcCards = CardLists.getValidCards(srcCards, sa.getParam("ValidSource"), player, card, sa);
|
||||||
if (num.equals("Any")) {
|
if (num.equals("Any")) {
|
||||||
StringBuilder sb = new StringBuilder();
|
StringBuilder sb = new StringBuilder();
|
||||||
sb.append("Choose cards to take ").append(counterType.getName()).append(" counters from");
|
sb.append(Localizer.getInstance().getMessage("lblChooseCardtoTakeTargetCounters").replace("%s", counterType.getName()));
|
||||||
|
|
||||||
srcCards = player.getController().chooseCardsForEffect(srcCards, sa, sb.toString(), 0, srcCards.size(), true);
|
srcCards = player.getController().chooseCardsForEffect(srcCards, sa, sb.toString(), 0, srcCards.size(), true);
|
||||||
}
|
}
|
||||||
@@ -172,7 +173,7 @@ public class CountersRemoveEffect extends SpellAbilityEffect {
|
|||||||
Map<String, Object> params = Maps.newHashMap();
|
Map<String, Object> params = Maps.newHashMap();
|
||||||
params.put("Target", gameCard);
|
params.put("Target", gameCard);
|
||||||
params.put("CounterType", type);
|
params.put("CounterType", type);
|
||||||
String title = "Select the number of " + type + " counters to remove";
|
String title = Localizer.getInstance().getMessage("lblSelectRemoveCountersNumberOfTarget").replace("%s", type);
|
||||||
cntToRemove = pc.chooseNumber(sa, title, 0, cntToRemove, params);
|
cntToRemove = pc.chooseNumber(sa, title, 0, cntToRemove, params);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -213,10 +214,10 @@ public class CountersRemoveEffect extends SpellAbilityEffect {
|
|||||||
Map<String, Object> params = Maps.newHashMap();
|
Map<String, Object> params = Maps.newHashMap();
|
||||||
params.put("Target", entity);
|
params.put("Target", entity);
|
||||||
|
|
||||||
String prompt = "Select type of counters to remove";
|
String prompt = Localizer.getInstance().getMessage("lblSelectCountersTypeToRemove");
|
||||||
CounterType chosenType = pc.chooseCounterType(
|
CounterType chosenType = pc.chooseCounterType(
|
||||||
ImmutableList.copyOf(tgtCounters.keySet()), sa, prompt, params);
|
ImmutableList.copyOf(tgtCounters.keySet()), sa, prompt, params);
|
||||||
prompt = "Select the number of " + chosenType.getName() + " counters to remove";
|
prompt = Localizer.getInstance().getMessage("lblSelectRemoveCountersNumberOfTarget").replace("%s", chosenType.getName());
|
||||||
int max = Math.min(cntToRemove, tgtCounters.get(chosenType));
|
int max = Math.min(cntToRemove, tgtCounters.get(chosenType));
|
||||||
params = Maps.newHashMap();
|
params = Maps.newHashMap();
|
||||||
params.put("Target", entity);
|
params.put("Target", entity);
|
||||||
|
|||||||
@@ -13,6 +13,7 @@ import forge.game.card.CardUtil;
|
|||||||
import forge.game.player.Player;
|
import forge.game.player.Player;
|
||||||
import forge.game.spellability.SpellAbility;
|
import forge.game.spellability.SpellAbility;
|
||||||
import forge.util.Lang;
|
import forge.util.Lang;
|
||||||
|
import forge.util.Localizer;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
@@ -83,7 +84,7 @@ public class DamageDealEffect extends DamageBaseEffect {
|
|||||||
List<GameObject> tgts = getTargets(sa);
|
List<GameObject> tgts = getTargets(sa);
|
||||||
if (sa.hasParam("OptionalDecider")) {
|
if (sa.hasParam("OptionalDecider")) {
|
||||||
Player decider = Iterables.getFirst(AbilityUtils.getDefinedPlayers(hostCard, sa.getParam("OptionalDecider"), sa), null);
|
Player decider = Iterables.getFirst(AbilityUtils.getDefinedPlayers(hostCard, sa.getParam("OptionalDecider"), sa), null);
|
||||||
if (decider != null && !decider.getController().confirmAction(sa, null, "Do you want to deal " + dmg + " damage to " + tgts + " ?")) {
|
if (decider != null && !decider.getController().confirmAction(sa, null, Localizer.getInstance().getMessage("lblDoyouWantDealTargetDamageTo").replace("%d", String.valueOf(dmg)) + " " + tgts + " ?")) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -22,6 +22,7 @@ import forge.game.zone.PlayerZone;
|
|||||||
import forge.game.zone.ZoneType;
|
import forge.game.zone.ZoneType;
|
||||||
import forge.util.Lang;
|
import forge.util.Lang;
|
||||||
import forge.util.TextUtil;
|
import forge.util.TextUtil;
|
||||||
|
import forge.util.Localizer;
|
||||||
|
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
|
|
||||||
@@ -128,7 +129,7 @@ public class DigEffect extends SpellAbilityEffect {
|
|||||||
game.getAction().reveal(top, p, false);
|
game.getAction().reveal(top, p, false);
|
||||||
}
|
}
|
||||||
else if (sa.hasParam("RevealOptional")) {
|
else if (sa.hasParam("RevealOptional")) {
|
||||||
String question = TextUtil.concatWithSpace("Reveal:", TextUtil.addSuffix(Lang.joinHomogenous(top),"?"));
|
String question = TextUtil.concatWithSpace(Localizer.getInstance().getMessage("lblReveal") + ":", TextUtil.addSuffix(Lang.joinHomogenous(top),"?"));
|
||||||
|
|
||||||
hasRevealed = p.getController().confirmAction(sa, null, question);
|
hasRevealed = p.getController().confirmAction(sa, null, question);
|
||||||
if (hasRevealed) {
|
if (hasRevealed) {
|
||||||
@@ -151,7 +152,7 @@ public class DigEffect extends SpellAbilityEffect {
|
|||||||
}
|
}
|
||||||
else if (!sa.hasParam("NoLooking")) {
|
else if (!sa.hasParam("NoLooking")) {
|
||||||
// show the user the revealed cards
|
// show the user the revealed cards
|
||||||
delayedReveal = new DelayedReveal(top, srcZone, PlayerView.get(p), host.getName() + " - Looking at cards in ");
|
delayedReveal = new DelayedReveal(top, srcZone, PlayerView.get(p), host.getName() + " - " + Localizer.getInstance().getMessage("lblLookingCardIn") + " ");
|
||||||
|
|
||||||
if (noMove) {
|
if (noMove) {
|
||||||
// Let the activating player see the cards even if they're not moved
|
// Let the activating player see the cards even if they're not moved
|
||||||
@@ -194,7 +195,7 @@ public class DigEffect extends SpellAbilityEffect {
|
|||||||
|
|
||||||
// Optional abilities that use a dialog box to prompt the user to skip the ability (e.g. Explorer's Scope, Quest for Ula's Temple)
|
// Optional abilities that use a dialog box to prompt the user to skip the ability (e.g. Explorer's Scope, Quest for Ula's Temple)
|
||||||
if (optional && mayBeSkipped && !valid.isEmpty()) {
|
if (optional && mayBeSkipped && !valid.isEmpty()) {
|
||||||
String prompt = !optionalAbilityPrompt.isEmpty() ? optionalAbilityPrompt : "Would you like to proceed with the optional ability for " + sa.getHostCard() + "?\n\n(" + sa.getDescription() + ")";
|
String prompt = !optionalAbilityPrompt.isEmpty() ? optionalAbilityPrompt : Localizer.getInstance().getMessage("lblWouldYouLikeProceedWithOptionalAbility") + " " + sa.getHostCard() + "?\n\n(" + sa.getDescription() + ")";
|
||||||
if (!p.getController().confirmAction(sa, null, TextUtil.fastReplace(prompt, "CARDNAME", sa.getHostCard().getName()))) {
|
if (!p.getController().confirmAction(sa, null, TextUtil.fastReplace(prompt, "CARDNAME", sa.getHostCard().getName()))) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -214,24 +215,24 @@ public class DigEffect extends SpellAbilityEffect {
|
|||||||
}
|
}
|
||||||
for (final byte pair : MagicColor.COLORPAIR) {
|
for (final byte pair : MagicColor.COLORPAIR) {
|
||||||
Card chosen = chooser.getController().chooseSingleEntityForEffect(CardLists.filter(valid, CardPredicates.isExactlyColor(pair)),
|
Card chosen = chooser.getController().chooseSingleEntityForEffect(CardLists.filter(valid, CardPredicates.isExactlyColor(pair)),
|
||||||
delayedReveal, sa, "Choose one", false, p);
|
delayedReveal, sa, Localizer.getInstance().getMessage("lblChooseOne"), false, p);
|
||||||
if (chosen != null) {
|
if (chosen != null) {
|
||||||
movedCards.add(chosen);
|
movedCards.add(chosen);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
chooser.getController().endTempShowCards();
|
chooser.getController().endTempShowCards();
|
||||||
if (!movedCards.isEmpty()) {
|
if (!movedCards.isEmpty()) {
|
||||||
game.getAction().reveal(movedCards, chooser, true, chooser + " picked ");
|
game.getAction().reveal(movedCards, chooser, true, chooser + " " + Localizer.getInstance().getMessage("lblPicked") + " ");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (allButOne) {
|
else if (allButOne) {
|
||||||
movedCards = new CardCollection(valid);
|
movedCards = new CardCollection(valid);
|
||||||
String prompt;
|
String prompt;
|
||||||
if (destZone2.equals(ZoneType.Library) && libraryPosition2 == 0) {
|
if (destZone2.equals(ZoneType.Library) && libraryPosition2 == 0) {
|
||||||
prompt = "Choose a card to leave on top of {player's} library";
|
prompt = Localizer.getInstance().getMessage("lblChooseACardToLeaveTargetLibraryTop").replace("%s", "{player's}");
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
prompt = "Choose a card to leave in {player's} " + destZone2.name();
|
prompt = Localizer.getInstance().getMessage("lblChooseACardLeaveTarget").replace("%s", "{player's}") + " " + destZone2.name();
|
||||||
}
|
}
|
||||||
|
|
||||||
Card chosen = chooser.getController().chooseSingleEntityForEffect(valid, delayedReveal, sa, prompt, false, p);
|
Card chosen = chooser.getController().chooseSingleEntityForEffect(valid, delayedReveal, sa, prompt, false, p);
|
||||||
@@ -245,19 +246,19 @@ public class DigEffect extends SpellAbilityEffect {
|
|||||||
if (sa.hasParam("PrimaryPrompt")) {
|
if (sa.hasParam("PrimaryPrompt")) {
|
||||||
prompt = sa.getParam("PrimaryPrompt");
|
prompt = sa.getParam("PrimaryPrompt");
|
||||||
} else {
|
} else {
|
||||||
prompt = "Choose card(s) to put into " + destZone1.name();
|
prompt = Localizer.getInstance().getMessage("lblChooseCardsPutInto") + " " + destZone1.name();
|
||||||
if (destZone1.equals(ZoneType.Library)) {
|
if (destZone1.equals(ZoneType.Library)) {
|
||||||
if (libraryPosition == -1) {
|
if (libraryPosition == -1) {
|
||||||
prompt = "Choose card(s) to put on the bottom of {player's} library";
|
prompt = Localizer.getInstance().getMessage("lblChooseCardPutOnTargetLibarayBottom").replace("%s", "{player's}");
|
||||||
} else if (libraryPosition == 0) {
|
} else if (libraryPosition == 0) {
|
||||||
prompt = "Choose card(s) to put on top of {player's} library";
|
prompt = Localizer.getInstance().getMessage("lblChooseCardPutOnTargetLibarayTop").replace("%s", "{player's}");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
movedCards = new CardCollection();
|
movedCards = new CardCollection();
|
||||||
if (valid.isEmpty()) {
|
if (valid.isEmpty()) {
|
||||||
chooser.getController().notifyOfValue(sa, null, "No valid cards");
|
chooser.getController().notifyOfValue(sa, null, Localizer.getInstance().getMessage("lblNoValidCards"));
|
||||||
} else {
|
} else {
|
||||||
if ( p == chooser ) { // the digger can still see all the dug cards when choosing
|
if ( p == chooser ) { // the digger can still see all the dug cards when choosing
|
||||||
chooser.getController().tempShowCards(top);
|
chooser.getController().tempShowCards(top);
|
||||||
@@ -276,7 +277,9 @@ public class DigEffect extends SpellAbilityEffect {
|
|||||||
|
|
||||||
if (!changeValid.isEmpty() && !sa.hasParam("ExileFaceDown") && !sa.hasParam("NoReveal")) {
|
if (!changeValid.isEmpty() && !sa.hasParam("ExileFaceDown") && !sa.hasParam("NoReveal")) {
|
||||||
game.getAction().reveal(movedCards, chooser, true,
|
game.getAction().reveal(movedCards, chooser, true,
|
||||||
chooser + " picked " + (movedCards.size() == 1 ? "this card" : "these cards") + " from ");
|
chooser + " " + Localizer.getInstance().getMessage("lblPicked") + " " +
|
||||||
|
(movedCards.size() == 1 ? Localizer.getInstance().getMessage("lblThisCard") : Localizer.getInstance().getMessage("lblTheseCards")) +
|
||||||
|
" " + Localizer.getInstance().getMessage("lblFrom") + " ");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (sa.hasParam("ForgetOtherRemembered")) {
|
if (sa.hasParam("ForgetOtherRemembered")) {
|
||||||
|
|||||||
@@ -16,6 +16,7 @@ import forge.game.player.Player;
|
|||||||
import forge.game.spellability.SpellAbility;
|
import forge.game.spellability.SpellAbility;
|
||||||
import forge.game.zone.PlayerZone;
|
import forge.game.zone.PlayerZone;
|
||||||
import forge.game.zone.ZoneType;
|
import forge.game.zone.ZoneType;
|
||||||
|
import forge.util.Localizer;
|
||||||
|
|
||||||
public class DigMultipleEffect extends SpellAbilityEffect {
|
public class DigMultipleEffect extends SpellAbilityEffect {
|
||||||
|
|
||||||
@@ -74,15 +75,15 @@ public class DigMultipleEffect extends SpellAbilityEffect {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (validMap.isEmpty()) {
|
if (validMap.isEmpty()) {
|
||||||
chooser.getController().notifyOfValue(sa, null, "No valid cards");
|
chooser.getController().notifyOfValue(sa, null, Localizer.getInstance().getMessage("lblNoValidCards"));
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
CardCollection chosen = chooser.getController().chooseCardsForEffectMultiple(validMap, sa, "Choose cards");
|
CardCollection chosen = chooser.getController().chooseCardsForEffectMultiple(validMap, sa, Localizer.getInstance().getMessage("lblChooseCards"));
|
||||||
|
|
||||||
if (!chosen.isEmpty()) {
|
if (!chosen.isEmpty()) {
|
||||||
game.getAction().reveal(chosen, chooser, true,
|
game.getAction().reveal(chosen, chooser, true,
|
||||||
chooser + " picked " + (chosen.size() == 1 ? "this card" : "these cards") + " from ");
|
chooser + " " + Localizer.getInstance().getMessage("lblPicked") + " " + (chosen.size() == 1 ? Localizer.getInstance().getMessage("lblThisCard") : Localizer.getInstance().getMessage("lblTheseCards")) + " " + Localizer.getInstance().getMessage("lblFrom") + " ");
|
||||||
}
|
}
|
||||||
|
|
||||||
for (Card c : chosen) {
|
for (Card c : chosen) {
|
||||||
|
|||||||
@@ -11,6 +11,7 @@ import forge.game.spellability.SpellAbility;
|
|||||||
import forge.game.zone.PlayerZone;
|
import forge.game.zone.PlayerZone;
|
||||||
import forge.game.zone.ZoneType;
|
import forge.game.zone.ZoneType;
|
||||||
import forge.util.MyRandom;
|
import forge.util.MyRandom;
|
||||||
|
import forge.util.Localizer;
|
||||||
|
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
|
|
||||||
@@ -113,7 +114,7 @@ public class DigUntilEffect extends SpellAbilityEffect {
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
if (!sa.usesTargeting() || p.canBeTargetedBy(sa)) {
|
if (!sa.usesTargeting() || p.canBeTargetedBy(sa)) {
|
||||||
if (optional && !p.getController().confirmAction(sa, null, "Do you want to dig your library?")) {
|
if (optional && !p.getController().confirmAction(sa, null, Localizer.getInstance().getMessage("lblDoYouWantDigYourLibrary"))) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
CardCollection found = new CardCollection();
|
CardCollection found = new CardCollection();
|
||||||
@@ -159,7 +160,7 @@ public class DigUntilEffect extends SpellAbilityEffect {
|
|||||||
final Card c = itr.next();
|
final Card c = itr.next();
|
||||||
final ZoneType origin = c.getZone().getZoneType();
|
final ZoneType origin = c.getZone().getZoneType();
|
||||||
if (optionalFound && !p.getController().confirmAction(sa, null,
|
if (optionalFound && !p.getController().confirmAction(sa, null,
|
||||||
"Do you want to put that card to " + foundDest.name() + "?")) {
|
Localizer.getInstance().getMessage("lblDoYouWantPutCardTo") + " " + foundDest.name() + "?")) {
|
||||||
continue;
|
continue;
|
||||||
} else {
|
} else {
|
||||||
Card m = null;
|
Card m = null;
|
||||||
|
|||||||
@@ -15,6 +15,7 @@ import forge.game.zone.ZoneType;
|
|||||||
import forge.util.Lang;
|
import forge.util.Lang;
|
||||||
import forge.util.Aggregates;
|
import forge.util.Aggregates;
|
||||||
import forge.util.TextUtil;
|
import forge.util.TextUtil;
|
||||||
|
import forge.util.Localizer;
|
||||||
|
|
||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
|
|
||||||
@@ -205,7 +206,7 @@ public class DiscardEffect extends SpellAbilityEffect {
|
|||||||
if (!p.canDiscardBy(sa)) {
|
if (!p.canDiscardBy(sa)) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
String message = "Would you like to discard " + numCards + " random card(s)?";
|
String message = Localizer.getInstance().getMessage("lblWouldYouLikeRandomDiscardTargetCard").replace("%d", String.valueOf(numCards));
|
||||||
boolean runDiscard = !sa.hasParam("Optional") || p.getController().confirmAction(sa, PlayerActionConfirmMode.Random, message);
|
boolean runDiscard = !sa.hasParam("Optional") || p.getController().confirmAction(sa, PlayerActionConfirmMode.Random, message);
|
||||||
|
|
||||||
if (runDiscard) {
|
if (runDiscard) {
|
||||||
@@ -257,7 +258,7 @@ public class DiscardEffect extends SpellAbilityEffect {
|
|||||||
final CardCollectionView dPHand = p.getCardsIn(ZoneType.Hand);
|
final CardCollectionView dPHand = p.getCardsIn(ZoneType.Hand);
|
||||||
|
|
||||||
for (final Player opp : p.getAllOtherPlayers()) {
|
for (final Player opp : p.getAllOtherPlayers()) {
|
||||||
opp.getController().reveal(dPHand, ZoneType.Hand, p, "Reveal ");
|
opp.getController().reveal(dPHand, ZoneType.Hand, p, Localizer.getInstance().getMessage("lblReveal") + " ");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!p.canDiscardBy(sa)) {
|
if (!p.canDiscardBy(sa)) {
|
||||||
@@ -326,7 +327,7 @@ public class DiscardEffect extends SpellAbilityEffect {
|
|||||||
|
|
||||||
if (mode.startsWith("Reveal") ) {
|
if (mode.startsWith("Reveal") ) {
|
||||||
p.getController().reveal(toBeDiscarded, ZoneType.Hand, p,
|
p.getController().reveal(toBeDiscarded, ZoneType.Hand, p,
|
||||||
chooser + " has chosen " + (toBeDiscarded.size() == 1 ? "this card" : "these cards") + " from ");
|
chooser + " " + Localizer.getInstance().getMessage("lblHasChosen") + " " + (toBeDiscarded.size() == 1 ? Localizer.getInstance().getMessage("lblThisCard") : Localizer.getInstance().getMessage("lblTheseCards")) + " " + Localizer.getInstance().getMessage("lblFrom") + " ");
|
||||||
}
|
}
|
||||||
for (Card card : toBeDiscarded) {
|
for (Card card : toBeDiscarded) {
|
||||||
if (card == null) { continue; }
|
if (card == null) { continue; }
|
||||||
|
|||||||
@@ -8,6 +8,7 @@ import forge.game.player.Player;
|
|||||||
import forge.game.spellability.SpellAbility;
|
import forge.game.spellability.SpellAbility;
|
||||||
import forge.game.spellability.TargetRestrictions;
|
import forge.game.spellability.TargetRestrictions;
|
||||||
import forge.util.Lang;
|
import forge.util.Lang;
|
||||||
|
import forge.util.Localizer;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@@ -49,12 +50,12 @@ public class DrawEffect extends SpellAbilityEffect {
|
|||||||
|
|
||||||
for (final Player p : getDefinedPlayersOrTargeted(sa)) {
|
for (final Player p : getDefinedPlayersOrTargeted(sa)) {
|
||||||
if ((tgt == null) || p.canBeTargetedBy(sa))
|
if ((tgt == null) || p.canBeTargetedBy(sa))
|
||||||
if (optional && !p.getController().confirmAction(sa, null, "Do you want to draw " + Lang.nounWithAmount(numCards, " card") + "?"))
|
if (optional && !p.getController().confirmAction(sa, null, Localizer.getInstance().getMessage("lblDoYouWantDraw") + " " + Lang.nounWithAmount(numCards, " card") + "?"))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
int actualNum = numCards;
|
int actualNum = numCards;
|
||||||
if (upto) {
|
if (upto) {
|
||||||
actualNum = p.getController().chooseNumber(sa, "How may cards do you want to draw?", 0, numCards);
|
actualNum = p.getController().chooseNumber(sa, "lblHowMayCardDoYouWantDraw", 0, numCards);
|
||||||
}
|
}
|
||||||
|
|
||||||
final CardCollectionView drawn = p.drawCards(actualNum);
|
final CardCollectionView drawn = p.drawCards(actualNum);
|
||||||
|
|||||||
@@ -8,6 +8,7 @@ import forge.game.card.CardCollectionView;
|
|||||||
import forge.game.player.Player;
|
import forge.game.player.Player;
|
||||||
import forge.game.spellability.SpellAbility;
|
import forge.game.spellability.SpellAbility;
|
||||||
import forge.game.zone.ZoneType;
|
import forge.game.zone.ZoneType;
|
||||||
|
import forge.util.Localizer;
|
||||||
|
|
||||||
public class EncodeEffect extends SpellAbilityEffect {
|
public class EncodeEffect extends SpellAbilityEffect {
|
||||||
@Override
|
@Override
|
||||||
@@ -45,7 +46,7 @@ public class EncodeEffect extends SpellAbilityEffect {
|
|||||||
|
|
||||||
|
|
||||||
final StringBuilder sb = new StringBuilder();
|
final StringBuilder sb = new StringBuilder();
|
||||||
sb.append("Do you want to exile ").append(host).append(" and encode it onto a creature you control?");
|
sb.append(Localizer.getInstance().getMessage("lblDoYouWantExile") + " ").append(host).append(" " + Localizer.getInstance().getMessage("lblAndEncodeOntoAYouControlCreature"));
|
||||||
if (!player.getController().confirmAction(sa, null, sb.toString())) {
|
if (!player.getController().confirmAction(sa, null, sb.toString())) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -54,14 +55,14 @@ public class EncodeEffect extends SpellAbilityEffect {
|
|||||||
Card movedCard = game.getAction().moveTo(ZoneType.Exile, host, sa);
|
Card movedCard = game.getAction().moveTo(ZoneType.Exile, host, sa);
|
||||||
|
|
||||||
// choose a creature
|
// choose a creature
|
||||||
Card choice = player.getController().chooseSingleEntityForEffect(choices, sa, "Choose a creature you control to encode ", true);
|
Card choice = player.getController().chooseSingleEntityForEffect(choices, sa, Localizer.getInstance().getMessage("lblChooseACreatureYouControlToEncode") + " ", true);
|
||||||
|
|
||||||
if (choice == null) {
|
if (choice == null) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
StringBuilder codeLog = new StringBuilder();
|
StringBuilder codeLog = new StringBuilder();
|
||||||
codeLog.append("Encoding ").append(host.toString()).append(" to ").append(choice.toString());
|
codeLog.append(Localizer.getInstance().getMessage("lblEncoding") + " ").append(host.toString()).append(" " + Localizer.getInstance().getMessage("lblTo") + " ").append(choice.toString());
|
||||||
game.getGameLog().add(GameLogEntryType.STACK_RESOLVE, codeLog.toString());
|
game.getGameLog().add(GameLogEntryType.STACK_RESOLVE, codeLog.toString());
|
||||||
|
|
||||||
// store hostcard in encoded array
|
// store hostcard in encoded array
|
||||||
|
|||||||
@@ -14,6 +14,7 @@ import forge.game.spellability.SpellAbility;
|
|||||||
import forge.game.trigger.TriggerType;
|
import forge.game.trigger.TriggerType;
|
||||||
import forge.game.zone.ZoneType;
|
import forge.game.zone.ZoneType;
|
||||||
import forge.util.Lang;
|
import forge.util.Lang;
|
||||||
|
import forge.util.Localizer;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@@ -54,7 +55,7 @@ public class ExploreEffect extends SpellAbilityEffect {
|
|||||||
boolean revealedLand = false;
|
boolean revealedLand = false;
|
||||||
CardCollection top = pl.getTopXCardsFromLibrary(1);
|
CardCollection top = pl.getTopXCardsFromLibrary(1);
|
||||||
if (!top.isEmpty()) {
|
if (!top.isEmpty()) {
|
||||||
game.getAction().reveal(top, pl, false, "Revealed for Explore - ");
|
game.getAction().reveal(top, pl, false, Localizer.getInstance().getMessage("lblRevealedForExplore") + " - ");
|
||||||
final Card r = top.getFirst();
|
final Card r = top.getFirst();
|
||||||
if (r.isLand()) {
|
if (r.isLand()) {
|
||||||
game.getAction().moveTo(ZoneType.Hand, r, sa);
|
game.getAction().moveTo(ZoneType.Hand, r, sa);
|
||||||
@@ -63,7 +64,7 @@ public class ExploreEffect extends SpellAbilityEffect {
|
|||||||
// TODO find better way to choose optional send away
|
// TODO find better way to choose optional send away
|
||||||
final Card choosen = pc.chooseSingleCardForZoneChange(
|
final Card choosen = pc.chooseSingleCardForZoneChange(
|
||||||
ZoneType.Graveyard, Lists.newArrayList(ZoneType.Library), sa, top, null,
|
ZoneType.Graveyard, Lists.newArrayList(ZoneType.Library), sa, top, null,
|
||||||
"Put this card in your graveyard?", true, pl);
|
Localizer.getInstance().getMessage("lblPutThisCardToYourGraveyard"), true, pl);
|
||||||
if (choosen != null) {
|
if (choosen != null) {
|
||||||
game.getAction().moveTo(ZoneType.Graveyard, choosen, sa);
|
game.getAction().moveTo(ZoneType.Graveyard, choosen, sa);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -12,6 +12,7 @@ import forge.game.spellability.AbilitySub;
|
|||||||
import forge.game.spellability.SpellAbility;
|
import forge.game.spellability.SpellAbility;
|
||||||
import forge.game.trigger.TriggerType;
|
import forge.game.trigger.TriggerType;
|
||||||
import forge.util.MyRandom;
|
import forge.util.MyRandom;
|
||||||
|
import forge.util.Localizer;
|
||||||
|
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@@ -163,7 +164,7 @@ public class FlipCoinEffect extends SpellAbilityEffect {
|
|||||||
if (result) {
|
if (result) {
|
||||||
numSuccesses++;
|
numSuccesses++;
|
||||||
}
|
}
|
||||||
flipper.getGame().getAction().nofityOfValue(sa, flipper, result ? "heads" : "tails", null);
|
flipper.getGame().getAction().nofityOfValue(sa, flipper, result ? Localizer.getInstance().getMessage("lblHeads") : Localizer.getInstance().getMessage("lblTails"), null);
|
||||||
} while (sa.hasParam("FlipUntilYouLose") && result != false);
|
} while (sa.hasParam("FlipUntilYouLose") && result != false);
|
||||||
|
|
||||||
if (sa.hasParam("FlipUntilYouLose") && sa.hasAdditionalAbility("LoseSubAbility")) {
|
if (sa.hasParam("FlipUntilYouLose") && sa.hasAdditionalAbility("LoseSubAbility")) {
|
||||||
@@ -193,7 +194,7 @@ public class FlipCoinEffect extends SpellAbilityEffect {
|
|||||||
|
|
||||||
do {
|
do {
|
||||||
Set<Boolean> flipResults = new HashSet<>();
|
Set<Boolean> flipResults = new HashSet<>();
|
||||||
final boolean choice = caller.getController().chooseBinary(sa, sa.getHostCard().getName() + " - Call coin flip", PlayerController.BinaryChoiceType.HeadsOrTails);
|
final boolean choice = caller.getController().chooseBinary(sa, sa.getHostCard().getName() + " - " + Localizer.getInstance().getMessage("lblCallCoinFlip"), PlayerController.BinaryChoiceType.HeadsOrTails);
|
||||||
for (int i = 0; i < multiplier; i++) {
|
for (int i = 0; i < multiplier; i++) {
|
||||||
flipResults.add(MyRandom.getRandom().nextBoolean());
|
flipResults.add(MyRandom.getRandom().nextBoolean());
|
||||||
}
|
}
|
||||||
@@ -206,7 +207,7 @@ public class FlipCoinEffect extends SpellAbilityEffect {
|
|||||||
numSuccesses++;
|
numSuccesses++;
|
||||||
}
|
}
|
||||||
|
|
||||||
caller.getGame().getAction().nofityOfValue(sa, caller, wonFlip ? "win" : "lose", null);
|
caller.getGame().getAction().nofityOfValue(sa, caller, wonFlip ? Localizer.getInstance().getMessage("lblWin") : Localizer.getInstance().getMessage("lblLose"), null);
|
||||||
|
|
||||||
// Run triggers
|
// Run triggers
|
||||||
final Map<AbilityKey, Object> runParams = AbilityKey.newMap();
|
final Map<AbilityKey, Object> runParams = AbilityKey.newMap();
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ import forge.game.ability.SpellAbilityEffect;
|
|||||||
import forge.game.player.Player;
|
import forge.game.player.Player;
|
||||||
import forge.game.spellability.SpellAbility;
|
import forge.game.spellability.SpellAbility;
|
||||||
import forge.game.spellability.TargetRestrictions;
|
import forge.game.spellability.TargetRestrictions;
|
||||||
|
import forge.util.Localizer;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@@ -34,7 +35,7 @@ public class LifeSetEffect extends SpellAbilityEffect {
|
|||||||
if (!redistribute) {
|
if (!redistribute) {
|
||||||
p.setLife(lifeAmount, sa.getHostCard());
|
p.setLife(lifeAmount, sa.getHostCard());
|
||||||
} else {
|
} else {
|
||||||
int life = sa.getActivatingPlayer().getController().chooseNumber(sa, "Life Total: " + p, lifetotals, p);
|
int life = sa.getActivatingPlayer().getController().chooseNumber(sa, Localizer.getInstance().getMessage("lblLifeTotal") + ": " + p, lifetotals, p);
|
||||||
p.setLife(life, sa.getHostCard());
|
p.setLife(life, sa.getHostCard());
|
||||||
lifetotals.remove((Integer) life);
|
lifetotals.remove((Integer) life);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -17,6 +17,7 @@ import forge.game.spellability.AbilityManaPart;
|
|||||||
import forge.game.spellability.SpellAbility;
|
import forge.game.spellability.SpellAbility;
|
||||||
import forge.game.spellability.TargetRestrictions;
|
import forge.game.spellability.TargetRestrictions;
|
||||||
import forge.game.zone.ZoneType;
|
import forge.game.zone.ZoneType;
|
||||||
|
import forge.util.Localizer;
|
||||||
|
|
||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
|
|
||||||
@@ -39,7 +40,7 @@ public class ManaEffect extends SpellAbilityEffect {
|
|||||||
final boolean optional = sa.hasParam("Optional");
|
final boolean optional = sa.hasParam("Optional");
|
||||||
final Game game = sa.getActivatingPlayer().getGame();
|
final Game game = sa.getActivatingPlayer().getGame();
|
||||||
|
|
||||||
if (optional && !sa.getActivatingPlayer().getController().confirmAction(sa, null, "Do you want to add mana?")) {
|
if (optional && !sa.getActivatingPlayer().getController().confirmAction(sa, null, Localizer.getInstance().getMessage("lblDoYouWantAddMana"))) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -91,7 +92,7 @@ public class ManaEffect extends SpellAbilityEffect {
|
|||||||
// just use the first possible color.
|
// just use the first possible color.
|
||||||
choice = colorsProduced[differentChoice ? nMana : 0];
|
choice = colorsProduced[differentChoice ? nMana : 0];
|
||||||
} else {
|
} else {
|
||||||
byte chosenColor = activator.getController().chooseColor("Select Mana to Produce", sa,
|
byte chosenColor = activator.getController().chooseColor(Localizer.getInstance().getMessage("lblSelectManaProduce"), sa,
|
||||||
differentChoice ? fullOptions : colorOptions);
|
differentChoice ? fullOptions : colorOptions);
|
||||||
if (chosenColor == 0)
|
if (chosenColor == 0)
|
||||||
throw new RuntimeException("ManaEffect::resolve() /*combo mana*/ - " + activator + " color mana choice is empty for " + card.getName());
|
throw new RuntimeException("ManaEffect::resolve() /*combo mana*/ - " + activator + " color mana choice is empty for " + card.getName());
|
||||||
@@ -111,7 +112,7 @@ public class ManaEffect extends SpellAbilityEffect {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
game.action.nofityOfValue(sa, card, activator + " picked " + choiceString, activator);
|
game.action.nofityOfValue(sa, card, activator + " " + Localizer.getInstance().getMessage("lblPicked") + " " + choiceString, activator);
|
||||||
abMana.setExpressChoice(choiceString.toString());
|
abMana.setExpressChoice(choiceString.toString());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -135,13 +136,13 @@ public class ManaEffect extends SpellAbilityEffect {
|
|||||||
mask |= MagicColor.fromName(colorsNeeded.charAt(nChar));
|
mask |= MagicColor.fromName(colorsNeeded.charAt(nChar));
|
||||||
}
|
}
|
||||||
colorMenu = mask == 0 ? ColorSet.ALL_COLORS : ColorSet.fromMask(mask);
|
colorMenu = mask == 0 ? ColorSet.ALL_COLORS : ColorSet.fromMask(mask);
|
||||||
byte val = p.getController().chooseColor("Select Mana to Produce", sa, colorMenu);
|
byte val = p.getController().chooseColor(Localizer.getInstance().getMessage("lblSelectManaProduce"), sa, colorMenu);
|
||||||
if (0 == val) {
|
if (0 == val) {
|
||||||
throw new RuntimeException("ManaEffect::resolve() /*any mana*/ - " + act + " color mana choice is empty for " + card.getName());
|
throw new RuntimeException("ManaEffect::resolve() /*any mana*/ - " + act + " color mana choice is empty for " + card.getName());
|
||||||
}
|
}
|
||||||
choice = MagicColor.toShortString(val);
|
choice = MagicColor.toShortString(val);
|
||||||
|
|
||||||
game.action.nofityOfValue(sa, card, act + " picked " + choice, act);
|
game.action.nofityOfValue(sa, card, act + " " + Localizer.getInstance().getMessage("lblPicked") + " " + choice, act);
|
||||||
abMana.setExpressChoice(choice);
|
abMana.setExpressChoice(choice);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -172,7 +173,7 @@ public class ManaEffect extends SpellAbilityEffect {
|
|||||||
if (cs.isMonoColor())
|
if (cs.isMonoColor())
|
||||||
sb.append(MagicColor.toShortString(s.getColorMask()));
|
sb.append(MagicColor.toShortString(s.getColorMask()));
|
||||||
else /* (cs.isMulticolor()) */ {
|
else /* (cs.isMulticolor()) */ {
|
||||||
byte chosenColor = sa.getActivatingPlayer().getController().chooseColor("Choose a single color from " + s.toString(), sa, cs);
|
byte chosenColor = sa.getActivatingPlayer().getController().chooseColor(Localizer.getInstance().getMessage("lblChooseSingleColorFrom") + " " + s.toString(), sa, cs);
|
||||||
sb.append(MagicColor.toShortString(chosenColor));
|
sb.append(MagicColor.toShortString(chosenColor));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,6 +8,7 @@ import forge.game.card.CardUtil;
|
|||||||
import forge.game.player.Player;
|
import forge.game.player.Player;
|
||||||
import forge.game.spellability.AbilityManaPart;
|
import forge.game.spellability.AbilityManaPart;
|
||||||
import forge.game.spellability.SpellAbility;
|
import forge.game.spellability.SpellAbility;
|
||||||
|
import forge.util.Localizer;
|
||||||
|
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@@ -68,7 +69,7 @@ public class ManaReflectedEffect extends SpellAbilityEffect {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (mask == 0 && !expressChoiceColors.isEmpty() && colors.contains("colorless")) {
|
if (mask == 0 && !expressChoiceColors.isEmpty() && colors.contains("colorless")) {
|
||||||
baseMana = MagicColor.toShortString(player.getController().chooseColorAllowColorless("Select Mana to Produce", sa.getHostCard(), ColorSet.fromMask(mask)));
|
baseMana = MagicColor.toShortString(player.getController().chooseColorAllowColorless(Localizer.getInstance().getMessage("lblSelectManaProduce"), sa.getHostCard(), ColorSet.fromMask(mask)));
|
||||||
} else {
|
} else {
|
||||||
// Nothing set previously so ask player if needed
|
// Nothing set previously so ask player if needed
|
||||||
if (mask == 0) {
|
if (mask == 0) {
|
||||||
@@ -78,14 +79,14 @@ public class ManaReflectedEffect extends SpellAbilityEffect {
|
|||||||
baseMana = MagicColor.toShortString(colors.iterator().next());
|
baseMana = MagicColor.toShortString(colors.iterator().next());
|
||||||
} else {
|
} else {
|
||||||
if (colors.contains("colorless")) {
|
if (colors.contains("colorless")) {
|
||||||
baseMana = MagicColor.toShortString(player.getController().chooseColorAllowColorless("Select Mana to Produce", sa.getHostCard(), ColorSet.fromNames(colors)));
|
baseMana = MagicColor.toShortString(player.getController().chooseColorAllowColorless(Localizer.getInstance().getMessage("lblSelectManaProduce"), sa.getHostCard(), ColorSet.fromNames(colors)));
|
||||||
} else {
|
} else {
|
||||||
baseMana = MagicColor.toShortString(player.getController().chooseColor("Select Mana to Produce", sa, ColorSet.fromNames(colors)));
|
baseMana = MagicColor.toShortString(player.getController().chooseColor(Localizer.getInstance().getMessage("lblSelectManaProduce"), sa, ColorSet.fromNames(colors)));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
colorMenu = ColorSet.fromMask(mask);
|
colorMenu = ColorSet.fromMask(mask);
|
||||||
byte color = sa.getActivatingPlayer().getController().chooseColor("Select Mana to Produce", sa, colorMenu);
|
byte color = sa.getActivatingPlayer().getController().chooseColor(Localizer.getInstance().getMessage("lblSelectManaProduce"), sa, colorMenu);
|
||||||
if (color == 0) {
|
if (color == 0) {
|
||||||
System.err.println("Unexpected behavior in ManaReflectedEffect: " + sa.getActivatingPlayer() + " - color mana choice is empty for " + sa.getHostCard().getName());
|
System.err.println("Unexpected behavior in ManaReflectedEffect: " + sa.getActivatingPlayer() + " - color mana choice is empty for " + sa.getHostCard().getName());
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -13,6 +13,7 @@ import forge.game.card.CardUtil;
|
|||||||
import forge.game.player.Player;
|
import forge.game.player.Player;
|
||||||
import forge.game.spellability.SpellAbility;
|
import forge.game.spellability.SpellAbility;
|
||||||
import forge.game.zone.ZoneType;
|
import forge.game.zone.ZoneType;
|
||||||
|
import forge.util.Localizer;
|
||||||
|
|
||||||
public class ManifestEffect extends SpellAbilityEffect {
|
public class ManifestEffect extends SpellAbilityEffect {
|
||||||
@Override
|
@Override
|
||||||
@@ -42,7 +43,7 @@ public class ManifestEffect extends SpellAbilityEffect {
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
String title = sa.hasParam("ChoiceTitle") ? sa.getParam("ChoiceTitle") : "Choose cards to manifest ";
|
String title = sa.hasParam("ChoiceTitle") ? sa.getParam("ChoiceTitle") : Localizer.getInstance().getMessage("lblChooseCardToManifest") + " ";
|
||||||
tgtCards = new CardCollection(activator.getController().chooseEntitiesForEffect(choices, amount, amount, null, sa, title, p));
|
tgtCards = new CardCollection(activator.getController().chooseEntitiesForEffect(choices, amount, amount, null, sa, title, p));
|
||||||
} else if ("TopOfLibrary".equals(defined)) {
|
} else if ("TopOfLibrary".equals(defined)) {
|
||||||
tgtCards = p.getTopXCardsFromLibrary(amount);
|
tgtCards = p.getTopXCardsFromLibrary(amount);
|
||||||
|
|||||||
@@ -13,6 +13,7 @@ import forge.game.player.Player;
|
|||||||
import forge.game.spellability.SpellAbility;
|
import forge.game.spellability.SpellAbility;
|
||||||
import forge.game.zone.PlayerZoneBattlefield;
|
import forge.game.zone.PlayerZoneBattlefield;
|
||||||
import forge.game.zone.ZoneType;
|
import forge.game.zone.ZoneType;
|
||||||
|
import forge.util.Localizer;
|
||||||
|
|
||||||
public class MeldEffect extends SpellAbilityEffect {
|
public class MeldEffect extends SpellAbilityEffect {
|
||||||
@Override
|
@Override
|
||||||
@@ -35,7 +36,7 @@ public class MeldEffect extends SpellAbilityEffect {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
Card secondary = controller.getController().chooseSingleEntityForEffect(field, sa, "Choose card to meld with");
|
Card secondary = controller.getController().chooseSingleEntityForEffect(field, sa, Localizer.getInstance().getMessage("lblChooseCardToMeld"));
|
||||||
|
|
||||||
secondary = game.getAction().exile(secondary, sa);
|
secondary = game.getAction().exile(secondary, sa);
|
||||||
|
|
||||||
|
|||||||
@@ -13,6 +13,7 @@ import forge.game.zone.ZoneType;
|
|||||||
|
|
||||||
import forge.util.Lang;
|
import forge.util.Lang;
|
||||||
import forge.util.TextUtil;
|
import forge.util.TextUtil;
|
||||||
|
import forge.util.Localizer;
|
||||||
|
|
||||||
public class MillEffect extends SpellAbilityEffect {
|
public class MillEffect extends SpellAbilityEffect {
|
||||||
@Override
|
@Override
|
||||||
@@ -39,7 +40,7 @@ public class MillEffect extends SpellAbilityEffect {
|
|||||||
for (final Player p : getTargetPlayers(sa)) {
|
for (final Player p : getTargetPlayers(sa)) {
|
||||||
if (!sa.usesTargeting() || p.canBeTargetedBy(sa)) {
|
if (!sa.usesTargeting() || p.canBeTargetedBy(sa)) {
|
||||||
if (sa.hasParam("Optional")) {
|
if (sa.hasParam("Optional")) {
|
||||||
final String prompt = TextUtil.concatWithSpace("Do you want to put card(s) from library to", TextUtil.addSuffix(destination.toString(),"?"));
|
final String prompt = TextUtil.concatWithSpace(Localizer.getInstance().getMessage("lblDoYouWantPutLibraryCardsTo"), TextUtil.addSuffix(destination.toString(),"?"));
|
||||||
if (!p.getController().confirmAction(sa, null, prompt)) {
|
if (!p.getController().confirmAction(sa, null, prompt)) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -15,6 +15,7 @@ import forge.game.spellability.SpellAbility;
|
|||||||
import forge.game.spellability.TargetRestrictions;
|
import forge.game.spellability.TargetRestrictions;
|
||||||
import forge.game.zone.ZoneType;
|
import forge.game.zone.ZoneType;
|
||||||
import forge.util.Aggregates;
|
import forge.util.Aggregates;
|
||||||
|
import forge.util.Localizer;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
@@ -85,7 +86,7 @@ public class MultiplePilesEffect extends SpellAbilityEffect {
|
|||||||
|
|
||||||
for (int i = 1; i < piles; i++) {
|
for (int i = 1; i < piles; i++) {
|
||||||
int size = pool.size();
|
int size = pool.size();
|
||||||
CardCollectionView pile = p.getController().chooseCardsForEffect(pool, sa, "Choose cards in Pile " + i, 0, size, false);
|
CardCollectionView pile = p.getController().chooseCardsForEffect(pool, sa, Localizer.getInstance().getMessage("lblChooseCardsInPile") + " " + i, 0, size, false);
|
||||||
pileList.add(pile);
|
pileList.add(pile);
|
||||||
pool.removeAll(pile);
|
pool.removeAll(pile);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -11,6 +11,7 @@ import forge.game.player.Player;
|
|||||||
import forge.game.spellability.SpellAbility;
|
import forge.game.spellability.SpellAbility;
|
||||||
import forge.game.zone.PlayerZone;
|
import forge.game.zone.PlayerZone;
|
||||||
import forge.game.zone.ZoneType;
|
import forge.game.zone.ZoneType;
|
||||||
|
import forge.util.Localizer;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@@ -52,11 +53,11 @@ public class PeekAndRevealEffect extends SpellAbilityEffect {
|
|||||||
CardCollectionView revealableCards = CardLists.getValidCards(peekCards, revealValid, sa.getActivatingPlayer(), sa.getHostCard());
|
CardCollectionView revealableCards = CardLists.getValidCards(peekCards, revealValid, sa.getActivatingPlayer(), sa.getHostCard());
|
||||||
boolean doReveal = !sa.hasParam("NoReveal") && !revealableCards.isEmpty();
|
boolean doReveal = !sa.hasParam("NoReveal") && !revealableCards.isEmpty();
|
||||||
if (!sa.hasParam("NoPeek")) {
|
if (!sa.hasParam("NoPeek")) {
|
||||||
peekingPlayer.getController().reveal(peekCards, ZoneType.Library, peekingPlayer, source + " - Revealing cards from ");
|
peekingPlayer.getController().reveal(peekCards, ZoneType.Library, peekingPlayer, source + " - " + Localizer.getInstance().getMessage("lblRevealingCardFrom") + " ");
|
||||||
}
|
}
|
||||||
|
|
||||||
if( doReveal && sa.hasParam("RevealOptional") )
|
if( doReveal && sa.hasParam("RevealOptional") )
|
||||||
doReveal = peekingPlayer.getController().confirmAction(sa, null, "Reveal cards to other players?");
|
doReveal = peekingPlayer.getController().confirmAction(sa, null, Localizer.getInstance().getMessage("lblRevealCardToOtherPlayers"));
|
||||||
|
|
||||||
if (doReveal) {
|
if (doReveal) {
|
||||||
peekingPlayer.getGame().getAction().reveal(revealableCards, peekingPlayer);
|
peekingPlayer.getGame().getAction().reveal(revealableCards, peekingPlayer);
|
||||||
|
|||||||
@@ -32,6 +32,7 @@ import forge.game.zone.ZoneType;
|
|||||||
import forge.item.PaperCard;
|
import forge.item.PaperCard;
|
||||||
import forge.util.Aggregates;
|
import forge.util.Aggregates;
|
||||||
import forge.util.Lang;
|
import forge.util.Lang;
|
||||||
|
import forge.util.Localizer;
|
||||||
|
|
||||||
public class PlayEffect extends SpellAbilityEffect {
|
public class PlayEffect extends SpellAbilityEffect {
|
||||||
@Override
|
@Override
|
||||||
@@ -117,7 +118,7 @@ public class PlayEffect extends SpellAbilityEffect {
|
|||||||
final int choicenum = AbilityUtils.calculateAmount(source, sa.getParam("ChoiceNum"), sa);
|
final int choicenum = AbilityUtils.calculateAmount(source, sa.getParam("ChoiceNum"), sa);
|
||||||
tgtCards = new CardCollection(
|
tgtCards = new CardCollection(
|
||||||
activator.getController().chooseCardsForEffect(choice, sa,
|
activator.getController().chooseCardsForEffect(choice, sa,
|
||||||
source + " - Choose up to " + Lang.nounWithNumeral(choicenum, "card"), 0, choicenum, true
|
source + " - " + Localizer.getInstance().getMessage("lblChooseUpTo") + " " + Lang.nounWithNumeral(choicenum, "card"), 0, choicenum, true
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@@ -144,7 +145,7 @@ public class PlayEffect extends SpellAbilityEffect {
|
|||||||
final CardCollection saidNoTo = new CardCollection();
|
final CardCollection saidNoTo = new CardCollection();
|
||||||
while (tgtCards.size() > saidNoTo.size() && saidNoTo.size() < amount && amount > 0) {
|
while (tgtCards.size() > saidNoTo.size() && saidNoTo.size() < amount && amount > 0) {
|
||||||
activator.getController().tempShowCards(showCards);
|
activator.getController().tempShowCards(showCards);
|
||||||
Card tgtCard = controller.getController().chooseSingleEntityForEffect(tgtCards, sa, "Select a card to play");
|
Card tgtCard = controller.getController().chooseSingleEntityForEffect(tgtCards, sa, Localizer.getInstance().getMessage("lblSelectCardToPlay"));
|
||||||
activator.getController().endTempShowCards();
|
activator.getController().endTempShowCards();
|
||||||
if (tgtCard == null) {
|
if (tgtCard == null) {
|
||||||
return;
|
return;
|
||||||
@@ -162,7 +163,7 @@ public class PlayEffect extends SpellAbilityEffect {
|
|||||||
game.getAction().revealTo(tgtCard, activator);
|
game.getAction().revealTo(tgtCard, activator);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (optional && !controller.getController().confirmAction(sa, null, TextUtil.concatWithSpace("Do you want to play", TextUtil.addSuffix(tgtCard.toString(),"?")))) {
|
if (optional && !controller.getController().confirmAction(sa, null, TextUtil.concatWithSpace(Localizer.getInstance().getMessage("lblDoYouWantPlay"), TextUtil.addSuffix(tgtCard.toString(),"?")))) {
|
||||||
if (wasFaceDown) {
|
if (wasFaceDown) {
|
||||||
tgtCard.turnFaceDownNoUpdate();
|
tgtCard.turnFaceDownNoUpdate();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -17,6 +17,7 @@ import forge.game.spellability.SpellAbility;
|
|||||||
import forge.game.zone.ZoneType;
|
import forge.game.zone.ZoneType;
|
||||||
import forge.util.Lang;
|
import forge.util.Lang;
|
||||||
import forge.util.TextUtil;
|
import forge.util.TextUtil;
|
||||||
|
import forge.util.Localizer;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@@ -51,7 +52,7 @@ public class ProtectAllEffect extends SpellAbilityEffect {
|
|||||||
final List<String> gains = new ArrayList<>();
|
final List<String> gains = new ArrayList<>();
|
||||||
if (isChoice) {
|
if (isChoice) {
|
||||||
Player choser = sa.getActivatingPlayer();
|
Player choser = sa.getActivatingPlayer();
|
||||||
final String choice = choser.getController().chooseProtectionType("Choose a protection", sa, choices);
|
final String choice = choser.getController().chooseProtectionType(Localizer.getInstance().getMessage("lblChooseAProtection"), sa, choices);
|
||||||
if( null == choice)
|
if( null == choice)
|
||||||
return;
|
return;
|
||||||
gains.add(choice);
|
gains.add(choice);
|
||||||
|
|||||||
@@ -12,6 +12,7 @@ import forge.game.spellability.SpellAbility;
|
|||||||
import forge.game.spellability.TargetRestrictions;
|
import forge.game.spellability.TargetRestrictions;
|
||||||
import forge.util.Lang;
|
import forge.util.Lang;
|
||||||
import forge.util.TextUtil;
|
import forge.util.TextUtil;
|
||||||
|
import forge.util.Localizer;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
@@ -106,9 +107,9 @@ public class ProtectEffect extends SpellAbilityEffect {
|
|||||||
if (isChoice && !choices.isEmpty()) {
|
if (isChoice && !choices.isEmpty()) {
|
||||||
Player choser = sa.getActivatingPlayer();
|
Player choser = sa.getActivatingPlayer();
|
||||||
if (sa.hasParam("Choser") && sa.getParam("Choser").equals("Controller") && !tgtCards.isEmpty()) {
|
if (sa.hasParam("Choser") && sa.getParam("Choser").equals("Controller") && !tgtCards.isEmpty()) {
|
||||||
choser = tgtCards.get(0).getController();
|
choser = tgtCards.get(0).getController();
|
||||||
}
|
}
|
||||||
final String choice = choser.getController().chooseProtectionType("Choose a protection", sa, choices);
|
final String choice = choser.getController().chooseProtectionType(Localizer.getInstance().getMessage("lblChooseAProtection"), sa, choices);
|
||||||
if( null == choice)
|
if( null == choice)
|
||||||
return;
|
return;
|
||||||
gains.add(choice);
|
gains.add(choice);
|
||||||
|
|||||||
@@ -15,6 +15,7 @@ import forge.game.spellability.SpellAbility;
|
|||||||
import forge.game.zone.ZoneType;
|
import forge.game.zone.ZoneType;
|
||||||
import forge.util.Aggregates;
|
import forge.util.Aggregates;
|
||||||
import forge.util.Lang;
|
import forge.util.Lang;
|
||||||
|
import forge.util.Localizer;
|
||||||
|
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@@ -214,7 +215,7 @@ public class PumpEffect extends SpellAbilityEffect {
|
|||||||
sb.append(atk);
|
sb.append(atk);
|
||||||
sb.append("/");
|
sb.append("/");
|
||||||
if (def >= 0) {
|
if (def >= 0) {
|
||||||
sb.append("+");
|
sb.append("+");
|
||||||
}
|
}
|
||||||
sb.append(def);
|
sb.append(def);
|
||||||
sb.append(" ");
|
sb.append(" ");
|
||||||
@@ -327,7 +328,7 @@ public class PumpEffect extends SpellAbilityEffect {
|
|||||||
final String targets = Lang.joinHomogenous(tgtCards);
|
final String targets = Lang.joinHomogenous(tgtCards);
|
||||||
final String message = sa.hasParam("OptionQuestion")
|
final String message = sa.hasParam("OptionQuestion")
|
||||||
? TextUtil.fastReplace(sa.getParam("OptionQuestion"), "TARGETS", targets)
|
? TextUtil.fastReplace(sa.getParam("OptionQuestion"), "TARGETS", targets)
|
||||||
: TextUtil.concatNoSpace("Apply pump to ", targets, "?");
|
: TextUtil.concatNoSpace(Localizer.getInstance().getMessage("lblApplyPumpTo") + " ", targets, "?");
|
||||||
|
|
||||||
if (!sa.getActivatingPlayer().getController().confirmAction(sa, null, message)) {
|
if (!sa.getActivatingPlayer().getController().confirmAction(sa, null, message)) {
|
||||||
return;
|
return;
|
||||||
|
|||||||
@@ -10,6 +10,7 @@ import forge.game.spellability.SpellAbility;
|
|||||||
import forge.game.spellability.TargetRestrictions;
|
import forge.game.spellability.TargetRestrictions;
|
||||||
import forge.game.zone.ZoneType;
|
import forge.game.zone.ZoneType;
|
||||||
import forge.util.Lang;
|
import forge.util.Lang;
|
||||||
|
import forge.util.Localizer;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@@ -116,7 +117,7 @@ public class RearrangeTopOfLibraryEffect extends SpellAbilityEffect {
|
|||||||
Card next = orderedCards.get(i);
|
Card next = orderedCards.get(i);
|
||||||
player.getGame().getAction().moveToLibrary(next, 0, sa);
|
player.getGame().getAction().moveToLibrary(next, 0, sa);
|
||||||
}
|
}
|
||||||
if (mayshuffle && activator.getController().confirmAction(sa, null, "Do you want to shuffle the library?")) {
|
if (mayshuffle && activator.getController().confirmAction(sa, null, Localizer.getInstance().getMessage("lblDoyouWantShuffleTheLibrary"))) {
|
||||||
player.shuffle(sa);
|
player.shuffle(sa);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -36,7 +36,7 @@ public class RemoveFromCombatEffect extends SpellAbilityEffect {
|
|||||||
|
|
||||||
final TargetRestrictions tgt = sa.getTargetRestrictions();
|
final TargetRestrictions tgt = sa.getTargetRestrictions();
|
||||||
for (final Card c : getTargetCards(sa)) {
|
for (final Card c : getTargetCards(sa)) {
|
||||||
final Combat combat = game.getPhaseHandler().getCombat();
|
final Combat combat = game.getPhaseHandler().getCombat();
|
||||||
if (combat != null && (tgt == null || c.canBeTargetedBy(sa))) {
|
if (combat != null && (tgt == null || c.canBeTargetedBy(sa))) {
|
||||||
// Unblock creatures that were blocked only by this card (e.g. Ydwen Efreet)
|
// Unblock creatures that were blocked only by this card (e.g. Ydwen Efreet)
|
||||||
if (sa.hasParam("UnblockCreaturesBlockedOnlyBy")) {
|
if (sa.hasParam("UnblockCreaturesBlockedOnlyBy")) {
|
||||||
@@ -58,7 +58,7 @@ public class RemoveFromCombatEffect extends SpellAbilityEffect {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
combat.removeFromCombat(c);
|
combat.removeFromCombat(c);
|
||||||
|
|
||||||
if (rem) {
|
if (rem) {
|
||||||
sa.getHostCard().addRemembered(c);
|
sa.getHostCard().addRemembered(c);
|
||||||
|
|||||||
@@ -14,6 +14,7 @@ import forge.game.spellability.SpellAbility;
|
|||||||
import forge.game.zone.ZoneType;
|
import forge.game.zone.ZoneType;
|
||||||
import forge.util.Aggregates;
|
import forge.util.Aggregates;
|
||||||
import forge.util.collect.FCollection;
|
import forge.util.collect.FCollection;
|
||||||
|
import forge.util.Localizer;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
@@ -167,7 +168,7 @@ public class RepeatEachEffect extends SpellAbilityEffect {
|
|||||||
if (random) {
|
if (random) {
|
||||||
p = Aggregates.random(game.getPlayers());
|
p = Aggregates.random(game.getPlayers());
|
||||||
} else {
|
} else {
|
||||||
p = sa.getActivatingPlayer().getController().chooseSingleEntityForEffect(game.getPlayers(), sa, "Choose a player");
|
p = sa.getActivatingPlayer().getController().chooseSingleEntityForEffect(game.getPlayers(), sa, Localizer.getInstance().getMessage("lblChoosePlayer"));
|
||||||
}
|
}
|
||||||
if (recordMap.containsKey(p)) {
|
if (recordMap.containsKey(p)) {
|
||||||
recordMap.get(p).add(0, card);
|
recordMap.get(p).add(0, card);
|
||||||
@@ -188,7 +189,7 @@ public class RepeatEachEffect extends SpellAbilityEffect {
|
|||||||
valid = CardLists.filterControlledBy(valid,
|
valid = CardLists.filterControlledBy(valid,
|
||||||
game.getNextPlayerAfter(p, source.getChosenDirection()));
|
game.getNextPlayerAfter(p, source.getChosenDirection()));
|
||||||
}
|
}
|
||||||
Card card = p.getController().chooseSingleEntityForEffect(valid, sa, "Choose a card");
|
Card card = p.getController().chooseSingleEntityForEffect(valid, sa, Localizer.getInstance().getMessage("lblChooseaCard"));
|
||||||
if (recordMap.containsKey(p)) {
|
if (recordMap.containsKey(p)) {
|
||||||
recordMap.get(p).add(0, card);
|
recordMap.get(p).add(0, card);
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@@ -12,6 +12,7 @@ import forge.game.spellability.AbilitySub;
|
|||||||
import forge.game.spellability.SpellAbility;
|
import forge.game.spellability.SpellAbility;
|
||||||
import forge.game.zone.ZoneType;
|
import forge.game.zone.ZoneType;
|
||||||
import forge.util.Expressions;
|
import forge.util.Expressions;
|
||||||
|
import forge.util.Localizer;
|
||||||
|
|
||||||
public class RepeatEffect extends SpellAbilityEffect {
|
public class RepeatEffect extends SpellAbilityEffect {
|
||||||
|
|
||||||
@@ -49,14 +50,14 @@ public class RepeatEffect extends SpellAbilityEffect {
|
|||||||
if (maxRepeat != null && maxRepeat <= count) {
|
if (maxRepeat != null && maxRepeat <= count) {
|
||||||
// TODO Replace Infinite Loop Break with a game draw. Here are the scenarios that can cause this:
|
// TODO Replace Infinite Loop Break with a game draw. Here are the scenarios that can cause this:
|
||||||
// Helm of Obedience vs Graveyard to Library replacement effect
|
// Helm of Obedience vs Graveyard to Library replacement effect
|
||||||
|
|
||||||
if(source.getName().equals("Helm of Obedience")) {
|
if(source.getName().equals("Helm of Obedience")) {
|
||||||
StringBuilder infLoop = new StringBuilder(sa.getHostCard().toString());
|
StringBuilder infLoop = new StringBuilder(sa.getHostCard().toString());
|
||||||
infLoop.append(" - To avoid an infinite loop, this repeat has been broken ");
|
infLoop.append(" - To avoid an infinite loop, this repeat has been broken ");
|
||||||
infLoop.append(" and the game will now continue in the current state, ending the loop early. ");
|
infLoop.append(" and the game will now continue in the current state, ending the loop early. ");
|
||||||
infLoop.append("Once Draws are available this probably should change to a Draw.");
|
infLoop.append("Once Draws are available this probably should change to a Draw.");
|
||||||
System.out.println(infLoop.toString());
|
System.out.println(infLoop.toString());
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
} while (checkRepeatConditions(sa));
|
} while (checkRepeatConditions(sa));
|
||||||
@@ -129,7 +130,7 @@ public class RepeatEffect extends SpellAbilityEffect {
|
|||||||
Player decider = sa.hasParam("RepeatOptionalDecider")
|
Player decider = sa.hasParam("RepeatOptionalDecider")
|
||||||
? AbilityUtils.getDefinedPlayers(sa.getHostCard(), sa.getParam("RepeatOptionalDecider"), sa).get(0)
|
? AbilityUtils.getDefinedPlayers(sa.getHostCard(), sa.getParam("RepeatOptionalDecider"), sa).get(0)
|
||||||
: sa.getActivatingPlayer();
|
: sa.getActivatingPlayer();
|
||||||
return decider.getController().confirmAction(sa, null, "Do you want to repeat this process again?");
|
return decider.getController().confirmAction(sa, null, Localizer.getInstance().getMessage("lblDoYouWantRepeatProcessAgain"));
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
|||||||
@@ -45,7 +45,7 @@ public class ReplaceDamageEffect extends SpellAbilityEffect {
|
|||||||
prevent -= n;
|
prevent -= n;
|
||||||
|
|
||||||
if (card.getType().hasStringType("Effect") && prevent <= 0) {
|
if (card.getType().hasStringType("Effect") && prevent <= 0) {
|
||||||
game.getAction().exile(card, null);
|
game.getAction().exile(card, null);
|
||||||
} else if (!StringUtils.isNumeric(varValue)) {
|
} else if (!StringUtils.isNumeric(varValue)) {
|
||||||
card.setSVar(varValue, "Number$" + prevent);
|
card.setSVar(varValue, "Number$" + prevent);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -51,7 +51,7 @@ public class ReplaceSplitDamageEffect extends SpellAbilityEffect {
|
|||||||
prevent -= n;
|
prevent -= n;
|
||||||
|
|
||||||
if (card.getType().hasStringType("Effect") && prevent <= 0) {
|
if (card.getType().hasStringType("Effect") && prevent <= 0) {
|
||||||
game.getAction().exile(card, null);
|
game.getAction().exile(card, null);
|
||||||
} else if (!StringUtils.isNumeric(varValue)) {
|
} else if (!StringUtils.isNumeric(varValue)) {
|
||||||
card.setSVar(varValue, "Number$" + prevent);
|
card.setSVar(varValue, "Number$" + prevent);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -7,6 +7,7 @@ import forge.game.player.Player;
|
|||||||
import forge.game.spellability.SpellAbility;
|
import forge.game.spellability.SpellAbility;
|
||||||
import forge.game.spellability.TargetRestrictions;
|
import forge.game.spellability.TargetRestrictions;
|
||||||
import forge.game.zone.ZoneType;
|
import forge.game.zone.ZoneType;
|
||||||
|
import forge.util.Localizer;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@@ -41,7 +42,7 @@ public class RevealHandEffect extends SpellAbilityEffect {
|
|||||||
|
|
||||||
for (final Player p : getTargetPlayers(sa)) {
|
for (final Player p : getTargetPlayers(sa)) {
|
||||||
if ((tgt == null) || p.canBeTargetedBy(sa)) {
|
if ((tgt == null) || p.canBeTargetedBy(sa)) {
|
||||||
if (optional && !p.getController().confirmAction(sa, null, "Do you want to reveal your hand?")) {
|
if (optional && !p.getController().confirmAction(sa, null, Localizer.getInstance().getMessage("lblDoYouWantRevealYourHand"))) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
final CardCollectionView hand = p.getCardsIn(ZoneType.Hand);
|
final CardCollectionView hand = p.getCardsIn(ZoneType.Hand);
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ import forge.game.PlanarDice;
|
|||||||
import forge.game.ability.SpellAbilityEffect;
|
import forge.game.ability.SpellAbilityEffect;
|
||||||
import forge.game.player.Player;
|
import forge.game.player.Player;
|
||||||
import forge.game.spellability.SpellAbility;
|
import forge.game.spellability.SpellAbility;
|
||||||
|
import forge.util.Localizer;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* TODO: Write javadoc for this type.
|
* TODO: Write javadoc for this type.
|
||||||
@@ -25,7 +26,7 @@ public class RollPlanarDiceEffect extends SpellAbilityEffect {
|
|||||||
game.getPhaseHandler().incPlanarDiceRolledthisTurn();
|
game.getPhaseHandler().incPlanarDiceRolledthisTurn();
|
||||||
}
|
}
|
||||||
PlanarDice result = PlanarDice.roll(activator, null);
|
PlanarDice result = PlanarDice.roll(activator, null);
|
||||||
String message = activator.getName() + " rolled " + result.toString();
|
String message = activator.getName() + " " + Localizer.getInstance().getMessage("lblRolled") + " " + result.toString();
|
||||||
game.getAction().nofityOfValue(sa, activator, message, null);
|
game.getAction().nofityOfValue(sa, activator, message, null);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -15,6 +15,7 @@ import forge.game.spellability.SpellAbility;
|
|||||||
import forge.game.trigger.TriggerType;
|
import forge.game.trigger.TriggerType;
|
||||||
import forge.game.zone.ZoneType;
|
import forge.game.zone.ZoneType;
|
||||||
import forge.util.Aggregates;
|
import forge.util.Aggregates;
|
||||||
|
import forge.util.Localizer;
|
||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@@ -30,11 +31,11 @@ public class SacrificeEffect extends SpellAbilityEffect {
|
|||||||
if (sa.hasParam("Echo")) {
|
if (sa.hasParam("Echo")) {
|
||||||
boolean isPaid;
|
boolean isPaid;
|
||||||
if (activator.hasKeyword("You may pay 0 rather than pay the echo cost for permanents you control.")
|
if (activator.hasKeyword("You may pay 0 rather than pay the echo cost for permanents you control.")
|
||||||
&& activator.getController().confirmAction(sa, null, "Do you want to pay Echo {0}?")) {
|
&& activator.getController().confirmAction(sa, null, Localizer.getInstance().getMessage("lblDoYouWantPayEcho") + " {0}?")) {
|
||||||
isPaid = true;
|
isPaid = true;
|
||||||
} else {
|
} else {
|
||||||
isPaid = activator.getController().payManaOptional(card, new Cost(sa.getParam("Echo"), true),
|
isPaid = activator.getController().payManaOptional(card, new Cost(sa.getParam("Echo"), true),
|
||||||
sa, "Pay Echo", ManaPaymentPurpose.Echo);
|
sa, Localizer.getInstance().getMessage("lblPayEcho"), ManaPaymentPurpose.Echo);
|
||||||
}
|
}
|
||||||
final Map<AbilityKey, Object> runParams = AbilityKey.mapFromCard(card);
|
final Map<AbilityKey, Object> runParams = AbilityKey.mapFromCard(card);
|
||||||
runParams.put(AbilityKey.EchoPaid, isPaid);
|
runParams.put(AbilityKey.EchoPaid, isPaid);
|
||||||
@@ -117,7 +118,7 @@ public class SacrificeEffect extends SpellAbilityEffect {
|
|||||||
|
|
||||||
if (sa.hasParam("Random")) {
|
if (sa.hasParam("Random")) {
|
||||||
choosenToSacrifice = Aggregates.random(validTargets, Math.min(amount, validTargets.size()), new CardCollection());
|
choosenToSacrifice = Aggregates.random(validTargets, Math.min(amount, validTargets.size()), new CardCollection());
|
||||||
} else if (sa.hasParam("OptionalSacrifice") && !p.getController().confirmAction(sa, null, "Do you want to sacrifice?")) {
|
} else if (sa.hasParam("OptionalSacrifice") && !p.getController().confirmAction(sa, null, Localizer.getInstance().getMessage("lblDoYouWantSacrifice"))) {
|
||||||
choosenToSacrifice = CardCollection.EMPTY;
|
choosenToSacrifice = CardCollection.EMPTY;
|
||||||
} else {
|
} else {
|
||||||
boolean isOptional = sa.hasParam("Optional");
|
boolean isOptional = sa.hasParam("Optional");
|
||||||
@@ -193,10 +194,10 @@ public class SacrificeEffect extends SpellAbilityEffect {
|
|||||||
final int amount = AbilityUtils.calculateAmount(sa.getHostCard(), num, sa);
|
final int amount = AbilityUtils.calculateAmount(sa.getHostCard(), num, sa);
|
||||||
|
|
||||||
if (valid.equals("Self")) {
|
if (valid.equals("Self")) {
|
||||||
sb.append("Sacrifice ").append(sa.getHostCard().toString());
|
sb.append(Localizer.getInstance().getMessage("lblSacrifice") + " ").append(sa.getHostCard().toString());
|
||||||
} else if (valid.equals("Card.AttachedBy")) {
|
} else if (valid.equals("Card.AttachedBy")) {
|
||||||
final Card toSac = sa.getHostCard().getEnchantingCard();
|
final Card toSac = sa.getHostCard().getEnchantingCard();
|
||||||
sb.append(toSac.getController()).append(" sacrifices ").append(toSac).append(".");
|
sb.append(toSac.getController()).append(" " + Localizer.getInstance().getMessage("lblSacrifice") + " ").append(toSac).append(".");
|
||||||
} else {
|
} else {
|
||||||
for (final Player p : tgts) {
|
for (final Player p : tgts) {
|
||||||
sb.append(p.getName()).append(" ");
|
sb.append(p.getName()).append(" ");
|
||||||
@@ -208,9 +209,9 @@ public class SacrificeEffect extends SpellAbilityEffect {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (sa.hasParam("Destroy")) {
|
if (sa.hasParam("Destroy")) {
|
||||||
sb.append("Destroys ");
|
sb.append(Localizer.getInstance().getMessage("lblDestroys") + " ");
|
||||||
} else {
|
} else {
|
||||||
sb.append("Sacrifices ");
|
sb.append(Localizer.getInstance().getMessage("lblSacrifice") + " ");
|
||||||
}
|
}
|
||||||
sb.append(amount).append(" ").append(msg).append(".");
|
sb.append(amount).append(" ").append(msg).append(".");
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,6 +4,8 @@ import forge.game.ability.AbilityUtils;
|
|||||||
import forge.game.ability.SpellAbilityEffect;
|
import forge.game.ability.SpellAbilityEffect;
|
||||||
import forge.game.player.Player;
|
import forge.game.player.Player;
|
||||||
import forge.game.spellability.SpellAbility;
|
import forge.game.spellability.SpellAbility;
|
||||||
|
import forge.util.Localizer;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import com.google.common.collect.Lists;
|
import com.google.common.collect.Lists;
|
||||||
@@ -41,7 +43,7 @@ public class ScryEffect extends SpellAbilityEffect {
|
|||||||
// Optional here for spells that have optional multi-player scrying
|
// Optional here for spells that have optional multi-player scrying
|
||||||
for (final Player p : getTargetPlayers(sa)) {
|
for (final Player p : getTargetPlayers(sa)) {
|
||||||
if ( (!sa.usesTargeting() || p.canBeTargetedBy(sa)) &&
|
if ( (!sa.usesTargeting() || p.canBeTargetedBy(sa)) &&
|
||||||
(!isOptional || p.getController().confirmAction(sa, null, "Do you want to scry?")) ) {
|
(!isOptional || p.getController().confirmAction(sa, null, Localizer.getInstance().getMessage("lblDoYouWanttoScry"))) ) {
|
||||||
players.add(p);
|
players.add(p);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -15,6 +15,7 @@ import forge.game.player.PlayerActionConfirmMode;
|
|||||||
import forge.game.spellability.SpellAbility;
|
import forge.game.spellability.SpellAbility;
|
||||||
import forge.game.zone.ZoneType;
|
import forge.game.zone.ZoneType;
|
||||||
import forge.util.TextUtil;
|
import forge.util.TextUtil;
|
||||||
|
import forge.util.Localizer;
|
||||||
|
|
||||||
import java.util.Iterator;
|
import java.util.Iterator;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@@ -76,7 +77,7 @@ public class SetStateEffect extends SpellAbilityEffect {
|
|||||||
&& !tgt.getState(CardStateName.Original).getType().isPermanent()) {
|
&& !tgt.getState(CardStateName.Original).getType().isPermanent()) {
|
||||||
Card lki = CardUtil.getLKICopy(tgt);
|
Card lki = CardUtil.getLKICopy(tgt);
|
||||||
lki.turnFaceUp(true, false);
|
lki.turnFaceUp(true, false);
|
||||||
game.getAction().reveal(new CardCollection(lki), lki.getOwner(), true, "Face-down card can't turn face up");
|
game.getAction().reveal(new CardCollection(lki), lki.getOwner(), true, Localizer.getInstance().getMessage("lblFaceDownCardCantTurnFaceUp"));
|
||||||
|
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ import forge.game.ability.SpellAbilityEffect;
|
|||||||
import forge.game.player.Player;
|
import forge.game.player.Player;
|
||||||
import forge.game.spellability.SpellAbility;
|
import forge.game.spellability.SpellAbility;
|
||||||
import forge.game.spellability.TargetRestrictions;
|
import forge.game.spellability.TargetRestrictions;
|
||||||
|
import forge.util.Localizer;
|
||||||
|
|
||||||
import java.util.Iterator;
|
import java.util.Iterator;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@@ -20,7 +21,7 @@ public class ShuffleEffect extends SpellAbilityEffect {
|
|||||||
|
|
||||||
for (final Player p : tgtPlayers) {
|
for (final Player p : tgtPlayers) {
|
||||||
if ((tgt == null) || p.canBeTargetedBy(sa)) {
|
if ((tgt == null) || p.canBeTargetedBy(sa)) {
|
||||||
boolean mustShuffle = !optional || sa.getActivatingPlayer().getController().confirmAction(sa, null, "Have " + p + " shuffle?");
|
boolean mustShuffle = !optional || sa.getActivatingPlayer().getController().confirmAction(sa, null, Localizer.getInstance().getMessage("lblHaveTargetShuffle").replace("%s", p + ""));
|
||||||
if (mustShuffle)
|
if (mustShuffle)
|
||||||
p.shuffle(sa);
|
p.shuffle(sa);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ import forge.game.ability.SpellAbilityEffect;
|
|||||||
import forge.game.player.Player;
|
import forge.game.player.Player;
|
||||||
import forge.game.spellability.SpellAbility;
|
import forge.game.spellability.SpellAbility;
|
||||||
import forge.util.Lang;
|
import forge.util.Lang;
|
||||||
|
import forge.util.Localizer;
|
||||||
|
|
||||||
public class SurveilEffect extends SpellAbilityEffect {
|
public class SurveilEffect extends SpellAbilityEffect {
|
||||||
@Override
|
@Override
|
||||||
@@ -33,7 +34,7 @@ public class SurveilEffect extends SpellAbilityEffect {
|
|||||||
|
|
||||||
for (final Player p : getTargetPlayers(sa)) {
|
for (final Player p : getTargetPlayers(sa)) {
|
||||||
if (!sa.usesTargeting() || p.canBeTargetedBy(sa)) {
|
if (!sa.usesTargeting() || p.canBeTargetedBy(sa)) {
|
||||||
if (isOptional && !p.getController().confirmAction(sa, null, "Do you want to surveil?")) {
|
if (isOptional && !p.getController().confirmAction(sa, null, Localizer.getInstance().getMessage("lblDoYouWantSurveil"))) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -11,6 +11,7 @@ import forge.game.player.PlayerController;
|
|||||||
import forge.game.spellability.SpellAbility;
|
import forge.game.spellability.SpellAbility;
|
||||||
import forge.game.zone.ZoneType;
|
import forge.game.zone.ZoneType;
|
||||||
import forge.util.collect.FCollection;
|
import forge.util.collect.FCollection;
|
||||||
|
import forge.util.Localizer;
|
||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@@ -55,11 +56,11 @@ public class TapOrUntapAllEffect extends SpellAbilityEffect {
|
|||||||
// Default to tapping for AI
|
// Default to tapping for AI
|
||||||
boolean toTap = true;
|
boolean toTap = true;
|
||||||
|
|
||||||
StringBuilder sb = new StringBuilder("Tap or Untap ");
|
StringBuilder sb = new StringBuilder(Localizer.getInstance().getMessage("lblTapOrUntap") + " ");
|
||||||
if (sa.hasParam("ValidMessage")) {
|
if (sa.hasParam("ValidMessage")) {
|
||||||
sb.append(sa.getParam("ValidMessage"));
|
sb.append(sa.getParam("ValidMessage"));
|
||||||
} else {
|
} else {
|
||||||
sb.append("Permanents");
|
sb.append(Localizer.getInstance().getMessage("lblPermanents"));
|
||||||
}
|
}
|
||||||
sb.append("?");
|
sb.append("?");
|
||||||
|
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ import forge.game.card.Card;
|
|||||||
import forge.game.player.PlayerController;
|
import forge.game.player.PlayerController;
|
||||||
import forge.game.spellability.SpellAbility;
|
import forge.game.spellability.SpellAbility;
|
||||||
import forge.game.spellability.TargetRestrictions;
|
import forge.game.spellability.TargetRestrictions;
|
||||||
|
import forge.util.Localizer;
|
||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@@ -38,7 +39,7 @@ public class TapOrUntapEffect extends SpellAbilityEffect {
|
|||||||
for (final Card tgtC : tgtCards) {
|
for (final Card tgtC : tgtCards) {
|
||||||
if (tgtC.isInPlay() && ((tgt == null) || tgtC.canBeTargetedBy(sa))) {
|
if (tgtC.isInPlay() && ((tgt == null) || tgtC.canBeTargetedBy(sa))) {
|
||||||
// If the effected card is controlled by the same controller of the SA, default to untap.
|
// If the effected card is controlled by the same controller of the SA, default to untap.
|
||||||
boolean tap = pc.chooseBinary(sa, "Tap or Untap " + tgtC + "?", PlayerController.BinaryChoiceType.TapOrUntap,
|
boolean tap = pc.chooseBinary(sa, Localizer.getInstance().getMessage("lblTapOrUntap") + " " + tgtC + "?", PlayerController.BinaryChoiceType.TapOrUntap,
|
||||||
!tgtC.getController().equals(sa.getActivatingPlayer()) );
|
!tgtC.getController().equals(sa.getActivatingPlayer()) );
|
||||||
|
|
||||||
if (tap) {
|
if (tap) {
|
||||||
|
|||||||
@@ -48,6 +48,7 @@ import forge.game.spellability.SpellAbility;
|
|||||||
import forge.game.trigger.Trigger;
|
import forge.game.trigger.Trigger;
|
||||||
import forge.game.trigger.TriggerHandler;
|
import forge.game.trigger.TriggerHandler;
|
||||||
import forge.game.zone.ZoneType;
|
import forge.game.zone.ZoneType;
|
||||||
|
import forge.util.Localizer;
|
||||||
import forge.item.PaperToken;
|
import forge.item.PaperToken;
|
||||||
import forge.util.collect.FCollectionView;
|
import forge.util.collect.FCollectionView;
|
||||||
import forge.util.MyRandom;
|
import forge.util.MyRandom;
|
||||||
@@ -116,7 +117,7 @@ public class TokenEffect extends SpellAbilityEffect {
|
|||||||
if (mapParams.hasParam("TokenAltImages")) {
|
if (mapParams.hasParam("TokenAltImages")) {
|
||||||
this.tokenAltImages = mapParams.getParam("TokenAltImages").split(",");
|
this.tokenAltImages = mapParams.getParam("TokenAltImages").split(",");
|
||||||
for (int i = 0; i < tokenAltImages.length; i++) {
|
for (int i = 0; i < tokenAltImages.length; i++) {
|
||||||
this.tokenAltImages[i] = PaperToken.makeTokenFileName(this.tokenAltImages[i].trim());
|
this.tokenAltImages[i] = PaperToken.makeTokenFileName(this.tokenAltImages[i].trim());
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
this.tokenAltImages = null;
|
this.tokenAltImages = null;
|
||||||
@@ -479,7 +480,7 @@ public class TokenEffect extends SpellAbilityEffect {
|
|||||||
// into battlefield attacking only should work if you are the attacking player
|
// into battlefield attacking only should work if you are the attacking player
|
||||||
if (combat.getAttackingPlayer().equals(controller)) {
|
if (combat.getAttackingPlayer().equals(controller)) {
|
||||||
final FCollectionView<GameEntity> defs = combat.getDefenders();
|
final FCollectionView<GameEntity> defs = combat.getDefenders();
|
||||||
final GameEntity defender = controller.getController().chooseSingleEntityForEffect(defs, sa, "Choose which defender to attack with " + c, false);
|
final GameEntity defender = controller.getController().chooseSingleEntityForEffect(defs, sa, Localizer.getInstance().getMessage("lblChooseDefenderToAttackWith") + " " + c, false);
|
||||||
combat.addAttacker(c, defender);
|
combat.addAttacker(c, defender);
|
||||||
combatChanged = true;
|
combatChanged = true;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -11,6 +11,7 @@ import forge.game.spellability.AbilitySub;
|
|||||||
import forge.game.spellability.SpellAbility;
|
import forge.game.spellability.SpellAbility;
|
||||||
import forge.game.spellability.TargetRestrictions;
|
import forge.game.spellability.TargetRestrictions;
|
||||||
import forge.game.zone.ZoneType;
|
import forge.game.zone.ZoneType;
|
||||||
|
import forge.util.Localizer;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@@ -88,8 +89,8 @@ public class TwoPilesEffect extends SpellAbilityEffect {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
String title = "One".equals(sa.getParamOrDefault("FaceDown", "False")) ? "Select cards for a face down pile" :
|
String title = "One".equals(sa.getParamOrDefault("FaceDown", "False")) ? Localizer.getInstance().getMessage("lblSelectCardForFaceDownPile") :
|
||||||
"Divide cards into two piles";
|
Localizer.getInstance().getMessage("lblDivideCardIntoTwoPiles");
|
||||||
|
|
||||||
card.clearRemembered();
|
card.clearRemembered();
|
||||||
|
|
||||||
@@ -106,13 +107,13 @@ public class TwoPilesEffect extends SpellAbilityEffect {
|
|||||||
CardCollectionView chosenPile = pile1WasChosen ? pile1 : pile2;
|
CardCollectionView chosenPile = pile1WasChosen ? pile1 : pile2;
|
||||||
CardCollectionView unchosenPile = !pile1WasChosen ? pile1 : pile2;
|
CardCollectionView unchosenPile = !pile1WasChosen ? pile1 : pile2;
|
||||||
|
|
||||||
StringBuilder notification = new StringBuilder(chooser + " chooses Pile " + (pile1WasChosen ? "1" : "2") + ":\n");
|
StringBuilder notification = new StringBuilder(chooser + " " + Localizer.getInstance().getMessage("lblChoosesPile") + " " + (pile1WasChosen ? "1" : "2") + ":\n");
|
||||||
if (!chosenPile.isEmpty()) {
|
if (!chosenPile.isEmpty()) {
|
||||||
for (Card c : chosenPile) {
|
for (Card c : chosenPile) {
|
||||||
notification.append(c.getName()).append("\n");
|
notification.append(c.getName()).append("\n");
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
notification.append("(Empty pile)");
|
notification.append("(" + Localizer.getInstance().getMessage("lblEmptyPile") + ")");
|
||||||
}
|
}
|
||||||
|
|
||||||
p.getGame().getAction().nofityOfValue(sa, chooser, notification.toString(), chooser);
|
p.getGame().getAction().nofityOfValue(sa, chooser, notification.toString(), chooser);
|
||||||
|
|||||||
@@ -10,6 +10,7 @@ import forge.game.player.Player;
|
|||||||
import forge.game.spellability.SpellAbility;
|
import forge.game.spellability.SpellAbility;
|
||||||
import forge.game.spellability.TargetRestrictions;
|
import forge.game.spellability.TargetRestrictions;
|
||||||
import forge.game.zone.ZoneType;
|
import forge.game.zone.ZoneType;
|
||||||
|
import forge.util.Localizer;
|
||||||
|
|
||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
|
|
||||||
@@ -80,7 +81,7 @@ public class UntapEffect extends SpellAbilityEffect {
|
|||||||
valid, sa.getActivatingPlayer(), sa.getHostCard());
|
valid, sa.getActivatingPlayer(), sa.getHostCard());
|
||||||
list = CardLists.filter(list, Presets.TAPPED);
|
list = CardLists.filter(list, Presets.TAPPED);
|
||||||
|
|
||||||
final CardCollectionView selected = p.getController().chooseCardsForEffect(list, sa, "Select cards to untap", mandatory ? num : 0, num, !mandatory);
|
final CardCollectionView selected = p.getController().chooseCardsForEffect(list, sa, Localizer.getInstance().getMessage("lblSelectCardToUntap"), mandatory ? num : 0, num, !mandatory);
|
||||||
if (selected != null) {
|
if (selected != null) {
|
||||||
for (final Card c : selected) {
|
for (final Card c : selected) {
|
||||||
c.untap();
|
c.untap();
|
||||||
|
|||||||
@@ -27,6 +27,7 @@ import forge.game.spellability.AbilitySub;
|
|||||||
import forge.game.spellability.SpellAbility;
|
import forge.game.spellability.SpellAbility;
|
||||||
import forge.game.trigger.TriggerType;
|
import forge.game.trigger.TriggerType;
|
||||||
import forge.game.zone.ZoneType;
|
import forge.game.zone.ZoneType;
|
||||||
|
import forge.util.Localizer;
|
||||||
|
|
||||||
public class VoteEffect extends SpellAbilityEffect {
|
public class VoteEffect extends SpellAbilityEffect {
|
||||||
|
|
||||||
@@ -88,14 +89,14 @@ public class VoteEffect extends SpellAbilityEffect {
|
|||||||
for (final Player p : tgtPlayers) {
|
for (final Player p : tgtPlayers) {
|
||||||
int voteAmount = p.getKeywords().getAmount("You get an additional vote.") + 1;
|
int voteAmount = p.getKeywords().getAmount("You get an additional vote.") + 1;
|
||||||
int optionalVotes = p.getKeywords().getAmount("You may vote an additional time.");
|
int optionalVotes = p.getKeywords().getAmount("You may vote an additional time.");
|
||||||
voteAmount += p.getController().chooseNumber(sa, "How many additional votes do you want?", 0, optionalVotes);
|
voteAmount += p.getController().chooseNumber(sa, Localizer.getInstance().getMessage("lblHowManyAdditionalVotesDoYouWant"), 0, optionalVotes);
|
||||||
Player realVoter = voter == null ? p : voter;
|
Player realVoter = voter == null ? p : voter;
|
||||||
|
|
||||||
for (int i = 0; i < voteAmount; i++) {
|
for (int i = 0; i < voteAmount; i++) {
|
||||||
Object result = realVoter.getController().vote(sa, host + "Vote:", voteType, votes);
|
Object result = realVoter.getController().vote(sa, host + Localizer.getInstance().getMessage("lblVote") + ":", voteType, votes);
|
||||||
|
|
||||||
votes.put(result, p);
|
votes.put(result, p);
|
||||||
host.getGame().getAction().nofityOfValue(sa, p, result + "\r\nCurrent Votes:" + votes, p);
|
host.getGame().getAction().nofityOfValue(sa, p, result + "\r\n" + Localizer.getInstance().getMessage("lblCurrentVote") + ":" + votes, p);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -9,6 +9,7 @@ import forge.game.card.CardLists;
|
|||||||
import forge.game.player.Player;
|
import forge.game.player.Player;
|
||||||
import forge.game.spellability.SpellAbility;
|
import forge.game.spellability.SpellAbility;
|
||||||
import forge.game.zone.ZoneType;
|
import forge.game.zone.ZoneType;
|
||||||
|
import forge.util.Localizer;
|
||||||
|
|
||||||
|
|
||||||
public class ZoneExchangeEffect extends SpellAbilityEffect {
|
public class ZoneExchangeEffect extends SpellAbilityEffect {
|
||||||
@@ -69,7 +70,7 @@ public class ZoneExchangeEffect extends SpellAbilityEffect {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
Card object2 = p.getController().chooseSingleEntityForEffect(list, sa, "Choose a card", !sa.hasParam("Mandatory"));
|
Card object2 = p.getController().chooseSingleEntityForEffect(list, sa, Localizer.getInstance().getMessage("lblChooseaCard"), !sa.hasParam("Mandatory"));
|
||||||
if (object2 == null || !object2.isInZone(zone2) || (type != null && !object2.getType().hasStringType(type))) {
|
if (object2 == null || !object2.isInZone(zone2) || (type != null && !object2.getType().hasStringType(type))) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1556,8 +1556,210 @@ lblPutIntoLibrary=put into library.
|
|||||||
lblGainControl=gain control.
|
lblGainControl=gain control.
|
||||||
lblReturnToHand=return to hand.
|
lblReturnToHand=return to hand.
|
||||||
lbldiscard=discard.
|
lbldiscard=discard.
|
||||||
lblReveal=reveal.
|
lblReveal=reveal
|
||||||
lblTap=tap.
|
lblTap=tap.
|
||||||
lblCurrentCard=Current Card
|
lblCurrentCard=Current Card
|
||||||
lblSelectOfCardsTo=Select
|
lblSelectOfCardsTo=Select
|
||||||
lblCardsTo=card(s) to
|
lblCardsTo=card(s) to
|
||||||
|
#AbandonEffect.java
|
||||||
|
lblWouldYoulikeAbandon=Would you like to abandon the scheme
|
||||||
|
#ActivateAbilityEffect.java
|
||||||
|
lblChooseManaAbility=Choose a mana ability:
|
||||||
|
#AddTurnEffect.java
|
||||||
|
lblTakesExtraTurn=takes an extra turn.
|
||||||
|
#AmassEffect.java.
|
||||||
|
lblChooseAnArmy=Choose an army to put counters on
|
||||||
|
#AssignGroupEffect.java
|
||||||
|
lblChooseAbilityFor=Choose ability for
|
||||||
|
#AttachEffect.java
|
||||||
|
lblDoYouWantAttach=Do you want to attach
|
||||||
|
lblSelectAPlayerAttachTo=Select a player to attach to.
|
||||||
|
lblSelectACardAttachTo=Select a card to attach to.
|
||||||
|
#BidLifeEffect.java
|
||||||
|
lblChooseStartingBid=Choose a starting bid
|
||||||
|
lblDoYouWantTopBid=Do you want to top bid? Current Bid \=
|
||||||
|
lblTopBidWith=topped bid with
|
||||||
|
#BondEffect.java
|
||||||
|
lblSelectACardPair=Select a card to pair with
|
||||||
|
#ChangeCombatantsEffect.java
|
||||||
|
lblChooseDefenderToAttackWith=Choose which defender to attack with
|
||||||
|
#ChangeTargetsEffect.java
|
||||||
|
lblDoYouWantChangeTargets=Do you want to change targets of
|
||||||
|
#ChangeTextEffect.java
|
||||||
|
lblChooseColorReplace=Choose a color word to replace
|
||||||
|
lblChooseNewColor=Choose a new color word
|
||||||
|
#ChangeZoneEffect.java
|
||||||
|
lblDoYouWantMove=Do you want to move
|
||||||
|
lblDeclareDefenderFor=Declare a defender for
|
||||||
|
lblCardMatchSearchingTypeInAlternateZones=cards match your searching type in Alternate Zones.
|
||||||
|
lblPutThatCardFrom=Put that card from
|
||||||
|
lblLookingCardIn=Looking at cards in
|
||||||
|
lblDoYouWantPlay=Do you want to play
|
||||||
|
lblSelectCardFrom=Select a card from
|
||||||
|
lblSelectUpTo=Select up to
|
||||||
|
lblCardsFrom=cards from
|
||||||
|
lblSelectCardsFrom=Select cards from
|
||||||
|
lblCancelSearchUpTo=Cancel Search? Up to
|
||||||
|
lblMoreCard=more card
|
||||||
|
lblCanBeSelected=can be selected.
|
||||||
|
#ChooseCardEffect.java
|
||||||
|
lblSelectCreatureWithTotalPowerLessOrEqualTo=Select creature(s) with total power less than or equal to
|
||||||
|
lblTotalPower=Total Power
|
||||||
|
lblCancelChooseConfirm=Cancel Choose?
|
||||||
|
#ChooseCardNameEffect.java
|
||||||
|
lblChooseACardName=Choose a card name
|
||||||
|
lblChooseA=Choose a
|
||||||
|
lblCardName=card name
|
||||||
|
lblPicked=picked
|
||||||
|
#ChooseColorEffect.java
|
||||||
|
lblChooseAColor=Choose a color
|
||||||
|
lblChoose=Choose
|
||||||
|
lblOrMore=or more
|
||||||
|
#ChooseDirectionEffect.java
|
||||||
|
lblLeftClockwise=Left (clockwise)
|
||||||
|
lblRightAntiClockwise=Right (anticlockwise)
|
||||||
|
lblChooseDirection=Choose a direction
|
||||||
|
#ChooseGenericEffect.java
|
||||||
|
lblChooseOne=Choose one
|
||||||
|
#ChooseNumberEffect.java
|
||||||
|
lblChooseNumber=Choose a number
|
||||||
|
lblChose=chose
|
||||||
|
#ChoosePlayerEffect.java
|
||||||
|
lblChoosePlayer=Choose a player
|
||||||
|
#ChooseSourceEffect.java
|
||||||
|
lblChooseSource=Choose a source
|
||||||
|
#ClashEffect.java
|
||||||
|
lblChooseOpponent=Choose a opponent
|
||||||
|
lblReveals=reveals
|
||||||
|
lblWinsClash=wins clash
|
||||||
|
lblLosesClash=loses clash
|
||||||
|
#CloneEffect.java
|
||||||
|
lblDoYouWantCopy=Do you want to copy
|
||||||
|
#ControlExchangeVariantEffect.java
|
||||||
|
lblChooseCards=Choose cards
|
||||||
|
#CopyPermanentEffect.java
|
||||||
|
lblCopyPermanentConfirm=Copy this permanent?
|
||||||
|
lblDefender=defender
|
||||||
|
#CopySpellAbilityEffect.java
|
||||||
|
lblDoyouWantCopyTheSpell=Do you want to copy the spell
|
||||||
|
lblSelectMultiSpellCopyToStack=Select %d spell to copy to stack
|
||||||
|
lblSelectASpellCopy=Select a spell to copy
|
||||||
|
#CounterEffect.java
|
||||||
|
lblRemoveDestination=a destination to remove
|
||||||
|
#CountersMoveEffect.java
|
||||||
|
lblChooseTakeCountersCard=Choose card to take %s counters from
|
||||||
|
lblTakeHowMany=Take how many
|
||||||
|
lblCountersFrom=counters from
|
||||||
|
lblChooseCardToGet=Choose cards to get
|
||||||
|
lblPutHowMany=Put how many
|
||||||
|
lblCountersOn=counters on
|
||||||
|
lblCounters=counters
|
||||||
|
#CountersProliferateEffect.java
|
||||||
|
lblChooseProliferateTarget=Choose any number of permanents and/or players for proliferate
|
||||||
|
#CountersPutEffect.java
|
||||||
|
lblChooseACreatureWithLeastToughness=Choose a creature with the least toughness
|
||||||
|
lblSelectCounterTypeAddTo=Select counter type to add to
|
||||||
|
lblHowManyCounters=How many counters?
|
||||||
|
lblChooseAnOpponent=Choose an opponent
|
||||||
|
lblDoYouWantPutTargetP1P1CountersOn=Do you want to put %d +1/+1 counters on
|
||||||
|
#CountersPutOrRemoveEffect.java
|
||||||
|
lblSelectCounterTypeToAddOrRemove=Select type of counters to add or remove
|
||||||
|
lblWhatToDoWithTargetCounter=What to do with that '%s' counter
|
||||||
|
#CountersRemoveEffect.java
|
||||||
|
lblAllCounters=all counters
|
||||||
|
lblACounters=a counter
|
||||||
|
lblChooseCardtoTakeTargetCounters=Choose cards to take %s counters from
|
||||||
|
lblSelectRemoveCountersNumberOfTarget=Select the number of %s counters to remove
|
||||||
|
lblSelectCountersTypeToRemove=Select type of counters to remove
|
||||||
|
#DamageDealEffect.java
|
||||||
|
lblDoyouWantDealTargetDamageTo=Do you want to deal %d damage to
|
||||||
|
#DigEffect.java
|
||||||
|
lblWouldYouLikeProceedWithOptionalAbility=Would you like to proceed with the optional ability for
|
||||||
|
lblChooseACardToLeaveTargetLibraryTop=Choose a card to leave on top of %s library
|
||||||
|
lblChooseACardLeaveTarget=Choose a card to leave in %s
|
||||||
|
lblChooseCardsPutInto=Choose card(s) to put into
|
||||||
|
lblChooseCardPutOnTargetLibarayBottom=Choose card(s) to put on the bottom of %s library
|
||||||
|
lblChooseCardPutOnTargetLibarayTop=Choose card(s) to put on top of %s library
|
||||||
|
lblNoValidCards=No valid cards
|
||||||
|
lblThisCard=this card
|
||||||
|
lblTheseCards=these cards
|
||||||
|
#DigUntilEffect.java
|
||||||
|
lblDoYouWantDigYourLibrary=Do you want to dig your library?
|
||||||
|
lblDoYouWantPutCardTo=Do you want to put that card to
|
||||||
|
#DiscardEffect.java
|
||||||
|
lblWouldYouLikeRandomDiscardTargetCard=Would you like to discard %d random card(s)?
|
||||||
|
lblHasChosen=has chosen
|
||||||
|
#DrawEffect.java
|
||||||
|
lblDoYouWantDraw=Do you want to draw
|
||||||
|
lblHowMayCardDoYouWantDraw=How may cards do you want to draw?
|
||||||
|
#EncodeEffect.java
|
||||||
|
lblAndEncodeOntoAYouControlCreature=and encode it onto a creature you control?
|
||||||
|
lblChooseACreatureYouControlToEncode=Choose a creature you control to encode
|
||||||
|
lblEncoding=Encoding
|
||||||
|
#ExploreEffect.java
|
||||||
|
lblRevealedForExplore=Revealed for Explore
|
||||||
|
lblPutThisCardToYourGraveyard=Put this card in your graveyard?
|
||||||
|
#FlipCoinEffect.java
|
||||||
|
lblHeads=heads
|
||||||
|
lblTails=tails
|
||||||
|
lblCallCoinFlip=Call coin flip
|
||||||
|
lblWin=win
|
||||||
|
lblLose=lose
|
||||||
|
#LifeSetEffect.java
|
||||||
|
lblLifeTotal=Life Total
|
||||||
|
#ManaEffect.java
|
||||||
|
lblDoYouWantAddMana=Do you want to add mana?
|
||||||
|
lblSelectManaProduce=Select Mana to Produce
|
||||||
|
lblChooseSingleColorFrom=Choose a single color from
|
||||||
|
#ManifestEffect.java
|
||||||
|
lblChooseCardToManifest=Choose cards to manifest
|
||||||
|
#MeldEffect.java
|
||||||
|
lblChooseCardToMeld=Choose card to meld with
|
||||||
|
#MillEffect.java
|
||||||
|
lblDoYouWantPutLibraryCardsTo=Do you want to put card(s) from library to
|
||||||
|
#MultiplePilesEffect.java
|
||||||
|
lblChooseCardsInPile=Choose cards in Pile
|
||||||
|
#PeekAndRevealEffect.java
|
||||||
|
lblRevealingCardFrom=Revealing cards from
|
||||||
|
lblRevealCardToOtherPlayers=Reveal cards to other players?
|
||||||
|
#PlayEffect.java
|
||||||
|
lblChooseUpTo=Choose up to
|
||||||
|
lblSelectCardToPlay=Select a card to play
|
||||||
|
#ProtectAllEffect.java
|
||||||
|
lblChooseAProtection=Choose a protection
|
||||||
|
#PumpEffect.java
|
||||||
|
lblApplyPumpTo=Apply pump to
|
||||||
|
#RearrangeTopOfLibraryEffect.java
|
||||||
|
lblDoyouWantShuffleTheLibrary=Do you want to shuffle the library?
|
||||||
|
#RepeatEffect.java
|
||||||
|
lblDoYouWantRepeatProcessAgain=Do you want to repeat this process again?
|
||||||
|
#RevealHandEffect.java
|
||||||
|
lblDoYouWantRevealYourHand=Do you want to reveal your hand?
|
||||||
|
#RollPlanarDiceEffect.java
|
||||||
|
lblRolled=rolled
|
||||||
|
#SacrificeEffect.java
|
||||||
|
lblDoYouWantPayEcho=Do you want to pay Echo
|
||||||
|
lblPayEcho=Pay Echo
|
||||||
|
lblDoYouWantSacrifice=Do you want to sacrifice?
|
||||||
|
lblSacrifice=Sacrifice
|
||||||
|
lblDestroys=Destroys
|
||||||
|
#SetStateEffect.java
|
||||||
|
lblFaceDownCardCantTurnFaceUp=Face-down card can't turn face up
|
||||||
|
#ShuffleEffect.java
|
||||||
|
lblHaveTargetShuffle=Have %s shuffle?
|
||||||
|
#SurveilEffect.java
|
||||||
|
lblDoYouWantSurveil=Do you want to surveil?
|
||||||
|
#TapOrUntapAllEffect.java
|
||||||
|
lblPermanents=Permanents
|
||||||
|
lblTapOrUntap=Tap or Untap
|
||||||
|
#TwoPilesEffect.java
|
||||||
|
lblSelectCardForFaceDownPile=Select cards for a face down pile
|
||||||
|
lblDivideCardIntoTwoPiles=Divide cards into two piles
|
||||||
|
lblChoosesPile=chooses Pile
|
||||||
|
lblEmptyPile=Empty pile
|
||||||
|
#UntapEffect.java
|
||||||
|
lblSelectCardToUntap=Select cards to untap
|
||||||
|
#VoteEffect.java
|
||||||
|
lblVote=Vote
|
||||||
|
lblCurrentVote=Current Votes
|
||||||
|
lblHowManyAdditionalVotesDoYouWant=How many additional votes do you want?
|
||||||
@@ -1556,8 +1556,210 @@ lblPutIntoLibrary=put into library.
|
|||||||
lblGainControl=gain control.
|
lblGainControl=gain control.
|
||||||
lblReturnToHand=return to hand.
|
lblReturnToHand=return to hand.
|
||||||
lbldiscard=discard.
|
lbldiscard=discard.
|
||||||
lblReveal=reveal.
|
lblReveal=reveal
|
||||||
lblTap=tap.
|
lblTap=tap.
|
||||||
lblCurrentCard=Current Card
|
lblCurrentCard=Current Card
|
||||||
lblSelectOfCardsTo=Select
|
lblSelectOfCardsTo=Select
|
||||||
lblCardsTo=card(s) to
|
lblCardsTo=card(s) to
|
||||||
|
#AbandonEffect.java
|
||||||
|
lblWouldYoulikeAbandon=Would you like to abandon the scheme
|
||||||
|
#ActivateAbilityEffect.java
|
||||||
|
lblChooseManaAbility=Choose a mana ability:
|
||||||
|
#AddTurnEffect.java
|
||||||
|
lblTakesExtraTurn=takes an extra turn.
|
||||||
|
#AmassEffect.java.
|
||||||
|
lblChooseAnArmy=Choose an army to put counters on
|
||||||
|
#AssignGroupEffect.java
|
||||||
|
lblChooseAbilityFor=Choose ability for
|
||||||
|
#AttachEffect.java
|
||||||
|
lblDoYouWantAttach=Do you want to attach
|
||||||
|
lblSelectAPlayerAttachTo=Select a player to attach to.
|
||||||
|
lblSelectACardAttachTo=Select a card to attach to.
|
||||||
|
#BidLifeEffect.java
|
||||||
|
lblChooseStartingBid=Choose a starting bid
|
||||||
|
lblDoYouWantTopBid=Do you want to top bid? Current Bid \=
|
||||||
|
lblTopBidWith=topped bid with
|
||||||
|
#BondEffect.java
|
||||||
|
lblSelectACardPair=Select a card to pair with
|
||||||
|
#ChangeCombatantsEffect.java
|
||||||
|
lblChooseDefenderToAttackWith=Choose which defender to attack with
|
||||||
|
#ChangeTargetsEffect.java
|
||||||
|
lblDoYouWantChangeTargets=Do you want to change targets of
|
||||||
|
#ChangeTextEffect.java
|
||||||
|
lblChooseColorReplace=Choose a color word to replace
|
||||||
|
lblChooseNewColor=Choose a new color word
|
||||||
|
#ChangeZoneEffect.java
|
||||||
|
lblDoYouWantMove=Do you want to move
|
||||||
|
lblDeclareDefenderFor=Declare a defender for
|
||||||
|
lblCardMatchSearchingTypeInAlternateZones=cards match your searching type in Alternate Zones.
|
||||||
|
lblPutThatCardFrom=Put that card from
|
||||||
|
lblLookingCardIn=Looking at cards in
|
||||||
|
lblDoYouWantPlay=Do you want to play
|
||||||
|
lblSelectCardFrom=Select a card from
|
||||||
|
lblSelectUpTo=Select up to
|
||||||
|
lblCardsFrom=cards from
|
||||||
|
lblSelectCardsFrom=Select cards from
|
||||||
|
lblCancelSearchUpTo=Cancel Search? Up to
|
||||||
|
lblMoreCard=more card
|
||||||
|
lblCanBeSelected=can be selected.
|
||||||
|
#ChooseCardEffect.java
|
||||||
|
lblSelectCreatureWithTotalPowerLessOrEqualTo=Select creature(s) with total power less than or equal to
|
||||||
|
lblTotalPower=Total Power
|
||||||
|
lblCancelChooseConfirm=Cancel Choose?
|
||||||
|
#ChooseCardNameEffect.java
|
||||||
|
lblChooseACardName=Choose a card name
|
||||||
|
lblChooseA=Choose a
|
||||||
|
lblCardName=card name
|
||||||
|
lblPicked=picked
|
||||||
|
#ChooseColorEffect.java
|
||||||
|
lblChooseAColor=Choose a color
|
||||||
|
lblChoose=Choose
|
||||||
|
lblOrMore=or more
|
||||||
|
#ChooseDirectionEffect.java
|
||||||
|
lblLeftClockwise=Left (clockwise)
|
||||||
|
lblRightAntiClockwise=Right (anticlockwise)
|
||||||
|
lblChooseDirection=Choose a direction
|
||||||
|
#ChooseGenericEffect.java
|
||||||
|
lblChooseOne=Choose one
|
||||||
|
#ChooseNumberEffect.java
|
||||||
|
lblChooseNumber=Choose a number
|
||||||
|
lblChose=chose
|
||||||
|
#ChoosePlayerEffect.java
|
||||||
|
lblChoosePlayer=Choose a player
|
||||||
|
#ChooseSourceEffect.java
|
||||||
|
lblChooseSource=Choose a source
|
||||||
|
#ClashEffect.java
|
||||||
|
lblChooseOpponent=Choose a opponent
|
||||||
|
lblReveals=reveals
|
||||||
|
lblWinsClash=wins clash
|
||||||
|
lblLosesClash=loses clash
|
||||||
|
#CloneEffect.java
|
||||||
|
lblDoYouWantCopy=Do you want to copy
|
||||||
|
#ControlExchangeVariantEffect.java
|
||||||
|
lblChooseCards=Choose cards
|
||||||
|
#CopyPermanentEffect.java
|
||||||
|
lblCopyPermanentConfirm=Copy this permanent?
|
||||||
|
lblDefender=defender
|
||||||
|
#CopySpellAbilityEffect.java
|
||||||
|
lblDoyouWantCopyTheSpell=Do you want to copy the spell
|
||||||
|
lblSelectMultiSpellCopyToStack=Select %d spell to copy to stack
|
||||||
|
lblSelectASpellCopy=Select a spell to copy
|
||||||
|
#CounterEffect.java
|
||||||
|
lblRemoveDestination=a destination to remove
|
||||||
|
#CountersMoveEffect.java
|
||||||
|
lblChooseTakeCountersCard=Choose card to take %s counters from
|
||||||
|
lblTakeHowMany=Take how many
|
||||||
|
lblCountersFrom=counters from
|
||||||
|
lblChooseCardToGet=Choose cards to get
|
||||||
|
lblPutHowMany=Put how many
|
||||||
|
lblCountersOn=counters on
|
||||||
|
lblCounters=counters
|
||||||
|
#CountersProliferateEffect.java
|
||||||
|
lblChooseProliferateTarget=Choose any number of permanents and/or players for proliferate
|
||||||
|
#CountersPutEffect.java
|
||||||
|
lblChooseACreatureWithLeastToughness=Choose a creature with the least toughness
|
||||||
|
lblSelectCounterTypeAddTo=Select counter type to add to
|
||||||
|
lblHowManyCounters=How many counters?
|
||||||
|
lblChooseAnOpponent=Choose an opponent
|
||||||
|
lblDoYouWantPutTargetP1P1CountersOn=Do you want to put %d +1/+1 counters on
|
||||||
|
#CountersPutOrRemoveEffect.java
|
||||||
|
lblSelectCounterTypeToAddOrRemove=Select type of counters to add or remove
|
||||||
|
lblWhatToDoWithTargetCounter=What to do with that '%s' counter
|
||||||
|
#CountersRemoveEffect.java
|
||||||
|
lblAllCounters=all counters
|
||||||
|
lblACounters=a counter
|
||||||
|
lblChooseCardtoTakeTargetCounters=Choose cards to take %s counters from
|
||||||
|
lblSelectRemoveCountersNumberOfTarget=Select the number of %s counters to remove
|
||||||
|
lblSelectCountersTypeToRemove=Select type of counters to remove
|
||||||
|
#DamageDealEffect.java
|
||||||
|
lblDoyouWantDealTargetDamageTo=Do you want to deal %d damage to
|
||||||
|
#DigEffect.java
|
||||||
|
lblWouldYouLikeProceedWithOptionalAbility=Would you like to proceed with the optional ability for
|
||||||
|
lblChooseACardToLeaveTargetLibraryTop=Choose a card to leave on top of %s library
|
||||||
|
lblChooseACardLeaveTarget=Choose a card to leave in %s
|
||||||
|
lblChooseCardsPutInto=Choose card(s) to put into
|
||||||
|
lblChooseCardPutOnTargetLibarayBottom=Choose card(s) to put on the bottom of %s library
|
||||||
|
lblChooseCardPutOnTargetLibarayTop=Choose card(s) to put on top of %s library
|
||||||
|
lblNoValidCards=No valid cards
|
||||||
|
lblThisCard=this card
|
||||||
|
lblTheseCards=these cards
|
||||||
|
#DigUntilEffect.java
|
||||||
|
lblDoYouWantDigYourLibrary=Do you want to dig your library?
|
||||||
|
lblDoYouWantPutCardTo=Do you want to put that card to
|
||||||
|
#DiscardEffect.java
|
||||||
|
lblWouldYouLikeRandomDiscardTargetCard=Would you like to discard %d random card(s)?
|
||||||
|
lblHasChosen=has chosen
|
||||||
|
#DrawEffect.java
|
||||||
|
lblDoYouWantDraw=Do you want to draw
|
||||||
|
lblHowMayCardDoYouWantDraw=How may cards do you want to draw?
|
||||||
|
#EncodeEffect.java
|
||||||
|
lblAndEncodeOntoAYouControlCreature=and encode it onto a creature you control?
|
||||||
|
lblChooseACreatureYouControlToEncode=Choose a creature you control to encode
|
||||||
|
lblEncoding=Encoding
|
||||||
|
#ExploreEffect.java
|
||||||
|
lblRevealedForExplore=Revealed for Explore
|
||||||
|
lblPutThisCardToYourGraveyard=Put this card in your graveyard?
|
||||||
|
#FlipCoinEffect.java
|
||||||
|
lblHeads=heads
|
||||||
|
lblTails=tails
|
||||||
|
lblCallCoinFlip=Call coin flip
|
||||||
|
lblWin=win
|
||||||
|
lblLose=lose
|
||||||
|
#LifeSetEffect.java
|
||||||
|
lblLifeTotal=Life Total
|
||||||
|
#ManaEffect.java
|
||||||
|
lblDoYouWantAddMana=Do you want to add mana?
|
||||||
|
lblSelectManaProduce=Select Mana to Produce
|
||||||
|
lblChooseSingleColorFrom=Choose a single color from
|
||||||
|
#ManifestEffect.java
|
||||||
|
lblChooseCardToManifest=Choose cards to manifest
|
||||||
|
#MeldEffect.java
|
||||||
|
lblChooseCardToMeld=Choose card to meld with
|
||||||
|
#MillEffect.java
|
||||||
|
lblDoYouWantPutLibraryCardsTo=Do you want to put card(s) from library to
|
||||||
|
#MultiplePilesEffect.java
|
||||||
|
lblChooseCardsInPile=Choose cards in Pile
|
||||||
|
#PeekAndRevealEffect.java
|
||||||
|
lblRevealingCardFrom=Revealing cards from
|
||||||
|
lblRevealCardToOtherPlayers=Reveal cards to other players?
|
||||||
|
#PlayEffect.java
|
||||||
|
lblChooseUpTo=Choose up to
|
||||||
|
lblSelectCardToPlay=Select a card to play
|
||||||
|
#ProtectAllEffect.java
|
||||||
|
lblChooseAProtection=Choose a protection
|
||||||
|
#PumpEffect.java
|
||||||
|
lblApplyPumpTo=Apply pump to
|
||||||
|
#RearrangeTopOfLibraryEffect.java
|
||||||
|
lblDoyouWantShuffleTheLibrary=Do you want to shuffle the library?
|
||||||
|
#RepeatEffect.java
|
||||||
|
lblDoYouWantRepeatProcessAgain=Do you want to repeat this process again?
|
||||||
|
#RevealHandEffect.java
|
||||||
|
lblDoYouWantRevealYourHand=Do you want to reveal your hand?
|
||||||
|
#RollPlanarDiceEffect.java
|
||||||
|
lblRolled=rolled
|
||||||
|
#SacrificeEffect.java
|
||||||
|
lblDoYouWantPayEcho=Do you want to pay Echo
|
||||||
|
lblPayEcho=Pay Echo
|
||||||
|
lblDoYouWantSacrifice=Do you want to sacrifice?
|
||||||
|
lblSacrifice=Sacrifice
|
||||||
|
lblDestroys=Destroys
|
||||||
|
#SetStateEffect.java
|
||||||
|
lblFaceDownCardCantTurnFaceUp=Face-down card can't turn face up
|
||||||
|
#ShuffleEffect.java
|
||||||
|
lblHaveTargetShuffle=Have %s shuffle?
|
||||||
|
#SurveilEffect.java
|
||||||
|
lblDoYouWantSurveil=Do you want to surveil?
|
||||||
|
#TapOrUntapAllEffect.java
|
||||||
|
lblPermanents=Permanents
|
||||||
|
lblTapOrUntap=Tap or Untap
|
||||||
|
#TwoPilesEffect.java
|
||||||
|
lblSelectCardForFaceDownPile=Select cards for a face down pile
|
||||||
|
lblDivideCardIntoTwoPiles=Divide cards into two piles
|
||||||
|
lblChoosesPile=chooses Pile
|
||||||
|
lblEmptyPile=Empty pile
|
||||||
|
#UntapEffect.java
|
||||||
|
lblSelectCardToUntap=Select cards to untap
|
||||||
|
#VoteEffect.java
|
||||||
|
lblVote=Vote
|
||||||
|
lblCurrentVote=Current Votes
|
||||||
|
lblHowManyAdditionalVotesDoYouWant=How many additional votes do you want?
|
||||||
@@ -1556,8 +1556,210 @@ lblPutIntoLibrary=put into library.
|
|||||||
lblGainControl=gain control.
|
lblGainControl=gain control.
|
||||||
lblReturnToHand=return to hand.
|
lblReturnToHand=return to hand.
|
||||||
lbldiscard=discard.
|
lbldiscard=discard.
|
||||||
lblReveal=reveal.
|
lblReveal=reveal
|
||||||
lblTap=tap.
|
lblTap=tap.
|
||||||
lblCurrentCard=Current Card
|
lblCurrentCard=Current Card
|
||||||
lblSelectOfCardsTo=Select
|
lblSelectOfCardsTo=Select
|
||||||
lblCardsTo=card(s) to
|
lblCardsTo=card(s) to
|
||||||
|
#AbandonEffect.java
|
||||||
|
lblWouldYoulikeAbandon=Would you like to abandon the scheme
|
||||||
|
#ActivateAbilityEffect.java
|
||||||
|
lblChooseManaAbility=Choose a mana ability:
|
||||||
|
#AddTurnEffect.java
|
||||||
|
lblTakesExtraTurn=takes an extra turn.
|
||||||
|
#AmassEffect.java.
|
||||||
|
lblChooseAnArmy=Choose an army to put counters on
|
||||||
|
#AssignGroupEffect.java
|
||||||
|
lblChooseAbilityFor=Choose ability for
|
||||||
|
#AttachEffect.java
|
||||||
|
lblDoYouWantAttach=Do you want to attach
|
||||||
|
lblSelectAPlayerAttachTo=Select a player to attach to.
|
||||||
|
lblSelectACardAttachTo=Select a card to attach to.
|
||||||
|
#BidLifeEffect.java
|
||||||
|
lblChooseStartingBid=Choose a starting bid
|
||||||
|
lblDoYouWantTopBid=Do you want to top bid? Current Bid \=
|
||||||
|
lblTopBidWith=topped bid with
|
||||||
|
#BondEffect.java
|
||||||
|
lblSelectACardPair=Select a card to pair with
|
||||||
|
#ChangeCombatantsEffect.java
|
||||||
|
lblChooseDefenderToAttackWith=Choose which defender to attack with
|
||||||
|
#ChangeTargetsEffect.java
|
||||||
|
lblDoYouWantChangeTargets=Do you want to change targets of
|
||||||
|
#ChangeTextEffect.java
|
||||||
|
lblChooseColorReplace=Choose a color word to replace
|
||||||
|
lblChooseNewColor=Choose a new color word
|
||||||
|
#ChangeZoneEffect.java
|
||||||
|
lblDoYouWantMove=Do you want to move
|
||||||
|
lblDeclareDefenderFor=Declare a defender for
|
||||||
|
lblCardMatchSearchingTypeInAlternateZones=cards match your searching type in Alternate Zones.
|
||||||
|
lblPutThatCardFrom=Put that card from
|
||||||
|
lblLookingCardIn=Looking at cards in
|
||||||
|
lblDoYouWantPlay=Do you want to play
|
||||||
|
lblSelectCardFrom=Select a card from
|
||||||
|
lblSelectUpTo=Select up to
|
||||||
|
lblCardsFrom=cards from
|
||||||
|
lblSelectCardsFrom=Select cards from
|
||||||
|
lblCancelSearchUpTo=Cancel Search? Up to
|
||||||
|
lblMoreCard=more card
|
||||||
|
lblCanBeSelected=can be selected.
|
||||||
|
#ChooseCardEffect.java
|
||||||
|
lblSelectCreatureWithTotalPowerLessOrEqualTo=Select creature(s) with total power less than or equal to
|
||||||
|
lblTotalPower=Total Power
|
||||||
|
lblCancelChooseConfirm=Cancel Choose?
|
||||||
|
#ChooseCardNameEffect.java
|
||||||
|
lblChooseACardName=Choose a card name
|
||||||
|
lblChooseA=Choose a
|
||||||
|
lblCardName=card name
|
||||||
|
lblPicked=picked
|
||||||
|
#ChooseColorEffect.java
|
||||||
|
lblChooseAColor=Choose a color
|
||||||
|
lblChoose=Choose
|
||||||
|
lblOrMore=or more
|
||||||
|
#ChooseDirectionEffect.java
|
||||||
|
lblLeftClockwise=Left (clockwise)
|
||||||
|
lblRightAntiClockwise=Right (anticlockwise)
|
||||||
|
lblChooseDirection=Choose a direction
|
||||||
|
#ChooseGenericEffect.java
|
||||||
|
lblChooseOne=Choose one
|
||||||
|
#ChooseNumberEffect.java
|
||||||
|
lblChooseNumber=Choose a number
|
||||||
|
lblChose=chose
|
||||||
|
#ChoosePlayerEffect.java
|
||||||
|
lblChoosePlayer=Choose a player
|
||||||
|
#ChooseSourceEffect.java
|
||||||
|
lblChooseSource=Choose a source
|
||||||
|
#ClashEffect.java
|
||||||
|
lblChooseOpponent=Choose a opponent
|
||||||
|
lblReveals=reveals
|
||||||
|
lblWinsClash=wins clash
|
||||||
|
lblLosesClash=loses clash
|
||||||
|
#CloneEffect.java
|
||||||
|
lblDoYouWantCopy=Do you want to copy
|
||||||
|
#ControlExchangeVariantEffect.java
|
||||||
|
lblChooseCards=Choose cards
|
||||||
|
#CopyPermanentEffect.java
|
||||||
|
lblCopyPermanentConfirm=Copy this permanent?
|
||||||
|
lblDefender=defender
|
||||||
|
#CopySpellAbilityEffect.java
|
||||||
|
lblDoyouWantCopyTheSpell=Do you want to copy the spell
|
||||||
|
lblSelectMultiSpellCopyToStack=Select %d spell to copy to stack
|
||||||
|
lblSelectASpellCopy=Select a spell to copy
|
||||||
|
#CounterEffect.java
|
||||||
|
lblRemoveDestination=a destination to remove
|
||||||
|
#CountersMoveEffect.java
|
||||||
|
lblChooseTakeCountersCard=Choose card to take %s counters from
|
||||||
|
lblTakeHowMany=Take how many
|
||||||
|
lblCountersFrom=counters from
|
||||||
|
lblChooseCardToGet=Choose cards to get
|
||||||
|
lblPutHowMany=Put how many
|
||||||
|
lblCountersOn=counters on
|
||||||
|
lblCounters=counters
|
||||||
|
#CountersProliferateEffect.java
|
||||||
|
lblChooseProliferateTarget=Choose any number of permanents and/or players for proliferate
|
||||||
|
#CountersPutEffect.java
|
||||||
|
lblChooseACreatureWithLeastToughness=Choose a creature with the least toughness
|
||||||
|
lblSelectCounterTypeAddTo=Select counter type to add to
|
||||||
|
lblHowManyCounters=How many counters?
|
||||||
|
lblChooseAnOpponent=Choose an opponent
|
||||||
|
lblDoYouWantPutTargetP1P1CountersOn=Do you want to put %d +1/+1 counters on
|
||||||
|
#CountersPutOrRemoveEffect.java
|
||||||
|
lblSelectCounterTypeToAddOrRemove=Select type of counters to add or remove
|
||||||
|
lblWhatToDoWithTargetCounter=What to do with that '%s' counter
|
||||||
|
#CountersRemoveEffect.java
|
||||||
|
lblAllCounters=all counters
|
||||||
|
lblACounters=a counter
|
||||||
|
lblChooseCardtoTakeTargetCounters=Choose cards to take %s counters from
|
||||||
|
lblSelectRemoveCountersNumberOfTarget=Select the number of %s counters to remove
|
||||||
|
lblSelectCountersTypeToRemove=Select type of counters to remove
|
||||||
|
#DamageDealEffect.java
|
||||||
|
lblDoyouWantDealTargetDamageTo=Do you want to deal %d damage to
|
||||||
|
#DigEffect.java
|
||||||
|
lblWouldYouLikeProceedWithOptionalAbility=Would you like to proceed with the optional ability for
|
||||||
|
lblChooseACardToLeaveTargetLibraryTop=Choose a card to leave on top of %s library
|
||||||
|
lblChooseACardLeaveTarget=Choose a card to leave in %s
|
||||||
|
lblChooseCardsPutInto=Choose card(s) to put into
|
||||||
|
lblChooseCardPutOnTargetLibarayBottom=Choose card(s) to put on the bottom of %s library
|
||||||
|
lblChooseCardPutOnTargetLibarayTop=Choose card(s) to put on top of %s library
|
||||||
|
lblNoValidCards=No valid cards
|
||||||
|
lblThisCard=this card
|
||||||
|
lblTheseCards=these cards
|
||||||
|
#DigUntilEffect.java
|
||||||
|
lblDoYouWantDigYourLibrary=Do you want to dig your library?
|
||||||
|
lblDoYouWantPutCardTo=Do you want to put that card to
|
||||||
|
#DiscardEffect.java
|
||||||
|
lblWouldYouLikeRandomDiscardTargetCard=Would you like to discard %d random card(s)?
|
||||||
|
lblHasChosen=has chosen
|
||||||
|
#DrawEffect.java
|
||||||
|
lblDoYouWantDraw=Do you want to draw
|
||||||
|
lblHowMayCardDoYouWantDraw=How may cards do you want to draw?
|
||||||
|
#EncodeEffect.java
|
||||||
|
lblAndEncodeOntoAYouControlCreature=and encode it onto a creature you control?
|
||||||
|
lblChooseACreatureYouControlToEncode=Choose a creature you control to encode
|
||||||
|
lblEncoding=Encoding
|
||||||
|
#ExploreEffect.java
|
||||||
|
lblRevealedForExplore=Revealed for Explore
|
||||||
|
lblPutThisCardToYourGraveyard=Put this card in your graveyard?
|
||||||
|
#FlipCoinEffect.java
|
||||||
|
lblHeads=heads
|
||||||
|
lblTails=tails
|
||||||
|
lblCallCoinFlip=Call coin flip
|
||||||
|
lblWin=win
|
||||||
|
lblLose=lose
|
||||||
|
#LifeSetEffect.java
|
||||||
|
lblLifeTotal=Life Total
|
||||||
|
#ManaEffect.java
|
||||||
|
lblDoYouWantAddMana=Do you want to add mana?
|
||||||
|
lblSelectManaProduce=Select Mana to Produce
|
||||||
|
lblChooseSingleColorFrom=Choose a single color from
|
||||||
|
#ManifestEffect.java
|
||||||
|
lblChooseCardToManifest=Choose cards to manifest
|
||||||
|
#MeldEffect.java
|
||||||
|
lblChooseCardToMeld=Choose card to meld with
|
||||||
|
#MillEffect.java
|
||||||
|
lblDoYouWantPutLibraryCardsTo=Do you want to put card(s) from library to
|
||||||
|
#MultiplePilesEffect.java
|
||||||
|
lblChooseCardsInPile=Choose cards in Pile
|
||||||
|
#PeekAndRevealEffect.java
|
||||||
|
lblRevealingCardFrom=Revealing cards from
|
||||||
|
lblRevealCardToOtherPlayers=Reveal cards to other players?
|
||||||
|
#PlayEffect.java
|
||||||
|
lblChooseUpTo=Choose up to
|
||||||
|
lblSelectCardToPlay=Select a card to play
|
||||||
|
#ProtectAllEffect.java
|
||||||
|
lblChooseAProtection=Choose a protection
|
||||||
|
#PumpEffect.java
|
||||||
|
lblApplyPumpTo=Apply pump to
|
||||||
|
#RearrangeTopOfLibraryEffect.java
|
||||||
|
lblDoyouWantShuffleTheLibrary=Do you want to shuffle the library?
|
||||||
|
#RepeatEffect.java
|
||||||
|
lblDoYouWantRepeatProcessAgain=Do you want to repeat this process again?
|
||||||
|
#RevealHandEffect.java
|
||||||
|
lblDoYouWantRevealYourHand=Do you want to reveal your hand?
|
||||||
|
#RollPlanarDiceEffect.java
|
||||||
|
lblRolled=rolled
|
||||||
|
#SacrificeEffect.java
|
||||||
|
lblDoYouWantPayEcho=Do you want to pay Echo
|
||||||
|
lblPayEcho=Pay Echo
|
||||||
|
lblDoYouWantSacrifice=Do you want to sacrifice?
|
||||||
|
lblSacrifice=Sacrifice
|
||||||
|
lblDestroys=Destroys
|
||||||
|
#SetStateEffect.java
|
||||||
|
lblFaceDownCardCantTurnFaceUp=Face-down card can't turn face up
|
||||||
|
#ShuffleEffect.java
|
||||||
|
lblHaveTargetShuffle=Have %s shuffle?
|
||||||
|
#SurveilEffect.java
|
||||||
|
lblDoYouWantSurveil=Do you want to surveil?
|
||||||
|
#TapOrUntapAllEffect.java
|
||||||
|
lblPermanents=Permanents
|
||||||
|
lblTapOrUntap=Tap or Untap
|
||||||
|
#TwoPilesEffect.java
|
||||||
|
lblSelectCardForFaceDownPile=Select cards for a face down pile
|
||||||
|
lblDivideCardIntoTwoPiles=Divide cards into two piles
|
||||||
|
lblChoosesPile=chooses Pile
|
||||||
|
lblEmptyPile=Empty pile
|
||||||
|
#UntapEffect.java
|
||||||
|
lblSelectCardToUntap=Select cards to untap
|
||||||
|
#VoteEffect.java
|
||||||
|
lblVote=Vote
|
||||||
|
lblCurrentVote=Current Votes
|
||||||
|
lblHowManyAdditionalVotesDoYouWant=How many additional votes do you want?
|
||||||
@@ -94,7 +94,7 @@ cbHideReminderText=隐藏提示文字
|
|||||||
cbOpenPacksIndiv=逐个打开补充包
|
cbOpenPacksIndiv=逐个打开补充包
|
||||||
cbTokensInSeparateRow=在单独一行中显示衍生物
|
cbTokensInSeparateRow=在单独一行中显示衍生物
|
||||||
cbStackCreatures=堆叠生物
|
cbStackCreatures=堆叠生物
|
||||||
cbFilterLandsByColorId=在启动式异能中按颜色筛选地
|
cbFilterLandsByColorId=在起动式异能中按颜色筛选地
|
||||||
cbShowStormCount=在提示窗中显示风暴计数
|
cbShowStormCount=在提示窗中显示风暴计数
|
||||||
cbRemindOnPriority=获得优先权时高亮提示
|
cbRemindOnPriority=获得优先权时高亮提示
|
||||||
cbUseSentry=自动提交错误报告
|
cbUseSentry=自动提交错误报告
|
||||||
@@ -117,7 +117,7 @@ nlUseSentry=启用后,会自动向开发人员提交错误报告。
|
|||||||
GamePlay=游戏
|
GamePlay=游戏
|
||||||
nlpMulliganRule=选择调度规则
|
nlpMulliganRule=选择调度规则
|
||||||
nlpAiProfiles=选择你的人工智能对手
|
nlpAiProfiles=选择你的人工智能对手
|
||||||
nlpStackAdditions=选择何时因效应进入堆叠而提供视觉提醒:从不,总是,任何由人工智能释放或启动以及由任何玩家触发的效应。
|
nlpStackAdditions=选择何时因效应进入堆叠而提供视觉提醒:从不,总是,任何由人工智能释放或起动以及由任何玩家触发的效应。
|
||||||
nlAnte=确定游戏是否使用赌注
|
nlAnte=确定游戏是否使用赌注
|
||||||
nlAnteMatchRarity=尝试为所有玩家生成同稀有度赌注
|
nlAnteMatchRarity=尝试为所有玩家生成同稀有度赌注
|
||||||
nlEnableAICheats=允许人工智能进行作弊以获得优势(对于已经设置了作弊洗牌的人工智能)。
|
nlEnableAICheats=允许人工智能进行作弊以获得优势(对于已经设置了作弊洗牌的人工智能)。
|
||||||
@@ -1135,7 +1135,7 @@ lblDoNextActioninSequence=按顺序执行下一步操作
|
|||||||
lblPleaseDefineanActionSequenceFirst=请先定义一个动作序列。
|
lblPleaseDefineanActionSequenceFirst=请先定义一个动作序列。
|
||||||
lblRememberActionSequence=记住动作序列
|
lblRememberActionSequence=记住动作序列
|
||||||
lblYouMustHavePrioritytoUseThisFeature=你必须有使用此功能的优先权。
|
lblYouMustHavePrioritytoUseThisFeature=你必须有使用此功能的优先权。
|
||||||
lblNameTheCard=命名牌
|
lblNameTheCard=选择牌名
|
||||||
lblWhichPlayerShouldRoll=哪位玩家掷骰子?
|
lblWhichPlayerShouldRoll=哪位玩家掷骰子?
|
||||||
lblChooseResult=选择结果
|
lblChooseResult=选择结果
|
||||||
lblChosenCardNotPermanentorCantExistIndependentlyontheBattleground=选择的牌不是永久物,也不能在战场单独存在。\n如果你想释放费永久物咒语或者你想释放永久物咒语并将之放于堆叠上,请按"Cast Spell/Play Land"按钮。
|
lblChosenCardNotPermanentorCantExistIndependentlyontheBattleground=选择的牌不是永久物,也不能在战场单独存在。\n如果你想释放费永久物咒语或者你想释放永久物咒语并将之放于堆叠上,请按"Cast Spell/Play Land"按钮。
|
||||||
@@ -1247,7 +1247,7 @@ lblLoadingThePuzzle=加载新的谜题中
|
|||||||
#InputPassPriority.java
|
#InputPassPriority.java
|
||||||
lblCastSpell=释放咒语
|
lblCastSpell=释放咒语
|
||||||
lblPlayLand=使用地
|
lblPlayLand=使用地
|
||||||
lblActivateAbility=启动式异能
|
lblActivateAbility=起动式异能
|
||||||
lblYouHaveManaFloatingInYourManaPoolCouldBeLostIfPassPriority=你的法术力池中还有剩余的法术力,如果现在让过优先权,这些法术力可能会丢失。
|
lblYouHaveManaFloatingInYourManaPoolCouldBeLostIfPassPriority=你的法术力池中还有剩余的法术力,如果现在让过优先权,这些法术力可能会丢失。
|
||||||
lblYouWillTakeManaBurnDamageEqualAmountFloatingManaLostThisWay=你将受到等同于通过这种方式失去的剩余法术力数量的法术力灼烧伤害。
|
lblYouWillTakeManaBurnDamageEqualAmountFloatingManaLostThisWay=你将受到等同于通过这种方式失去的剩余法术力数量的法术力灼烧伤害。
|
||||||
lblManaFloating=剩余法术力
|
lblManaFloating=剩余法术力
|
||||||
@@ -1372,7 +1372,7 @@ lblSearcher=搜寻者
|
|||||||
#TriggerShuffled.java
|
#TriggerShuffled.java
|
||||||
lblShuffler=洗牌者
|
lblShuffler=洗牌者
|
||||||
#TriggerSpellAbilityCast.java
|
#TriggerSpellAbilityCast.java
|
||||||
lblActivator=启动自
|
lblActivator=起动自
|
||||||
#TriggerSpellAbilityCast.java
|
#TriggerSpellAbilityCast.java
|
||||||
lblSpellAbility=咒语异能
|
lblSpellAbility=咒语异能
|
||||||
#TriggerTaps.java
|
#TriggerTaps.java
|
||||||
@@ -1556,8 +1556,210 @@ lblPutIntoLibrary=放入牌库。
|
|||||||
lblGainControl=获得控制权。
|
lblGainControl=获得控制权。
|
||||||
lblReturnToHand=返回手牌。
|
lblReturnToHand=返回手牌。
|
||||||
lbldiscard=弃牌。
|
lbldiscard=弃牌。
|
||||||
lblReveal=展示。
|
lblReveal=展示
|
||||||
lblTap=横置。
|
lblTap=横置。
|
||||||
lblCurrentCard=当前牌
|
lblCurrentCard=当前牌
|
||||||
lblSelectOfCardsTo=选择
|
lblSelectOfCardsTo=选择
|
||||||
lblCardsTo=牌到
|
lblCardsTo=牌到
|
||||||
|
#AbandonEffect.java
|
||||||
|
lblWouldYoulikeAbandon=你想要终止阴谋
|
||||||
|
#ActivateAbilityEffect.java
|
||||||
|
lblChooseManaAbility=选择一个法术力异能:
|
||||||
|
#AddTurnEffect.java
|
||||||
|
lblTakesExtraTurn=获得一个额外回合。
|
||||||
|
#AmassEffect.java.
|
||||||
|
lblChooseAnArmy=选择一个军队将指示物放置在上面。
|
||||||
|
#AssignGroupEffect.java
|
||||||
|
lblChooseAbilityFor=选择一个异能
|
||||||
|
#AttachEffect.java
|
||||||
|
lblDoYouWantAttach=你想要装备
|
||||||
|
lblSelectAPlayerAttachTo=选择一个要结附的牌手。
|
||||||
|
lblSelectACardAttachTo=选择一个要结附的牌。
|
||||||
|
#BidLifeEffect.java
|
||||||
|
lblChooseStartingBid=选择一个初始价钱
|
||||||
|
lblDoYouWantTopBid=你想要喊更高的价? 现在价钱 \=
|
||||||
|
lblTopBidWith=最高喊价
|
||||||
|
#BondEffect.java
|
||||||
|
lblSelectACardPair=选择要组成搭档的牌
|
||||||
|
#ChangeCombatantsEffect.java
|
||||||
|
lblChooseDefenderToAttackWith=选择守军进行进攻
|
||||||
|
#ChangeTargetsEffect.java
|
||||||
|
lblDoYouWantChangeTargets=你是否想要更改目标
|
||||||
|
#ChangeTextEffect.java
|
||||||
|
lblChooseColorReplace=选择一个要替换的颜色词
|
||||||
|
lblChooseNewColor=选择一个新的颜色词
|
||||||
|
#ChangeZoneEffect.java
|
||||||
|
lblDoYouWantMove=你想要移动
|
||||||
|
lblDeclareDefenderFor=声明阻挡者
|
||||||
|
lblCardMatchSearchingTypeInAlternateZones=在你的备用区域搜索匹配类型的卡牌。
|
||||||
|
lblPutThatCardFrom=放置这张牌从
|
||||||
|
lblLookingCardIn=看这张牌于
|
||||||
|
lblDoYouWantPlay=你想要使用
|
||||||
|
lblSelectCardFrom=选择一张牌从
|
||||||
|
lblSelectUpTo=最多选择
|
||||||
|
lblCardsFrom=牌张来自
|
||||||
|
lblSelectCardsFrom=选择牌张来自
|
||||||
|
lblCancelSearchUpTo=取消搜索?直到
|
||||||
|
lblMoreCard=更多牌
|
||||||
|
lblCanBeSelected=可以选择
|
||||||
|
#ChooseCardEffect.java
|
||||||
|
lblSelectCreatureWithTotalPowerLessOrEqualTo=选择一些生物其力量合小于或等于
|
||||||
|
lblTotalPower=总力量
|
||||||
|
lblCancelChooseConfirm=取消选择?
|
||||||
|
#ChooseCardNameEffect.java
|
||||||
|
lblChooseACardName=选择一个牌名
|
||||||
|
lblChooseA=选择一个
|
||||||
|
lblCardName=牌名
|
||||||
|
lblPicked=选取
|
||||||
|
#ChooseColorEffect.java
|
||||||
|
lblChooseAColor=选择一个颜色
|
||||||
|
lblChoose=选择
|
||||||
|
lblOrMore=或更多
|
||||||
|
#ChooseDirectionEffect.java
|
||||||
|
lblLeftClockwise=左(顺时针)
|
||||||
|
lblRightAntiClockwise=右(逆时针)
|
||||||
|
lblChooseDirection=选择一个方向
|
||||||
|
#ChooseGenericEffect.java
|
||||||
|
lblChooseOne=选择一个
|
||||||
|
#ChooseNumberEffect.java
|
||||||
|
lblChooseNumber=选择一个数
|
||||||
|
lblChose=已选择
|
||||||
|
#ChoosePlayerEffect.java
|
||||||
|
lblChoosePlayer=选择一个牌手
|
||||||
|
#ChooseSourceEffect.java
|
||||||
|
lblChooseSource=选择一个来源
|
||||||
|
#ClashEffect.java
|
||||||
|
lblChooseOpponent=选择一个对手
|
||||||
|
lblReveals=展示
|
||||||
|
lblWinsClash=比点赢了
|
||||||
|
lblLosesClash=比点输了
|
||||||
|
#CloneEffect.java
|
||||||
|
lblDoYouWantCopy=你想要复制
|
||||||
|
#ControlExchangeVariantEffect.java
|
||||||
|
lblChooseCards=选择牌
|
||||||
|
#CopyPermanentEffect.java
|
||||||
|
lblCopyPermanentConfirm=复制这个永久物?
|
||||||
|
lblDefender=守军
|
||||||
|
#CopySpellAbilityEffect.java
|
||||||
|
lblDoyouWantCopyTheSpell=你想要复制这个咒语
|
||||||
|
lblSelectMultiSpellCopyToStack=选择%d个咒语复制到堆叠
|
||||||
|
lblSelectASpellCopy=选择一个咒语进行复制
|
||||||
|
#CounterEffect.java
|
||||||
|
lblRemoveDestination=要删除的目标
|
||||||
|
#CountersMoveEffect.java
|
||||||
|
lblChooseTakeCountersCard=选择牌获得%s指示物自
|
||||||
|
lblTakeHowMany=获得几个
|
||||||
|
lblCountersFrom=指示物自
|
||||||
|
lblChooseCardToGet=选择牌获得
|
||||||
|
lblPutHowMany=放置几个
|
||||||
|
lblCountersOn=指示物在上面
|
||||||
|
lblCounters=指示物
|
||||||
|
#CountersProliferateEffect.java
|
||||||
|
lblChooseProliferateTarget=选择任意数量的永久物和或牌手进行增殖
|
||||||
|
#CountersPutEffect.java
|
||||||
|
lblChooseACreatureWithLeastToughness=选择防御力最小的生物
|
||||||
|
lblSelectCounterTypeAddTo=选择指示物类型以添加到
|
||||||
|
lblHowManyCounters=多少指示物?
|
||||||
|
lblChooseAnOpponent=选择一个对手
|
||||||
|
lblDoYouWantPutTargetP1P1CountersOn=你想要放置%d个+1+1指示物到
|
||||||
|
#CountersPutOrRemoveEffect.java
|
||||||
|
lblSelectCounterTypeToAddOrRemove=选择要添加或移除的指示物的类型
|
||||||
|
lblWhatToDoWithTargetCounter=如何使用'%s'指示物
|
||||||
|
#CountersRemoveEffect.java
|
||||||
|
lblAllCounters=所有指示物
|
||||||
|
lblACounters=一个指示物
|
||||||
|
lblChooseCardtoTakeTargetCounters=选择牌要获得%s指示物自
|
||||||
|
lblSelectRemoveCountersNumberOfTarget=选择要删除的%s指示物的数量
|
||||||
|
lblSelectCountersTypeToRemove=选择要删除的指示物类型
|
||||||
|
#DamageDealEffect.java
|
||||||
|
lblDoyouWantDealTargetDamageTo=你想造成%d伤害给
|
||||||
|
#DigEffect.java
|
||||||
|
lblWouldYouLikeProceedWithOptionalAbility=你想继续以下可选的异能吗
|
||||||
|
lblChooseACardToLeaveTargetLibraryTop=选择一张牌离开%s的牌库顶
|
||||||
|
lblChooseACardLeaveTarget=选择一张牌离开%s
|
||||||
|
lblChooseCardsPutInto=选择牌放到
|
||||||
|
lblChooseCardPutOnTargetLibarayBottom=选择牌放到%s的牌库底
|
||||||
|
lblChooseCardPutOnTargetLibarayTop=选择牌放到%s的牌库顶
|
||||||
|
lblNoValidCards=没有有效的牌
|
||||||
|
lblThisCard=这张牌
|
||||||
|
lblTheseCards=这些牌
|
||||||
|
#DigUntilEffect.java
|
||||||
|
lblDoYouWantDigYourLibrary=你想要挖掘你的牌库吗?
|
||||||
|
lblDoYouWantPutCardTo=你想把这张牌放到
|
||||||
|
#DiscardEffect.java
|
||||||
|
lblWouldYouLikeRandomDiscardTargetCard=你想随机弃掉%d张牌吗?
|
||||||
|
lblHasChosen=选择了
|
||||||
|
#DrawEffect.java
|
||||||
|
lblDoYouWantDraw=你想抓
|
||||||
|
lblHowMayCardDoYouWantDraw=你想怎么抓牌?
|
||||||
|
#EncodeEffect.java
|
||||||
|
lblAndEncodeOntoAYouControlCreature=和赋码到你控制的生物?
|
||||||
|
lblChooseACreatureYouControlToEncode=选择你控制的生物进场赋码
|
||||||
|
lblEncoding=已赋码
|
||||||
|
#ExploreEffect.java
|
||||||
|
lblRevealedForExplore=勘察所展示
|
||||||
|
lblPutThisCardToYourGraveyard=把这张牌放到你的坟墓场?
|
||||||
|
#FlipCoinEffect.java
|
||||||
|
lblHeads=正面
|
||||||
|
lblTails=背面
|
||||||
|
lblCallCoinFlip=掷骰子
|
||||||
|
lblWin=赢
|
||||||
|
lblLose=输
|
||||||
|
#LifeSetEffect.java
|
||||||
|
lblLifeTotal=生命总数
|
||||||
|
#ManaEffect.java
|
||||||
|
lblDoYouWantAddMana=你想增加法术力吗?
|
||||||
|
lblSelectManaProduce=选择要产出的法术力
|
||||||
|
lblChooseSingleColorFrom=选择一种颜色自
|
||||||
|
#ManifestEffect.java
|
||||||
|
lblChooseCardToManifest=选择要显化的牌
|
||||||
|
#MeldEffect.java
|
||||||
|
lblChooseCardToMeld=选择要融合的牌
|
||||||
|
#MillEffect.java
|
||||||
|
lblDoYouWantPutLibraryCardsTo=你想要从牌库中把牌放入
|
||||||
|
#MultiplePilesEffect.java
|
||||||
|
lblChooseCardsInPile=选择一堆卡
|
||||||
|
#PeekAndRevealEffect.java
|
||||||
|
lblRevealingCardFrom=展示牌自
|
||||||
|
lblRevealCardToOtherPlayers=想其他玩家展示牌?
|
||||||
|
#PlayEffect.java
|
||||||
|
lblChooseUpTo=选择最多
|
||||||
|
lblSelectCardToPlay=选择要使用的牌
|
||||||
|
#ProtectAllEffect.java
|
||||||
|
lblChooseAProtection=选择一个保护
|
||||||
|
#PumpEffect.java
|
||||||
|
lblApplyPumpTo=将pump用于
|
||||||
|
#RearrangeTopOfLibraryEffect.java
|
||||||
|
lblDoyouWantShuffleTheLibrary=你想要洗这个牌库吗?
|
||||||
|
#RepeatEffect.java
|
||||||
|
lblDoYouWantRepeatProcessAgain=你是否想再次重复这个过程?
|
||||||
|
#RevealHandEffect.java
|
||||||
|
lblDoYouWantRevealYourHand=你想展示你的手牌吗?
|
||||||
|
#RollPlanarDiceEffect.java
|
||||||
|
lblRolled=rolled
|
||||||
|
#SacrificeEffect.java
|
||||||
|
lblDoYouWantPayEcho=你想支付返响费用
|
||||||
|
lblPayEcho=支付返响费用
|
||||||
|
lblDoYouWantSacrifice=你想牺牲吗?
|
||||||
|
lblSacrifice=牺牲
|
||||||
|
lblDestroys=消灭
|
||||||
|
#SetStateEffect.java
|
||||||
|
lblFaceDownCardCantTurnFaceUp=面朝下的牌不能面朝上
|
||||||
|
#ShuffleEffect.java
|
||||||
|
lblHaveTargetShuffle=%s洗牌了吗?
|
||||||
|
#SurveilEffect.java
|
||||||
|
lblDoYouWantSurveil=你想刺探吗?
|
||||||
|
#TapOrUntapAllEffect.java
|
||||||
|
lblPermanents=永久物
|
||||||
|
lblTapOrUntap=横置或重置
|
||||||
|
#TwoPilesEffect.java
|
||||||
|
lblSelectCardForFaceDownPile=选择一个面朝下的堆
|
||||||
|
lblDivideCardIntoTwoPiles=将牌分为两堆
|
||||||
|
lblChoosesPile=选择堆
|
||||||
|
lblEmptyPile=空堆
|
||||||
|
#UntapEffect.java
|
||||||
|
lblSelectCardToUntap=选择要重置的牌
|
||||||
|
#VoteEffect.java
|
||||||
|
lblVote=投票
|
||||||
|
lblCurrentVote=当前投票
|
||||||
|
lblHowManyAdditionalVotesDoYouWant=你想要额外投多少票?
|
||||||
Reference in New Issue
Block a user