diff --git a/.gitattributes b/.gitattributes index 99e09970f8a..10ced0e1922 100644 --- a/.gitattributes +++ b/.gitattributes @@ -3790,6 +3790,7 @@ res/cardsfolder/f/fog_bank.txt svneol=native#text/plain res/cardsfolder/f/fog_elemental.txt svneol=native#text/plain res/cardsfolder/f/fog_of_gnats.txt svneol=native#text/plain res/cardsfolder/f/foil.txt -text +res/cardsfolder/f/fold_into_aether.txt -text res/cardsfolder/f/folk_medicine.txt svneol=native#text/plain res/cardsfolder/f/folk_of_an_havva.txt svneol=native#text/plain res/cardsfolder/f/folk_of_the_pines.txt svneol=native#text/plain @@ -4902,6 +4903,7 @@ res/cardsfolder/h/higure_the_still_wind_avatar.txt -text res/cardsfolder/h/hikari_twilight_guardian.txt -text res/cardsfolder/h/hill_giant.txt svneol=native#text/plain res/cardsfolder/h/hillcomber_giant.txt svneol=native#text/plain +res/cardsfolder/h/hinder.txt -text res/cardsfolder/h/hindering_light.txt svneol=native#text/plain res/cardsfolder/h/hindering_touch.txt svneol=native#text/plain res/cardsfolder/h/hindervines.txt -text @@ -10567,6 +10569,7 @@ res/cardsfolder/s/swell_of_courage.txt svneol=native#text/plain res/cardsfolder/s/swelter.txt svneol=native#text/plain res/cardsfolder/s/swift_justice.txt -text res/cardsfolder/s/swift_maneuver.txt svneol=native#text/plain +res/cardsfolder/s/swift_silence.txt -text res/cardsfolder/s/swiftfoot_boots.txt svneol=native#text/plain res/cardsfolder/s/swirling_sandstorm.txt svneol=native#text/plain res/cardsfolder/s/swirling_spriggan.txt -text diff --git a/res/cardsfolder/f/fold_into_aether.txt b/res/cardsfolder/f/fold_into_aether.txt new file mode 100644 index 00000000000..7f337309a76 --- /dev/null +++ b/res/cardsfolder/f/fold_into_aether.txt @@ -0,0 +1,9 @@ +Name:Fold into AEther +ManaCost:2 U U +Types:Instant +A:SP$ Counter | Cost$ 2 U U | TargetType$ Spell | TgtPrompt$ Select target spell | ValidTgts$ Card | RememberCountered$ True | SubAbility$ DBChangeZone | SpellDescription$ Counter target spell. If that spell is countered this way, its controller may put a creature card from his or her hand onto the battlefield. +SVar:DBChangeZone:DB$ ChangeZone | ChangeType$ Creature | Origin$ Hand | Destination$ Battlefield | ChangeNum$ 1 | ConditionDefined$ Remembered | ConditionPresent$ Card | ConditionCompare$ GE1 | SubAbility$ DBleanup +SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True +SVar:Picture:http://www.wizards.com/global/images/magic/general/fold_into_aether.jpg +Oracle:Counter target spell. If that spell is countered this way, its controller may put a creature card from his or her hand onto the battlefield. +SetInfo:5DN Uncommon \ No newline at end of file diff --git a/res/cardsfolder/h/hinder.txt b/res/cardsfolder/h/hinder.txt new file mode 100644 index 00000000000..807dbbd58a0 --- /dev/null +++ b/res/cardsfolder/h/hinder.txt @@ -0,0 +1,7 @@ +Name:Hinder +ManaCost:1 U U +Types:Instant +A:SP$ Counter | Cost$ 1 U U | TargetType$ Spell | TgtPrompt$ Select target spell | ValidTgts$ Card | DestinationChoice$ BottomOfLibrary,TopOfLibrary | SpellDescription$ Counter target spell. If that spell is countered this way, put that card on the top or bottom of its owner's library instead of into that player's graveyard. +SVar:Picture:http://www.wizards.com/global/images/magic/general/hinder.jpg +Oracle:Counter target spell. If that spell is countered this way, put that card on the top or bottom of its owner's library instead of into that player's graveyard. +SetInfo:CHK Uncommon \ No newline at end of file diff --git a/res/cardsfolder/s/spelljack.txt b/res/cardsfolder/s/spelljack.txt index 1aedf658b6e..d9f36a757d0 100644 --- a/res/cardsfolder/s/spelljack.txt +++ b/res/cardsfolder/s/spelljack.txt @@ -1,7 +1,7 @@ Name:Spelljack ManaCost:3 U U U Types:Instant -A:SP$ Counter | Cost$ 3 U U U | TargetType$ Spell | TgtPrompt$ Select target spell | ValidTgts$ Card | RememberTargets$ True | ForgetOtherTargets$ True | Destination$ Exile | SubAbility$ DBEffect | SpellDescription$ Counter target spell. If that spell is countered this way, exile it instead of putting it into its owner's graveyard. You may play it without paying its mana cost for as long as it remains exiled. (If it has X in its mana cost, X is 0.) +A:SP$ Counter | Cost$ 3 U U U | TargetType$ Spell | TgtPrompt$ Select target spell | ValidTgts$ Card | RememberCountered$ True | ForgetOtherTargets$ True | Destination$ Exile | SubAbility$ DBEffect | SpellDescription$ Counter target spell. If that spell is countered this way, exile it instead of putting it into its owner's graveyard. You may play it without paying its mana cost for as long as it remains exiled. (If it has X in its mana cost, X is 0.) SVar:DBEffect:DB$ Effect | Name$ Spelljack Effect | RememberObjects$ Remembered | StaticAbilities$ PlayOpp,PlayYou | Duration$ Permanent | Triggers$ TrigCleanup | SVars$ DBCleanup | References$ PlayOpp,PlayYou,TrigCleanup,DBCleanup SVar:PlayOpp:Mode$ Continuous | EffectZone$ Command | Affected$ Card.IsRemembered+OppOwn | AffectedZone$ Exile | AddHiddenKeyword$ May be played by your opponent without paying its mana cost | Description$ You may play cards exiled with Spelljack. SVar:PlayYou:Mode$ Continuous | EffectZone$ Command | Affected$ Card.IsRemembered+YouOwn | AffectedZone$ Exile | AddHiddenKeyword$ May be played without paying its mana cost diff --git a/res/cardsfolder/s/swift_silence.txt b/res/cardsfolder/s/swift_silence.txt new file mode 100644 index 00000000000..890e5e1a7c0 --- /dev/null +++ b/res/cardsfolder/s/swift_silence.txt @@ -0,0 +1,11 @@ +Name:Swift Silence +ManaCost:2 W U U +Types:Instant +A:SP$ Counter | Cost$ 2 W U U | AllType$ Spell | AllValid$ Card.Other | RememberCountered$ True | SubAbility$ DBDraw | SpellDescription$ Counter all other spells. Draw a card for each spell countered this way. +SVar:DBDraw:DB$ Draw | NumCards$ X | References$ X | SubAbility$ DBCleanup +SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True +SVar:X:Remembered$Amount +SVar:RemAIDeck:True +SVar:Picture:http://www.wizards.com/global/images/magic/general/swift_silence.jpg +Oracle:Counter all other spells. Draw a card for each spell countered this way. +SetInfo:DIS Rare \ No newline at end of file diff --git a/res/cardsfolder/t/trickbind.txt b/res/cardsfolder/t/trickbind.txt index bde9d2c6b57..d7e1d044ade 100644 --- a/res/cardsfolder/t/trickbind.txt +++ b/res/cardsfolder/t/trickbind.txt @@ -2,7 +2,7 @@ Name:Trickbind ManaCost:1 U Types:Instant K:Split second -A:SP$ Counter | Cost$ 1 U | TargetType$ Activated,Triggered | TgtPrompt$ Select target Activated or Triggered Ability | RememberTargets$ True | ValidTgts$ Card | SubAbility$ DBEffect | SpellDescription$ Counter target activated or triggered ability. If a permanent's ability is countered this way, activated abilities of that permanent can't be activated this turn. (Mana abilities can't be targeted.) +A:SP$ Counter | Cost$ 1 U | TargetType$ Activated,Triggered | TgtPrompt$ Select target Activated or Triggered Ability | RememberCountered$ True | ValidTgts$ Card | SubAbility$ DBEffect | SpellDescription$ Counter target activated or triggered ability. If a permanent's ability is countered this way, activated abilities of that permanent can't be activated this turn. (Mana abilities can't be targeted.) SVar:DBEffect:DB$ Effect | Name$ Trickbind Effect | StaticAbilities$ STCantBeActivated | RememberObjects$ Remembered | SubAbility$ DBCleanup | ConditionDefined$ Remembered | ConditionPresent$ Card | ConditionCompare$ EQ1 SVar:STCantBeActivated:Mode$ CantBeActivated | EffectZone$ Command | ValidCard$ Permanent.IsRemembered SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True diff --git a/src/main/java/forge/card/ability/effects/CounterEffect.java b/src/main/java/forge/card/ability/effects/CounterEffect.java index 7d0324d56ec..c72603a9cd7 100644 --- a/src/main/java/forge/card/ability/effects/CounterEffect.java +++ b/src/main/java/forge/card/ability/effects/CounterEffect.java @@ -8,10 +8,12 @@ import forge.Card; import forge.Singletons; import forge.card.ability.SpellAbilityEffect; import forge.card.cardfactory.CardFactoryUtil; +import forge.game.player.AIPlayer; import forge.card.spellability.SpellAbility; import forge.card.spellability.SpellAbilityStackInstance; import forge.card.spellability.SpellPermanent; import forge.card.trigger.TriggerType; +import forge.gui.GuiChoose; public class CounterEffect extends SpellAbilityEffect { @Override @@ -107,8 +109,8 @@ public class CounterEffect extends SpellAbilityEffect { Singletons.getModel().getGame().getAction().destroy(tgtSACard); } - if (sa.hasParam("RememberTargets")) { - if (sa.getParam("RememberTargets").equals("True")) { + if (sa.hasParam("RememberCountered")) { + if (sa.getParam("RememberCountered").equals("True")) { sa.getSourceCard().addRemembered(tgtSACard); } } @@ -133,7 +135,15 @@ public class CounterEffect extends SpellAbilityEffect { Singletons.getModel().getGame().getStack().remove(si); String destination = srcSA.hasParam("Destination") ? srcSA.getParam("Destination") : "Graveyard"; - + if (srcSA.hasParam("DestinationChoice")) {//Hinder + final String[] pos = srcSA.getParam("DestinationChoice").split(","); + if (srcSA.getActivatingPlayer() instanceof AIPlayer) { + destination = pos[0]; + } else { + final String prompt = "Select a destination to remove"; + destination = GuiChoose.one(prompt, pos); + } + } if (tgtSA.isAbility()) { // For Ability-targeted counterspells - do not move it anywhere, // even if Destination$ is specified.