From 1cd94a20206ecf2fa00e4757ad3098a0729583bb Mon Sep 17 00:00:00 2001 From: magenoxx Date: Fri, 3 Aug 2012 12:19:31 +0400 Subject: [PATCH 01/10] Added revealing cards in Quiet Speculation --- Mage.Sets/src/mage/sets/judgment/QuietSpeculation.java | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/Mage.Sets/src/mage/sets/judgment/QuietSpeculation.java b/Mage.Sets/src/mage/sets/judgment/QuietSpeculation.java index 143e9e1887..8f94503077 100644 --- a/Mage.Sets/src/mage/sets/judgment/QuietSpeculation.java +++ b/Mage.Sets/src/mage/sets/judgment/QuietSpeculation.java @@ -35,6 +35,8 @@ import mage.abilities.effects.SearchEffect; import mage.abilities.keyword.FlashbackAbility; import mage.cards.Card; import mage.cards.CardImpl; +import mage.cards.Cards; +import mage.cards.CardsImpl; import mage.filter.FilterCard; import mage.filter.predicate.mageobject.AbilityPredicate; import mage.game.Game; @@ -103,12 +105,17 @@ class SearchLibraryPutInGraveEffect extends SearchEffect 0) { + Cards cards = new CardsImpl(); for (UUID cardId: (List)target.getTargets()) { Card card = player.getLibrary().remove(cardId, game); if (card != null){ card.moveToZone(Constants.Zone.GRAVEYARD, source.getId(), game, false); + cards.add(card); } } + if (cards.size() > 0) { + player.revealCards("Quiet Speculation", cards, game); + } } player.shuffleLibrary(game); return true; From 12d597f17e1c134a2566ed07345f928959380c16 Mon Sep 17 00:00:00 2001 From: magenoxx Date: Fri, 3 Aug 2012 12:20:13 +0400 Subject: [PATCH 02/10] [JUD] Wonder with tests --- Mage.Sets/src/mage/sets/judgment/Wonder.java | 91 ++++++++++++++++++ .../test/cards/continuous/WonderTest.java | 92 +++++++++++++++++++ .../base/impl/CardTestPlayerAPIImpl.java | 33 +++++++ 3 files changed, 216 insertions(+) create mode 100644 Mage.Sets/src/mage/sets/judgment/Wonder.java create mode 100644 Mage.Tests/src/test/java/org/mage/test/cards/continuous/WonderTest.java diff --git a/Mage.Sets/src/mage/sets/judgment/Wonder.java b/Mage.Sets/src/mage/sets/judgment/Wonder.java new file mode 100644 index 0000000000..c9899963f8 --- /dev/null +++ b/Mage.Sets/src/mage/sets/judgment/Wonder.java @@ -0,0 +1,91 @@ +/* + * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this list of + * conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright notice, this list + * of conditions and the following disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * The views and conclusions contained in the software and documentation are those of the + * authors and should not be interpreted as representing official policies, either expressed + * or implied, of BetaSteward_at_googlemail.com. + */ +package mage.sets.judgment; + +import mage.Constants; +import mage.Constants.CardType; +import mage.Constants.Rarity; +import mage.MageInt; +import mage.abilities.common.SimpleStaticAbility; +import mage.abilities.condition.common.ControlsPermanentCondition; +import mage.abilities.decorator.ConditionalContinousEffect; +import mage.abilities.effects.ContinuousEffect; +import mage.abilities.effects.common.continious.GainAbilityControlledEffect; +import mage.abilities.keyword.FlyingAbility; +import mage.cards.CardImpl; +import mage.filter.common.FilterControlledPermanent; +import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.mageobject.CardTypePredicate; +import mage.filter.predicate.mageobject.SubtypePredicate; + +import java.util.UUID; + +/** + * + * @author magenoxx_at_gmail.com + */ +public class Wonder extends CardImpl { + + private static final String ruleText = "As long as Wonder is in your graveyard and you control an Island, creatures you control have flying"; + + private static final FilterControlledPermanent filter = new FilterControlledPermanent("Island"); + + static { + filter.add(new CardTypePredicate(CardType.LAND)); + filter.add(new SubtypePredicate("Island")); + } + + public Wonder(UUID ownerId) { + super(ownerId, 54, "Wonder", Rarity.UNCOMMON, new CardType[]{CardType.CREATURE}, "{3}{U}"); + this.expansionSetCode = "JUD"; + this.subtype.add("Incarnation"); + + this.color.setBlue(true); + this.power = new MageInt(2); + this.toughness = new MageInt(2); + + // Flying + this.addAbility(FlyingAbility.getInstance()); + + // As long as Wonder is in your graveyard and you control an Island, creatures you control have flying. + ContinuousEffect effect = new GainAbilityControlledEffect(FlyingAbility.getInstance(), + Constants.Duration.WhileOnBattlefield, new FilterCreaturePermanent()); + ConditionalContinousEffect wonderEffect = new ConditionalContinousEffect(effect, + new ControlsPermanentCondition(filter), ruleText); + this.addAbility(new SimpleStaticAbility(Constants.Zone.GRAVEYARD, wonderEffect)); + } + + public Wonder(final Wonder card) { + super(card); + } + + @Override + public Wonder copy() { + return new Wonder(this); + } +} diff --git a/Mage.Tests/src/test/java/org/mage/test/cards/continuous/WonderTest.java b/Mage.Tests/src/test/java/org/mage/test/cards/continuous/WonderTest.java new file mode 100644 index 0000000000..5166b3115d --- /dev/null +++ b/Mage.Tests/src/test/java/org/mage/test/cards/continuous/WonderTest.java @@ -0,0 +1,92 @@ +package org.mage.test.cards.continuous; + +import mage.Constants; +import mage.abilities.keyword.FlyingAbility; +import mage.cards.Card; +import org.junit.Assert; +import org.junit.Test; +import org.mage.test.serverside.base.CardTestPlayerBase; + +/** + * Wonder + * As long as Wonder is in your graveyard and you control an Island, creatures you control have flying. + * + * @author magenoxx_at_gmail.com + */ +public class WonderTest extends CardTestPlayerBase { + + /** + * Tests creatures for Flying gained from Wonder ability when all conditions were met + */ + @Test + public void testCardWithAllConditionsMet() { + addCard(Constants.Zone.GRAVEYARD, playerA, "Wonder"); + addCard(Constants.Zone.GRAVEYARD, playerA, "Runeclaw Bear"); + addCard(Constants.Zone.BATTLEFIELD, playerA, "Island"); + addCard(Constants.Zone.BATTLEFIELD, playerA, "Elite Vanguard"); + addCard(Constants.Zone.BATTLEFIELD, playerA, "Corpse Traders"); + + addCard(Constants.Zone.BATTLEFIELD, playerB, "Llanowar Elves"); + + setStopAt(1, Constants.PhaseStep.BEGIN_COMBAT); + execute(); + + assertAbility(playerA, "Elite Vanguard", FlyingAbility.getInstance(), true); + assertAbility(playerA, "Corpse Traders", FlyingAbility.getInstance(), true); + assertAbility(playerB, "Llanowar Elves", FlyingAbility.getInstance(), false); + + // check no flying in graveyard + for (Card card : playerA.getGraveyard().getCards(currentGame)) { + if (card.equals("Runeclaw Bear")) { + Assert.assertFalse(card.getAbilities().contains(FlyingAbility.getInstance())); + } + } + } + + @Test + public void testNoIsland() { + addCard(Constants.Zone.GRAVEYARD, playerA, "Wonder"); + addCard(Constants.Zone.BATTLEFIELD, playerA, "Forest"); + addCard(Constants.Zone.BATTLEFIELD, playerA, "Mountain"); + addCard(Constants.Zone.BATTLEFIELD, playerA, "Plains"); + addCard(Constants.Zone.BATTLEFIELD, playerA, "Swamp"); + addCard(Constants.Zone.BATTLEFIELD, playerA, "Elite Vanguard"); + + setStopAt(1, Constants.PhaseStep.BEGIN_COMBAT); + execute(); + + assertAbility(playerA, "Elite Vanguard", FlyingAbility.getInstance(), false); + } + + @Test + public void testOtherZones() { + addCard(Constants.Zone.BATTLEFIELD, playerA, "Wonder"); + addCard(Constants.Zone.HAND, playerA, "Wonder"); + addCard(Constants.Zone.LIBRARY, playerA, "Wonder"); + addCard(Constants.Zone.BATTLEFIELD, playerA, "Island"); + + addCard(Constants.Zone.BATTLEFIELD, playerA, "Elite Vanguard"); + + setStopAt(1, Constants.PhaseStep.BEGIN_COMBAT); + execute(); + + assertAbility(playerA, "Elite Vanguard", FlyingAbility.getInstance(), false); + } + + @Test + public void testDestroyIsland() { + addCard(Constants.Zone.GRAVEYARD, playerA, "Wonder"); + addCard(Constants.Zone.BATTLEFIELD, playerA, "Island"); + addCard(Constants.Zone.BATTLEFIELD, playerA, "Mountain", 4); + addCard(Constants.Zone.BATTLEFIELD, playerA, "Elite Vanguard"); + addCard(Constants.Zone.HAND, playerA, "Demolish"); + + castSpell(1, Constants.PhaseStep.PRECOMBAT_MAIN, playerA, "Demolish", "Island"); + + setStopAt(1, Constants.PhaseStep.BEGIN_COMBAT); + execute(); + + assertAbility(playerA, "Elite Vanguard", FlyingAbility.getInstance(), false); + } + +} diff --git a/Mage.Tests/src/test/java/org/mage/test/serverside/base/impl/CardTestPlayerAPIImpl.java b/Mage.Tests/src/test/java/org/mage/test/serverside/base/impl/CardTestPlayerAPIImpl.java index 5c0be829e8..bcd655259b 100644 --- a/Mage.Tests/src/test/java/org/mage/test/serverside/base/impl/CardTestPlayerAPIImpl.java +++ b/Mage.Tests/src/test/java/org/mage/test/serverside/base/impl/CardTestPlayerAPIImpl.java @@ -357,6 +357,39 @@ public abstract class CardTestPlayerAPIImpl extends MageTestPlayerBase implement } } + /** + * + * @param player + * @param cardName + * @param ability + * @param flag true if creature should contain ability, false otherwise + * @throws AssertionError + */ + public void assertAbility(Player player, String cardName, Ability ability, boolean flag) throws AssertionError { + int count = 0; + Permanent found = null; + for (Permanent permanent : currentGame.getBattlefield().getAllActivePermanents(player.getId())) { + if (permanent.getName().equals(cardName)) { + found = permanent; + count++; + } + } + + Assert.assertNotNull("There is no such permanent under player's control, player=" + player.getName() + + ", cardName=" + cardName, found); + + Assert.assertTrue("There is more than one such permanent under player's control, player=" + player.getName() + + ", cardName=" + cardName, count == 1); + + if (flag) { + Assert.assertTrue("No such ability=" + ability.toString() + ", player=" + player.getName() + + ", cardName" + cardName, found.getAbilities().contains(ability)); + } else { + Assert.assertFalse("Card shouldn't have such ability=" + ability.toString() + ", player=" + player.getName() + + ", cardName" + cardName, found.getAbilities().contains(ability)); + } + } + /** * Assert permanent count under player's control. * From 931381606d7ea7367b8d9252df9161a08135fb1e Mon Sep 17 00:00:00 2001 From: magenoxx Date: Fri, 3 Aug 2012 13:27:10 +0400 Subject: [PATCH 03/10] Fixed concede game option not working in popup menu --- Mage.Client/src/main/java/mage/client/game/PlayAreaPanel.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Mage.Client/src/main/java/mage/client/game/PlayAreaPanel.java b/Mage.Client/src/main/java/mage/client/game/PlayAreaPanel.java index 65ac7d53fa..8777a93f86 100644 --- a/Mage.Client/src/main/java/mage/client/game/PlayAreaPanel.java +++ b/Mage.Client/src/main/java/mage/client/game/PlayAreaPanel.java @@ -97,9 +97,9 @@ public class PlayAreaPanel extends javax.swing.JPanel { public final void init(PlayerView player, BigCard bigCard, UUID gameId) { this.playerPanel.init(gameId, player.getPlayerId(), bigCard); this.battlefieldPanel.init(gameId, bigCard); + this.gameId = gameId; if (MageFrame.getSession().isTestMode()) { this.playerId = player.getPlayerId(); - this.gameId = gameId; this.btnCheat.setVisible(true); } else { From c97d5e8a355285a1ce33d1a18b8b9d90aee3bc16 Mon Sep 17 00:00:00 2001 From: magenoxx Date: Fri, 3 Aug 2012 16:53:01 +0400 Subject: [PATCH 04/10] AI enhancements --- .../src/mage/player/ai/ComputerPlayer6.java | 2 ++ .../mage/player/ai/GameStateEvaluator2.java | 2 +- .../src/mage/player/ai/SimulatedPlayer2.java | 2 +- .../player/ai/ma/ArtificialScoringSystem.java | 4 +-- .../optimizers/impl/DiscardCardOptimizer.java | 23 ++++++++++++++++++ Mage.Server/plugins/mage-player-ai-ma.jar | Bin 64446 -> 65351 bytes Mage.Server/plugins/mage-player-ai.jar | Bin 58755 -> 58759 bytes Mage.Server/plugins/mage-player-aiminimax.jar | Bin 39694 -> 39687 bytes 8 files changed, 29 insertions(+), 4 deletions(-) create mode 100644 Mage.Server.Plugins/Mage.Player.AI.MA/src/mage/player/ai/ma/optimizers/impl/DiscardCardOptimizer.java diff --git a/Mage.Server.Plugins/Mage.Player.AI.MA/src/mage/player/ai/ComputerPlayer6.java b/Mage.Server.Plugins/Mage.Player.AI.MA/src/mage/player/ai/ComputerPlayer6.java index 0a8e95acce..83dd306a5e 100644 --- a/Mage.Server.Plugins/Mage.Player.AI.MA/src/mage/player/ai/ComputerPlayer6.java +++ b/Mage.Server.Plugins/Mage.Player.AI.MA/src/mage/player/ai/ComputerPlayer6.java @@ -55,6 +55,7 @@ import mage.game.stack.StackAbility; import mage.game.stack.StackObject; import mage.game.turn.*; import mage.player.ai.ma.optimizers.TreeOptimizer; +import mage.player.ai.ma.optimizers.impl.DiscardCardOptimizer; import mage.player.ai.ma.optimizers.impl.EquipOptimizer; import mage.player.ai.ma.optimizers.impl.LevelUpOptimizer; import mage.player.ai.util.CombatInfo; @@ -96,6 +97,7 @@ public class ComputerPlayer6 extends ComputerPlayer implements static { optimizers.add(new LevelUpOptimizer()); optimizers.add(new EquipOptimizer()); + optimizers.add(new DiscardCardOptimizer()); } public ComputerPlayer6(String name, RangeOfInfluence range, int skill) { diff --git a/Mage.Server.Plugins/Mage.Player.AI.MA/src/mage/player/ai/GameStateEvaluator2.java b/Mage.Server.Plugins/Mage.Player.AI.MA/src/mage/player/ai/GameStateEvaluator2.java index 57e6306662..42f990a8b1 100644 --- a/Mage.Server.Plugins/Mage.Player.AI.MA/src/mage/player/ai/GameStateEvaluator2.java +++ b/Mage.Server.Plugins/Mage.Player.AI.MA/src/mage/player/ai/GameStateEvaluator2.java @@ -62,7 +62,7 @@ public class GameStateEvaluator2 { int permanentScore = 0; try { for (Permanent permanent: game.getBattlefield().getAllActivePermanents(playerId)) { - permanentScore += 10 * evaluatePermanent(permanent, game); + permanentScore += evaluatePermanent(permanent, game); } for (Permanent permanent: game.getBattlefield().getAllActivePermanents(opponent.getId())) { permanentScore -= evaluatePermanent(permanent, game); diff --git a/Mage.Server.Plugins/Mage.Player.AI.MA/src/mage/player/ai/SimulatedPlayer2.java b/Mage.Server.Plugins/Mage.Player.AI.MA/src/mage/player/ai/SimulatedPlayer2.java index 0f63ac787f..d5c7fad04d 100644 --- a/Mage.Server.Plugins/Mage.Player.AI.MA/src/mage/player/ai/SimulatedPlayer2.java +++ b/Mage.Server.Plugins/Mage.Player.AI.MA/src/mage/player/ai/SimulatedPlayer2.java @@ -101,7 +101,7 @@ public class SimulatedPlayer2 extends ComputerPlayer { } for (Ability a : allActions) { - System.out.println("ability=="+a); + //System.out.println("ability=="+a); if (a.getTargets().size() > 0) { Player player = game.getPlayer(a.getFirstTarget()); if (player != null) { diff --git a/Mage.Server.Plugins/Mage.Player.AI.MA/src/mage/player/ai/ma/ArtificialScoringSystem.java b/Mage.Server.Plugins/Mage.Player.AI.MA/src/mage/player/ai/ma/ArtificialScoringSystem.java index 108cd9191f..72c87c9899 100644 --- a/Mage.Server.Plugins/Mage.Player.AI.MA/src/mage/player/ai/ma/ArtificialScoringSystem.java +++ b/Mage.Server.Plugins/Mage.Player.AI.MA/src/mage/player/ai/ma/ArtificialScoringSystem.java @@ -119,9 +119,9 @@ public class ArtificialScoringSystem { if (permanent.getCardType().contains(Constants.CardType.CREATURE)) { return -100; } else if (permanent.getCardType().contains(Constants.CardType.LAND)) { - return -10; + return -1; } else { - return -50; + return -2; } } diff --git a/Mage.Server.Plugins/Mage.Player.AI.MA/src/mage/player/ai/ma/optimizers/impl/DiscardCardOptimizer.java b/Mage.Server.Plugins/Mage.Player.AI.MA/src/mage/player/ai/ma/optimizers/impl/DiscardCardOptimizer.java new file mode 100644 index 0000000000..a4875452ad --- /dev/null +++ b/Mage.Server.Plugins/Mage.Player.AI.MA/src/mage/player/ai/ma/optimizers/impl/DiscardCardOptimizer.java @@ -0,0 +1,23 @@ +package mage.player.ai.ma.optimizers.impl; + +import mage.abilities.Ability; +import mage.game.Game; + +import java.util.List; + +/** + * Removes abilities that require only discard a card for activation. + * + * @author magenoxx_at_gmail.com + */ +public class DiscardCardOptimizer extends BaseTreeOptimizer { + + @Override + public void filter(Game game, List actions) { + for (Ability ability : actions) { + if (ability.toString().startsWith("Discard card")) { + removeAbility(ability); + } + } + } +} diff --git a/Mage.Server/plugins/mage-player-ai-ma.jar b/Mage.Server/plugins/mage-player-ai-ma.jar index ae0c9abc9fff5e3b70b7fe44ee60719fdd040097..5c41f2402432676b3f71fad77dcf4adb9fee6405 100644 GIT binary patch delta 41490 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 diff --git a/Mage.Server/plugins/mage-player-ai.jar b/Mage.Server/plugins/mage-player-ai.jar index 8dfc3c893e3b7239998c100cc15f73ae56e7f3cd..5cb22be62c72915b5a1d80e898571fc8b150bd47 100644 GIT binary patch delta 662 zcmZoZ&D?&PnJ>VbnT3l11kN`xJ5J#7olTClLrjuj&N zxH+5y!m{h}fwKChtbrPAH)EavME1c7IRh|jGSf|{uk>#kK}1q-IrGdpfxb<>|o z2;|y>pZ0&s1BOlk5SubgwtpfuIpC@6WT!h~(q-DGLJD+z!wn3=3`{l~8ErD!6!L+$ zEYQHnU~>K)Pl$?ZGf62S=%y2VbnT3l11m-OI=`fK`nPoPJHl3voqQMeSf)z;TCZ?zABeZ~(ep3T$ znXJI531Rp$nm`z>jQU{4<{gZsTo9Ha&qF2%ON>8=1;WY^ehw827rV{G2QoBY$~-fG znSr64eR86h%H|ZwL}rNElQO#?Y8SW5Lp60PE(n82>Q{tA#k#75p@uK4vtxzGK5h=@ zfUxX(e4wnpDQlnx+s&9K0FiyLLe78%6d044ZfZgp`ZtXrjMSTsEYlLcIBZ^Z)1OHQ zq{yiLHe(hrWD0=TlwtC{C%Tg@?kI@!u@~+2Di-PS5$)kw({SR7%R%!StS1a77vJ%O zm~`NdG1$7v-|yH#7?yV-p*1<@t{FsR*QFYF<9@g)poh20<7T9tJ`fPaj4?7*3DkAdDrCpdyTq yqah**kD=N(J~oB;>(ygR2t)me6NHibBoG{ClMg+K;DiU+WaX!EY-{d-(iQ+jBq0+3 diff --git a/Mage.Server/plugins/mage-player-aiminimax.jar b/Mage.Server/plugins/mage-player-aiminimax.jar index 9f8516089c36bf17be43e87d21360e921d7e30ee..63de76241bcad83e67f81379198c88004d3ec6df 100644 GIT binary patch delta 1815 zcmZWp2~bmK5Pl>fNE!$UR|4e@rv{>eLbz1C!XZZ$1XC*ta$3c!v?<;wh%gd7AbrUTO4@(sy?R`nQxD_qOx02+ChG3 z3=Wc?fkWuk1=?1c{qXIxImAA(fU%P6(A#4_n9|S^((Si|xw!Y{%^tt3oZ1)rYoanY z3tv(?jD?eIH^UkmL3J%p-`#*}6I1OlVy@Bs4=kU(e7rRwxfmem=o-` zY&A%gQo*hKsl#_tWK6WvJOrz3>zxfo-X1VhvsW1B{MG(JA=XmNL6nv}NaNMtvO`1A z5a?x4&q=WEXarz}tD+-T2g66{`^qcA6!FEeE@KeOE|Q5ytdyiMW$}SMZAvSTovV*T zjdOOYBUVOU84?9%e55bn&tFEAH?wdmM-U8_f~$NSF=!ilwLP&fjDmuoEDZ>9fg>(J zrvS@MctqFZ5T1CKHs0H~$*{|Sb$tgO*Bg4DF&*mszH7_(errP7$+K@j^n*~Atybc$ zwA}oo`^Me=OuunrtwR$w{x~N*nd6z}yxx)Sc+|S3-)-K)s zobcA?$TUM#{WzE=D6-5PF}6#x4w3pE%5N0d|BTvw`%E`AY^T+p<~zQXg-`ertmekG zlvc|-TU$o_T~5+Y)-PGn=5kCT@wj;Y-RRQ&VOv^~e%V`h@pLDeLk#C<>RX(ODld-m zHs3YN9jNFS;@2e{Z?F{wa{HK?FK@RS47c4oE?qg;oYrU3I!W0mp(Nj0mF*buNvCqd zpuT0r*=+W!N0S}mmZKz5)naFn)G8tFnR(TU*K_KfBjR|ciHXsY3c{0uIzRkft*PdU z@sxZIt+bD3cT>Ne4&-2hhPRu}HAQv~_QW;?bM?IF(d)7p)e(ajshIa>L*sYJTGD|N z-3@8dM>X4B#^?kMsmE{eCc(kJp)J2k{11njw z!Z{hw&Z{mywJT_I4C;U&D*7N8C#Xym`T?oxW88)>?Adgh175o2Y)~< z$WINWho0XRC|HfeqUB$<1qdi|Q^*4378y}GzbJWO7MygY$jJP~d^9;RGA)`7%l$tf zme9zHq^4X3N>F6n0vz%hd&y0-dRR*ocyX96kX&_!HwY}IA?@&rjZjn!5MwRC4vfZ< zFI-5C&uas&VWU!`77HiY0kQyZE|>JoMUm?+I=o+EA&9C1B;jD7IfxRF5XSuiBh&>3 z>@x%B1<2L_eXwuNQ{mGr(M53PB}OO~3-;-Pz!C!mNuuWzeGwieAw!U@3W;$fSP^Lt z&Xgca3bez?u}OelN&)3bMBp#PSs(+cQF^YW!;eCQ2U6|xI&dmoZYG~)eT7Gazdi)9 z;CWOrJdjbkT+vGIy?~R}a1Egr1X-!HqMZZNlELdziURnYd*l5!nD8(Lf~-}5`|=b( zPoXg~FiS{A%VZ>wDl}DOE&xODz{;Zo$zu*exY*OzlCIsOqL?|E(5eOocaG& o>3lYPS7(UjKsv}S(^c>&R09W6;m<<_NCOJsXqhSY1CU4l1)IH%-~a#s delta 1860 zcmZuy3pA8z82;u$n#Q4ZDT8^3s&v_&o6ei{pZYl@BjSId->k)f1f$sh|g@qQ#?5Y zA_<^ZQ0Z%S7R6v?AhL!;r_}^!u{H|K-1>UVIOa|YE5^#ab2Lrc8AqGXrF*Gyymm#M zUt6QDyGj*Wd1=I{-Se73p14^>y0!lvlWG`PZfjc*ld9aW?)zg-h)^TonEb146|Fw4 zK43W`nn{{^@kb6>Lk}MIU%y0=11Kl!?HVFl9i-z-h$v9+jvK{OP^hEvS*-&efUk-0 zKFgqS%*3p2mh&P;cG$0nVL?7EM9eZd z=t{;?MThRiV^)7y^P-g*k*0xRx+#a`FzaMSAztbW=|U6Ca2Hx)MxxL~<#ya__KWDE zVgsbwODh1_0EI#ec)W0hpnJD(`Y=;DPHD_BUozz4L3PuKOLj8R_4zF^LDJ+b+UQW; z$Y6}8M|>35nc3CdcO{HZ7HyygM<+jCeOC2ymwaU^#lPcC?^wTfbJq=q-AIay6Aiag z^lbjVX)D_z&1gepjHKHCuXnKxf~li3HWx-|S6bG;y_5ab7emQ>k^sIkPJ6MQGxgGL zbLzp9ykf2Mel`bga_zg6ELf8v*_qo#Zt8~RJs00o+_!)Tth=qT)w$jrQTp8jnL(Uv978>R6W>kf|DUd)m}kQ^`B_)aku# z3kT?D?S1_!zsql%w-rxkUD6NxSUR^WPh5ExR1M#|?buX3`O6uBCU@&7VVC!oO1~-% zcRr2$K7lwdH^f((+Tz{Y@^syss=(7RHa8|l_xzcX=2chXE2m}oV$7z=E-2xucr_&5 z3Yhh7zHZA_=&XD2y5jDn?gM2};^l%5v21mo*Y#n49XXuMzU8+puU>JgH8-pa z8jqi!3!k&@n3|=LS;^wK=e5As$|G&Z!w>fLRXdUbK%sY-b(5-Ub*$vq6W*12=CN~x zPeY*~ozwu53OO9Ip{w8;sgtREd~{*tiN2&+zqds5=E@Su-HzFY!!}2-B$gjg7c6nA+U6 zJmt%g{_8?slmq}!mkHRPql1mo%N#0B1+Eh5Nv95)i>P=99OUBYFi=FM%Sr+OYnH+Q zPD{iSiOjIxjcgDLsG69hUw>0@hT()qeBmpyxH<@v9^b}k3

T{(|v zm2B`v7UD#MS93L_Rj{8vJ*BG$K<8Ef7&28XY?2c3d1_K(?ZZA^G7*3?3IOQH5V=0^ zsLyKC&q~-d!&E@}GpG%Kk&FWs#^+hn(N;!38F;0E2+dohRAU*=;ZP{d(1zziRpCM& zCUHjDL0d}UJ9--^Hr5ltOg%T~- zetMG>z-KzUL`PqNc9hOUWEX3`bcztd_sG{?hG-2Ji9{F=Nt&Jh=t2R G@BRT@B(7-y From 5c1a2f7a430584923cf848360b07c6474e4f65de Mon Sep 17 00:00:00 2001 From: magenoxx Date: Fri, 3 Aug 2012 17:11:16 +0400 Subject: [PATCH 05/10] Madness fixes. Removed end_of_turn sound --- .../src/main/java/mage/client/game/GamePanel.java | 3 +-- Mage/src/mage/abilities/AbilityImpl.java | 1 + .../mage/abilities/keyword/MadnessAbility.java | 15 +++++++++++---- 3 files changed, 13 insertions(+), 6 deletions(-) diff --git a/Mage.Client/src/main/java/mage/client/game/GamePanel.java b/Mage.Client/src/main/java/mage/client/game/GamePanel.java index 1db5a0b7e2..b6e4060151 100644 --- a/Mage.Client/src/main/java/mage/client/game/GamePanel.java +++ b/Mage.Client/src/main/java/mage/client/game/GamePanel.java @@ -48,7 +48,6 @@ import mage.client.dialog.*; import mage.client.game.FeedbackPanel.FeedbackMode; import mage.client.plugins.adapters.MageActionCallback; import mage.client.plugins.impl.Plugins; -import mage.client.util.AudioManager; import mage.client.util.Config; import mage.client.util.GameManager; import mage.client.util.PhaseManager; @@ -408,7 +407,7 @@ public class GamePanel extends javax.swing.JPanel { this.txtPhase.setText(""); } if (game.getPhase() != null && game.getPhase().toString().equals("End") && game.getStep().toString().equals("End Turn")) { - AudioManager.playEndTurn(); + //AudioManager.playEndTurn(); } if (game.getStep() != null) diff --git a/Mage/src/mage/abilities/AbilityImpl.java b/Mage/src/mage/abilities/AbilityImpl.java index 0834f352e4..40632a1579 100644 --- a/Mage/src/mage/abilities/AbilityImpl.java +++ b/Mage/src/mage/abilities/AbilityImpl.java @@ -211,6 +211,7 @@ public abstract class AbilityImpl> implements Ability { return false; } } + //20100716 - 601.2g if (!costs.pay(this, game, sourceId, controllerId, noMana)) { logger.debug("activate failed - non mana costs"); diff --git a/Mage/src/mage/abilities/keyword/MadnessAbility.java b/Mage/src/mage/abilities/keyword/MadnessAbility.java index 7e67b220d9..ebb18e7ee8 100644 --- a/Mage/src/mage/abilities/keyword/MadnessAbility.java +++ b/Mage/src/mage/abilities/keyword/MadnessAbility.java @@ -8,6 +8,7 @@ import mage.abilities.StaticAbility; import mage.abilities.TriggeredAbilityImpl; import mage.abilities.common.SimpleStaticAbility; import mage.abilities.costs.Cost; +import mage.abilities.costs.mana.ManaCost; import mage.abilities.effects.AsThoughEffectImpl; import mage.abilities.effects.OneShotEffect; import mage.cards.Card; @@ -105,13 +106,18 @@ class MadnessPlayEffect extends AsThoughEffectImpl { if (card != null && card.getOwnerId().equals(source.getControllerId()) && game.getState().getZone(source.getSourceId()) == Constants.Zone.EXILED) { Object object = game.getState().getValue("madness_" + card.getId()); if (object != null && object.equals(true)) { + Object alfreadyConfirmed = game.getState().getValue("madness_ok_" + card.getId()); + if (alfreadyConfirmed != null) { + return true; + } Player player = game.getPlayer(card.getOwnerId()); String message = "Cast " + card.getName() + " by its madness cost?"; if (player != null && player.chooseUse(Constants.Outcome.Benefit, message, game)) { - if (cost.pay(card.getSpellAbility(), game, sourceId, player.getId(), false)) { - card.getSpellAbility().getManaCostsToPay().clear(); - return true; - } + Cost costToPay = cost.copy(); + card.getSpellAbility().getManaCostsToPay().clear(); + card.getSpellAbility().getManaCostsToPay().add((ManaCost)costToPay); + game.getState().setValue("madness_ok_" + card.getId(), true); + return true; } } } @@ -232,6 +238,7 @@ class MadnessCleanUpWatcher extends WatcherImpl { game.informPlayers("Madness cost wasn't paied. " + card.getName() + " was put to its owner's graveyard."); // reset game.getState().setValue("madness_" + card.getId(), null); + game.getState().setValue("madness_ok_" + card.getId(), null); } card.moveToZone(Constants.Zone.GRAVEYARD, sourceId, game, true); } From 964aaf23abb1efc008f00ead93ae00949e6a9b04 Mon Sep 17 00:00:00 2001 From: magenoxx Date: Fri, 3 Aug 2012 19:44:48 +0400 Subject: [PATCH 06/10] Graveyard dialog auto close on pay message. Usefull for flashback cards. --- Mage.Client/src/main/java/mage/client/game/GamePanel.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/Mage.Client/src/main/java/mage/client/game/GamePanel.java b/Mage.Client/src/main/java/mage/client/game/GamePanel.java index b6e4060151..b5a6b67857 100644 --- a/Mage.Client/src/main/java/mage/client/game/GamePanel.java +++ b/Mage.Client/src/main/java/mage/client/game/GamePanel.java @@ -597,11 +597,13 @@ public class GamePanel extends javax.swing.JPanel { public void playMana(String message, GameView gameView) { updateGame(gameView); + DialogManager.getManager().fadeOut(); this.feedbackPanel.getFeedback(FeedbackMode.CANCEL, message, gameView.getSpecial(), null); } public void playXMana(String message, GameView gameView) { updateGame(gameView); + DialogManager.getManager().fadeOut(); this.feedbackPanel.getFeedback(FeedbackMode.CONFIRM, message, gameView.getSpecial(), null); } @@ -610,6 +612,7 @@ public class GamePanel extends javax.swing.JPanel { } public void pickAbility(AbilityPickerView choices) { + DialogManager.getManager().fadeOut(); this.abilityPicker.show(choices, MageFrame.getDesktop().getMousePosition()); } From 79c09ae801a9708d0ee94c891fe6f511bf35bee4 Mon Sep 17 00:00:00 2001 From: magenoxx Date: Fri, 3 Aug 2012 20:00:04 +0400 Subject: [PATCH 07/10] Madness cleanup watcher fix --- Mage/src/mage/abilities/keyword/MadnessAbility.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Mage/src/mage/abilities/keyword/MadnessAbility.java b/Mage/src/mage/abilities/keyword/MadnessAbility.java index ebb18e7ee8..0311794fc8 100644 --- a/Mage/src/mage/abilities/keyword/MadnessAbility.java +++ b/Mage/src/mage/abilities/keyword/MadnessAbility.java @@ -235,12 +235,12 @@ class MadnessCleanUpWatcher extends WatcherImpl { for (Card card : game.getExile().getAllCards(game)) { Object object = game.getState().getValue("madness_" + card.getId()); if (object != null && object.equals(true)) { - game.informPlayers("Madness cost wasn't paied. " + card.getName() + " was put to its owner's graveyard."); + game.informPlayers("Madness cost wasn't payed. " + card.getName() + " was put to its owner's graveyard."); // reset game.getState().setValue("madness_" + card.getId(), null); game.getState().setValue("madness_ok_" + card.getId(), null); + card.moveToZone(Constants.Zone.GRAVEYARD, sourceId, game, true); } - card.moveToZone(Constants.Zone.GRAVEYARD, sourceId, game, true); } } } From 3cea1b61329cb573563e4773f980d4627a3d2ce1 Mon Sep 17 00:00:00 2001 From: jeffwadsworth <> Date: Fri, 3 Aug 2012 12:00:10 -0500 Subject: [PATCH 08/10] - Requested. Added Day of the Dragons. Cool card. --- .../mage/sets/scourge/DayOfTheDragons.java | 181 ++++++++++++++++++ 1 file changed, 181 insertions(+) create mode 100644 Mage.Sets/src/mage/sets/scourge/DayOfTheDragons.java diff --git a/Mage.Sets/src/mage/sets/scourge/DayOfTheDragons.java b/Mage.Sets/src/mage/sets/scourge/DayOfTheDragons.java new file mode 100644 index 0000000000..3579f5048c --- /dev/null +++ b/Mage.Sets/src/mage/sets/scourge/DayOfTheDragons.java @@ -0,0 +1,181 @@ +/* + * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this list of + * conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright notice, this list + * of conditions and the following disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * The views and conclusions contained in the software and documentation are those of the + * authors and should not be interpreted as representing official policies, either expressed + * or implied, of BetaSteward_at_googlemail.com. + */ +package mage.sets.scourge; + +import java.util.UUID; +import mage.Constants; +import mage.Constants.CardType; +import mage.Constants.Rarity; +import mage.Constants.TargetController; +import mage.MageInt; +import mage.ObjectColor; +import mage.abilities.Ability; +import mage.abilities.common.EntersBattlefieldTriggeredAbility; +import mage.abilities.common.LeavesBattlefieldTriggeredAbility; +import mage.abilities.effects.OneShotEffect; +import mage.abilities.keyword.FlyingAbility; +import mage.cards.Card; +import mage.cards.CardImpl; +import mage.filter.FilterPermanent; +import mage.filter.predicate.mageobject.CardTypePredicate; +import mage.filter.predicate.mageobject.SubtypePredicate; +import mage.filter.predicate.permanent.ControllerPredicate; +import mage.game.ExileZone; +import mage.game.Game; +import mage.game.permanent.Permanent; +import mage.game.permanent.token.Token; + +/** + * + * @author jeffwadsworth + */ +public class DayOfTheDragons extends CardImpl { + + public DayOfTheDragons(UUID ownerId) { + super(ownerId, 31, "Day of the Dragons", Rarity.RARE, new CardType[]{CardType.ENCHANTMENT}, "{4}{U}{U}{U}"); + this.expansionSetCode = "SCG"; + + this.color.setBlue(true); + + // When Day of the Dragons enters the battlefield, exile all creatures you control. Then put that many 5/5 red Dragon creature tokens with flying onto the battlefield. + this.addAbility(new EntersBattlefieldTriggeredAbility(new DayOfTheDragonsEntersEffect(), false)); + + // When Day of the Dragons leaves the battlefield, sacrifice all Dragons you control. Then return the exiled cards to the battlefield under your control. + this.addAbility(new LeavesBattlefieldTriggeredAbility(new DayOfTheDragonsLeavesEffect(), false)); + } + + public DayOfTheDragons(final DayOfTheDragons card) { + super(card); + } + + @Override + public DayOfTheDragons copy() { + return new DayOfTheDragons(this); + } +} + +class DayOfTheDragonsEntersEffect extends OneShotEffect { + + private static final FilterPermanent filter = new FilterPermanent("all creatures you control"); + + static { + filter.add(new ControllerPredicate(TargetController.YOU)); + filter.add(new CardTypePredicate(CardType.CREATURE)); + } + + public DayOfTheDragonsEntersEffect() { + super(Constants.Outcome.Benefit); + staticText = "exile all creatures you control. Then put that many 5/5 red Dragon creature tokens with flying onto the battlefield"; + } + + public DayOfTheDragonsEntersEffect(final DayOfTheDragonsEntersEffect effect) { + super(effect); + } + + @Override + public boolean apply(Game game, Ability source) { + UUID exileId = source.getSourceId(); + int creaturesExiled = 0; + if (exileId != null) { + for (Permanent creature : game.getBattlefield().getActivePermanents(filter, source.getControllerId(), game)) { + if (creature != null) { + if (creature.moveToExile(exileId, "Day of the Dragons", source.getId(), game)) { + creaturesExiled++; + } + } + } + DragonToken token = new DragonToken(); + token.putOntoBattlefield(creaturesExiled, game, source.getId(), source.getControllerId()); + return true; + } + return false; + } + + @Override + public DayOfTheDragonsEntersEffect copy() { + return new DayOfTheDragonsEntersEffect(this); + } +} + +class DayOfTheDragonsLeavesEffect extends OneShotEffect { + + private static final FilterPermanent filter = new FilterPermanent("all Dragons you control"); + + static { + filter.add(new ControllerPredicate(TargetController.YOU)); + filter.add(new SubtypePredicate("Dragon")); + } + + public DayOfTheDragonsLeavesEffect() { + super(Constants.Outcome.Neutral); + staticText = "sacrifice all Dragons you control. Then return the exiled cards to the battlefield under your control"; + } + + public DayOfTheDragonsLeavesEffect(final DayOfTheDragonsLeavesEffect effect) { + super(effect); + } + + @Override + public boolean apply(Game game, Ability source) { + UUID exileId = source.getSourceId(); + for (Permanent dragon : game.getBattlefield().getActivePermanents(filter, source.getControllerId(), game)) { + if (dragon != null) { + dragon.sacrifice(source.getId(), game); + } + } + ExileZone exile = game.getExile().getExileZone(exileId); + if (exile != null) { + exile = exile.copy(); + for (UUID cardId : exile) { + Card card = game.getCard(cardId); + card.putOntoBattlefield(game, Constants.Zone.EXILED, source.getId(), source.getControllerId()); + } + game.getExile().getExileZone(exileId).clear(); + return true; + } + return false; + } + + @Override + public DayOfTheDragonsLeavesEffect copy() { + return new DayOfTheDragonsLeavesEffect(this); + } +} + +class DragonToken extends Token { + + public DragonToken() { + super("Dragon", "5/5 red Dragon creature token with flying"); + cardType.add(CardType.CREATURE); + color = ObjectColor.RED; + subtype.add("Dragon"); + power = new MageInt(5); + toughness = new MageInt(5); + addAbility(FlyingAbility.getInstance()); + } +} \ No newline at end of file From 0e326b76dfe951c2c2666651e177263457d3bb49 Mon Sep 17 00:00:00 2001 From: North Date: Fri, 3 Aug 2012 22:37:16 +0300 Subject: [PATCH 09/10] Fixed IntComparePredicate --- Mage/src/mage/filter/predicate/IntComparePredicate.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Mage/src/mage/filter/predicate/IntComparePredicate.java b/Mage/src/mage/filter/predicate/IntComparePredicate.java index a40f138b90..961c60e88d 100644 --- a/Mage/src/mage/filter/predicate/IntComparePredicate.java +++ b/Mage/src/mage/filter/predicate/IntComparePredicate.java @@ -49,7 +49,7 @@ public abstract class IntComparePredicate implements Predi @Override public final boolean apply(T input, Game game) { - int inputValue = input.getPower().getValue(); + int inputValue = getInputValue(input); switch (type) { case Equal: if (inputValue != value) { From 91e429d3eb4e86fb65041ea6772378dea902befe Mon Sep 17 00:00:00 2001 From: North Date: Fri, 3 Aug 2012 22:37:20 +0300 Subject: [PATCH 10/10] [DST] AEther Vial --- .../src/mage/sets/darksteel/AEtherVial.java | 126 ++++++++++++++++++ 1 file changed, 126 insertions(+) create mode 100644 Mage.Sets/src/mage/sets/darksteel/AEtherVial.java diff --git a/Mage.Sets/src/mage/sets/darksteel/AEtherVial.java b/Mage.Sets/src/mage/sets/darksteel/AEtherVial.java new file mode 100644 index 0000000000..4e943dcb7e --- /dev/null +++ b/Mage.Sets/src/mage/sets/darksteel/AEtherVial.java @@ -0,0 +1,126 @@ +/* + * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this list of + * conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright notice, this list + * of conditions and the following disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * The views and conclusions contained in the software and documentation are those of the + * authors and should not be interpreted as representing official policies, either expressed + * or implied, of BetaSteward_at_googlemail.com. + */ +package mage.sets.darksteel; + +import java.util.UUID; +import mage.Constants.CardType; +import mage.Constants.Outcome; +import mage.Constants.Rarity; +import mage.Constants.TargetController; +import mage.Constants.Zone; +import mage.abilities.Ability; +import mage.abilities.common.BeginningOfUpkeepTriggeredAbility; +import mage.abilities.common.SimpleActivatedAbility; +import mage.abilities.costs.common.TapSourceCost; +import mage.abilities.effects.OneShotEffect; +import mage.abilities.effects.common.counter.AddCountersSourceEffect; +import mage.cards.Card; +import mage.cards.CardImpl; +import mage.counters.CounterType; +import mage.filter.Filter; +import mage.filter.common.FilterCreatureCard; +import mage.filter.predicate.mageobject.ConvertedManaCostPredicate; +import mage.game.Game; +import mage.game.permanent.Permanent; +import mage.players.Player; +import mage.target.common.TargetCardInHand; + +/** + * + * @author North + */ +public class AEtherVial extends CardImpl { + + public AEtherVial(UUID ownerId) { + super(ownerId, 91, "AEther Vial", Rarity.UNCOMMON, new CardType[]{CardType.ARTIFACT}, "{1}"); + this.expansionSetCode = "DST"; + + // At the beginning of your upkeep, you may put a charge counter on AEther Vial. + this.addAbility(new BeginningOfUpkeepTriggeredAbility(new AddCountersSourceEffect(CounterType.CHARGE.createInstance()), TargetController.YOU, true)); + // {tap}: You may put a creature card with converted mana cost equal to the number of charge counters on AEther Vial from your hand onto the battlefield. + this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new AEtherVialEffect(), new TapSourceCost())); + } + + public AEtherVial(final AEtherVial card) { + super(card); + } + + @Override + public AEtherVial copy() { + return new AEtherVial(this); + } +} + +class AEtherVialEffect extends OneShotEffect { + + public AEtherVialEffect() { + super(Outcome.PutCreatureInPlay); + this.staticText = "You may put a creature card with converted mana cost equal to the number of charge counters on {this} from your hand onto the battlefield"; + } + + public AEtherVialEffect(final AEtherVialEffect effect) { + super(effect); + } + + @Override + public AEtherVialEffect copy() { + return new AEtherVialEffect(this); + } + + @Override + public boolean apply(Game game, Ability source) { + Permanent permanent = game.getBattlefield().getPermanent(source.getSourceId()); + if (permanent == null) { + permanent = (Permanent) game.getLastKnownInformation(source.getSourceId(), Zone.BATTLEFIELD); + if (permanent == null) { + return false; + } + } + int count = permanent.getCounters().getCount(CounterType.CHARGE); + + FilterCreatureCard filter = new FilterCreatureCard("creature card with converted mana cost equal to " + count); + filter.add(new ConvertedManaCostPredicate(Filter.ComparisonType.Equal, count)); + String choiceText = "Put a " + filter.getMessage() + " from your hand onto the battlefield?"; + + Player player = game.getPlayer(source.getControllerId()); + if (player == null || player.getHand().count(filter, game) == 0 + || !player.chooseUse(this.outcome, choiceText, game)) { + return false; + } + + TargetCardInHand target = new TargetCardInHand(filter); + if (player.choose(this.outcome, target, source.getSourceId(), game)) { + Card card = game.getCard(target.getFirstTarget()); + if (card != null) { + card.putOntoBattlefield(game, Zone.HAND, source.getId(), source.getControllerId()); + return true; + } + } + return false; + } +}