From 597334a66a62431d9ff507f96a99e6287c3b257f Mon Sep 17 00:00:00 2001 From: swordshine Date: Mon, 1 Dec 2014 11:54:57 +0000 Subject: [PATCH] - C14: Added Wave of Vitriol --- .gitattributes | 1 + .../game/ability/effects/RepeatEachEffect.java | 8 ++++++++ .../game/ability/effects/SacrificeAllEffect.java | 8 +++++--- forge-gui/res/cardsfolder/f/flash_foliage.txt | 13 +++++++------ forge-gui/res/cardsfolder/m/myriad_landscape.txt | 1 + forge-gui/res/cardsfolder/w/wave_of_vitriol.txt | 13 +++++++++++++ 6 files changed, 35 insertions(+), 9 deletions(-) create mode 100644 forge-gui/res/cardsfolder/w/wave_of_vitriol.txt diff --git a/.gitattributes b/.gitattributes index 16311cb022a..ff416ed6b24 100644 --- a/.gitattributes +++ b/.gitattributes @@ -15185,6 +15185,7 @@ forge-gui/res/cardsfolder/w/wave_elemental.txt svneol=native#text/plain forge-gui/res/cardsfolder/w/wave_of_indifference.txt svneol=native#text/plain forge-gui/res/cardsfolder/w/wave_of_reckoning.txt -text forge-gui/res/cardsfolder/w/wave_of_terror.txt svneol=native#text/plain +forge-gui/res/cardsfolder/w/wave_of_vitriol.txt -text forge-gui/res/cardsfolder/w/wavecrash_triton.txt -text forge-gui/res/cardsfolder/w/waves_of_aggression.txt -text forge-gui/res/cardsfolder/w/waveskimmer_aven.txt svneol=native#text/plain diff --git a/forge-game/src/main/java/forge/game/ability/effects/RepeatEachEffect.java b/forge-game/src/main/java/forge/game/ability/effects/RepeatEachEffect.java index 73bb09e975e..f97d3cfef1f 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/RepeatEachEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/RepeatEachEffect.java @@ -55,11 +55,19 @@ public class RepeatEachEffect extends SpellAbilityEffect { } else if (sa.hasParam("DefinedCards")) { repeatCards = AbilityUtils.getDefinedCards(source, sa.getParam("DefinedCards"), sa); + if (sa.hasParam("AdditionalRestriction")) { // lki cards might not be in game + repeatCards = CardLists.getValidCards(repeatCards, + sa.getParam("AdditionalRestriction"), source.getController(), source); + } if (!repeatCards.isEmpty()) { loopOverCards = true; } } + if (sa.hasParam("ClearRemembered")) { + source.clearRemembered(); + } + if (loopOverCards) { // TODO (ArsenalNut 22 Dec 2012) Add logic to order cards for AI if (sa.hasParam("ChooseOrder") && repeatCards.size() >= 2) { diff --git a/forge-game/src/main/java/forge/game/ability/effects/SacrificeAllEffect.java b/forge-game/src/main/java/forge/game/ability/effects/SacrificeAllEffect.java index 1b13e03bbfc..68fe5c0bafb 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/SacrificeAllEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/SacrificeAllEffect.java @@ -6,6 +6,7 @@ import forge.game.ability.SpellAbilityEffect; import forge.game.card.Card; import forge.game.card.CardCollectionView; import forge.game.card.CardLists; +import forge.game.card.CardUtil; import forge.game.player.Player; import forge.game.spellability.SpellAbility; import forge.game.zone.ZoneType; @@ -59,9 +60,10 @@ public class SacrificeAllEffect extends SpellAbilityEffect { card.clearRemembered(); } - for (int i = 0; i < list.size(); i++) { - if (game.getAction().sacrifice(list.get(i), sa) != null && remSacrificed) { - card.addRemembered(list.get(i)); + for (Card sac : list) { + final Card lKICopy = CardUtil.getLKICopy(sac); + if (game.getAction().sacrifice(sac, sa) != null && remSacrificed) { + card.addRemembered(lKICopy); } } } diff --git a/forge-gui/res/cardsfolder/f/flash_foliage.txt b/forge-gui/res/cardsfolder/f/flash_foliage.txt index 8d57c0d1f30..1d52733f46c 100644 --- a/forge-gui/res/cardsfolder/f/flash_foliage.txt +++ b/forge-gui/res/cardsfolder/f/flash_foliage.txt @@ -1,6 +1,7 @@ -Name:Flash Foliage -ManaCost:2 G -Types:Instant -A:SP$ Token | Cost$ 2 G | ValidTgts$ Creature.attackingYou | TgtPrompt$ Select target creature attacking you | TokenAmount$ 1 | TokenName$ Saproling | TokenTypes$ Creature,Saproling | TokenOwner$ You | TokenColors$ Green | TokenPower$ 1 | TokenToughness$ 1 | TokenBlocking$ Targeted | ActivationPhases$ Declare Blockers->EndCombat | SubAbility$ DBDraw | StackDescription$ SpellDescription | SpellDescription$ Cast CARDNAME only during combat after blockers are declared. Put a 1/1 green Saproling creature token onto the battlefield blocking target creature attacking you. Draw a card. -SVar:DBDraw:DB$ Draw | NumCards$ 1 -SVar:Picture:http://www.wizards.com/global/images/magic/general/flash_foliage.jpg +Name:Flash Foliage +ManaCost:2 G +Types:Instant +A:SP$ Token | Cost$ 2 G | ValidTgts$ Creature.attackingYou | TgtPrompt$ Select target creature attacking you | TokenAmount$ 1 | TokenName$ Saproling | TokenTypes$ Creature,Saproling | TokenOwner$ You | TokenColors$ Green | TokenPower$ 1 | TokenToughness$ 1 | TokenBlocking$ Targeted | ActivationPhases$ Declare Blockers->EndCombat | SubAbility$ DBDraw | StackDescription$ SpellDescription | SpellDescription$ Cast CARDNAME only during combat after blockers are declared. Put a 1/1 green Saproling creature token onto the battlefield blocking target creature attacking you. Draw a card. +SVar:DBDraw:DB$ Draw | NumCards$ 1 +SVar:Picture:http://www.wizards.com/global/images/magic/general/flash_foliage.jpg +Oracle:Cast Flash Foliage only during combat after blockers are declared.\nPut a 1/1 green Saproling creature token onto the battlefield blocking target creature attacking you.\nDraw a card. diff --git a/forge-gui/res/cardsfolder/m/myriad_landscape.txt b/forge-gui/res/cardsfolder/m/myriad_landscape.txt index 4f4c2bb3da4..d6a1d7b1bd3 100644 --- a/forge-gui/res/cardsfolder/m/myriad_landscape.txt +++ b/forge-gui/res/cardsfolder/m/myriad_landscape.txt @@ -5,3 +5,4 @@ K:CARDNAME enters the battlefield tapped. A:AB$ Mana | Cost$ T | Produced$ 1 | SpellDescription$ Add {1} to your mana pool. A:AB$ ChangeZone | Cost$ 2 T Sac<1/CARDNAME> | Origin$ Library | Destination$ Battlefield | ChangeType$ Land.Basic | Tapped$ True | ChangeNum$ 2 | ShareLandType$ True | SpellDescription$ Search your library for up to two basic land cards that share a land type, put them onto the battlefield tapped, then shuffle your library. SVar:Picture:http://www.wizards.com/global/images/magic/general/myriad_landscape.jpg +Oracle:Myriad Landscape enters the battlefield tapped.\n{T}: Add {1} to your mana pool.\n{2}, {T}, Sacrifice Myriad Landscape: Search your library for up to two basic land cards that share a land type, put them onto the battlefield tapped, then shuffle your library. diff --git a/forge-gui/res/cardsfolder/w/wave_of_vitriol.txt b/forge-gui/res/cardsfolder/w/wave_of_vitriol.txt new file mode 100644 index 00000000000..e46e44cf9b4 --- /dev/null +++ b/forge-gui/res/cardsfolder/w/wave_of_vitriol.txt @@ -0,0 +1,13 @@ +Name:Wave of Vitriol +ManaCost:5 G G +Types:Sorcery +A:SP$ SacrificeAll | Cost$ 5 G G | ValidCards$ Artifact,Enchantment,Land.nonBasic | RememberSacrificed$ True | SubAbility$ DBRepeat | SpellDescription$ Each player sacrifices all artifacts, enchantments, and nonbasic lands he or she controls. For each land sacrificed this way, its controller may search his or her library for a basic land card and put it onto the battlefield tapped. Then each player who searched his or her library this way shuffles it. +SVar:DBRepeat:DB$ RepeatEach | DefinedCards$ DirectRemembered | AdditionalRestriction$ Land | UseImprinted$ True | RepeatSubAbility$ DBSearch | ClearRemembered$ True | SubAbility$ DBShuffle +SVar:DBSearch:DB$ ChangeZone | Origin$ Library | Destination$ Battlefield | ChangeType$ Land.Basic | ChangeNum$ 1 | Tapped$ True | RememberChanged$ True | DefinedPlayer$ ImprintedController | Chooser$ ImprintedController | NoShuffle$ True | Optional$ True +SVar:DBShuffle:DB$ RepeatEach | RepeatPlayers$ Player | RepeatSubAbility$ ShuffleSearched | SubAbility$ DBCleanup +SVar:ShuffleSearched:DB$ Shuffle | Defined$ Player.IsRemembered | ConditionCheckSVar$ X | ConditionSVarCompare$ GE1 | References$ X +SVar:X:Count$Valid Card.IsRemembered+RememberedPlayerCtrl +SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True +SVar:RemRandomDeck:True +SVar:Picture:http://www.wizards.com/global/images/magic/general/wave_of_vitriol.jpg +Oracle:Each player sacrifices all artifacts, enchantments, and nonbasic lands he or she controls. For each land sacrificed this way, its controller may search his or her library for a basic land card and put it onto the battlefield tapped. Then each player who searched his or her library this way shuffles it.