...
 
Commits (33)
package forge.ai.ability;
import forge.ai.SpellAbilityAi;
import forge.game.phase.PhaseType;
import forge.game.player.Player;
import forge.game.player.PlayerActionConfirmMode;
import forge.game.spellability.SpellAbility;
......@@ -12,6 +13,8 @@ public class ShuffleAi extends SpellAbilityAi {
if (logic.equals("Always")) {
// We may want to play this for the subability, e.g. Mind's Desire
return true;
} else if (logic.equals("OwnMain2")) {
return aiPlayer.getGame().getPhaseHandler().is(PhaseType.MAIN2, aiPlayer);
}
// not really sure when the compy would use this; maybe only after a
......
......@@ -2,6 +2,7 @@ package forge.screens.home.puzzle;
import forge.model.FModel;
import forge.properties.ForgePreferences;
import forge.util.Localizer;
import javax.swing.*;
import java.awt.event.KeyEvent;
......@@ -12,7 +13,8 @@ public class PuzzleGameMenu {
private static ForgePreferences prefs = FModel.getPreferences();
public static JMenu getMenu() {
JMenu menu = new JMenu("Puzzle");
final Localizer localizer = Localizer.getInstance();
JMenu menu = new JMenu(localizer.getMessage("lblPuzzle"));
menu.setMnemonic(KeyEvent.VK_G);
return menu;
}
......
......@@ -22,10 +22,9 @@ public enum VSubmenuChallenges implements IVSubmenu<CSubmenuChallenges>, IVQuest
/** */
SINGLETON_INSTANCE;
final Localizer localizer = Localizer.getInstance();
// Fields used with interface IVDoc
private DragCell parentCell;
private final DragTab tab = new DragTab("Quest Challenges");
private final DragTab tab = new DragTab(localizer.getMessage("lblQuestChallenges"));
//========== INSTANTIATION
private final JPanel pnlStats = new JPanel();
......@@ -36,11 +35,11 @@ public enum VSubmenuChallenges implements IVSubmenu<CSubmenuChallenges>, IVQuest
private final StartButton btnStart = new StartButton();
private final FComboBoxWrapper<String> cbxPet = new FComboBoxWrapper<String>();
private final FCheckBox cbPlant = new FCheckBox("Summon Plant");
private final FCheckBox cbPlant = new FCheckBox(localizer.getMessage("cbSummonPlant"));
private final FComboBoxWrapper<String> cbxMatchLength = new FComboBoxWrapper<String>();
private final FLabel lblZep = new FLabel.Builder().text("<html>Launch<br>Zeppelin</html>")
private final FLabel lblZep = new FLabel.Builder().text(localizer.getMessage("htmlLaunchZeppelin"))
.hoverable(true).icon(FSkin.getIcon(FSkinProp.ICO_QUEST_ZEP))
.fontSize(16).build();
private final FLabel lblWorld = new FLabel.Builder()
......@@ -61,24 +60,24 @@ public enum VSubmenuChallenges implements IVSubmenu<CSubmenuChallenges>, IVQuest
private final FLabel lblWinStreak = new FLabel.Builder()
.icon(FSkin.getIcon(FSkinProp.ICO_QUEST_PLUSPLUS))
.fontSize(15).build();
private final LblHeader lblTitle = new LblHeader("Quest Mode: Challenges");
private final LblHeader lblTitle = new LblHeader(localizer.getMessage("lblQuestModeChallenges"));
private final FLabel lblInfo = new FLabel.Builder().text("Which challenge will you attempt?")
private final FLabel lblInfo = new FLabel.Builder().text(localizer.getMessage("lblWhichChallenge"))
.fontStyle(Font.BOLD).fontSize(16)
.fontAlign(SwingConstants.LEFT).build();
private final FLabel lblCurrentDeck = new FLabel.Builder()
.text("Current deck hasn't been set yet.")
.text(localizer.getMessage("lblNoDuelDeck"))
.fontSize(12).build();
private final FLabel lblNextChallengeInWins = new FLabel.Builder()
.text("Next challenge in wins hasn't been set yet.")
.text(localizer.getMessage("lblNextChallengeNotYet"))
.fontSize(12).build();
private final FLabel btnUnlock = new FLabel.ButtonBuilder().text("Unlock Sets").fontSize(16).build();
private final FLabel btnTravel = new FLabel.ButtonBuilder().text("Travel").fontSize(16).build();
private final FLabel btnBazaar = new FLabel.ButtonBuilder().text("Bazaar").fontSize(16).build();
private final FLabel btnSpellShop = new FLabel.ButtonBuilder().text("Spell Shop").fontSize(16).build();
private final FLabel btnUnlock = new FLabel.ButtonBuilder().text(localizer.getMessage("btnUnlockSets")).fontSize(16).build();
private final FLabel btnTravel = new FLabel.ButtonBuilder().text(localizer.getMessage("btnTravel")).fontSize(16).build();
private final FLabel btnBazaar = new FLabel.ButtonBuilder().text(localizer.getMessage("btnBazaar")).fontSize(16).build();
private final FLabel btnSpellShop = new FLabel.ButtonBuilder().text(localizer.getMessage("btnSpellShop")).fontSize(16).build();
/**
* Constructor.
......@@ -116,7 +115,7 @@ public enum VSubmenuChallenges implements IVSubmenu<CSubmenuChallenges>, IVQuest
*/
@Override
public String getMenuTitle() {
return "Challenges";
return localizer.getMessage("lblChallenges");
}
/* (non-Javadoc)
......
......@@ -110,7 +110,7 @@ public enum VSubmenuDuels implements IVSubmenu<CSubmenuDuels>, IVQuestStats {
*/
@Override
public String getMenuTitle() {
return "Duels";
return localizer.getMessage("lblDuels");
}
/* (non-Javadoc)
......
......@@ -14,6 +14,7 @@ import forge.screens.home.VHomeUI;
import forge.screens.home.VHomeUI.PnlDisplay;
import forge.toolbox.FLabel;
import forge.toolbox.FSkin;
import forge.util.Localizer;
import net.miginfocom.swing.MigLayout;
import javax.swing.*;
......@@ -30,39 +31,41 @@ public enum VSubmenuQuestDecks implements IVSubmenu<CSubmenuQuestDecks> {
/** */
SINGLETON_INSTANCE;
final Localizer localizer = Localizer.getInstance();
// Fields used with interface IVDoc
private DragCell parentCell;
private final DragTab tab = new DragTab("Quest Decks");
private final DragTab tab = new DragTab(localizer.getMessage("lblQuestDecks"));
/** */
private final LblHeader lblTitle = new LblHeader("Quest Decks");
private final LblHeader lblTitle = new LblHeader(localizer.getMessage("lblQuestDecks"));
private final DeckManager lstDecks = new DeckManager(GameType.Quest, CDeckEditorUI.SINGLETON_INSTANCE.getCDetailPicture());
private final FLabel lblInfo = new FLabel.Builder()
.fontAlign(SwingConstants.LEFT).fontSize(16).fontStyle(Font.BOLD)
.text("Build or select a deck").build();
.text(localizer.getMessage("lblBuildorselectadeck")).build();
private final FLabel lblDir1 = new FLabel.Builder()
.text("In Quest mode, you build a deck from a limited inventory.")
.text(localizer.getMessage("lblQuestDesc1"))
.fontSize(12).build();
private final FLabel lblDir2 = new FLabel.Builder()
.text("Build and enhance decks from the cards in your quest inventory as it grows.")
.text(localizer.getMessage("lblQuestDesc2"))
.fontSize(12).build();
private final FLabel lblDir3 = new FLabel.Builder()
.text("Then, switch to the Duels or Challenges submenu to play against AI opponents and unlock more cards.")
.text(localizer.getMessage("lblQuestDesc3"))
.fontSize(12).build();
private final FLabel btnNewDeck = new FLabel.ButtonBuilder().text("Build a New Deck").fontSize(16).build();
private final FLabel btnNewDeck = new FLabel.ButtonBuilder().text(localizer.getMessage("lblBuildaNewDeck")).fontSize(16).build();
/**
* Constructor.
*/
VSubmenuQuestDecks() {
lblTitle.setBackground(FSkin.getColor(FSkin.Colors.CLR_THEME2));
lstDecks.setCaption("Quest Decks");
lstDecks.setCaption(localizer.getMessage("lblQuestDecks"));
}
/* (non-Javadoc)
......@@ -100,7 +103,7 @@ public enum VSubmenuQuestDecks implements IVSubmenu<CSubmenuQuestDecks> {
*/
@Override
public String getMenuTitle() {
return "Quest Decks";
return localizer.getMessage("lblQuestDecks");
}
/* (non-Javadoc)
......
......@@ -29,7 +29,7 @@ import forge.toolbox.FSkin.SkinColor;
import forge.toolbox.FSkin.SkinImage;
import forge.toolbox.JXButtonPanel;
import net.miginfocom.swing.MigLayout;
import forge.util.Localizer;
import javax.swing.*;
import java.awt.*;
......@@ -46,10 +46,11 @@ import java.awt.geom.Rectangle2D;
*/
public enum VSubmenuQuestDraft implements IVSubmenu<CSubmenuQuestDraft>, IQuestTournamentView {
SINGLETON_INSTANCE;
final Localizer localizer = Localizer.getInstance();
private final DragTab tab = new DragTab("Tournaments");
private final DragTab tab = new DragTab(localizer.getMessage("lblTournaments"));
private final LblHeader lblTitle = new LblHeader("Quest Mode: Draft Tournament");
private final LblHeader lblTitle = new LblHeader(localizer.getMessage("lblQuestModeDraftTournament"));
private final FLabel lblCredits = new FLabel.Builder()
.icon(FSkin.getIcon(FSkinProp.ICO_QUEST_COINSTACK))
......@@ -59,11 +60,11 @@ public enum VSubmenuQuestDraft implements IVSubmenu<CSubmenuQuestDraft>, IQuestT
private final FScrollPanel pnlTournaments = new FScrollPanel(new MigLayout("insets 0, gap 0, wrap, ax center"), true,
ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED, ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
private final JLabel lblInfo = new FLabel.Builder().text("Select a tournament to join:")
private final JLabel lblInfo = new FLabel.Builder().text(localizer.getMessage("lblSelectaTournament")+ ":")
.fontStyle(Font.BOLD).fontSize(16)
.fontAlign(SwingConstants.LEFT).build();
private final JLabel lblNoDrafts = new FLabel.Builder().text("There are no tournaments available at this time.")
private final JLabel lblNoDrafts = new FLabel.Builder().text(localizer.getMessage("lblNoTournaments"))
.fontStyle(Font.PLAIN).fontSize(16)
.fontAlign(SwingConstants.LEFT).build();
......@@ -84,10 +85,10 @@ public enum VSubmenuQuestDraft implements IVSubmenu<CSubmenuQuestDraft>, IQuestT
private final StartButton btnStartTournament = new StartButton();
private final StartButton btnStartMatch = new StartButton();
private final FLabel btnEditDeck = new FLabel.ButtonBuilder().text("Edit Deck").fontSize(24).build();
private final FLabel btnLeaveTournament = new FLabel.ButtonBuilder().text("Leave Tournament").fontSize(12).build();
private final FLabel btnSpendToken = new FLabel.ButtonBuilder().text("Spend Token").fontSize(14).build();
private final FLabel btnStartMatchSmall = new FLabel.ButtonBuilder().text("Start Next Match").fontSize(12).build();
private final FLabel btnEditDeck = new FLabel.ButtonBuilder().text(localizer.getMessage("btnEditDeck")).fontSize(24).build();
private final FLabel btnLeaveTournament = new FLabel.ButtonBuilder().text(localizer.getMessage("btnLeaveTournament")).fontSize(12).build();
private final FLabel btnSpendToken = new FLabel.ButtonBuilder().text(localizer.getMessage("btnSpendToken")).fontSize(14).build();
private final FLabel btnStartMatchSmall = new FLabel.ButtonBuilder().text(localizer.getMessage("btnStartMatchSmall")).fontSize(12).build();
private final PnlMatchup[] matchups = new PnlMatchup[8];
......@@ -102,36 +103,36 @@ public enum VSubmenuQuestDraft implements IVSubmenu<CSubmenuQuestDraft>, IQuestT
SkinImage avatar = FSkin.getAvatars().get(GuiBase.getInterface().getAvatarCount() - 1);
matchups[0] = new PnlMatchup(PnlMatchup.LineDirection.DOWN, PnlMatchup.LineSide.RIGHT, PnlMatchup.BoxSize.SMALL);
matchups[0].setPlayerOne("Undetermined", avatar);
matchups[0].setPlayerTwo("Undetermined", avatar);
matchups[0].setPlayerOne(localizer.getMessage("lblUndetermined"), avatar);
matchups[0].setPlayerTwo(localizer.getMessage("lblUndetermined"), avatar);
matchups[1] = new PnlMatchup(PnlMatchup.LineDirection.UP, PnlMatchup.LineSide.RIGHT, PnlMatchup.BoxSize.SMALL);
matchups[1].setPlayerOne("Undetermined", avatar);
matchups[1].setPlayerTwo("Undetermined", avatar);
matchups[1].setPlayerOne(localizer.getMessage("lblUndetermined"), avatar);
matchups[1].setPlayerTwo(localizer.getMessage("lblUndetermined"), avatar);
matchups[2] = new PnlMatchup(PnlMatchup.LineDirection.DOWN, PnlMatchup.LineSide.RIGHT, PnlMatchup.BoxSize.SMALL);
matchups[2].setPlayerOne("Undetermined", avatar);
matchups[2].setPlayerTwo("Undetermined", avatar);
matchups[2].setPlayerOne(localizer.getMessage("lblUndetermined"), avatar);
matchups[2].setPlayerTwo(localizer.getMessage("lblUndetermined"), avatar);
matchups[3] = new PnlMatchup(PnlMatchup.LineDirection.UP, PnlMatchup.LineSide.RIGHT, PnlMatchup.BoxSize.SMALL);
matchups[3].setPlayerOne("Undetermined", avatar);
matchups[3].setPlayerTwo("Undetermined", avatar);
matchups[3].setPlayerOne(localizer.getMessage("lblUndetermined"), avatar);
matchups[3].setPlayerTwo(localizer.getMessage("lblUndetermined"), avatar);
matchups[4] = new PnlMatchup(PnlMatchup.LineDirection.DOWN, PnlMatchup.LineSide.BOTH, PnlMatchup.BoxSize.MEDIUM);
matchups[4].setPlayerOne("Undetermined", avatar);
matchups[4].setPlayerTwo("Undetermined", avatar);
matchups[4].setPlayerOne(localizer.getMessage("lblUndetermined"), avatar);
matchups[4].setPlayerTwo(localizer.getMessage("lblUndetermined"), avatar);
matchups[5] = new PnlMatchup(PnlMatchup.LineDirection.UP, PnlMatchup.LineSide.BOTH, PnlMatchup.BoxSize.MEDIUM);
matchups[5].setPlayerOne("Undetermined", avatar);
matchups[5].setPlayerTwo("Undetermined", avatar);
matchups[5].setPlayerOne(localizer.getMessage("lblUndetermined"), avatar);
matchups[5].setPlayerTwo(localizer.getMessage("lblUndetermined"), avatar);
matchups[6] = new PnlMatchup(PnlMatchup.LineDirection.STRAIGHT, PnlMatchup.LineSide.BOTH, PnlMatchup.BoxSize.LARGE);
matchups[6].setPlayerOne("Undetermined", avatar);
matchups[6].setPlayerTwo("Undetermined", avatar);
matchups[6].setPlayerOne(localizer.getMessage("lblUndetermined"), avatar);
matchups[6].setPlayerTwo(localizer.getMessage("lblUndetermined"), avatar);
matchups[7] = new PnlMatchup(PnlMatchup.LineDirection.STRAIGHT, PnlMatchup.LineSide.LEFT, PnlMatchup.BoxSize.LARGE_SINGLE, true);
matchups[7].setPlayerOne("Undetermined", avatar);
matchups[7].setPlayerTwo("Undetermined", avatar);
matchups[7].setPlayerOne(localizer.getMessage("lblUndetermined"), avatar);
matchups[7].setPlayerTwo(localizer.getMessage("lblUndetermined"), avatar);
pnlDeckImage = new ProportionalPanel(FSkin.getImage(FSkinProp.IMG_QUEST_DRAFT_DECK), 680, 475);
......@@ -145,7 +146,7 @@ public enum VSubmenuQuestDraft implements IVSubmenu<CSubmenuQuestDraft>, IQuestT
pnlStats.add(btnSpendToken, "w 150px!, h 40px!, ax center");
pnlStats.setOpaque(false);
btnSpendToken.setToolTipText("Creates a new tournament that can be played immediately.");
btnSpendToken.setToolTipText(localizer.getMessage("btnSpendTokenTT"));
}
......@@ -249,7 +250,7 @@ public enum VSubmenuQuestDraft implements IVSubmenu<CSubmenuQuestDraft>, IQuestT
@Override
public String getMenuTitle() {
return "Tournaments";
return localizer.getMessage("lblTournaments");
}
@Override
......@@ -299,7 +300,7 @@ public enum VSubmenuQuestDraft implements IVSubmenu<CSubmenuQuestDraft>, IQuestT
}
private void populatePrepareDeck() {
lblTitle.setText("Quest Mode: Draft Tournament - " + FModel.getQuest().getAchievements().getCurrentDraft().getTitle());
lblTitle.setText(localizer.getMessage("lblQuestModeDraftTournament")+ " - " + FModel.getQuest().getAchievements().getCurrentDraft().getTitle());
VHomeUI.SINGLETON_INSTANCE.getPnlDisplay().setLayout(new MigLayout(
"insets 0, gap 0, ax center, wrap",
"",
......@@ -316,7 +317,7 @@ public enum VSubmenuQuestDraft implements IVSubmenu<CSubmenuQuestDraft>, IQuestT
}
private void populateTournamentActive() {
lblTitle.setText("Quest Mode: Draft Tournament - " + FModel.getQuest().getAchievements().getCurrentDraft().getTitle());
lblTitle.setText(localizer.getMessage("lblQuestModeDraftTournament")+ " - " + FModel.getQuest().getAchievements().getCurrentDraft().getTitle());
VHomeUI.SINGLETON_INSTANCE.getPnlDisplay().setLayout(new MigLayout("insets 0, gap 0, ax center, wrap 1"));
VHomeUI.SINGLETON_INSTANCE.getPnlDisplay().add(lblTitle, "w 80%!, h 40px!, gap 20% 0 15px 10px, ax right, span 2");
......
......@@ -52,6 +52,8 @@ import java.net.MalformedURLException;
import java.util.*;
import java.util.List;
import java.util.Map.Entry;
import forge.util.Localizer;
/**
* Assembles settings from selected or default theme as appropriate. Saves in a
......@@ -1155,7 +1157,8 @@ public class FSkin {
if (preferredName.isEmpty()) { loadLight("default", true); }
}
FView.SINGLETON_INSTANCE.setSplashProgessBarMessage("Processing image sprites: ", 8);
final Localizer localizer = Localizer.getInstance();
FView.SINGLETON_INSTANCE.setSplashProgessBarMessage(localizer.getMessage("splash.loading.processingimagesprites") + ": ", 8);
// Grab and test various sprite files.
final String defaultDir = ForgeConstants.DEFAULT_SKINS_DIR;
......
Name:Liliana's Triumph
ManaCost:1 B
Types:Instant
A:SP$ Sacrifice | Cost$ 1 B | Defined$ Player.Other | SacValid$ Creature | SubAbility$ DiscardIf | SpellDescription$ Each opponent sacrifices a creature. If you control a Liliana planeswalker, each opponent also discards a card.
SVar:DiscardIf:DB$ Discard | Defined$ Player.Other | ConditionPresent$ Planeswalker.Liliana+YouCtrl | ConditionCompare$ GE1 | NumCards$ 1 | Mode$ TgtChoose
A:SP$ Sacrifice | Cost$ 1 B | Defined$ Opponent | SacValid$ Creature | SubAbility$ DiscardIf | SpellDescription$ Each opponent sacrifices a creature. If you control a Liliana planeswalker, each opponent also discards a card.
SVar:DiscardIf:DB$ Discard | Defined$ Opponent | ConditionPresent$ Planeswalker.Liliana+YouCtrl | ConditionCompare$ GE1 | NumCards$ 1 | Mode$ TgtChoose
Oracle:Each opponent sacrifices a creature. If you control a Liliana planeswalker, each opponent also discards a card.
\ No newline at end of file
Name:Bazaar Trademage
ManaCost:2 U
Types:Creature Human Wizard
K:Flying
PT:3/4
T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigDraw | TriggerDescription$ When CARDNAME enters the battlefield, draw two cards, then discard three cards.
SVar:TrigDraw:DB$ Draw | NumCards$ 2 | SpellDescription$ Draw two cards, then discard three cards. | SubAbility$ DBDiscard
SVar:DBDiscard:DB$Discard | Defined$ You | NumCards$ 3 | Mode$ TgtChoose
AI:RemoveDeck:All
Oracle:Flying \nWhen Bazaar Trademage enters the battlefield, draw two cards, then discard three cards.
\ No newline at end of file
Name:Collected Conjuring
ManaCost:2 U R
Types:Sorcery
A:SP$ Mill | Cost$ 2 U R | Defined$ You | NumCards$ 6 | Origin$ Library | Destination$ Exile | RememberMilled$ True | SubAbility$ DBPlay | SpellDescription$ Exile the top six cards of your library. You may cast up to two sorcery cards with converted mana cost 3 or less from among them without paying their mana cost. Put the exiled cards not cast this way on the bottom of your library in a random order.
SVar:DBPlay:DB$ Play | Valid$ Sorcery.cmcLE3+IsRemembered+YouOwn | ValidZone$ Exile | Amount$ 2 | Controller$ You | WithoutManaCost$ True | Optional$ True | SubAbility$ DBLibrary
SVar:DBLibrary:DB$ ChangeZoneAll | Origin$ Exile | Destination$ Library | LibraryPosition$ -1 | ChangeType$ Card.IsRemembered+YouOwn | RandomOrder$ True | SubAbility$ DBCleanup
SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True
Oracle:Exile the top six cards of your library. You may cast up to two sorcery cards with converted mana cost 3 or less from among them without paying their mana cost. Put the exiled cards not cast this way on the bottom of your library in a random order.
\ No newline at end of file
Name:Feaster of Fools
ManaCost:4 B B
Types:Creature Demon
PT:3/3
K:Convoke
K:Flying
K:Devour:2
Oracle:Convoke (Your creatures can help cast this spell. Each creature you tap while casting this spells pays for 1 or one mana of that creature's color.)\nFlying\nDevour 2 (As this enters the battlefield, you may sacrifice any number of creatures. This creature entersthe battlefield with twice that many +1/+1 counters on it.)
......@@ -2,6 +2,6 @@ Name:Fists of Flame
ManaCost:1 R
Types:Instant
A:SP$ Draw | Cost$ 1 R | NumCards$ 1 | SubAbility$ DBPump | SpellDescription$ Draw a card. Until end of turn, target creature gains trample and gets +1/+0 for each card you've drawn this turn.
SVar:DBPump:DB$Pump | Defined$ Targeted | NumAtt$ +X | References$ X
SVar:DBPump:DB$ Pump | ValidTgts$ Creature | KW$ Trample | NumAtt$ +X | References$ X
SVar:X:Count$YouDrewThisTurn
Oracle:Draw a card. Until end of turn, target creature gains trample and gets +1/+0 for each card you've drawn this turn.
......@@ -4,4 +4,5 @@ Types:Creature Unicorn
PT:2/2
T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Creature.YouCtrl+Other | TriggerZones$ Battlefield | Execute$ TrigPutCounter | TriggerDescription$ Whenever another creature enters the battlefield under your control, put a +1/+1 counter on that creature.
SVar:TrigPutCounter:DB$PutCounter | Defined$ TriggeredCardLKICopy | CounterType$ P1P1 | CounterNum$ 1
DeckHas:Ability$Counters
Oracle:Whenever another creature enters the battlefield under your control, put a +1/+1 counter on that creature.
\ No newline at end of file
Name:Mother Bear
ManaCost:1 G
Types:Creature Bear
PT:2/2
A:AB$ Token | Cost$ 3 G G ExileFromGrave<1/CARDNAME> | ActivationZone$ Graveyard | SorcerySpeed$ True | TokenAmount$ 2 | TokenScript$ g_2_2_bear | TokenOwner$ You | LegacyImage$ g 2 2 bear mh1 | SpellDescription$ Create two 2/2 green Bear creature tokens. Activate this ability only any time you could cast a sorcery.
DeckHas:Ability$Token
Oracle:{3}{G}{G}, Exile Mother Bear from your graveyard: Create two 2/2 green Bear creature tokens. Activate this ability only any time you could cast a sorcery.
\ No newline at end of file
Name:Mox Tantalite
ManaCost:no cost
Types:Artifact
K:Suspend:3:0
A:AB$ Mana | Cost$ T | Produced$ Any | SpellDescription$ Add one mana of any color.
Oracle:Suspend 3 - 0 (Rather than cast this card from your hand, pay 0 and exile it with three time counters on it. At the beginning of your upkeep, remove a time counter. When the last is removed, cast it without paying its mana cost.) \n{T}: Add one mana of any color.
\ No newline at end of file
Name:Prismatic Vista
ManaCost: no cost
ManaCost:no cost
Types:Land
A:AB$ ChangeZone | Cost$ T PayLife<1> Sac<1/CARDNAME> | Origin$ Library | Destination$ Battlefield | ChangeType$ Land.Basic | ChangeNum$ 1 | SpellDescription$ Search your library for a basic land card, put it onto the battlefield, then shuffle your library.
Oracle:{T}, Pay 1 life, Sacrifice Prismatic View: Search your library for a basic land card, put it onto the battlefield, then shuffle your library.
......@@ -10,4 +10,4 @@ SVar:X:Remembered$Valid Card.nonLand
SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True
A:AB$ Token | Cost$ 3 R R ExileFromGrave<1/CARDNAME> | ActivationZone$ Graveyard | TokenAmount$ 2 | TokenScript$ r_1_1_elemental | TokenOwner$ You | LegacyImage$ r 1 1 elemental mh1 | SpellDescription$ Create two 1/1 red Elemental creature tokens.
SVar:AIPreference:ExileFromGraveCost$Card.Self
Oracle:When Seasoned Pyromancer enters the battlefield, discard two cards, then draw two cards. For each nonland card discarded this way, create a 1/1 red Elemental creature token.\n{3}{R}{R}, Exile Seasoned Pyromancer from your graveyard: Create two 1/1 red Elemental creature tokens.
\ No newline at end of file
Oracle:When Seasoned Pyromancer enters the battlefield, discard two cards, then draw two cards. For each nonland card discarded this way, create a 1/1 red Elemental creature token.\n{3}{R}{R}, Exile Seasoned Pyromancer from your graveyard: Create two 1/1 red Elemental creature tokens.
Name:Umezawa's Charm
ManaCost:1 B
Types:Instant
A:SP$ Charm | Cost$ 1 B | Choices$ CharmPump,CharmCurse,CharmLife | Defined$ You
SVar:CharmPump:DB$ Pump | ValidTgts$ Creature | TgtPrompt$ Select target creature | NumAtt$ +2 | NumDef$ +2 | SpellDescription$ Target creature gets +2/+2 until end of turn.
SVar:CharmCurse:DB$ Pump | ValidTgts$ Creature | TgtPrompt$ Select target creature | NumAtt$ -1 | NumDef$ -1 | IsCurse$ True | SpellDescription$ Target creature gets -1/-1 until end of turn.
SVar:CharmLife:DB$ GainLife | LifeAmount$ 2 | SpellDescription$ You gain 2 life.
DeckHas:Ability$LifeGain
Oracle:Choose one -\nTarget creature gets +2/+2 until end of turn.\nTarget creature gets -1/-1 until end of turn.\nYou gain 2 life.
Name:Urza, Lord High Artificer
ManaCost:2 U U
Types:Legendary Creature Human Artificer
PT:1/4
T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigUrzaConstruct | TriggerDescription$ When CARDNAME enters the battlefield, create a 0/0 colorless Construct artifact creature token with "This creature gets +1/+1 for each artifact you control."
SVar:TrigUrzaConstruct:DB$ Token | TokenScript$ c_0_0_a_construct_total_artifacts | TokenOwner$ You | LegacyImage$ c 0 0 a construct total artifacts mh1
A:AB$ Mana | Cost$ tapXType<1/Artifact> | Produced$ U | SpellDescription$ Add {U}.
A:AB$ Shuffle | Cost$ 5 | Defined$ You | AILogic$ OwnMain2 | SubAbility$ DBMill | SpellDescription$ Shuffle your library, then exile the top card. Until end of turn, you may play that card without paying its mana cost.
SVar:DBMill:DB$ Mill | Defined$ You | NumCards$ 1 | Destination$ Exile | RememberMilled$ True | SubAbility$ DBEffect
SVar:DBEffect:DB$ Effect | RememberObjects$ RememberedCard | StaticAbilities$ DBPlay | SubAbility$ DBCleanup | ExileOnMoved$ Exile
SVar:DBPlay:Mode$ Continuous | MayPlay$ True | MayPlayWithoutManaCost$ True | EffectZone$ Command | Affected$ Card.IsRemembered | AffectedZone$ Exile | Description$ You may play the exiled card without paying its mana cost.
SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True
DeckHints:Type$Artifact
DeckHas:Ability$Token
Oracle:When Urza, Lord High Artificer enters the battlefield, create a 0/0 colorless Construct artifact creature token with "This creature gets +1/+1 for each artifact you control."\nTap an untapped artifact you control: Add {U}.\n{5}: Shuffle your library, then exile the top card. Until end of turn, you may play that card without paying its mana cost.
This diff is collapsed.
......@@ -4,6 +4,7 @@ splash.loading.examining-cards = Loading cards, examining folder
splash.loading.cards-folders = Loading cards from folders
splash.loading.cards-archive = Loading cards from archive
splash.loading.decks = Loading decks...
splash.loading.processingimagesprites=Processing image sprites
#VSubmenuPreferences.java
Preferences = Preferences
btnReset = Reset to Default Settings
......@@ -451,4 +452,26 @@ lblradBalanced=A "Balanced" distribution will provide a roughly equal number of
lblradRandom=A "True Random" distribution will be almost entirely randomly selected. This ignores any color selections.
lblradSurpriseMe=This is the same as a "Balanced" distribution, except the colors picked will be random and you will not be told what they are.
lblradBoosters=This ignores all color settings and instead generates a card pool out of a specified number of booster packs.
lblcbxArtifacts=When selected, artifacts will be included in your pool regardless of color selections. This mimics the old card pool behavior.
\ No newline at end of file
lblcbxArtifacts=When selected, artifacts will be included in your pool regardless of color selections. This mimics the old card pool behavior.
#VSubmenuChallenges.java
lblQuestChallenges=Quest Challenges
htmlLaunchZeppelin=<html>Launch<br>Zeppelin</html>
lblQuestModeChallenges=Quest Mode: Challenges
lblWhichChallenge=Which challenge will you attempt?
#VSubmenuQuestDraft.java
lblTournaments=Tournaments
lblQuestModeDraftTournament=Quest Mode: Draft Tournament
lblSelectaTournament=Select a tournament to join
lblNoTournaments=There are no tournaments available at this time.
btnEditDeck=Edit Deck
btnLeaveTournament=Leave Tournament
btnSpendToken=Spend Token
btnStartMatchSmall=Start Next Match
lblUndetermined=Undetermined
btnSpendTokenTT=Creates a new tournament that can be played immediately.
#VSubmenuQuestDecks.java
lblQuestDecks=Quest Decks
lblQuestDesc1=In Quest mode, you build a deck from a limited inventory.
lblQuestDesc2=Build and enhance decks from the cards in your quest inventory as it grows.
lblQuestDesc3=Then, switch to the Duels or Challenges submenu to play against AI opponents and unlock more cards.
lblBuildaNewDeck=Build a New Deck
\ No newline at end of file
......@@ -4,6 +4,7 @@ splash.loading.examining-cards=Cargando cartas, examinando carpeta
splash.loading.cards-folders=Cargando cartas de carpetas
splash.loading.cards-archive=Cargando cartas del archivo
splash.loading.decks=Cargando Mazos...
splash.loading.processingimagesprites=Procesando imágenes de cartas
#VSubmenuPreferences.java
Preferences=Preferencias
btnReset=Restablecer la configuración predeterminada
......@@ -452,3 +453,25 @@ lblradRandom=Una distribución "Aleatorio real" se seleccionará casi completame
lblradSurpriseMe=Esto es lo mismo que una distribución "equilibrada", excepto que los colores seleccionados serán aleatorios y no se le dirá qué son.
lblradBoosters=Esto ignora todas las configuraciones de color y en su lugar genera un conjunto de cartas de un número específico de sobres.
lblcbxArtifacts=Cuando se seleccione, los artefactos se incluirán en su grupo independientemente de las selecciones de color. Esto imita el antiguo comportamiento del conjunto de cartas.
#VSubmenuChallenges.java
lblQuestChallenges=Desafíos de la Aventura
htmlLaunchZeppelin=<html>Lanzar<br>Zeppelin</html>
lblQuestModeChallenges=Modo Aventura: Desafíos
lblWhichChallenge=¿Qué desafío vas a intentar?
#VSubmenuQuestDraft.java
lblTournaments=Torneos
lblQuestModeDraftTournament=Modo Aventura: Torneo de Draft
lblSelectaTournament=Seleccione un torneo para unirse
lblNoTournaments=No hay torneos disponibles en este momento.
btnEditDeck=Editar Mazo
btnLeaveTournament=Dejar el torneo
btnSpendToken=Gastar Token
btnStartMatchSmall=Comenzar Siguiente Partida
lblUndetermined=Sin determinar
btnSpendTokenTT=Crea un nuevo torneo que se puede jugar de inmediato.
#VSubmenuQuestDecks.java
lblQuestDecks=Mazos de la Aventura
lblQuestDesc1=En el modo Aventura, construyes un mazo a partir de un inventario limitado.
lblQuestDesc2=Construye y mejora mazos con las cartas de tu inventario de misiones a medida que crece.
lblQuestDesc3=Luego, cambia al submenú Duelos o Desafíos para jugar contra oponentes de la IA y desbloquear más cartas.
lblBuildaNewDeck=Construir un Nuevo Mazo
\ No newline at end of file