Merge remote-tracking branch 'remotes/core/master' into newBranch

This commit is contained in:
Anthony Calosa
2019-09-25 12:26:10 +08:00
13 changed files with 1066 additions and 245 deletions

View File

@@ -190,9 +190,11 @@ public abstract class VCardDisplayArea extends VDisplayArea implements ActivateH
@Override @Override
public void setSelectedIndex(int index) { public void setSelectedIndex(int index) {
//just scroll card into view //just scroll card into view
if (index < orderedCards.size()) {
final CardAreaPanel cardPanel = CardAreaPanel.get(orderedCards.get(index)); final CardAreaPanel cardPanel = CardAreaPanel.get(orderedCards.get(index));
scrollIntoView(cardPanel); scrollIntoView(cardPanel);
} }
}
@Override @Override
public void activate(int index) { public void activate(int index) {

View File

@@ -8,4 +8,4 @@ T:Mode$ LifeGained | ValidPlayer$ You | TriggerZones$ Battlefield | Execute$ Tri
SVar:TrigPump:DB$Pump | Defined$ Self | NumAtt$ +1 | NumDef$ +1 SVar:TrigPump:DB$Pump | Defined$ Self | NumAtt$ +1 | NumDef$ +1
DeckHints:Ability$LifeGain DeckHints:Ability$LifeGain
SVar:Picture:http://www.wizards.com/global/images/magic/general/malakir_familiar.jpg SVar:Picture:http://www.wizards.com/global/images/magic/general/malakir_familiar.jpg
Oracle:Flying, deahtouch\nWhenever you gain life, Malakir Familiar gets +1/+1 until end of turn. Oracle:Flying, deathtouch\nWhenever you gain life, Malakir Familiar gets +1/+1 until end of turn.

View File

@@ -2,8 +2,8 @@ Name:Belle of the Brawl
ManaCost:2 B ManaCost:2 B
Types:Creature Human Knight Types:Creature Human Knight
PT:3/2 PT:3/2
K:Menance K:Menace
T:Mode$ Attacks | ValidCard$ Card.Self | Execute$ TrigPumpAll | TriggerDescription$ Whenever CARDNAME attacks, other Knights you control get +1/+0 until end of turn. T:Mode$ Attacks | ValidCard$ Card.Self | Execute$ TrigPumpAll | TriggerDescription$ Whenever CARDNAME attacks, other Knights you control get +1/+0 until end of turn.
SVar:TrigPumpAll:DB$ PumpAll | ValidCards$ Knight.YouCtrl+Other | NumAtt$ 1 SVar:TrigPumpAll:DB$ PumpAll | ValidCards$ Knight.YouCtrl+Other | NumAtt$ 1
DeckHints:Type$Knight DeckHints:Type$Knight
Oracle:Menance\nWhenever Belle of the Brawl attacks, other Knights you control get +1/+0 until end of turn. Oracle:Menace\nWhenever Belle of the Brawl attacks, other Knights you control get +1/+0 until end of turn.

View File

@@ -0,0 +1,543 @@
[metadata]
Name=MTGO Grixis Cube September 2019 (540 cards)
[main]
Abbot of Keral Keep|ORI
Abrade|HOU
Academy Ruins|MMA
Agent of Treachery|M20
All Is Dust|UMA
Aminatou's Augury|C18
Ancestral Vision|IMA
Ancient Tomb|UMA
Anger of the Gods|IMA
Angrath's Rampage|WAR
Animate Dead|EMA
Arc Trail|SOM
Arcane Artisan|BBD
Arguel's Blood Fast|XLN
Aria of Flame|MH1
Ash Zealot|RTR
Augur of Bolas|MM3
Avalanche Riders|TSB
Badlands|VMA
Baleful Strix|EMA
Baral, Chief of Compliance|AER
Basalt Monolith|C15
Batterskull|NPH
Bedevil|RNA
Bedlam Reveler|EMN
Bitterblossom|UMA
Blackcleave Cliffs|SOM
Blast Zone|WAR
Blightsteel Colossus|MBS
Blink of an Eye|DOM
Blinkmoth Nexus|MM2
Blood Artist|EMA
Blood Crypt|RTR
Bloodghast|IMA
Bloodsoaked Champion|KTK
Bloodstained Mire|KTK
Bolas's Citadel|WAR
Bomat Courier|KLD
Braids, Cabal Minion|EMA
Brain Freeze|VMA
Brain Maggot|JOU
Brainstorm|A25
Buried Alive|UMA
Burning of Xinye|VMA
Burst Lightning|MM2
Cabal Ritual|VMA
Candelabra of Tawnos|AQ
Canyon Slough|AKH
Careful Study|ODY
Carrion Feeder|MH1
Cascade Bluffs|A25
Cast Down|DOM
Cathartic Reunion|KLD
Chain Lightning|EMA
Chainer's Edict|UMA
Chains of Mephistopheles|LG
Champion of Wits|HOU
Chandra, Acolyte of Flame|M20
Chandra, Awakened Inferno|M20
Chandra, Fire of Kaladesh|ORI
Chandra, Flamecaller|OGW
Chandra, Torch of Defiance|KLD
Charcoal Diamond|C14
Chart a Course|XLN
Chromatic Lantern|GRN
Chrome Mox|EMA
City of Traitors|TPR
Coalition Relic|A25
Coercive Portal|VMA
Coldsteel Heart|CSP
Collective Brutality|EMN
Commence the Endgame|WAR
Commit // Memory|AKH
Compulsive Research|MM3
Consecrated Sphinx|IMA
Corpse Dance|TPR
Counterspell|A25
Countersquall|UMA
Creeping Tar Pit|UMA
Crucible of Worlds|M19
Cruel Ultimatum|MM3
Crumbling Necropolis|MM3
Cryptbreaker|EMN
Cryptic Command|IMA
Crystal Vein|C14
Cut // Ribbons|AKH
Dack Fayden|EMA
Dack's Duplicate|VMA
Damnation|MM3
Daretti, Ingenious Iconoclast|CN2
Daretti, Scrap Savant|C14
Dark Confidant|MM2
Dark Petition|ORI
Dark Ritual|A25
Darkslick Shores|SOM
Darksteel Citadel|MM2
Darksteel Ingot|M14
Davriel, Rogue Shadowmage|WAR
Daze|EMA
Defense Grid|AER
Defile|MH1
Delver of Secrets|ISD
Demonic Tutor|UMA
Desperate Ritual|UMA
Devastating Summons|ROE
Dig Through Time|UMA
Dimir Signet|MM3
Dire Fleet Daredevil|RIX
Disallow|AER
Discovery // Dispersal|GRN
Dismember|MM2
Doom Whisperer|GRN
Dragonlord Silumgar|DTK
Dragonskull Summit|XLN
Drawn from Dreams|M20
Dread Wanderer|AKH
Dreadbore|RTR
Dreadhorde Arcanist|WAR
Dreadship Reef|COM
Dream Halls|TPR
Dreamstealer|HOU
Drill Bit|RNA
Drowned Catacomb|XLN
Duplicant|EMA
Duress|M19
Earthshaker Khenra|HOU
Echo of Eons|MH1
Eidolon of the Great Revel|A25
Eldrazi Obligator|OGW
Eldrazi Temple|MM2
Electrodominance|RNA
Electrolyze|IMA
Empty the Warrens|MMA
Emrakul, the Aeons Torn|UMA
Emrakul, the Promised End|EMN
Enclave Cryptologist|ROE
Endbringer|OGW
Entomb|UMA
Epochrasite|C14
Erebos, God of the Dead|THS
Everflowing Chalice|MM2
Exhume|USG
Expansion // Explosion|GRN
Experimental Frenzy|GRN
Fact or Fiction|EMA
Faithless Looting|UMA
Falkenrath Aristocrat|MM3
Falkenrath Gorger|SOI
Fatal Push|AER
Fellwar Stone|C15
Fetid Pools|AKH
Fiery Confluence|C15
Fiery Islet|MH1
Figure of Destiny|MMA
Filigree Familiar|KLD
Finale of Eternity|WAR
Finale of Promise|WAR
Finale of Revelation|WAR
Fire // Ice|UMA
Fire Diamond|C14
Fireblast|VMA
Firebolt|EMA
Firemind Vessel|WAR
Flame Slash|ROE
Flusterstorm|VMA
Forbid|TPR
Force of Negation|MH1
Force of Will|EMA
Force Spike|DDJ
Forked Bolt|ROE
Frantic Search|UMA
Frost Titan|M12
Fulminator Mage|UMA
Future Sight|EMA
Gatekeeper of Malakir|ZEN
Geralf's Messenger|DKA
Gifted Aetherborn|AER
Gilded Lotus|DOM
Gitaxian Probe|NPH
Glen Elendra Archmage|UMA
Glint-Nest Crane|KLD
Glorybringer|AKH
Go for the Throat|MBS
Goblin Bombardment|DDN
Goblin Bushwhacker|ZEN
Goblin Chainwhirler|DOM
Goblin Cratermaker|GRN
Goblin Dark-Dwellers|OGW
Goblin Electromancer|GRN
Goblin Engineer|MH1
Goblin Guide|MM3
Goblin Rabblemaster|M15
Goblin Ruinblaster|ZEN
Goblin Welder|C14
God-Eternal Kefnet|WAR
Gonti, Lord of Luxury|KLD
Goryo's Vengeance|UMA
Grand Architect|SOM
Grave Titan|M12
Gravecrawler|DKA
Graven Cairns|IMA
Gray Merchant of Asphodel|THS
Great Furnace|C14
Greater Gargadon|MMA
Grim Lavamancer|M12
Grim Monolith|UL
Griselbrand|MM3
Guardian Idol|IMA
Gutterbones|RNA
Hangarback Walker|ORI
Harbinger of the Tides|ORI
Hazoret the Fervent|AKH
Heart of Kiran|AER
Hedron Archive|BFZ
Hellrider|MM3
Hero's Downfall|THS
High Tide|VMA
Hordeling Outburst|A25
Hostage Taker|XLN
Hour of Devastation|HOU
Hydroblast|EMA
Hymn to Tourach|EMA
Hypnotic Specter|M10
Ichor Wellspring|C14
Ilharg, the Raze-Boar|WAR
Imperial Seal|P3
Impulse|VIS
Inferno Titan|M12
Inkwell Leviathan|EMA
Innocent Blood|EMA
Inquisition of Kozilek|MM3
Intuition|TPR
Ionize|GRN
Izzet Charm|MM3
Izzet Signet|MM3
Jace Beleren|M11
Jace, Architect of Thought|RTR
Jace, the Mind Sculptor|VMA
Jace, Vryn's Prodigy|ORI
Judith, the Scourge Diva|RNA
Kalitas, Traitor of Ghet|OGW
Kari Zev, Skyship Raider|AER
Karn Liberated|UMA
Karn, Scion of Urza|DOM
Keranos, God of Storms|JOU
Kess, Dissident Mage|MH1
Kitesail Freebooter|XLN
Knight of the Ebon Legion|M20
Kolaghan's Command|DTK
Koth of the Hammer|SOM
Kozilek, Butcher of Truth|UMA
Kozilek's Return|OGW
Kuldotha Forgemaster|SOM
Languish|ORI
Lashwrithe|C14
Lavaclaw Reaches|UMA
Legion Warboss|GRN
Light Up the Stage|RNA
Lightning Bolt|A25
Lightning Greaves|MRD
Lightning Mauler|AVR
Liliana of the Veil|UMA
Liliana, Death's Majesty|AKH
Liliana, Dreadhorde General|WAR
Liliana, Heretical Healer|ORI
Liliana, the Last Hope|EMN
Liliana's Triumph|WAR
Lion's Eye Diamond|VMA
Lodestone Golem|MM2
Looter il-Kor|TSP
Lotus Bloom|MMA
Lotus Petal|TPR
Magma Jet|MM3
Magus of the Wheel|A25
Magus of the Will|C16
Makeshift Mannequin|LRW
Mana Flare|4E
Mana Leak|IMA
Manamorphose|MMA
Manic Vandal|M12
Manifold Key|M20
Man-o'-War|A25
Massacre Wurm|MBS
Master of Etherium|ALA
Master of Waves|THS
Matter Reshaper|OGW
Memory Jar|VMA
Memory Lapse|EMA
Mesmeric Fiend|A25
Metalworker|UD
Meteor Golem|M20
Midnight Reaper|GRN
Mind Stone|IMA
Mind's Desire|VMA
Mindslaver|SOM
Miscalculation|ULG
Mishra's Factory|A25
Mission Briefing|GRN
Mizzium Mortars|MM3
Mizzix's Mastery|C15
Mogg War Marshal|EMA
Molten Rain|MM3
Molten Slagheap|C13
Moment of Craving|RIX
Monastery Swiftspear|IMA
Mox Diamond|TPR
Mox Opal|MM2
Mu Yanling, Sky Dancer|M20
Mulldrifter|MM2
Mutavault|M14
Myr Battlesphere|SOM
Myriad Landscape|A25
Mystic Confluence|C15
Mystic Forge|M20
Mystical Tutor|EMA
Narset, Parter of Veils|WAR
Necromancy|VIS
Negate|RIX
Never // Return|AKH
Nicol Bolas, Dragon-God|WAR
Nicol Bolas, Planeswalker|M13
Nicol Bolas, the Ravager|M19
Night's Whisper|EMA
Nightveil Specter|GTC
Niv-Mizzet, Parun|GRN
Notion Thief|DGM
Noxious Gearhulk|KLD
Nykthos, Shrine to Nyx|THS
Oona's Prowler|LRW
Ophiomancer|C13
Opt|DOM
Overmaster|TO
Pack Rat|RTR
Painful Truths|BFZ
Palladium Myr|IMA
Peat Bog|MM
Pentad Prism|HOP
Phantasmal Image|MM3
Phyrexian Arena|C15
Phyrexian Metamorph|NPH
Phyrexian Obliterator|A25
Phyrexian Revoker|M15
Pia and Kiran Nalaar|ORI
Pia Nalaar|KLD
Pilgrim's Eye|EMA
Pillage|A25
Pithing Needle|RTR
Plaguecrafter|GRN
Polluted Delta|KTK
Ponder|M12
Precursor Golem|MM2
Preordain|M11
Priest of Forgotten Gods|RNA
Prismatic Lens|UMA
Prismatic Vista|MH1
Prophetic Bolt|VMA
Pteramander|RNA
Putrid Imp|VMA
Pyretic Ritual|M11
Pyroblast|EMA
Pyroclasm|A25
Quicken|M14
Rain of Filth|US
Rakdos Cackler|RTR
Rakdos Signet|MM3
Rakdos's Return|RTR
Ral Zarek|DGM
Ral, Storm Conduit|WAR
Ral's Outburst|WAR
Ramunap Ruins|HOU
Ravenous Chupacabra|A25
Reality Smasher|OGW
Reanimate|UMA
Reckless Bushwhacker|OGW
Recurring Nightmare|TPR
Rekindling Phoenix|RIX
Release the Gremlins|AER
Relentless Dead|SOI
Relic of Progenitus|EMA
Remand|MM2
Repeal|IMA
Riftwing Cloudskate|MMA
Rishadan Port|A25
Risk Factor|GRN
Rite of Flame|CS
Rix Maadi Reveler|RNA
Ruinous Path|BFZ
Runaway Steam-Kin|GRN
Saheeli, Sublime Artificer|WAR
Sandstone Needle|MM
Saprazzan Skerry|MM
Sarkhan the Masterless|WAR
Scalding Tarn|MM3
Scavenger Grounds|HOU
Scheming Symmetry|M20
Scrapheap Scrounger|KLD
Scroll Rack|CM1
Search for Azcanta|XLN
Seasoned Pyromancer|MH1
Seat of the Synod|HOP
Seething Song|DDG
Sensei's Divining Top|EMA
Sentinel Tower|BBD
Serum Visions|MM3
Shallow Grave|MI
Shelldock Isle|LRW
Sheoldred, Whispering One|IMA
Shivan Reef|ORI
Show and Tell|USG
Shrine of Burning Rage|NPH
Siege-Gang Commander|DOM
Silumgar's Command|DTK
Simian Spirit Guide|A25
Sire of Insanity|DGM
Skullclamp|VMA
Sky Diamond|C14
Slavering Nulls|WWK
Sling-Gang Lieutenant|MH1
Smokestack|VMA
Smoldering Marsh|BFZ
Smuggler's Copter|KLD
Snapcaster Mage|UMA
Sneak Attack|EMA
Solemn Simulacrum|M12
Sorcerous Spyglass|XLN
Spell Pierce|MM3
Spellseeker|BBD
Spellskite|MM2
Spire of Industry|AER
Spirebluff Canal|KLD
Staff of Nin|M13
Star Compass|IMA
Steam Vents|GRN
Steel Hellkite|SOM
Stoke the Flames|M15
Stormblood Berserker|M12
Stratus Dancer|DTK
Strip Mine|VMA
Stromkirk Noble|ISD
Sulfur Falls|DOM
Sulfuric Vortex|EMA
Sulfurous Springs|10E
Sundering Titan|A25
Sunken Hollow|BFZ
Sunken Ruins|SHM
Supreme Will|HOU
Sweltering Suns|AKH
Sword of Fire and Ice|MMA
Sword of Sinew and Steel|MH1
Sygg, River Cutthroat|SHM
Talisman of Creativity|MH1
Talisman of Dominance|MR
Talisman of Indulgence|MR
Talrand, Sky Summoner|M13
Tamiyo, the Moon Sage|AVR
Tangle Wire|NMS
Tectonic Edge|C14
Teferi, Mage of Zhalfir|IMA
Tempest Djinn|DOM
Temple of Deceit|THS
Temple of Epiphany|M20
Temple of Malice|BNG
Tendrils of Agony|VMA
Terminate|MM3
Tezzeret the Seeker|MM2
Tezzeret, Agent of Bolas|MBS
Thassa, God of the Sea|THS
The Antiquities War|DOM
The Elderspell|WAR
The Eldest Reborn|DOM
The Scarab God|HOU
Theater of Horrors|RNA
Thief of Sanity|GRN
Thing in the Ice|SOI
Thirst for Knowledge|MMA
Thought Erasure|GRN
Thought Vessel|C15
Thought-Knot Seer|OGW
Thoughtseize|IMA
Thousand-Year Storm|GRN
Thran Dynamo|IMA
Through the Breach|UMA
Thundermaw Hellkite|IMA
Tidespout Tyrant|DIS
Time Spiral|US
Time Warp|TPR
Timetwister|VMA
To the Slaughter|SOI
Tolarian Academy|VMA
Torrential Gearhulk|KLD
Toxic Deluge|EMA
Trash for Treasure|MR
Treachery|UDS
Treasure Cruise|UMA
Treasure Map|XLN
Trinket Mage|SOM
True-Name Nemesis|C13
Turnabout|VMA
Tyrant's Scorn|WAR
Ugin, the Ineffable|WAR
Ugin, the Spirit Dragon|FRF
Ulamog, the Ceaseless Hunger|BFZ
Ultimate Price|DTK
Umezawa's Jitte|BOK
Underground River|10E
Underground Sea|VMA
Undermine|DDH
Upheaval|VMA
Urborg, Tomb of Yawgmoth|UMA
Urza, Lord High Artificer|MH1
Vampire Hexmage|CNS
Vampire Nighthawk|MM3
Vampiric Tutor|EMA
Vault of Whispers|HOP
Vedalken Shackles|MMA
Vendilion Clique|A25
Venser, Shaper Savant|MM3
Viashino Pyromancer|M19
Vilis, Broker of Blood|M20
Volcanic Island|VMA
Volrath's Stronghold|TPR
Vraska's Contempt|XLN
Walking Ballista|AER
Wandering Fumarole|OGW
Wasteland|EMA
Watery Grave|GRN
Wayfarer's Bauble|MM2
Wheel of Fortune|VMA
Whirler Rogue|ORI
Wildfire|MM2
Winter Orb|EMA
Worn Powerstone|EMA
Wretched Confluence|C15
Wurmcoil Engine|SOM
Yawgmoth, Thran Physician|MH1
Yawgmoth's Will|VMA
Young Pyromancer|UMA
Zealous Conscripts|MM3
Zulaport Cutthroat|A25
Zurgo Bellstriker|DTK

View File

@@ -0,0 +1,6 @@
Name:MTGO Grixis Cube September 2019 (540 cards)
DeckFile:MTGO Grixis Cube September 2019 (540 cards)
Singleton:True
Booster: 15 Any
NumPacks: 3

View File

@@ -373,17 +373,17 @@ btnBuildNewSealedDeck=Erstelle neues Sealed Deck
lblViewDeck=Zeige Deck lblViewDeck=Zeige Deck
lblRandomDeck=Zufälliges Deck lblRandomDeck=Zufälliges Deck
lblRandomColors=Zufällige Farben lblRandomColors=Zufällige Farben
lblMustSelectGenerateNewDeck=You must select something before you can generate a new deck. lblMustSelectGenerateNewDeck=Du mußt etwas auswählen, bevor du ein neues Deck erzeugst.
lblOK=OK lblOK=OK
lblCannotEditDuplicateCustomDeck=cannot be edited directly. Would you like to duplicate %s for editing as a custom user deck? lblCannotEditDuplicateCustomDeck=kann nicht geändert werden. Willst du %s kopieren, um es als eigenes Deck zu bearbeiten?
lblDuplicateDeck=Duplicate Deck? lblDuplicateDeck=Kopiere Deck?
lblDuplicate=Duplicate lblDuplicate=Kopieren
lblHowManyOpponents=How many opponents are you willing to face? lblHowManyOpponents=Mit wie vielen Gegner willst du es aufnehmen?
lblChooseAllowedDeckTypeOpponents=Choose allowed deck types for opponents lblChooseAllowedDeckTypeOpponents=Wähle die erlaubten Decktypen für die Gegner
lblSelectOpponentDeck=Select Opponent's Deck lblSelectOpponentDeck=Wähle das Deck des Gegners
lblGenerateNewDeck=Generate New Deck lblGenerateNewDeck=Erzeuge ein neues Deck
lblRandomTheme=Random Theme lblRandomTheme=Zufälliges Deck
lblTestDeck=Test Deck lblTestDeck=Teste Deck
#GameType.java #GameType.java
lblSealed=Sealed lblSealed=Sealed
lblDraft=Draft lblDraft=Draft
@@ -981,98 +981,160 @@ lblCollection=Sammlung
lblCommanders=Komandeure lblCommanders=Komandeure
lblOathbreakers=Eidbrecher lblOathbreakers=Eidbrecher
#Forge.java #Forge.java
lblLoadingFonts=Lade Schriften... lblLoadingFonts=Lade Schriftarten...
lblLoadingCardTranslations=Lade Kartenübersetzungen... lblLoadingCardTranslations=Lade Kartenbersetzungen...
lblFinishingStartup=Abschliessen... lblFinishingStartup=Letzte Vorbereitungen...
#LobbyScreen.java #LobbyScreen.java
lblMore=More... lblMore=Mehr...
lblLoadingNewGame=Loading new game... lblLoadingNewGame=Lade neues Spiel...
lblSelectVariants=Select Variants lblSelectVariants=Wähle Varianten
msgSelectAdeckBeforeReadying=Select a deck before readying! msgSelectAdeckBeforeReadying=Wähle vorher ein Deck!
#PlayerPanel #PlayerPanel
lblLoadingDeck=Loading Deck... lblLoadingDeck=Lade Deck...
lblSchemeDeckRandomGenerated=Scheme Deck: Random Generated Deck lblSchemeDeckRandomGenerated=Verschwörungsdeck: Zufällig erzeugtes Deck
lblCommanderDeckRandomGenerated=Commander Deck: Random Generated Deck lblCommanderDeckRandomGenerated=Commander-Deck: Zufällig erzeugtes Deck
lblOathbreakerDeckRandomGenerated=Oathbreaker Deck: Random Generated Deck lblOathbreakerDeckRandomGenerated=Eidbrecher-Deck: Zufällig erzeugtes Deck
lblTinyLeadersDeckRandomGenerated=Tiny Leaders Deck: Random Generated Deck lblTinyLeadersDeckRandomGenerated=Kleine-Anführer-Deck: Zufällig erzeugtes Deck
lblBrawlDeckRandomGenerated=Brawl Deck: Random Generated Deck lblBrawlDeckRandomGenerated=Brawl-Deck: Zufällig erzeugtes Deck
lblPlanarDeckRandomGenerated=Planar Deck: Random Generated Deck lblPlanarDeckRandomGenerated=Welten-Deck: Zufällig erzeugtes Deck
lblVanguardAvatarRandom=Vanguard Avatar: Random lblVanguardAvatarRandom=Vanguard-Avatar: Zufällig
lblNotReady=Not Ready lblNotReady=Nicht fertig
lblNormal=Normal lblNormal=Normal
lblDevMode=Dev Mode lblDevMode=Entw.Modus
lblOathbreakerDeck=Oathbreaker Deck lblOathbreakerDeck=Eidbrecher-Deck
lblTinyLeadersDeck=Tiny Leaders Deck lblTinyLeadersDeck=Kleine-Anführer-Deck
lblBrawlDeck=Brawl Deck lblBrawlDeck=Brawl-Deck
lblSelectDeckFor=Select Deck for %s lblSelectDeckFor=Wähle ein Deck für %s
lblSelectCommanderDeckFor=Select Commander Deck for %s lblSelectCommanderDeckFor=Wähle ein Commander-Deck für %s
lblSelectOathbreakerDeckFor=Select Oathbreaker Deck for %s lblSelectOathbreakerDeckFor=Wähle ein Eidbrecher-Deck für %s
lblSelectTinyLeadersDeckFor=Select Tiny Leaders Deck for %s lblSelectTinyLeadersDeckFor=Wähle ein Kleine-Anführer-Deck für %s
lblSelectBrawlDeckFor=Select Brawl Deck for %s lblSelectBrawlDeckFor=Wähle ein Brawl-Deck für %s
lblSelectSchemeDeckFor=Select Scheme Deck for %s lblSelectSchemeDeckFor=Wähle ein Verschwörungsdeck für %s
lblSelectPlanarDeckFor=Select Planar Deck for %s lblSelectPlanarDeckFor=Wähle ein Welten-Deck für %s
lblSelectVanguardFor=Select Vanguard for %s lblSelectVanguardFor=Wähle einen Vanguard-Avatar für %s
lblMale=Male lblMale=Männlich
lblFemale=Female lblFemale=Weiblich
lblAny=Any lblAny=Alle
lblFantasy=Fantasy lblFantasy=Fantasy
lblGeneric=Generic lblGeneric=Divers
#MatchController #MatchController.java
lblChooseAbilityToPlay=Choose ability to play lblChooseAbilityToPlay=Wähle Fähigkeit
lblSelected=Selected lblSelected=Gewählt
#ItemManager #ItemManager.java
lblAdvancedSearch=Advanced Search lblAdvancedSearch=Erweiterte Suche
lblSort=Sort lblSort=Sortierung
lblResetFilters=Reset Filters lblResetFilters=Filter zurücksetzen
#AdvancedSearchFilter #AdvancedSearchFilter.java
lblEditExpression=Edit Expression lblEditExpression=Bearbeite Ausdruck
lblRemoveFilter=Remove Filter lblRemoveFilter=Entferne Filter
#CardZoom #CardZoom.java
lblSwipeUpTo=Swipe up to %s lblSwipeUpTo=Wische hoch für %s
lblSwipeDownDetailView=Swipe down to switch to detail view lblSwipeDownDetailView=Wische runter für Detailansicht
lblSwipeDownPictureView=Swipe down to switch to picture view lblSwipeDownPictureView=Wische runter für Bildansicht
#VGameMenu #VGameMenu.java
lblNoPlayerPriorityNoDeckListViewed=No player has priority at the moment, so deck list can't be viewed. lblNoPlayerPriorityNoDeckListViewed=Kein Spieler hat Prioriät, daher keine Decklistenanzeige möglich.
#FilesPage #FilesPage.java
lblFiles=Files lblFiles=Dateien
lblStorageLocations=Storage Locations lblStorageLocations=Speicherort
lblCardPicsLocation=Card Pics Location lblCardPicsLocation=Kartenbilder-Verz.
lblDecksLocation=Decks Location lblDecksLocation=Deck-Verz.
lblDataLocation=Data Location (e.g. Settings and Quests) lblDataLocation=Daten-Verz.(Einst.u.Quests)
lblImageCacheLocation=Image Cache Location lblImageCacheLocation=Bild-Zwischenspeicher-Verz.
lblRestartForgeMoveFilesNewLocation=You'll need to restart Forge for this change to take effect. Be sure to move any necessary files to the new location before you do. lblRestartForgeMoveFilesNewLocation=Forge muß neu gestartet werden. Bitte vorher sicherstellen, daß alle notwendigen Dateien sich am neuen Ort befinden.
lblRestartRequired=Restart Required lblRestartRequired=Neustart notwendig.
lblSelect=Select %s lblSelect=Wähle %s
#AddBasicLandsDialog #AddBasicLandsDialog.java
lblLandSet=Land Set lblLandSet=Länder aus Set
lblAddBasicLandsAutoSuggest=Add Basic Lands to %s\n(double-tap statistics to auto-suggest) lblAddBasicLandsAutoSuggest=Füge Standardländer zu %s hinzu.\n(Doppelklicke Statistik für Vorschlag)
lblAssortedArt=Assorted Art lblAssortedArt=Div. Versionen
lblCardArt=Card Art %d lblCardArt=Karte Vers.%d
lblNonLandCount=%d non-lands lblNonLandCount=%d Nichtländer
lblOldLandCount=%d lands lblOldLandCount=%d Länder
lblNewLandCount=%d added lands lblNewLandCount=%d hinzugefügte Länder
lblNewTotalCount=%d cards lblNewTotalCount=%d Karten
#FDeckImportDialog #FDeckImportDialog.java
lblImportLatestVersionCard=Import latest version of card lblImportLatestVersionCard=Importiere neueste Kartenversion
lblUseOnlySetsReleasedBefore=Use only sets released before: lblUseOnlySetsReleasedBefore=Nur Sets verwenden vor:
lblUseOnlyCoreAndExpansionSets=Use only core and expansion sets lblUseOnlyCoreAndExpansionSets=Nutze nur Haupt- u. Erweiterungssets
lblFollowingCardsCannotBeImported=The following cards cannot be imported due to misspelling, set restrictions, or not being in Forge yet: lblFollowingCardsCannotBeImported=Folgende Karten können nicht importiert werden, wegen Tippfehlern, Seteinschränkungen oder weil nicht in Forge:
lblImportRemainingCards=Import remaining cards? lblImportRemainingCards=Verbleibende Karteen importieren?
lblNoKnownCardsOnClipboard=No known cards found on clipboard.\n\nCopy the decklist to the clipboard, then reopen this dialog. lblNoKnownCardsOnClipboard=Keine Karten in der Zwischenablage gefunden.\n\nKopiere eine Deckliste in die Zwischenablage und versuche es erneut.
#FDeckViewer #FDeckViewer.java
lblDeckListCopiedClipboard=Deck list for '%s' copied to clipboard. lblDeckListCopiedClipboard=Deckliste von "%s" in Zwischenablage kopiert.
#FSideboardDialog #FSideboardDialog.java
lblUpdateMainFromSideboard=Update main deck from sideboard%s lblUpdateMainFromSideboard=Aktuallisiere %s aus dem Sideboard
#FVanguardChooser #FVanguardChooser.java
lblRandomVanguard=Random Vanguard lblRandomVanguard=Zufälliger Avatar
#FOptionPane #FOptionPane.java
lblYes=Yes lblYes=Ja
lblNo=No lblNo=Nein
#FSpinner #FSpinner.java
lblSelectANumber=Select a number lblSelectANumber=Wähle eine Zahl
#FTextField #FTextField.java
lblCut=Cut lblCut=Ausschneiden
lblCopy=Copy lblCopy=Kopieren
lblPaste=Paste lblPaste=Einfügen
#ListChooser #ListChooser.java
lblSearch=Search lblSearch=Suche
#InputBase.java
lblPriority=Priorität
lblTurn=Zug
lblPhase=Phase
lblEmpty=Empty
lbltoResolve=to Resolve.
lblStormCount=Storm Count
#PlayerControllerHuman.java
lblYouHaveWonTheCoinToss=%s, you have won the coin toss.
lblYouLostTheLastGame=%s, you lost the last game.
lblWouldYouLiketoPlayorDraw=Would you like to play or draw?
lblWhoWouldYouLiketoStartthisGame=Who would you like to start this game? (Click on the portrait.)
lblPlay=Play
lblDraw=Draw
lblTooFewCardsMainDeck=Too few cards in your main deck (minimum %s), please make modifications to your deck again.
lblTooManyCardsSideboard=Too many cards in your sideboard (maximum %s), please make modifications to your deck again.
lblAssignCombatDamageWerentBlocked=Do you want to assign its combat damage as though it weren't blocked?
lblChosenCards=Chosen Cards
lblAttacker=Attacker
lblTriggeredby=Triggered by
lblChooseWhichCardstoReveal=Choose Which Cards to Reveal
lblChooseCardsActivateOpeningHandandOrder=Choose cards to activate from opening hand and their order
lblActivateFirst=Activate first
lblChooseOptionalCosts=Choose optional Costs
lblOptionalCosts=Optional Costs
lblDoYouWanttoScry=Do you want to scry?
lblChooseCardstoSpliceonto=Choose cards to Splice onto
lblDoNextActioninSequence=Do Next Action in Sequence
lblPleaseDefineanActionSequenceFirst=Please define an action sequence first.
lblRememberActionSequence=Remember Action Sequence
lblYouMustHavePrioritytoUseThisFeature=You must have priority to use this feature.
lblNameTheCard=Name the card
lblWhichPlayerShouldRoll=Which player should roll?
lblChooseResult=Choose result
lblChosenCardNotPermanentorCantExistIndependentlyontheBattleground=The chosen card is not a permanent or can't exist independently on the battlefield.\nIf you'd like to cast a non-permanent spell, or if you'd like to cast a permanent spell and place it on stack, please use the Cast Spell/Play Land button.
lblError=Error
lblWinGame=Win Game
lblSetLifetoWhat=Set life to what?
lblSetLifeforWhichPlayer=Set life for which player
lblChoosePermanentstoTap=Choose permanents to tap
lblChoosePermanentstoUntap=Choose permanents to untap
lblWhichTypeofCounter=Which type of counter?
lblHowManyCounters=How many counters?
lblRemoveCountersFromWhichCard=Remove counters from which card?
lblAddCountersToWhichCard=Add counters to which card?
lblChooseaCard=Choose a card
lblNoPlayerPriorityDeckCantBeTutoredFrom=No player has priority at the moment, so their deck can't be tutored from.
lblNoPlayerPriorityGameStateCannotBeSetup=No player has priority at the moment, so game state cannot be setup.
lblErrorLoadingBattleSetupFile=Error loading battle setup file!
lblSelectCardstoAddtoYourDeck=Select cards to add to your deck
lblAddTheseToMyDeck=Add these to my deck
lblChooseaPile=Choose a pile
lblSelectOrderForSimultaneousAbilities=Select order for simultaneous abilities
lblReorderSimultaneousAbilities=Reorder simultaneous abilities
lblResolveFirst=Resolve first
lblMoveCardstoToporBbottomofLibrary=Move cards to top or bottom of library
lblSelectCardsToBeOutOnTheBottomOfYourLibrary=Select cards to be put on the bottom of your library
lblCardsToPutOnTheBottom=Cards to put on the bottom
lblArrangeCardsToBePutOnTopOfYourLibrary=Arrange cards to be put on top of your library
lblTopOfLibrary=Top of Library
lblSelectCardsToBePutIntoTheGraveyard=Select cards to be put into the graveyard
lblCardsToPutInTheGraveyard=Cards to put in the graveyard

View File

@@ -989,7 +989,7 @@ lblMore=More...
lblLoadingNewGame=Loading new game... lblLoadingNewGame=Loading new game...
lblSelectVariants=Select Variants lblSelectVariants=Select Variants
msgSelectAdeckBeforeReadying=Select a deck before readying! msgSelectAdeckBeforeReadying=Select a deck before readying!
#PlayerPanel #PlayerPanel.java
lblLoadingDeck=Loading Deck... lblLoadingDeck=Loading Deck...
lblSchemeDeckRandomGenerated=Scheme Deck: Random Generated Deck lblSchemeDeckRandomGenerated=Scheme Deck: Random Generated Deck
lblCommanderDeckRandomGenerated=Commander Deck: Random Generated Deck lblCommanderDeckRandomGenerated=Commander Deck: Random Generated Deck
@@ -1017,23 +1017,23 @@ lblFemale=Female
lblAny=Any lblAny=Any
lblFantasy=Fantasy lblFantasy=Fantasy
lblGeneric=Generic lblGeneric=Generic
#MatchController #MatchController.java
lblChooseAbilityToPlay=Choose ability to play lblChooseAbilityToPlay=Choose ability to play
lblSelected=Selected lblSelected=Selected
#ItemManager #ItemManager.java
lblAdvancedSearch=Advanced Search lblAdvancedSearch=Advanced Search
lblSort=Sort lblSort=Sort
lblResetFilters=Reset Filters lblResetFilters=Reset Filters
#AdvancedSearchFilter #AdvancedSearchFilter.java
lblEditExpression=Edit Expression lblEditExpression=Edit Expression
lblRemoveFilter=Remove Filter lblRemoveFilter=Remove Filter
#CardZoom #CardZoom.java
lblSwipeUpTo=Swipe up to %s lblSwipeUpTo=Swipe up to %s
lblSwipeDownDetailView=Swipe down to switch to detail view lblSwipeDownDetailView=Swipe down to switch to detail view
lblSwipeDownPictureView=Swipe down to switch to picture view lblSwipeDownPictureView=Swipe down to switch to picture view
#VGameMenu #VGameMenu.java
lblNoPlayerPriorityNoDeckListViewed=No player has priority at the moment, so deck list can't be viewed. lblNoPlayerPriorityNoDeckListViewed=No player has priority at the moment, so deck list can't be viewed.
#FilesPage #FilesPage.java
lblFiles=Files lblFiles=Files
lblStorageLocations=Storage Locations lblStorageLocations=Storage Locations
lblCardPicsLocation=Card Pics Location lblCardPicsLocation=Card Pics Location
@@ -1043,7 +1043,7 @@ lblImageCacheLocation=Image Cache Location
lblRestartForgeMoveFilesNewLocation=You'll need to restart Forge for this change to take effect. Be sure to move any necessary files to the new location before you do. lblRestartForgeMoveFilesNewLocation=You'll need to restart Forge for this change to take effect. Be sure to move any necessary files to the new location before you do.
lblRestartRequired=Restart Required lblRestartRequired=Restart Required
lblSelect=Select %s lblSelect=Select %s
#AddBasicLandsDialog #AddBasicLandsDialog.java
lblLandSet=Land Set lblLandSet=Land Set
lblAddBasicLandsAutoSuggest=Add Basic Lands to %s\n(double-tap statistics to auto-suggest) lblAddBasicLandsAutoSuggest=Add Basic Lands to %s\n(double-tap statistics to auto-suggest)
lblAssortedArt=Assorted Art lblAssortedArt=Assorted Art
@@ -1052,27 +1052,89 @@ lblNonLandCount=%d non-lands
lblOldLandCount=%d lands lblOldLandCount=%d lands
lblNewLandCount=%d added lands lblNewLandCount=%d added lands
lblNewTotalCount=%d cards lblNewTotalCount=%d cards
#FDeckImportDialog #FDeckImportDialog.java
lblImportLatestVersionCard=Import latest version of card lblImportLatestVersionCard=Import latest version of card
lblUseOnlySetsReleasedBefore=Use only sets released before: lblUseOnlySetsReleasedBefore=Use only sets released before:
lblUseOnlyCoreAndExpansionSets=Use only core and expansion sets lblUseOnlyCoreAndExpansionSets=Use only core and expansion sets
lblFollowingCardsCannotBeImported=The following cards cannot be imported due to misspelling, set restrictions, or not being in Forge yet: lblFollowingCardsCannotBeImported=The following cards cannot be imported due to misspelling, set restrictions, or not being in Forge yet:
lblImportRemainingCards=Import remaining cards? lblImportRemainingCards=Import remaining cards?
lblNoKnownCardsOnClipboard=No known cards found on clipboard.\n\nCopy the decklist to the clipboard, then reopen this dialog. lblNoKnownCardsOnClipboard=No known cards found on clipboard.\n\nCopy the decklist to the clipboard, then reopen this dialog.
#FDeckViewer #FDeckViewer.java
lblDeckListCopiedClipboard=Deck list for '%s' copied to clipboard. lblDeckListCopiedClipboard=Deck list for '%s' copied to clipboard.
#FSideboardDialog #FSideboardDialog.java
lblUpdateMainFromSideboard=Update main deck from sideboard%s lblUpdateMainFromSideboard=Update main deck from sideboard%s
#FVanguardChooser #FVanguardChooser.java
lblRandomVanguard=Random Vanguard lblRandomVanguard=Random Vanguard
#FOptionPane #FOptionPane.java
lblYes=Yes lblYes=Yes
lblNo=No lblNo=No
#FSpinner #FSpinner.java
lblSelectANumber=Select a number lblSelectANumber=Select a number
#FTextField #FTextField.java
lblCut=Cut lblCut=Cut
lblCopy=Copy lblCopy=Copy
lblPaste=Paste lblPaste=Paste
#ListChooser #ListChooser.java
lblSearch=Search lblSearch=Search
#InputBase.java
lblPriority=Priority
lblTurn=Turn
lblPhase=Phase
lblEmpty=Empty
lbltoResolve=to Resolve.
lblStormCount=Storm Count
#PlayerControllerHuman.java
lblYouHaveWonTheCoinToss=%s, you have won the coin toss.
lblYouLostTheLastGame=%s, you lost the last game.
lblWouldYouLiketoPlayorDraw=Would you like to play or draw?
lblWhoWouldYouLiketoStartthisGame=Who would you like to start this game? (Click on the portrait.)
lblPlay=Play
lblDraw=Draw
lblTooFewCardsMainDeck=Too few cards in your main deck (minimum %s), please make modifications to your deck again.
lblTooManyCardsSideboard=Too many cards in your sideboard (maximum %s), please make modifications to your deck again.
lblAssignCombatDamageWerentBlocked=Do you want to assign its combat damage as though it weren't blocked?
lblChosenCards=Chosen Cards
lblAttacker=Attacker
lblTriggeredby=Triggered by
lblChooseWhichCardstoReveal=Choose Which Cards to Reveal
lblChooseCardsActivateOpeningHandandOrder=Choose cards to activate from opening hand and their order
lblActivateFirst=Activate first
lblChooseOptionalCosts=Choose optional Costs
lblOptionalCosts=Optional Costs
lblDoYouWanttoScry=Do you want to scry?
lblChooseCardstoSpliceonto=Choose cards to Splice onto
lblDoNextActioninSequence=Do Next Action in Sequence
lblPleaseDefineanActionSequenceFirst=Please define an action sequence first.
lblRememberActionSequence=Remember Action Sequence
lblYouMustHavePrioritytoUseThisFeature=You must have priority to use this feature.
lblNameTheCard=Name the card
lblWhichPlayerShouldRoll=Which player should roll?
lblChooseResult=Choose result
lblChosenCardNotPermanentorCantExistIndependentlyontheBattleground=The chosen card is not a permanent or can't exist independently on the battlefield.\nIf you'd like to cast a non-permanent spell, or if you'd like to cast a permanent spell and place it on stack, please use the Cast Spell/Play Land button.
lblError=Error
lblWinGame=Win Game
lblSetLifetoWhat=Set life to what?
lblSetLifeforWhichPlayer=Set life for which player
lblChoosePermanentstoTap=Choose permanents to tap
lblChoosePermanentstoUntap=Choose permanents to untap
lblWhichTypeofCounter=Which type of counter?
lblHowManyCounters=How many counters?
lblRemoveCountersFromWhichCard=Remove counters from which card?
lblAddCountersToWhichCard=Add counters to which card?
lblChooseaCard=Choose a card
lblNoPlayerPriorityDeckCantBeTutoredFrom=No player has priority at the moment, so their deck can't be tutored from.
lblNoPlayerPriorityGameStateCannotBeSetup=No player has priority at the moment, so game state cannot be setup.
lblErrorLoadingBattleSetupFile=Error loading battle setup file!
lblSelectCardstoAddtoYourDeck=Select cards to add to your deck
lblAddTheseToMyDeck=Add these to my deck
lblChooseaPile=Choose a pile
lblSelectOrderForSimultaneousAbilities=Select order for simultaneous abilities
lblReorderSimultaneousAbilities=Reorder simultaneous abilities
lblResolveFirst=Resolve first
lblMoveCardstoToporBbottomofLibrary=Move cards to top or bottom of library
lblSelectCardsToBeOutOnTheBottomOfYourLibrary=Select cards to be put on the bottom of your library
lblCardsToPutOnTheBottom=Cards to put on the bottom
lblArrangeCardsToBePutOnTopOfYourLibrary=Arrange cards to be put on top of your library
lblTopOfLibrary=Top of Library
lblSelectCardsToBePutIntoTheGraveyard=Select cards to be put into the graveyard
lblCardsToPutInTheGraveyard=Cards to put in the graveyard

View File

@@ -989,7 +989,7 @@ lblMore=Más...
lblLoadingNewGame=Cargando nueva partida... lblLoadingNewGame=Cargando nueva partida...
lblSelectVariants=Selecciona Variants lblSelectVariants=Selecciona Variants
msgSelectAdeckBeforeReadying=¡Selecciona un mazo antes de estar listo! msgSelectAdeckBeforeReadying=¡Selecciona un mazo antes de estar listo!
#PlayerPanel #PlayerPanel.java
lblLoadingDeck=Cargando mazo... lblLoadingDeck=Cargando mazo...
lblSchemeDeckRandomGenerated=Scheme Deck: Random Generated Deck lblSchemeDeckRandomGenerated=Scheme Deck: Random Generated Deck
lblCommanderDeckRandomGenerated=Commander Deck: Random Generated Deck lblCommanderDeckRandomGenerated=Commander Deck: Random Generated Deck
@@ -1017,23 +1017,23 @@ lblFemale=Mujer
lblAny=Cualquiera lblAny=Cualquiera
lblFantasy=Fantasía lblFantasy=Fantasía
lblGeneric=Genérico lblGeneric=Genérico
#MatchController #MatchController.java
lblChooseAbilityToPlay=Elige la habilidad para jugar lblChooseAbilityToPlay=Elige la habilidad para jugar
lblSelected=Seleccionado lblSelected=Seleccionado
#ItemManager #ItemManager.java
lblAdvancedSearch=Búsqueda Avanzada lblAdvancedSearch=Búsqueda Avanzada
lblSort=Ordenar lblSort=Ordenar
lblResetFilters=Reiniciar Filtros lblResetFilters=Reiniciar Filtros
#AdvancedSearchFilter #AdvancedSearchFilter.java
lblEditExpression=Editar Expresión lblEditExpression=Editar Expresión
lblRemoveFilter=Eliminar Filtro lblRemoveFilter=Eliminar Filtro
#CardZoom #CardZoom.java
lblSwipeUpTo=Desliza hacia arriba para %s lblSwipeUpTo=Desliza hacia arriba para %s
lblSwipeDownDetailView=Desliza hacia abajo para cambiar a la vista de detalle lblSwipeDownDetailView=Desliza hacia abajo para cambiar a la vista de detalle
lblSwipeDownPictureView=Desliza hacia abajo para cambiar a la vista de imagen lblSwipeDownPictureView=Desliza hacia abajo para cambiar a la vista de imagen
#VGameMenu #VGameMenu.java
lblNoPlayerPriorityNoDeckListViewed=Ningún jugador tiene prioridad en este momento, por lo que la lista de mazos no se puede ver. lblNoPlayerPriorityNoDeckListViewed=Ningún jugador tiene prioridad en este momento, por lo que la lista de mazos no se puede ver.
#FilesPage #FilesPage.java
lblFiles=Archivos lblFiles=Archivos
lblStorageLocations=Ubicación del almacenamiento lblStorageLocations=Ubicación del almacenamiento
lblCardPicsLocation=Ubicación de las Imágenes de las Cartas lblCardPicsLocation=Ubicación de las Imágenes de las Cartas
@@ -1043,7 +1043,7 @@ lblImageCacheLocation=Ubicación de la Caché de imágenes
lblRestartForgeMoveFilesNewLocation=Necesitarás reiniciar Forge para que este cambio tenga efecto. Asegúrate de mover todos los archivos necesarios a la nueva ubicación antes de hacerlo. lblRestartForgeMoveFilesNewLocation=Necesitarás reiniciar Forge para que este cambio tenga efecto. Asegúrate de mover todos los archivos necesarios a la nueva ubicación antes de hacerlo.
lblRestartRequired=Reinicio Requerido lblRestartRequired=Reinicio Requerido
lblSelect=Seleccionar %s lblSelect=Seleccionar %s
#AddBasicLandsDialog #AddBasicLandsDialog.java
lblLandSet=Conjunto de Tierras lblLandSet=Conjunto de Tierras
lblAddBasicLandsAutoSuggest=Añadir Tierras Básicas a %s\n(para autosugerir toca dos veces en las estadísticas) lblAddBasicLandsAutoSuggest=Añadir Tierras Básicas a %s\n(para autosugerir toca dos veces en las estadísticas)
lblAssortedArt=Arte Variado lblAssortedArt=Arte Variado
@@ -1052,27 +1052,89 @@ lblNonLandCount=%d no tierras
lblOldLandCount=%d tierras lblOldLandCount=%d tierras
lblNewLandCount=%d tierras añadidas lblNewLandCount=%d tierras añadidas
lblNewTotalCount=%d cartas lblNewTotalCount=%d cartas
#FDeckImportDialog #FDeckImportDialog.java
lblImportLatestVersionCard=Importar la última versión de la carta lblImportLatestVersionCard=Importar la última versión de la carta
lblUseOnlySetsReleasedBefore=Utilizar sólo las colecciones liberadas antes de: lblUseOnlySetsReleasedBefore=Utilizar sólo las colecciones liberadas antes de:
lblUseOnlyCoreAndExpansionSets=Utiliza sólo sets core o de expansión lblUseOnlyCoreAndExpansionSets=Utiliza sólo sets core o de expansión
lblFollowingCardsCannotBeImported=Las siguientes cartas no pueden ser importadas debido a errores ortográficos, restricciones establecidas, o por no estar en Forge todavía: lblFollowingCardsCannotBeImported=Las siguientes cartas no pueden ser importadas debido a errores ortográficos, restricciones establecidas, o por no estar en Forge todavía:
lblImportRemainingCards=¿Importar las cartas restantes? lblImportRemainingCards=¿Importar las cartas restantes?
lblNoKnownCardsOnClipboard=No se han encontrado cartas conocidas en el portapapeles.\n\nCopia la lista del mazo en el portapapeles y, a continuación, vuelve a abrir este cuadro de diálogo. lblNoKnownCardsOnClipboard=No se han encontrado cartas conocidas en el portapapeles.\n\nCopia la lista del mazo en el portapapeles y, a continuación, vuelve a abrir este cuadro de diálogo.
#FDeckViewer #FDeckViewer.java
lblDeckListCopiedClipboard=Lista de Mazo para '%s' copiada al portapapeles. lblDeckListCopiedClipboard=Lista de Mazo para '%s' copiada al portapapeles.
#FSideboardDialog #FSideboardDialog.java
lblUpdateMainFromSideboard=Actualiza el mazo principal desde el banquillo%s lblUpdateMainFromSideboard=Actualiza el mazo principal desde el banquillo%s
#FVanguardChooser #FVanguardChooser.java
lblRandomVanguard=Vanguard Aleatorio lblRandomVanguard=Vanguard Aleatorio
#FOptionPane #FOptionPane.java
lblYes= lblYes=
lblNo=No lblNo=No
#FSpinner #FSpinner.java
lblSelectANumber=Selecciona un número lblSelectANumber=Selecciona un número
#FTextField #FTextField.java
lblCut=Cortar lblCut=Cortar
lblCopy=Copiar lblCopy=Copiar
lblPaste=Pegar lblPaste=Pegar
#ListChooser #ListChooser.java
lblSearch=Buscar lblSearch=Buscar
#InputBase.java
lblPriority=Prioridad
lblTurn=Turno
lblPhase=Fase
lblEmpty=Vacío
lbltoResolve=para Resolver.
lblStormCount=Recuento de Tormentas
#PlayerControllerHuman.java
lblYouHaveWonTheCoinToss=%s, has ganado el lanzamiento de la moneda.
lblYouLostTheLastGame=%s, perdiste la última partida.
lblWouldYouLiketoPlayorDraw=¿Quieres jugar o ceder?
lblWhoWouldYouLiketoStartthisGame=¿Quién te gustaría que empezara esta partida? (Haz clic en el retrato)
lblPlay=Jugar
lblDraw=Ceder
lblTooFewCardsMainDeck=Muy pocas cartas en tu mazo principal (mínimo %s), por favor realiza modificaciones a tu mazo de nuevo.
lblTooManyCardsSideboard=Demasiadas cartas en tu banquillo (máximo %s), por favor realiza modificaciones a tu mazo de nuevo.
lblAssignCombatDamageWerentBlocked=¿Quieres asignar su daño de combate como si no estuviera bloqueado?
lblChosenCards=Cartas elegidas
lblAttacker=Atacante
lblTriggeredby=Activado por
lblChooseWhichCardstoReveal=Elige qué cartas revelar
lblChooseCardsActivateOpeningHandandOrder=Elige las cartas a activar desde la mano de apertura y su orden
lblActivateFirst=Activar primero
lblChooseOptionalCosts=Selecciona Costes opcionales
lblOptionalCosts=Costes opcionales
lblDoYouWanttoScry=¿Quieres hacer un escrutinio?
lblChooseCardstoSpliceonto=Elija las cartas para unirlas
lblDoNextActioninSequence=Realizar la siguiente acción en secuencia
lblPleaseDefineanActionSequenceFirst=Por favor, define primero una secuencia de acción.
lblRememberActionSequence=Recordar la Secuencia de Acción
lblYouMustHavePrioritytoUseThisFeature=Debes tener prioridad para utilizar esta función.
lblNameTheCard=Nombra la carta
lblWhichPlayerShouldRoll=¿Qué jugador debe tirar?
lblChooseResult=Elige resultado
lblChosenCardNotPermanentorCantExistIndependentlyontheBattleground=La carta elegida no es un permanente o no puede existir independientemente en el campo de batalla.\nSi quieres lanzar un hechizo no permanente, o si quieres lanzar un hechizo permanente y colocarlo en la pila, por favor usa el botón de Lanzar Hechizo/Jugar Tierra.
lblError=Error
lblWinGame=Ganar la Partida
lblSetLifetoWhat=¿Fijar la vida a cuánto?
lblSetLifeforWhichPlayer=Fijar la vida de cada jugador
lblChoosePermanentstoTap=Elige los permanentes para girar
lblChoosePermanentstoUntap=Elige los permanentes para enderezar
lblWhichTypeofCounter=¿Qué tipo de contador?
lblHowManyCounters=¿Cuántos contadores?
lblRemoveCountersFromWhichCard=¿Quitar contadores de qué carta?
lblAddCountersToWhichCard=¿Añadir contadores a qué carta?
lblChooseaCard=Elije una carta
lblNoPlayerPriorityDeckCantBeTutoredFrom=Ningún jugador tiene prioridad en este momento, por lo que su mazo no puede ser tutorizado.
lblNoPlayerPriorityGameStateCannotBeSetup=Ningún jugador tiene prioridad en este momento, por lo que no se puede configurar el estado del juego.
lblErrorLoadingBattleSetupFile=¡Error al cargar el archivo de configuración de la batalla!
lblSelectCardstoAddtoYourDeck=Seleccione las cartas que quieres añadir a tu mazo
lblAddTheseToMyDeck=Añade esto a mi mazo
lblChooseaPile=Elige una pila
lblSelectOrderForSimultaneousAbilities=Seleccionar orden para habilidades simultáneas
lblReorderSimultaneousAbilities=Reordenar habilidades simultáneas
lblResolveFirst=Resolver primero
lblMoveCardstoToporBbottomofLibrary=Mover las cartas a la parte superior o inferior de la biblioteca
lblSelectCardsToBeOutOnTheBottomOfYourLibrary=Selecciona las cartas que desea colocar en la parte inferior de su biblioteca
lblCardsToPutOnTheBottom=Cartas para poner en la parte inferior
lblArrangeCardsToBePutOnTopOfYourLibrary=Organizar las cartas para colocarlas en la parte superior de la biblioteca
lblTopOfLibrary=Parte Superior de la Biblioteca
lblSelectCardsToBePutIntoTheGraveyard=Selecciona las cartas para ponerlas en el Cementerio
lblCardsToPutInTheGraveyard=Cartas para poner en el Cementerio

View File

@@ -989,7 +989,7 @@ lblMore=更多
lblLoadingNewGame=载入新游戏中 lblLoadingNewGame=载入新游戏中
lblSelectVariants=选择变种 lblSelectVariants=选择变种
msgSelectAdeckBeforeReadying=在准备之前选择一个套牌 msgSelectAdeckBeforeReadying=在准备之前选择一个套牌
#PlayerPanel #PlayerPanel.java
lblLoadingDeck=加载套牌中 lblLoadingDeck=加载套牌中
lblSchemeDeckRandomGenerated=阴谋套牌:随机生成的套牌 lblSchemeDeckRandomGenerated=阴谋套牌:随机生成的套牌
lblCommanderDeckRandomGenerated=指挥官套牌:随机生成的套牌 lblCommanderDeckRandomGenerated=指挥官套牌:随机生成的套牌
@@ -1017,23 +1017,23 @@ lblFemale=女
lblAny=任意 lblAny=任意
lblFantasy=幻想 lblFantasy=幻想
lblGeneric=通用 lblGeneric=通用
#MatchController #MatchController.java
lblChooseAbilityToPlay=选择使用的能力 lblChooseAbilityToPlay=选择使用的能力
lblSelected=选择 lblSelected=选择
#ItemManager #ItemManager.java
lblAdvancedSearch=高级搜索 lblAdvancedSearch=高级搜索
lblSort=排序 lblSort=排序
lblResetFilters=重置筛选器 lblResetFilters=重置筛选器
#AdvancedSearchFilter #AdvancedSearchFilter.java
lblEditExpression=编辑表达式 lblEditExpression=编辑表达式
lblRemoveFilter=移除筛选器 lblRemoveFilter=移除筛选器
#CardZoom #CardZoom.java
lblSwipeUpTo=向上滑动%s lblSwipeUpTo=向上滑动%s
lblSwipeDownDetailView=向下滑动即可切换到详细信息视图 lblSwipeDownDetailView=向下滑动即可切换到详细信息视图
lblSwipeDownPictureView=向下滑动即可切换到图片视图 lblSwipeDownPictureView=向下滑动即可切换到图片视图
#VGameMenu #VGameMenu.java
lblNoPlayerPriorityNoDeckListViewed=现在玩家没有优先权,因此无法查看套牌列表。 lblNoPlayerPriorityNoDeckListViewed=现在玩家没有优先权,因此无法查看套牌列表。
#FilesPage #FilesPage.java
lblFiles=文件 lblFiles=文件
lblStorageLocations=储存位置 lblStorageLocations=储存位置
lblCardPicsLocation=牌张图片位置 lblCardPicsLocation=牌张图片位置
@@ -1043,36 +1043,98 @@ lblImageCacheLocation=图片缓存位置
lblRestartForgeMoveFilesNewLocation=您必须重启Forge才能使此更改生效。执行此操作之前请确保将所有必要的文件移动到新的位置。 lblRestartForgeMoveFilesNewLocation=您必须重启Forge才能使此更改生效。执行此操作之前请确保将所有必要的文件移动到新的位置。
lblRestartRequired=需要重启 lblRestartRequired=需要重启
lblSelect=选择%s lblSelect=选择%s
#AddBasicLandsDialog #AddBasicLandsDialog.java
lblLandSet=Land Set lblLandSet=地牌的系列
lblAddBasicLandsAutoSuggest=Add Basic Lands to %s\n(double-tap statistics to auto-suggest) lblAddBasicLandsAutoSuggest=添加基本地到%s\n双击自动添加
lblAssortedArt=Assorted Art lblAssortedArt=各种画
lblCardArt=Card Art %d lblCardArt=卡图%d
lblNonLandCount=%d non-lands lblNonLandCount=%d张非地
lblOldLandCount=%d lands lblOldLandCount=%d张地
lblNewLandCount=%d added lands lblNewLandCount=添加%d张地
lblNewTotalCount=%d cards lblNewTotalCount=%d张牌
#FDeckImportDialog #FDeckImportDialog.java
lblImportLatestVersionCard=Import latest version of card lblImportLatestVersionCard=导入卡牌的最新版本
lblUseOnlySetsReleasedBefore=Use only sets released before: lblUseOnlySetsReleasedBefore=只用之前上市系列的版本:
lblUseOnlyCoreAndExpansionSets=Use only core and expansion sets lblUseOnlyCoreAndExpansionSets=只使用核心系列和拓展系列
lblFollowingCardsCannotBeImported=The following cards cannot be imported due to misspelling, set restrictions, or not being in Forge yet: lblFollowingCardsCannotBeImported=由于拼写错误系列限制或forge尚未实现以下卡牌没有被导入
lblImportRemainingCards=Import remaining cards? lblImportRemainingCards=导入剩余的卡?
lblNoKnownCardsOnClipboard=No known cards found on clipboard.\n\nCopy the decklist to the clipboard, then reopen this dialog. lblNoKnownCardsOnClipboard=在剪切板找不到已知的卡牌。\n\n将卡组列表复制到剪切板然后重新打开此对话框。
#FDeckViewer #FDeckViewer.java
lblDeckListCopiedClipboard=Deck list for '%s' copied to clipboard. lblDeckListCopiedClipboard=套牌列表'%s'已经复制到剪切板
#FSideboardDialog #FSideboardDialog.java
lblUpdateMainFromSideboard=Update main deck from sideboard%s lblUpdateMainFromSideboard=从备牌更新%s到主牌
#FVanguardChooser #FVanguardChooser.java
lblRandomVanguard=Random Vanguard lblRandomVanguard=随机先锋
#FOptionPane #FOptionPane.java
lblYes=Yes lblYes=
lblNo=No lblNo=
#FSpinner #FSpinner.java
lblSelectANumber=Select a number lblSelectANumber=选择一个数
#FTextField #FTextField.java
lblCut=Cut lblCut=剪切
lblCopy=Copy lblCopy=复制
lblPaste=Paste lblPaste=粘贴
#ListChooser #ListChooser.java
lblSearch=Search lblSearch=搜索
#InputBase.java
lblPriority=Priority
lblTurn=Turn
lblPhase=Phase
lblEmpty=Empty
lbltoResolve=to Resolve.
lblStormCount=Storm Count
#PlayerControllerHuman.java
lblYouHaveWonTheCoinToss=%s, you have won the coin toss.
lblYouLostTheLastGame=%s, you lost the last game.
lblWouldYouLiketoPlayorDraw=Would you like to play or draw?
lblWhoWouldYouLiketoStartthisGame=Who would you like to start this game? (Click on the portrait.)
lblPlay=Play
lblDraw=Draw
lblTooFewCardsMainDeck=Too few cards in your main deck (minimum %s), please make modifications to your deck again.
lblTooManyCardsSideboard=Too many cards in your sideboard (maximum %s), please make modifications to your deck again.
lblAssignCombatDamageWerentBlocked=Do you want to assign its combat damage as though it weren't blocked?
lblChosenCards=Chosen Cards
lblAttacker=Attacker
lblTriggeredby=Triggered by
lblChooseWhichCardstoReveal=Choose Which Cards to Reveal
lblChooseCardsActivateOpeningHandandOrder=Choose cards to activate from opening hand and their order
lblActivateFirst=Activate first
lblChooseOptionalCosts=Choose optional Costs
lblOptionalCosts=Optional Costs
lblDoYouWanttoScry=Do you want to scry?
lblChooseCardstoSpliceonto=Choose cards to Splice onto
lblDoNextActioninSequence=Do Next Action in Sequence
lblPleaseDefineanActionSequenceFirst=Please define an action sequence first.
lblRememberActionSequence=Remember Action Sequence
lblYouMustHavePrioritytoUseThisFeature=You must have priority to use this feature.
lblNameTheCard=Name the card
lblWhichPlayerShouldRoll=Which player should roll?
lblChooseResult=Choose result
lblChosenCardNotPermanentorCantExistIndependentlyontheBattleground=The chosen card is not a permanent or can't exist independently on the battlefield.\nIf you'd like to cast a non-permanent spell, or if you'd like to cast a permanent spell and place it on stack, please use the Cast Spell/Play Land button.
lblError=Error
lblWinGame=Win Game
lblSetLifetoWhat=Set life to what?
lblSetLifeforWhichPlayer=Set life for which player
lblChoosePermanentstoTap=Choose permanents to tap
lblChoosePermanentstoUntap=Choose permanents to untap
lblWhichTypeofCounter=Which type of counter?
lblHowManyCounters=How many counters?
lblRemoveCountersFromWhichCard=Remove counters from which card?
lblAddCountersToWhichCard=Add counters to which card?
lblChooseaCard=Choose a card
lblNoPlayerPriorityDeckCantBeTutoredFrom=No player has priority at the moment, so their deck can't be tutored from.
lblNoPlayerPriorityGameStateCannotBeSetup=No player has priority at the moment, so game state cannot be setup.
lblErrorLoadingBattleSetupFile=Error loading battle setup file!
lblSelectCardstoAddtoYourDeck=Select cards to add to your deck
lblAddTheseToMyDeck=Add these to my deck
lblChooseaPile=Choose a pile
lblSelectOrderForSimultaneousAbilities=Select order for simultaneous abilities
lblReorderSimultaneousAbilities=Reorder simultaneous abilities
lblResolveFirst=Resolve first
lblMoveCardstoToporBbottomofLibrary=Move cards to top or bottom of library
lblSelectCardsToBeOutOnTheBottomOfYourLibrary=Select cards to be put on the bottom of your library
lblCardsToPutOnTheBottom=Cards to put on the bottom
lblArrangeCardsToBePutOnTopOfYourLibrary=Arrange cards to be put on top of your library
lblTopOfLibrary=Top of Library
lblSelectCardsToBePutIntoTheGraveyard=Select cards to be put into the graveyard
lblCardsToPutInTheGraveyard=Cards to put in the graveyard

View File

@@ -0,0 +1,16 @@
[metadata]
Name:Possibility Storm - Special Guest Puzzle - Modern Goblins
URL:http://www.possibilitystorm.com/wp-content/uploads/2019/09/129.-FK01.jpg
Goal:Win
Turns:1
Difficulty:Mythic
Description:Win this turn. Your opponent has chosen 'Goblin' with Plague Engineer's ability.
[state]
humanlife=20
ailife=19
turn=1
activeplayer=human
activephase=MAIN1
humanhand=Krenko, Mob Boss;Sling-Gang Lieutenant;Munitions Expert;Goblin Warchief;Goblin Piledriver;Skirk Prospector
humanbattlefield=Pashalik Mons;Goblin Guide;Kiki-Jiki, Mirror Breaker;Mountain;Mountain;Mountain;Blood Crypt|NoETBTrigs;Blood Crypt|NoETBTrigs
aibattlefield=Plague Engineer|ChosenType:Goblin|Id:1;Sylvok Lifestaff|AttachedTo:1;Sylvok Lifestaff|AttachedTo:1;Accorder's Shield|AttachedTo:1

View File

@@ -31,6 +31,7 @@ import forge.model.FModel;
import forge.player.PlayerControllerHuman; import forge.player.PlayerControllerHuman;
import forge.properties.ForgePreferences; import forge.properties.ForgePreferences;
import forge.util.ITriggerEvent; import forge.util.ITriggerEvent;
import forge.util.Localizer;
/** /**
* <p> * <p>
@@ -131,20 +132,20 @@ public abstract class InputBase implements java.io.Serializable, Input {
protected String getTurnPhasePriorityMessage(final Game game) { protected String getTurnPhasePriorityMessage(final Game game) {
final PhaseHandler ph = game.getPhaseHandler(); final PhaseHandler ph = game.getPhaseHandler();
final StringBuilder sb = new StringBuilder(); final StringBuilder sb = new StringBuilder();
Localizer localizer = Localizer.getInstance();
sb.append("Priority: ").append(ph.getPriorityPlayer()).append("\n"); sb.append(localizer.getMessage("lblPriority")).append(": ").append(ph.getPriorityPlayer()).append("\n");
sb.append("Turn ").append(ph.getTurn()).append(" (").append(ph.getPlayerTurn()).append(")\n"); sb.append(localizer.getMessage("lblTurn")).append(": ").append(ph.getTurn()).append(" (").append(ph.getPlayerTurn()).append(")\n");
sb.append("Phase: ").append(ph.getPhase().nameForUi).append("\n"); sb.append(localizer.getMessage("lblPhase")).append(": ").append(ph.getPhase().nameForUi).append("\n");
sb.append("Stack: "); sb.append(localizer.getMessage("lblStack")).append(": ");
if (!game.getStack().isEmpty()) { if (!game.getStack().isEmpty()) {
sb.append(game.getStack().size()).append(" to Resolve."); sb.append(game.getStack().size()).append(" ").append(localizer.getMessage("lbltoResolve"));
} else { } else {
sb.append("Empty"); sb.append(localizer.getMessage("lblEmpty"));
} }
if (FModel.getPreferences().getPrefBoolean(ForgePreferences.FPref.UI_SHOW_STORM_COUNT_IN_PROMPT)) { if (FModel.getPreferences().getPrefBoolean(ForgePreferences.FPref.UI_SHOW_STORM_COUNT_IN_PROMPT)) {
int stormCount = game.getView().getStormCount(); int stormCount = game.getView().getStormCount();
if (stormCount > 0) { if (stormCount > 0) {
sb.append("\n").append("Storm Count: ").append(stormCount); sb.append("\n").append(localizer.getMessage("lblStormCount")).append(": ").append(stormCount);
} }
} }
return sb.toString(); return sb.toString();

View File

@@ -58,6 +58,7 @@ import forge.properties.ForgePreferences.FPref;
import forge.trackable.TrackableObject; import forge.trackable.TrackableObject;
import forge.util.ITriggerEvent; import forge.util.ITriggerEvent;
import forge.util.Lang; import forge.util.Lang;
import forge.util.Localizer;
import forge.util.MessageUtil; import forge.util.MessageUtil;
import forge.util.TextUtil; import forge.util.TextUtil;
import forge.util.collect.FCollection; import forge.util.collect.FCollection;
@@ -91,6 +92,8 @@ public class PlayerControllerHuman extends PlayerController implements IGameCont
protected final InputQueue inputQueue; protected final InputQueue inputQueue;
protected final InputProxy inputProxy; protected final InputProxy inputProxy;
private final Localizer localizer = Localizer.getInstance();
public PlayerControllerHuman(final Game game0, final Player p, final LobbyPlayer lp) { public PlayerControllerHuman(final Game game0, final Player p, final LobbyPlayer lp) {
super(game0, p, lp); super(game0, p, lp);
inputProxy = new InputProxy(this); inputProxy = new InputProxy(this);
@@ -243,13 +246,12 @@ public class PlayerControllerHuman extends PlayerController implements IGameCont
if (newMain != null) { if (newMain != null) {
String errMsg; String errMsg;
if (newMain.size() < deckMinSize) { if (newMain.size() < deckMinSize) {
errMsg = TextUtil.concatNoSpace("Too few cards in your main deck (minimum ", errMsg = TextUtil.concatNoSpace(localizer.getMessage("lblTooFewCardsMainDeck").replace("%s", String.valueOf(deckMinSize)));
String.valueOf(deckMinSize), "), please make modifications to your deck again.");
} else { } else {
errMsg = TextUtil.concatNoSpace("Too many cards in your sideboard (maximum ", errMsg = TextUtil.concatNoSpace(localizer.getMessage("lblTooManyCardsSideboard").replace("%s", String.valueOf(sbMax)));
String.valueOf(sbMax), "), please make modifications to your deck again.");
} }
getGui().showErrorDialog(errMsg, "Invalid Deck"); getGui().showErrorDialog(errMsg, localizer.getMessage("lblInvalidDeck"));
} }
// Sideboard rules have changed for M14, just need to consider min // Sideboard rules have changed for M14, just need to consider min
// maindeck and max sideboard sizes // maindeck and max sideboard sizes
@@ -301,7 +303,7 @@ public class PlayerControllerHuman extends PlayerController implements IGameCont
if (attacker.hasKeyword("CARDNAME assigns its combat damage as though it weren't blocked.") || attacker if (attacker.hasKeyword("CARDNAME assigns its combat damage as though it weren't blocked.") || attacker
.hasKeyword("You may have CARDNAME assign its combat damage as though it weren't blocked.")) { .hasKeyword("You may have CARDNAME assign its combat damage as though it weren't blocked.")) {
return InputConfirm.confirm(this, CardView.get(attacker), return InputConfirm.confirm(this, CardView.get(attacker),
"Do you want to assign its combat damage as though it weren't blocked?"); localizer.getMessage("lblAssignCombatDamageWerentBlocked"));
} else { } else {
return false; return false;
} }
@@ -404,7 +406,7 @@ public class PlayerControllerHuman extends PlayerController implements IGameCont
} }
tempShowCards(sourceList); tempShowCards(sourceList);
final CardCollection choices = getGame().getCardList(getGui().many(title, "Chosen Cards", min, max, final CardCollection choices = getGame().getCardList(getGui().many(title, localizer.getMessage("lblChosenCards"), min, max,
CardView.getCollection(sourceList), CardView.get(sa.getHostCard()))); CardView.getCollection(sourceList), CardView.get(sa.getHostCard())));
endTempShowCards(); endTempShowCards();
@@ -634,13 +636,13 @@ public class PlayerControllerHuman extends PlayerController implements IGameCont
} }
final Map<AbilityKey, Object> tos = sa.getTriggeringObjects(); final Map<AbilityKey, Object> tos = sa.getTriggeringObjects();
if (tos.containsKey(AbilityKey.Attacker)) { if (tos.containsKey(AbilityKey.Attacker)) {
buildQuestion.append("\nAttacker: ").append(tos.get(AbilityKey.Attacker)); buildQuestion.append("\n").append(localizer.getMessage("lblAttacker")).append(": ").append(tos.get(AbilityKey.Attacker));
} }
if (tos.containsKey(AbilityKey.Card)) { if (tos.containsKey(AbilityKey.Card)) {
final Card card = (Card) tos.get(AbilityKey.Card); final Card card = (Card) tos.get(AbilityKey.Card);
if (card != null && (card.getController() == player || game.getZoneOf(card) == null if (card != null && (card.getController() == player || game.getZoneOf(card) == null
|| game.getZoneOf(card).getZoneType().isKnown())) { || game.getZoneOf(card).getZoneType().isKnown())) {
buildQuestion.append("\nTriggered by: ").append(tos.get(AbilityKey.Card)); buildQuestion.append("\n").append(localizer.getMessage("lblTriggeredby")).append(": ").append(tos.get(AbilityKey.Card));
} }
} }
@@ -652,15 +654,18 @@ public class PlayerControllerHuman extends PlayerController implements IGameCont
@Override @Override
public Player chooseStartingPlayer(final boolean isFirstGame) { public Player chooseStartingPlayer(final boolean isFirstGame) {
if (game.getPlayers().size() == 2) { if (game.getPlayers().size() == 2) {
final String prompt = String.format("%s, you %s\n\nWould you like to play or draw?", player.getName(), String prompt = String.format(
isFirstGame ? " have won the coin toss." : " lost the last game."); isFirstGame ? localizer.getMessage("lblYouHaveWonTheCoinToss") : localizer.getMessage("lblYouLostTheLastGame"),
final InputConfirm inp = new InputConfirm(this, prompt, "Play", "Draw"); player.getName());
prompt += "\n\n" + localizer.getMessage("lblWouldYouLiketoPlayorDraw");
final InputConfirm inp = new InputConfirm(this, prompt, localizer.getMessage("lblPlay"), localizer.getMessage("lblDraw"));
inp.showAndWait(); inp.showAndWait();
return inp.getResult() ? this.player : this.player.getOpponents().get(0); return inp.getResult() ? this.player : this.player.getOpponents().get(0);
} else { } else {
final String prompt = String.format( String prompt = String.format(
"%s, you %s\n\nWho would you like to start this game? (Click on the portrait.)", player.getName(), isFirstGame ? localizer.getMessage("lblYouHaveWonTheCoinToss") : localizer.getMessage("lblYouLostTheLastGame"),
isFirstGame ? " have won the coin toss." : " lost the last game."); player.getName());
prompt += "\n\n" + localizer.getMessage("lblWhoWouldYouLiketoStartthisGame");
final InputSelectEntitiesFromList<Player> input = new InputSelectEntitiesFromList<>(this, 1, 1, final InputSelectEntitiesFromList<Player> input = new InputSelectEntitiesFromList<>(this, 1, 1,
new FCollection<>(game.getPlayersInTurnOrder())); new FCollection<>(game.getPlayersInTurnOrder()));
input.setMessage(prompt); input.setMessage(prompt);
@@ -739,7 +744,7 @@ public class PlayerControllerHuman extends PlayerController implements IGameCont
} }
public ImmutablePair<CardCollection, CardCollection> arrangeForMove(final String title, final FCollectionView<Card> cards, final List<Card> manipulable, final boolean topOK, final boolean bottomOK) { public ImmutablePair<CardCollection, CardCollection> arrangeForMove(final String title, final FCollectionView<Card> cards, final List<Card> manipulable, final boolean topOK, final boolean bottomOK) {
List<Card> result = manipulateCardList("Move cards to top or bottom of library", cards, manipulable, topOK, bottomOK, false); List<Card> result = manipulateCardList(localizer.getMessage("lblMoveCardstoToporBbottomofLibrary"), cards, manipulable, topOK, bottomOK, false);
CardCollection toBottom = new CardCollection(); CardCollection toBottom = new CardCollection();
CardCollection toTop = new CardCollection(); CardCollection toTop = new CardCollection();
for (int i = 0; i<cards.size() && manipulable.contains(result.get(i)) ; i++ ) { for (int i = 0; i<cards.size() && manipulable.contains(result.get(i)) ; i++ ) {
@@ -763,7 +768,7 @@ public class PlayerControllerHuman extends PlayerController implements IGameCont
(!GuiBase.getInterface().isLibgdxPort()) ) { (!GuiBase.getInterface().isLibgdxPort()) ) {
CardCollectionView cardList = player.getCardsIn(ZoneType.Library); CardCollectionView cardList = player.getCardsIn(ZoneType.Library);
ImmutablePair<CardCollection, CardCollection> result = ImmutablePair<CardCollection, CardCollection> result =
arrangeForMove("Move cards to top or bottom of library", cardList, topN, true, true); arrangeForMove(localizer.getMessage("lblMoveCardstoToporBbottomofLibrary"), cardList, topN, true, true);
toTop = result.getLeft(); toTop = result.getLeft();
toBottom = result.getRight(); toBottom = result.getRight();
} else { } else {
@@ -774,16 +779,16 @@ public class PlayerControllerHuman extends PlayerController implements IGameCont
toBottom = topN; toBottom = topN;
} }
} else { } else {
toBottom = game.getCardList(getGui().many("Select cards to be put on the bottom of your library", toBottom = game.getCardList(getGui().many(localizer.getMessage("lblSelectCardsToBeOutOnTheBottomOfYourLibrary"),
"Cards to put on the bottom", -1, CardView.getCollection(topN), null)); localizer.getMessage("lblCardsToPutOnTheBottom"), -1, CardView.getCollection(topN), null));
topN.removeAll(toBottom); topN.removeAll(toBottom);
if (topN.isEmpty()) { if (topN.isEmpty()) {
toTop = null; toTop = null;
} else if (topN.size() == 1) { } else if (topN.size() == 1) {
toTop = topN; toTop = topN;
} else { } else {
toTop = game.getCardList(getGui().order("Arrange cards to be put on top of your library", toTop = game.getCardList(getGui().order(localizer.getMessage("lblArrangeCardsToBePutOnTopOfYourLibrary"),
"Top of Library", CardView.getCollection(topN), null)); localizer.getMessage("lblTopOfLibrary"), CardView.getCollection(topN), null));
} }
} }
} }
@@ -812,16 +817,16 @@ public class PlayerControllerHuman extends PlayerController implements IGameCont
toGrave = topN; toGrave = topN;
} }
} else { } else {
toGrave = game.getCardList(getGui().many("Select cards to be put into the graveyard", toGrave = game.getCardList(getGui().many(localizer.getMessage("lblSelectCardsToBePutIntoTheGraveyard"),
"Cards to put in the graveyard", -1, CardView.getCollection(topN), null)); localizer.getMessage("lblCardsToPutInTheGraveyard"), -1, CardView.getCollection(topN), null));
topN.removeAll(toGrave); topN.removeAll(toGrave);
if (topN.isEmpty()) { if (topN.isEmpty()) {
toTop = null; toTop = null;
} else if (topN.size() == 1) { } else if (topN.size() == 1) {
toTop = topN; toTop = topN;
} else { } else {
toTop = game.getCardList(getGui().order("Arrange cards to be put on top of your library", toTop = game.getCardList(getGui().order(localizer.getMessage("lblArrangeCardsToBePutOnTopOfYourLibrary"),
"Top of Library", CardView.getCollection(topN), null)); localizer.getMessage("lblTopOfLibrary"), CardView.getCollection(topN), null));
} }
} }
endTempShowCards(); endTempShowCards();
@@ -1324,7 +1329,7 @@ public class PlayerControllerHuman extends PlayerController implements IGameCont
max = Math.min(max, valid.size()); max = Math.min(max, valid.size());
min = Math.min(min, max); min = Math.min(min, max);
final InputSelectCardsFromList inp = new InputSelectCardsFromList(this, min, max, valid); final InputSelectCardsFromList inp = new InputSelectCardsFromList(this, min, max, valid);
inp.setMessage("Choose Which Cards to Reveal"); inp.setMessage(localizer.getMessage("lblChooseWhichCardstoReveal"));
inp.showAndWait(); inp.showAndWait();
return new CardCollection(inp.getSelected()); return new CardCollection(inp.getSelected());
} }
@@ -1349,8 +1354,8 @@ public class PlayerControllerHuman extends PlayerController implements IGameCont
if (srcCards.isEmpty()) { if (srcCards.isEmpty()) {
return result; return result;
} }
final List<CardView> chosen = getGui().many("Choose cards to activate from opening hand and their order", final List<CardView> chosen = getGui().many(localizer.getMessage("lblChooseCardsActivateOpeningHandandOrder"),
"Activate first", -1, CardView.getCollection(srcCards), null); localizer.getMessage("lblActivateFirst"), -1, CardView.getCollection(srcCards), null);
for (final CardView view : chosen) { for (final CardView view : chosen) {
final Card c = game.getCard(view); final Card c = game.getCard(view);
for (final SpellAbility sa : usableFromOpeningHand) { for (final SpellAbility sa : usableFromOpeningHand) {
@@ -1664,11 +1669,11 @@ public class PlayerControllerHuman extends PlayerController implements IGameCont
if (savedOrder != null) { if (savedOrder != null) {
boolean preselect = FModel.getPreferences() boolean preselect = FModel.getPreferences()
.getPrefBoolean(FPref.UI_PRESELECT_PREVIOUS_ABILITY_ORDER); .getPrefBoolean(FPref.UI_PRESELECT_PREVIOUS_ABILITY_ORDER);
orderedSAVs = getGui().order("Reorder simultaneous abilities", "Resolve first", 0, 0, orderedSAVs = getGui().order(localizer.getMessage("lblReorderSimultaneousAbilities"), localizer.getMessage("lblResolveFirst"), 0, 0,
preselect ? Lists.newArrayList() : orderedSAVs, preselect ? Lists.newArrayList() : orderedSAVs,
preselect ? orderedSAVs : Lists.newArrayList(), null, false); preselect ? orderedSAVs : Lists.newArrayList(), null, false);
} else { } else {
orderedSAVs = getGui().order("Select order for simultaneous abilities", "Resolve first", orderedSAVs, orderedSAVs = getGui().order(localizer.getMessage("lblSelectOrderForSimultaneousAbilities"), localizer.getMessage("lblResolveFirst"), orderedSAVs,
null); null);
} }
orderedSAs = Lists.newArrayList(); orderedSAs = Lists.newArrayList();
@@ -1742,7 +1747,7 @@ public class PlayerControllerHuman extends PlayerController implements IGameCont
// make sure Pile 1 or Pile 2 is clicked on // make sure Pile 1 or Pile 2 is clicked on
boolean result; boolean result;
while (true) { while (true) {
final CardView chosen = getGui().one("Choose a pile", cards); final CardView chosen = getGui().one(localizer.getMessage("lblChooseaPile"), cards);
if (chosen.equals(pileView1)) { if (chosen.equals(pileView1)) {
result = true; result = true;
break; break;
@@ -1767,7 +1772,7 @@ public class PlayerControllerHuman extends PlayerController implements IGameCont
@Override @Override
public List<PaperCard> chooseCardsYouWonToAddToDeck(final List<PaperCard> losses) { public List<PaperCard> chooseCardsYouWonToAddToDeck(final List<PaperCard> losses) {
return getGui().many("Select cards to add to your deck", "Add these to my deck", 0, losses.size(), losses, return getGui().many(localizer.getMessage("lblSelectCardstoAddtoYourDeck"), localizer.getMessage("lblAddTheseToMyDeck"), 0, losses.size(), losses,
null); null);
} }
@@ -2079,13 +2084,13 @@ public class PlayerControllerHuman extends PlayerController implements IGameCont
SOptionPane.showErrorDialog("File not found: " + filename); SOptionPane.showErrorDialog("File not found: " + filename);
return; return;
} catch (final Exception e) { } catch (final Exception e) {
SOptionPane.showErrorDialog("Error loading battle setup file!"); SOptionPane.showErrorDialog(localizer.getMessage("lblErrorLoadingBattleSetupFile"));
return; return;
} }
final Player pPriority = game.getPhaseHandler().getPriorityPlayer(); final Player pPriority = game.getPhaseHandler().getPriorityPlayer();
if (pPriority == null) { if (pPriority == null) {
getGui().message("No player has priority at the moment, so game state cannot be setup."); getGui().message(localizer.getMessage("lblNoPlayerPriorityGameStateCannotBeSetup"));
return; return;
} }
state.applyToGame(game); state.applyToGame(game);
@@ -2100,7 +2105,7 @@ public class PlayerControllerHuman extends PlayerController implements IGameCont
public void tutorForCard() { public void tutorForCard() {
final Player pPriority = game.getPhaseHandler().getPriorityPlayer(); final Player pPriority = game.getPhaseHandler().getPriorityPlayer();
if (pPriority == null) { if (pPriority == null) {
getGui().message("No player has priority at the moment, so their deck can't be tutored from."); getGui().message(localizer.getMessage("lblNoPlayerPriorityDeckCantBeTutoredFrom"));
return; return;
} }
@@ -2108,7 +2113,7 @@ public class PlayerControllerHuman extends PlayerController implements IGameCont
final List<ZoneType> origin = Lists.newArrayList(); final List<ZoneType> origin = Lists.newArrayList();
origin.add(ZoneType.Library); origin.add(ZoneType.Library);
final SpellAbility sa = new SpellAbility.EmptySa(new Card(-1, game)); final SpellAbility sa = new SpellAbility.EmptySa(new Card(-1, game));
final Card card = chooseSingleCardForZoneChange(ZoneType.Hand, origin, sa, lib, null, "Choose a card", true, final Card card = chooseSingleCardForZoneChange(ZoneType.Hand, origin, sa, lib, null, localizer.getMessage("lblChooseaCard"), true,
pPriority); pPriority);
if (card == null) { if (card == null) {
return; return;
@@ -2143,7 +2148,7 @@ public class PlayerControllerHuman extends PlayerController implements IGameCont
} }
public void modifyCountersOnPermanent(boolean subtract) { public void modifyCountersOnPermanent(boolean subtract) {
final String titleMsg = subtract ? "Remove counters from which card?" : "Add counters to which card?"; final String titleMsg = subtract ? localizer.getMessage("lblRemoveCountersFromWhichCard") : localizer.getMessage("lblAddCountersToWhichCard");
final CardCollectionView cards = game.getCardsIn(ZoneType.Battlefield); final CardCollectionView cards = game.getCardsIn(ZoneType.Battlefield);
final Card card = game final Card card = game
.getCard(getGui().oneOrNone(titleMsg, CardView.getCollection(cards))); .getCard(getGui().oneOrNone(titleMsg, CardView.getCollection(cards)));
@@ -2154,12 +2159,12 @@ public class PlayerControllerHuman extends PlayerController implements IGameCont
final ImmutableList<CounterType> counters = subtract ? ImmutableList.copyOf(card.getCounters().keySet()) final ImmutableList<CounterType> counters = subtract ? ImmutableList.copyOf(card.getCounters().keySet())
: CounterType.values; : CounterType.values;
final CounterType counter = getGui().oneOrNone("Which type of counter?", counters); final CounterType counter = getGui().oneOrNone(localizer.getMessage("lblWhichTypeofCounter"), counters);
if (counter == null) { if (counter == null) {
return; return;
} }
final Integer count = getGui().getInteger("How many counters?", 1, Integer.MAX_VALUE, 10); final Integer count = getGui().getInteger(localizer.getMessage("lblHowManyCounters"), 1, Integer.MAX_VALUE, 10);
if (count == null) { if (count == null) {
return; return;
} }
@@ -2187,7 +2192,7 @@ public class PlayerControllerHuman extends PlayerController implements IGameCont
final InputSelectCardsFromList inp = new InputSelectCardsFromList(PlayerControllerHuman.this, 0, final InputSelectCardsFromList inp = new InputSelectCardsFromList(PlayerControllerHuman.this, 0,
Integer.MAX_VALUE, untapped); Integer.MAX_VALUE, untapped);
inp.setCancelAllowed(true); inp.setCancelAllowed(true);
inp.setMessage("Choose permanents to tap"); inp.setMessage(localizer.getMessage("lblChoosePermanentstoTap"));
inp.showAndWait(); inp.showAndWait();
if (!inp.hasCancelled()) { if (!inp.hasCancelled()) {
for (final Card c : inp.getSelected()) { for (final Card c : inp.getSelected()) {
@@ -2213,7 +2218,7 @@ public class PlayerControllerHuman extends PlayerController implements IGameCont
final InputSelectCardsFromList inp = new InputSelectCardsFromList(PlayerControllerHuman.this, 0, final InputSelectCardsFromList inp = new InputSelectCardsFromList(PlayerControllerHuman.this, 0,
Integer.MAX_VALUE, tapped); Integer.MAX_VALUE, tapped);
inp.setCancelAllowed(true); inp.setCancelAllowed(true);
inp.setMessage("Choose permanents to untap"); inp.setMessage(localizer.getMessage("lblChoosePermanentstoUntap"));
inp.showAndWait(); inp.showAndWait();
if (!inp.hasCancelled()) { if (!inp.hasCancelled()) {
for (final Card c : inp.getSelected()) { for (final Card c : inp.getSelected()) {
@@ -2232,12 +2237,12 @@ public class PlayerControllerHuman extends PlayerController implements IGameCont
@Override @Override
public void setPlayerLife() { public void setPlayerLife() {
final Player player = game.getPlayer( final Player player = game.getPlayer(
getGui().oneOrNone("Set life for which player?", PlayerView.getCollection(game.getPlayers()))); getGui().oneOrNone(localizer.getMessage("lblSetLifeforWhichPlayer"), PlayerView.getCollection(game.getPlayers())));
if (player == null) { if (player == null) {
return; return;
} }
final Integer life = getGui().getInteger("Set life to what?", 0); final Integer life = getGui().getInteger(localizer.getMessage("lblSetLifetoWhat"), 0);
if (life == null) { if (life == null) {
return; return;
} }
@@ -2254,7 +2259,7 @@ public class PlayerControllerHuman extends PlayerController implements IGameCont
public void winGame() { public void winGame() {
final Input input = inputQueue.getInput(); final Input input = inputQueue.getInput();
if (!(input instanceof InputPassPriority)) { if (!(input instanceof InputPassPriority)) {
getGui().message("You must have priority to use this feature.", "Win Game"); getGui().message(localizer.getMessage("lblYouMustHavePrioritytoUseThisFeature"), localizer.getMessage("lblWinGame"));
return; return;
} }
@@ -2361,7 +2366,7 @@ public class PlayerControllerHuman extends PlayerController implements IGameCont
Collections.sort(faces); Collections.sort(faces);
// use standard forge's list selection dialog // use standard forge's list selection dialog
final ICardFace f = repeatLast ? lastAdded : getGui().oneOrNone("Name the card", faces); final ICardFace f = repeatLast ? lastAdded : getGui().oneOrNone(localizer.getMessage("lblNameTheCard"), faces);
if (f == null) { if (f == null) {
return; return;
} }
@@ -2390,7 +2395,7 @@ public class PlayerControllerHuman extends PlayerController implements IGameCont
forgeCard.setSickness(lastSummoningSickness); forgeCard.setSickness(lastSummoningSickness);
} }
} else { } else {
getGui().message("The chosen card is not a permanent or can't exist independently on the battlefield.\nIf you'd like to cast a non-permanent spell, or if you'd like to cast a permanent spell and place it on stack, please use the Cast Spell/Play Land button.", "Error"); getGui().message(localizer.getMessage("lblChosenCardNotPermanentorCantExistIndependentlyontheBattleground"), localizer.getMessage("lblError"));
return; return;
} }
} else { } else {
@@ -2565,12 +2570,12 @@ public class PlayerControllerHuman extends PlayerController implements IGameCont
@Override @Override
public void riggedPlanarRoll() { public void riggedPlanarRoll() {
final Player player = game.getPlayer( final Player player = game.getPlayer(
getGui().oneOrNone("Which player should roll?", PlayerView.getCollection(game.getPlayers()))); getGui().oneOrNone(localizer.getMessage("lblWhichPlayerShouldRoll"), PlayerView.getCollection(game.getPlayers())));
if (player == null) { if (player == null) {
return; return;
} }
final PlanarDice res = getGui().oneOrNone("Choose result", PlanarDice.values); final PlanarDice res = getGui().oneOrNone(localizer.getMessage("lblChooseResult"), PlanarDice.values);
if (res == null) { if (res == null) {
return; return;
} }
@@ -2606,7 +2611,7 @@ public class PlayerControllerHuman extends PlayerController implements IGameCont
Collections.sort(allPlanars); Collections.sort(allPlanars);
// use standard forge's list selection dialog // use standard forge's list selection dialog
final IPaperCard c = getGui().oneOrNone("Name the card", allPlanars); final IPaperCard c = getGui().oneOrNone(localizer.getMessage("lblNameTheCard"), allPlanars);
if (c == null) { if (c == null) {
return; return;
} }
@@ -2647,12 +2652,12 @@ public class PlayerControllerHuman extends PlayerController implements IGameCont
@Override @Override
public void setRememberedActions() { public void setRememberedActions() {
final String dialogTitle = "Remember Action Sequence"; final String dialogTitle = localizer.getMessage("lblRememberActionSequence");
// Not sure if this priority guard is really needed, but it seems // Not sure if this priority guard is really needed, but it seems
// like an alright idea. // like an alright idea.
final Input input = inputQueue.getInput(); final Input input = inputQueue.getInput();
if (!(input instanceof InputPassPriority)) { if (!(input instanceof InputPassPriority)) {
getGui().message("You must have priority to use this feature.", dialogTitle); getGui().message(localizer.getMessage("lblYouMustHavePrioritytoUseThisFeature"), dialogTitle);
return; return;
} }
@@ -2761,9 +2766,9 @@ public class PlayerControllerHuman extends PlayerController implements IGameCont
@Override @Override
public void nextRememberedAction() { public void nextRememberedAction() {
final String dialogTitle = "Do Next Action in Sequence"; final String dialogTitle = localizer.getMessage("lblDoNextActioninSequence");
if (rememberedActions.isEmpty()) { if (rememberedActions.isEmpty()) {
getGui().message("Please define an action sequence first.", dialogTitle); getGui().message(localizer.getMessage("lblPleaseDefineanActionSequenceFirst"), dialogTitle);
return; return;
} }
if (sequenceIndex >= rememberedActions.size()) { if (sequenceIndex >= rememberedActions.size()) {
@@ -2861,8 +2866,8 @@ public class PlayerControllerHuman extends PlayerController implements IGameCont
List<CardView> choices = new ArrayList<>(mapCVtoC.keySet()); List<CardView> choices = new ArrayList<>(mapCVtoC.keySet());
List<CardView> chosen; List<CardView> chosen;
chosen = getGui().many( chosen = getGui().many(
"Choose cards to Splice onto", localizer.getMessage("lblChooseCardstoSpliceonto"),
"Chosen Cards", localizer.getMessage("lblChosenCards"),
0, 0,
choices.size(), choices.size(),
choices, choices,
@@ -2884,13 +2889,13 @@ public class PlayerControllerHuman extends PlayerController implements IGameCont
@Override @Override
public List<OptionalCostValue> chooseOptionalCosts(SpellAbility choosen, public List<OptionalCostValue> chooseOptionalCosts(SpellAbility choosen,
List<OptionalCostValue> optionalCost) { List<OptionalCostValue> optionalCost) {
return getGui().many("Choose optional Costs", "Optional Costs", 0, optionalCost.size(), return getGui().many(localizer.getMessage("lblChooseOptionalCosts"), localizer.getMessage("lblOptionalCosts"), 0, optionalCost.size(),
optionalCost, choosen.getHostCard().getView()); optionalCost, choosen.getHostCard().getView());
} }
@Override @Override
public boolean confirmMulliganScry(Player p) { public boolean confirmMulliganScry(Player p) {
return InputConfirm.confirm(this, (SpellAbility)null, "Do you want to scry?"); return InputConfirm.confirm(this, (SpellAbility)null, localizer.getMessage("lblDoYouWanttoScry"));
} }
@Override @Override