From d2911a6f8fd46c677051b2db203f5614f9d40ee4 Mon Sep 17 00:00:00 2001 From: Sloth Date: Sun, 3 Mar 2013 22:27:18 +0000 Subject: [PATCH 01/11] - Improved AI using Show and Tell and Eureka. --- res/cardsfolder/e/eureka.txt | 3 ++- res/cardsfolder/h/hypergenesis.txt | 3 ++- res/cardsfolder/s/show_and_tell.txt | 2 ++ src/main/java/forge/card/ability/ai/ChangeZoneAi.java | 2 -- 4 files changed, 6 insertions(+), 4 deletions(-) diff --git a/res/cardsfolder/e/eureka.txt b/res/cardsfolder/e/eureka.txt index eb67b5629fb..31eceae5f5c 100644 --- a/res/cardsfolder/e/eureka.txt +++ b/res/cardsfolder/e/eureka.txt @@ -14,8 +14,9 @@ SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True SVar:NumPlayerGiveup:Number$0 SVar:TotalPlayer:PlayerCountPlayers$Amount SVar:CheckHand:Count$ValidHand Permanent.IsNotRemembered+RememberedPlayerCtrl -SVar:RemAIDeck:True SVar:RemRandomDeck:True +SVar:NeedsToPlayVar:Y GE1 +SVar:Y:Count$ValidHand Permanent.YouCtrl+cmcGE5 SVar:Picture:http://www.wizards.com/global/images/magic/general/eureka.jpg SetInfo:LEG|Rare|http://magiccards.info/scans/en/lg/99.jpg Oracle:Starting with you, each player may put a permanent card from his or her hand onto the battlefield. Repeat this process until no one puts a card onto the battlefield. diff --git a/res/cardsfolder/h/hypergenesis.txt b/res/cardsfolder/h/hypergenesis.txt index 94ca133900b..2cf2f6651ec 100644 --- a/res/cardsfolder/h/hypergenesis.txt +++ b/res/cardsfolder/h/hypergenesis.txt @@ -17,7 +17,8 @@ SVar:NumPlayerGiveup:Number$0 SVar:TotalPlayer:PlayerCountPlayers$Amount SVar:CheckHand:Count$ValidHand Artifact.IsNotRemembered+RememberedPlayerCtrl,Creature.IsNotRemembered+RememberedPlayerCtrl,Enchantment.IsNotRemembered+RememberedPlayerCtrl,Land.IsNotRemembered+RememberedPlayerCtrl SVar:RemRandomDeck:True -SVar:RemAIDeck:True +SVar:NeedsToPlayVar:Y GE1 +SVar:Y:Count$ValidHand Permanent.YouCtrl+cmcGE5 SVar:Picture:http://www.wizards.com/global/images/magic/general/hypergenesis.jpg SetInfo:TSP|Rare|http://magiccards.info/scans/en/ts/201.jpg Oracle:Sorcery\nSuspend 3- {1}{G}{G} (Rather than cast this card from your hand, pay {1}{G}{G} and exile it with three time counters on it. At the beginning of your upkeep, remove a time counter. When the last is removed, cast it without paying its mana cost.)\nStarting with you, each player may put an artifact, creature, enchantment, or land card from his or her hand onto the battlefield. Repeat this process until no one puts a card onto the battlefield. diff --git a/res/cardsfolder/s/show_and_tell.txt b/res/cardsfolder/s/show_and_tell.txt index ef824c8cc15..67b753e3ca3 100644 --- a/res/cardsfolder/s/show_and_tell.txt +++ b/res/cardsfolder/s/show_and_tell.txt @@ -2,6 +2,8 @@ Name:Show and Tell ManaCost:2 U Types:Sorcery A:SP$ ChangeZone | Cost$ 2 U | Origin$ Hand | Destination$ Battlefield | ChangeType$ Creature,Artifact,Enchantment,Land | DefinedPlayer$ Player | ChangeNum$ 1 | SpellDescription$ Each player may put an artifact, creature, enchantment, or land card from his or her hand onto the battlefield. +SVar:NeedsToPlayVar:Y GE1 +SVar:Y:Count$ValidHand Permanent.YouCtrl+cmcGE4 SVar:Rarity:Rare SVar:Picture:http://www.wizards.com/global/images/magic/general/show_and_tell.jpg SetInfo:USG|Rare|http://magiccards.info/scans/en/us/96.jpg diff --git a/src/main/java/forge/card/ability/ai/ChangeZoneAi.java b/src/main/java/forge/card/ability/ai/ChangeZoneAi.java index acd6aacbcfc..7ae758ddf9c 100644 --- a/src/main/java/forge/card/ability/ai/ChangeZoneAi.java +++ b/src/main/java/forge/card/ability/ai/ChangeZoneAi.java @@ -294,8 +294,6 @@ public class ChangeZoneAi extends SpellAbilityAi { } } - chance &= (r.nextFloat() < .8); - final AbilitySub subAb = sa.getSubAbility(); chance &= subAb == null || subAb.getAi().chkDrawbackWithSubs(ai, subAb); From d2040989f9b84b06d008d999ffa50caf55e59473 Mon Sep 17 00:00:00 2001 From: Sloth Date: Sun, 3 Mar 2013 23:03:24 +0000 Subject: [PATCH 02/11] - Added AI support for Mind Grind. --- .../java/forge/card/ability/ai/DigUntilAi.java | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/src/main/java/forge/card/ability/ai/DigUntilAi.java b/src/main/java/forge/card/ability/ai/DigUntilAi.java index 9095786cc7d..eb784eac053 100644 --- a/src/main/java/forge/card/ability/ai/DigUntilAi.java +++ b/src/main/java/forge/card/ability/ai/DigUntilAi.java @@ -2,9 +2,12 @@ package forge.card.ability.ai; import java.util.Random; +import forge.Card; import forge.card.ability.SpellAbilityAi; +import forge.card.spellability.AbilitySub; import forge.card.spellability.SpellAbility; import forge.card.spellability.Target; +import forge.game.ai.ComputerUtilMana; import forge.game.player.AIPlayer; import forge.game.player.Player; import forge.game.zone.ZoneType; @@ -14,6 +17,7 @@ public class DigUntilAi extends SpellAbilityAi { @Override protected boolean canPlayAI(AIPlayer ai, SpellAbility sa) { + Card source = sa.getSourceCard(); double chance = .4; // 40 percent chance with instant speed stuff if (SpellAbilityAi.isSorcerySpeed(sa)) { chance = .667; // 66.7% chance for sorcery speed (since it will @@ -36,6 +40,18 @@ public class DigUntilAi extends SpellAbilityAi { libraryOwner = opp; } + final String num = sa.getParam("Amount"); + if ((num != null) && num.equals("X") && source.getSVar(num).equals("Count$xPaid")) { + // Set PayX here to maximum value. + if (!(sa instanceof AbilitySub) || source.getSVar("PayX").equals("")) { + int numCards = ComputerUtilMana.determineLeftoverMana(sa, ai); + if (numCards <= 0) { + return false; + } + source.setSVar("PayX", Integer.toString(numCards)); + } + } + // return false if nothing to dig into if (libraryOwner.getCardsIn(ZoneType.Library).isEmpty()) { return false; From 412e2c990dbf8a2a96712692a80c1b3c0a4b708f Mon Sep 17 00:00:00 2001 From: Sloth Date: Sun, 3 Mar 2013 23:05:16 +0000 Subject: [PATCH 03/11] - Improved the Boromir 4 deck. --- res/quest/duels/Boromir 4.dck | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/res/quest/duels/Boromir 4.dck b/res/quest/duels/Boromir 4.dck index a21d295fd82..6e72a430e45 100644 --- a/res/quest/duels/Boromir 4.dck +++ b/res/quest/duels/Boromir 4.dck @@ -7,7 +7,7 @@ Description=UG Show and Tell deck with huge creatures Icon=Boromir.jpg Deck Type=constructed [main] -4 Misty Rainforest +3 Misty Rainforest 4 Tropical Island 3 Polluted Delta 3 Scalding Tarn @@ -19,6 +19,7 @@ Deck Type=constructed 1 Mox Pearl 1 Mox Ruby 1 Mox Sapphire +1 Sol Ring 1 Ancestral Recall 1 Time Walk 4 Show and Tell @@ -26,7 +27,7 @@ Deck Type=constructed 2 Lure of Prey 2 Defense of the Heart 4 Personal Tutor -1 Autochthon Wurm +1 Worldspine Wurm 4 Empyrial Archangel 3 Woodfall Primus 4 Progenitus From c912f2d28b41f8f0fe470c8307f933ea20c9bda1 Mon Sep 17 00:00:00 2001 From: swordshine Date: Mon, 4 Mar 2013 00:33:10 +0000 Subject: [PATCH 04/11] - Converted Wormfang Turtle to choosecard effect (its triggered ability does not have a target) --- res/cardsfolder/w/wormfang_turtle.txt | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/res/cardsfolder/w/wormfang_turtle.txt b/res/cardsfolder/w/wormfang_turtle.txt index 737dead43d1..3a451757459 100644 --- a/res/cardsfolder/w/wormfang_turtle.txt +++ b/res/cardsfolder/w/wormfang_turtle.txt @@ -2,10 +2,12 @@ Name:Wormfang Turtle ManaCost:2 U Types:Creature Nightmare Turtle Beast PT:2/4 -T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigExile | TriggerDescription$ When CARDNAME enters the battlefield, exile a land you control. +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigChooseExile | TriggerDescription$ When CARDNAME enters the battlefield, exile a land you control. T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Any | ValidCard$ Card.Self | Execute$ TrigReturn | TriggerDescription$ When CARDNAME leaves the battlefield, return the exiled card to the battlefield under its owner's control. -SVar:TrigExile:AB$ChangeZone | Cost$ 0 | Origin$ Battlefield | Destination$ Exile | TargetMin$ 1 | ValidTgts$ Land.YouCtrl | TgtPrompt$ Choose target land you control | RememberTargets$ True | ForgetOtherTargets$ True -SVar:TrigReturn:AB$ChangeZone | Cost$ 0 | Defined$ Remembered | Origin$ Exile | Destination$ Battlefield +SVar:TrigChooseExile:AB$ ChooseCard | Cost$ 0 | Choices$ Land.YouCtrl | Mandatory$ True | Amount$ 1 | ChoiceTitle$ Choose a land to exile | SubAbility$ DBExile +SVar:DBExile:DB$ ChangeZone | Origin$ Battlefield | Destination$ Exile | Defined$ ChosenCard | RememberChanged$ True +SVar:TrigReturn:AB$ ChangeZone | Cost$ 0 | Defined$ Remembered | Origin$ Exile | Destination$ Battlefield | SubAbility$ DBCleanup +SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True SVar:Rarity:Uncommon SVar:Picture:http://www.wizards.com/global/images/magic/general/wormfang_turtle.jpg SetInfo:JUD|Uncommon|http://magiccards.info/scans/en/ju/60.jpg From 7e83d92cd9d7436f26346b3b5751fd5e77cff90c Mon Sep 17 00:00:00 2001 From: swordshine Date: Mon, 4 Mar 2013 00:37:00 +0000 Subject: [PATCH 05/11] - Added Death by Dragons and Carpet of Flowers --- .gitattributes | 2 ++ res/cardsfolder/c/carpet_of_flowers.txt | 18 ++++++++++++++++++ res/cardsfolder/d/death_by_dragons.txt | 8 ++++++++ src/main/java/forge/Card.java | 4 ---- src/main/java/forge/game/player/Player.java | 4 ++++ 5 files changed, 32 insertions(+), 4 deletions(-) create mode 100644 res/cardsfolder/c/carpet_of_flowers.txt create mode 100644 res/cardsfolder/d/death_by_dragons.txt diff --git a/.gitattributes b/.gitattributes index a2d664be4c6..bdc3671daee 100644 --- a/.gitattributes +++ b/.gitattributes @@ -1489,6 +1489,7 @@ res/cardsfolder/c/carnival_hellsteed.txt -text res/cardsfolder/c/carnival_of_souls.txt svneol=native#text/plain res/cardsfolder/c/carnivorous_plant.txt svneol=native#text/plain res/cardsfolder/c/carnophage.txt svneol=native#text/plain +res/cardsfolder/c/carpet_of_flowers.txt -text res/cardsfolder/c/carrier_pigeons.txt svneol=native#text/plain res/cardsfolder/c/carrion.txt svneol=native#text/plain res/cardsfolder/c/carrion_ants.txt svneol=native#text/plain @@ -2387,6 +2388,7 @@ res/cardsfolder/d/deadwood_treefolk.txt svneol=native#text/plain res/cardsfolder/d/dearly_departed.txt -text res/cardsfolder/d/death_baron.txt svneol=native#text/plain res/cardsfolder/d/death_bomb.txt svneol=native#text/plain +res/cardsfolder/d/death_by_dragons.txt -text res/cardsfolder/d/death_charmer.txt svneol=native#text/plain res/cardsfolder/d/death_cloud.txt svneol=native#text/plain res/cardsfolder/d/death_cultist.txt svneol=native#text/plain diff --git a/res/cardsfolder/c/carpet_of_flowers.txt b/res/cardsfolder/c/carpet_of_flowers.txt new file mode 100644 index 00000000000..c5f865847d9 --- /dev/null +++ b/res/cardsfolder/c/carpet_of_flowers.txt @@ -0,0 +1,18 @@ +Name:Carpet of Flowers +ManaCost:G +Types:Enchantment +T:Mode$ Phase | Phase$ Main1,Main2 | ValidPlayer$ You | CheckSVar$ CarpetX | SVarCompare$ EQ0 | OptionalDecider$ You | TriggerZones$ Battlefield | Execute$ TrigMana | TriggerDescription$ At the beginning of each of your main phases, if you haven't added mana to your mana pool with this ability this turn, you may add up to X mana of any one color to your mana pool, where X is the number of Islands target opponent controls. +SVar:TrigMana:AB$ Pump | Cost$ 0 | ValidTgts$ Opponent | TgtPrompt$ Select target opponent, you may add X mana, where X is the number of Islands target opponent controls | RememberObjects$ Targeted | SubAbility$ ChooseNumber +SVar:ChooseNumber:DB$ ChooseNumber | Min$ 0 | Max$ NumManaMax | References$ NumManaMax | ListTitle$ Choose the amount of mana | SubAbility$ DBMana +SVar:DBMana:DB$ Mana | Amount$ X | Produced$ Any | SubAbility$ CheckPlus +SVar:CheckPlus:DB$ StoreSVar | SVar$ CarpetX | Type$ Number | Expression$ 1 | SubAbility$ DBCleanup +SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True +T:Mode$ Phase | Phase$ End of Turn | Execute$ TrigReset | Static$ True +SVar:TrigReset:AB$ StoreSVar | Cost$ 0 | SVar$ CarpetX | Type$ Number | Expression$ 0 +SVar:X:Count$ChosenNumber +SVar:NumManaMax:Count$Valid Island.RememberedPlayerCtrl +SVar:CarpetX:Number$0 +SVar:RemAIDeck:True +SVar:Picture:http://www.wizards.com/global/images/magic/general/carpet_of_flowers.jpg +SetInfo:USG|Uncommon|http://magiccards.info/scans/en/us/240.jpg +Oracle:At the beginning of each of your main phases, if you haven't added mana to your mana pool with this ability this turn, you may add up to X mana of any one color to your mana pool, where X is the number of Islands target opponent controls. diff --git a/res/cardsfolder/d/death_by_dragons.txt b/res/cardsfolder/d/death_by_dragons.txt new file mode 100644 index 00000000000..938370d0f49 --- /dev/null +++ b/res/cardsfolder/d/death_by_dragons.txt @@ -0,0 +1,8 @@ +Name:Death by Dragons +ManaCost:4 R R +Types:Sorcery +A:SP$ Token | Cost$ 4 R R | ValidTgts$ Player | TgtPrompt$ Select target player who would not get a token | AITgts$ Opponent | RememberTargets$ True | TokenAmount$ 1 | TokenName$ Dragon | TokenTypes$ Creature,Dragon | TokenOwner$ Player.IsNotRemembered | TokenColors$ Red | TokenPower$ 5 | TokenToughness$ 5 | TokenKeywords$ Flying | StackDescription$ SpellDescription | SubAbility$ DBCleanup | SpellDescription$ Each player other than target player puts a 5/5 red Dragon creature token with flying onto the battlefield. +SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True +SVar:Picture:http://www.wizards.com/global/images/magic/general/death_by_dragons.jpg +SetInfo:COM|Uncommon|http://magiccards.info/scans/en/cmd/118.jpg +Oracle:Each player other than target player puts a 5/5 red Dragon creature token with flying onto the battlefield. diff --git a/src/main/java/forge/Card.java b/src/main/java/forge/Card.java index 5888ad491ae..b279ff9bcbf 100644 --- a/src/main/java/forge/Card.java +++ b/src/main/java/forge/Card.java @@ -6876,10 +6876,6 @@ public class Card extends GameEntity implements Comparable { for (final Object rem : source.getRemembered()) { if (rem instanceof Card) { final Card card = (Card) rem; - System.out.println(this + " vs " + card); - System.out.println(this.getOwner().equals(card.getOwner())); - System.out.println(this.getOwner()); - System.out.println(card.getOwner()); if (!this.getOwner().equals(card.getOwner())) { return false; } diff --git a/src/main/java/forge/game/player/Player.java b/src/main/java/forge/game/player/Player.java index 48f6eab88a4..d2d3d7d9688 100644 --- a/src/main/java/forge/game/player/Player.java +++ b/src/main/java/forge/game/player/Player.java @@ -2522,6 +2522,10 @@ public abstract class Player extends GameEntity implements Comparable { if (!source.getRemembered().contains(this)) { return false; } + } else if (property.equals("IsNotRemembered")) { + if (source.getRemembered().contains(this)) { + return false; + } } else if (property.startsWith("EnchantedBy")) { if (!this.getEnchantedBy().contains(source)) { return false; From 3fcb3a9d1c2f66bae573d062a59c058ec19badcd Mon Sep 17 00:00:00 2001 From: myk Date: Mon, 4 Mar 2013 03:09:32 +0000 Subject: [PATCH 06/11] add serrasmurf's Ravnica world --- .../world/ravnica/challenges/quest4001.dck | 34 ++++++++++++++++ .../world/ravnica/challenges/quest4002.dck | 34 ++++++++++++++++ .../world/ravnica/challenges/quest4003.dck | 38 ++++++++++++++++++ .../world/ravnica/challenges/quest4004.dck | 39 +++++++++++++++++++ .../world/ravnica/challenges/quest4005.dck | 35 +++++++++++++++++ .../world/ravnica/challenges/quest4006.dck | 35 +++++++++++++++++ .../world/ravnica/challenges/quest4007.dck | 35 +++++++++++++++++ .../world/ravnica/challenges/quest4008.dck | 37 ++++++++++++++++++ .../world/ravnica/challenges/quest4009.dck | 35 +++++++++++++++++ .../world/ravnica/challenges/quest4010.dck | 37 ++++++++++++++++++ res/quest/world/ravnica/duels/Agrus 2.dck | 27 +++++++++++++ res/quest/world/ravnica/duels/Aurelia 2.dck | 26 +++++++++++++ res/quest/world/ravnica/duels/Aurelia 3.dck | 28 +++++++++++++ .../world/ravnica/duels/Azorius2006 1.dck | 34 ++++++++++++++++ .../world/ravnica/duels/Azorius2012 1.dck | 34 ++++++++++++++++ .../ravnica/duels/Bep van Klaveren 3.dck | 27 +++++++++++++ .../world/ravnica/duels/Borborygmos 2.dck | 30 ++++++++++++++ .../world/ravnica/duels/Borborygmos 3.dck | 25 ++++++++++++ res/quest/world/ravnica/duels/Boros2005.dck | 31 +++++++++++++++ res/quest/world/ravnica/duels/Boros2013.dck | 38 ++++++++++++++++++ res/quest/world/ravnica/duels/Caprio 2.dck | 29 ++++++++++++++ .../duels/Der Rattenfanger von Hameln 2.dck | 25 ++++++++++++ .../world/ravnica/duels/Ghost Council 2.dck | 28 +++++++++++++ .../world/ravnica/duels/Ghost Council 3.dck | 32 +++++++++++++++ .../world/ravnica/duels/Golgari2005 1.dck | 35 +++++++++++++++++ res/quest/world/ravnica/duels/Gruul2006 1.dck | 36 +++++++++++++++++ res/quest/world/ravnica/duels/Isperia 2.dck | 29 ++++++++++++++ res/quest/world/ravnica/duels/Isperia 3.dck | 31 +++++++++++++++ res/quest/world/ravnica/duels/Izzet2012 1.dck | 36 +++++++++++++++++ res/quest/world/ravnica/duels/Jarad 2.dck | 27 +++++++++++++ res/quest/world/ravnica/duels/Kraj 3.dck | 26 +++++++++++++ res/quest/world/ravnica/duels/Lyzolda 2.dck | 31 +++++++++++++++ res/quest/world/ravnica/duels/Lyzolda 3.dck | 29 ++++++++++++++ .../world/ravnica/duels/Niv-Mizzet 3.dck | 28 +++++++++++++ .../world/ravnica/duels/Orzhov2006 1.dck | 34 ++++++++++++++++ .../ravnica/duels/Rakdos the defiler 2.dck | 25 ++++++++++++ res/quest/world/ravnica/duels/Savra 3.dck | 26 +++++++++++++ .../world/ravnica/duels/Selesnya2005 1.dck | 32 +++++++++++++++ .../world/ravnica/duels/Selesnya2012 1.dck | 36 +++++++++++++++++ res/quest/world/ravnica/duels/Simic2013 1.dck | 37 ++++++++++++++++++ .../duels/Sisters of Stone Death 3.dck | 26 +++++++++++++ .../world/ravnica/duels/Sus Antigoon.dck | 30 ++++++++++++++ res/quest/world/ravnica/duels/Szadek 2.dck | 30 ++++++++++++++ res/quest/world/ravnica/duels/Teysa 2.dck | 27 +++++++++++++ res/quest/world/ravnica/duels/Token 2.dck | 27 +++++++++++++ res/quest/world/ravnica/duels/Tolsimir 2.dck | 27 +++++++++++++ res/quest/world/ravnica/duels/Trostani 2.dck | 33 ++++++++++++++++ res/quest/world/ravnica/duels/Ulasht 2.dck | 28 +++++++++++++ res/quest/world/ravnica/duels/Zegana 3.dck | 31 +++++++++++++++ res/quest/world/worlds.txt | 1 + 50 files changed, 1531 insertions(+) create mode 100644 res/quest/world/ravnica/challenges/quest4001.dck create mode 100644 res/quest/world/ravnica/challenges/quest4002.dck create mode 100644 res/quest/world/ravnica/challenges/quest4003.dck create mode 100644 res/quest/world/ravnica/challenges/quest4004.dck create mode 100644 res/quest/world/ravnica/challenges/quest4005.dck create mode 100644 res/quest/world/ravnica/challenges/quest4006.dck create mode 100644 res/quest/world/ravnica/challenges/quest4007.dck create mode 100644 res/quest/world/ravnica/challenges/quest4008.dck create mode 100644 res/quest/world/ravnica/challenges/quest4009.dck create mode 100644 res/quest/world/ravnica/challenges/quest4010.dck create mode 100644 res/quest/world/ravnica/duels/Agrus 2.dck create mode 100644 res/quest/world/ravnica/duels/Aurelia 2.dck create mode 100644 res/quest/world/ravnica/duels/Aurelia 3.dck create mode 100644 res/quest/world/ravnica/duels/Azorius2006 1.dck create mode 100644 res/quest/world/ravnica/duels/Azorius2012 1.dck create mode 100644 res/quest/world/ravnica/duels/Bep van Klaveren 3.dck create mode 100644 res/quest/world/ravnica/duels/Borborygmos 2.dck create mode 100644 res/quest/world/ravnica/duels/Borborygmos 3.dck create mode 100644 res/quest/world/ravnica/duels/Boros2005.dck create mode 100644 res/quest/world/ravnica/duels/Boros2013.dck create mode 100644 res/quest/world/ravnica/duels/Caprio 2.dck create mode 100644 res/quest/world/ravnica/duels/Der Rattenfanger von Hameln 2.dck create mode 100644 res/quest/world/ravnica/duels/Ghost Council 2.dck create mode 100644 res/quest/world/ravnica/duels/Ghost Council 3.dck create mode 100644 res/quest/world/ravnica/duels/Golgari2005 1.dck create mode 100644 res/quest/world/ravnica/duels/Gruul2006 1.dck create mode 100644 res/quest/world/ravnica/duels/Isperia 2.dck create mode 100644 res/quest/world/ravnica/duels/Isperia 3.dck create mode 100644 res/quest/world/ravnica/duels/Izzet2012 1.dck create mode 100644 res/quest/world/ravnica/duels/Jarad 2.dck create mode 100644 res/quest/world/ravnica/duels/Kraj 3.dck create mode 100644 res/quest/world/ravnica/duels/Lyzolda 2.dck create mode 100644 res/quest/world/ravnica/duels/Lyzolda 3.dck create mode 100644 res/quest/world/ravnica/duels/Niv-Mizzet 3.dck create mode 100644 res/quest/world/ravnica/duels/Orzhov2006 1.dck create mode 100644 res/quest/world/ravnica/duels/Rakdos the defiler 2.dck create mode 100644 res/quest/world/ravnica/duels/Savra 3.dck create mode 100644 res/quest/world/ravnica/duels/Selesnya2005 1.dck create mode 100644 res/quest/world/ravnica/duels/Selesnya2012 1.dck create mode 100644 res/quest/world/ravnica/duels/Simic2013 1.dck create mode 100644 res/quest/world/ravnica/duels/Sisters of Stone Death 3.dck create mode 100644 res/quest/world/ravnica/duels/Sus Antigoon.dck create mode 100644 res/quest/world/ravnica/duels/Szadek 2.dck create mode 100644 res/quest/world/ravnica/duels/Teysa 2.dck create mode 100644 res/quest/world/ravnica/duels/Token 2.dck create mode 100644 res/quest/world/ravnica/duels/Tolsimir 2.dck create mode 100644 res/quest/world/ravnica/duels/Trostani 2.dck create mode 100644 res/quest/world/ravnica/duels/Ulasht 2.dck create mode 100644 res/quest/world/ravnica/duels/Zegana 3.dck diff --git a/res/quest/world/ravnica/challenges/quest4001.dck b/res/quest/world/ravnica/challenges/quest4001.dck new file mode 100644 index 00000000000..b0915a5e3fc --- /dev/null +++ b/res/quest/world/ravnica/challenges/quest4001.dck @@ -0,0 +1,34 @@ +[quest] +id=4001 +OpponentName=Trostani +AILife=30 +Repeat=true +Wins=20 +Card Reward=2 multicolor rares;Temple Garden|RAV +Credit Reward=200 +AIExtras=Loxodon Gatekeeper +[metadata] +Name=quest4001 +Title=Ramp it up +Difficulty=hard +Description=Always one step behind.. +Icon=Trostani.jpg +Deck Type=constructed +[main] +3 Angel of Serenity|RTR +3 Armada Wurm|RTR +4 Birds of Paradise|RAV +3 Carven Caryatid|RAV +4 Civic Wayfinder|RAV +4 Condemn|DIS +4 Faith's Fetters|RAV +4 Farseek|RAV +10 Forest|RTR +8 Plains|RTR +4 Selesnya Guildgate|RTR +4 Temple Garden|RTR +3 Trostani, Selesnya's Voice|RTR +2 Worldspine Wurm|RTR +[sideboard] +[planes] +[schemes] \ No newline at end of file diff --git a/res/quest/world/ravnica/challenges/quest4002.dck b/res/quest/world/ravnica/challenges/quest4002.dck new file mode 100644 index 00000000000..bad62c928ea --- /dev/null +++ b/res/quest/world/ravnica/challenges/quest4002.dck @@ -0,0 +1,34 @@ +[quest] +id=4002 +OpponentName=Rakdos, Lord of Riots +AILife=40 +Repeat=true +Wins=20 +Card Reward=2 multicolor rares;Blood Crypt|DIS +Credit Reward=200 +HumanExtras=Pariah's Shield|Rakdos Signet +AIExtras=Rakdos, Lord of Riots +[metadata] +Name=quest4002 +Title=Rakdos, Lord of Riots +Difficulty=hard +Description=Big Fellas +Icon=Rakdos.jpg +Deck Type=constructed +[main] +4 Blood Crypt|RTR +4 Char|RAV +4 Crypt Champion|DIS +4 Dark Confidant|RAV +2 Hellkite Tyrant|GTC +4 Hellraiser Goblin|GTC +2 Lord of the Void|GTC +9 Mountain|RTR +2 Molten Primordial|GTC +2 Sepulchral Primordial|GTC +4 Rakdos Guildgate|RTR +4 Seal of Fire|DIS +2 Smog Elemental|GTC +9 Swamp|RTR +4 Rakdos's Return|RTR +[sideboard] diff --git a/res/quest/world/ravnica/challenges/quest4003.dck b/res/quest/world/ravnica/challenges/quest4003.dck new file mode 100644 index 00000000000..1d5405701f3 --- /dev/null +++ b/res/quest/world/ravnica/challenges/quest4003.dck @@ -0,0 +1,38 @@ +[quest] +id=4001 +OpponentName=Isperia +AILife=30 +Repeat=true +Wins=20 +Card Reward=2 multicolor rares;duplicate card;Hallowed Fountain|DIS +Credit Reward=200 +HumanExtras=Leyline of the Meek|Drowned Rusalka +AIExtras=Dovescape +[metadata] +Name=quest4003 +Title=Isperia +Difficulty=hard +Description=The dove from above +Icon=Iseria.jpg +Deck Type=constructed +[main] +1 Angel of Serenity|RTR +4 Azorius Guildgate|RTR +4 Cyclonic Rift|RTR +3 Droning Bureaucrats|GPT +2 Faith's Fetters|RAV +4 Hallowed Fountain|RTR +9 Island|RTR +1 Isperia, Supreme Judge|RTR +3 Jace, Architect of Thought|RTR +9 Plains|RTR +3 Pride of the Clouds|DIS +4 Sphinx's Revelation|RTR +4 Supreme Verdict|RTR +3 Twilight Drover|RAV +4 Veteran Armorer|RAV +1 Diluvian Primordial|GTC +1 Grand Arbiter Augustin IV|DIS +[sideboard] +[planes] +[schemes] \ No newline at end of file diff --git a/res/quest/world/ravnica/challenges/quest4004.dck b/res/quest/world/ravnica/challenges/quest4004.dck new file mode 100644 index 00000000000..6eb9b0f2878 --- /dev/null +++ b/res/quest/world/ravnica/challenges/quest4004.dck @@ -0,0 +1,39 @@ +[quest] +id=4004 +OpponentName=Ghost Council +AILife=30 +Repeat=true +Wins=20 +Card Reward=2 multicolor rares;Godless Shrine|GPT +Credit Reward=200 +AIExtras=Debtors' Knell +[metadata] +Name=quest4004 +Title=Ghost Council +Difficulty=hard +Description=Whether it's heaven or hell, those who believe can live forever +Icon=Ghost Council.jpg +Deck Type=constructed +[main] +2 Angel of Despair|COM +2 Basilica Guards|GTC +4 Condemn|DIS +1 Deathpact Angel|GTC +4 Delirium Skeins|DIS +2 Dimir House Guard|RAV +2 Volatile Rig|RTR +2 Ghost Council of Orzhova|GPT +4 Godless Shrine|GTC +4 High Priest of Penance|GTC +2 Last Gasp|RAV +2 Merciless Eviction|GTC +4 Mortify|GPT +2 Obzedat, Ghost Council|GTC +4 Orzhov Guildgate|GTC +8 Plains|RTR +1 Skeletal Vampire|GPT +8 Swamp|RTR +2 Underworld Connections|RTR +[sideboard] +[planes] +[schemes] \ No newline at end of file diff --git a/res/quest/world/ravnica/challenges/quest4005.dck b/res/quest/world/ravnica/challenges/quest4005.dck new file mode 100644 index 00000000000..e4e48276297 --- /dev/null +++ b/res/quest/world/ravnica/challenges/quest4005.dck @@ -0,0 +1,35 @@ +[quest] +id=4005 +OpponentName=Aurelia +AILife=20 +Repeat=true +Wins=20 +Card Reward=2 multicolor rares;Sacred Foundry|RAV +Credit Reward=200 +AIExtras=Assemble the Legion +[metadata] +Name=quest4005 +Title=Aurelia +Difficulty=hard +Description=Ein, Zwei, Polizei +Icon=Aurelia.jpg +Deck Type=constructed +[main] +2 Angel of Serenity|RTR +4 Boros Guildgate|GTC +4 Concordia Pegasus|RTR +4 Faith's Fetters|RAV +3 Firemane Angel|RAV +2 Foundry Champion|GTC +4 Lightning Helix|RAV +2 Seal of Fire|DIS +4 Mizzium Mortars|RTR +8 Mountain|RTR +8 Plains|RTR +4 Sacred Foundry|GTC +4 Stoic Ephemera|DIS +3 Sunhome Guildmage|GTC +4 Wakestone Gargoyle|DIS +[sideboard] +[planes] +[schemes] \ No newline at end of file diff --git a/res/quest/world/ravnica/challenges/quest4006.dck b/res/quest/world/ravnica/challenges/quest4006.dck new file mode 100644 index 00000000000..92e8ec91ddb --- /dev/null +++ b/res/quest/world/ravnica/challenges/quest4006.dck @@ -0,0 +1,35 @@ +[quest] +id=4006 +OpponentName=Lazav +AILife=30 +Repeat=true +Wins=20 +Card Reward=2 multicolor rares;Watery Grave|RAV +Credit Reward=200 +HumanExtras=Dimir Doppelganger +AIExtras=Szadek, Lord of Secrets +[metadata] +Name=quest4006 +Title=Lazav +Difficulty=hard +Description=Milldly annoying.. +Icon=Lazav.jpg +Deck Type=constructed +[main] +4 Darkblast|RAV +4 Last Gasp|RAV +4 Dimir Guildgate|GTC +4 Glimpse the Unthinkable|RAV +8 Island|RTR +2 Mind Grind|GTC +4 Muddle the Mixture|RAV +2 Psychic Spiral|RTR +4 Remand|RAV +4 Compulsive Research|RAV +4 Spell Snare|DIS +8 Swamp|RTR +4 Watery Grave|GTC +4 Wight of Precinct Six|GTC +[sideboard] +[planes] +[schemes] \ No newline at end of file diff --git a/res/quest/world/ravnica/challenges/quest4007.dck b/res/quest/world/ravnica/challenges/quest4007.dck new file mode 100644 index 00000000000..841226acea8 --- /dev/null +++ b/res/quest/world/ravnica/challenges/quest4007.dck @@ -0,0 +1,35 @@ +[quest] +id=4007 +OpponentName=Momir Vig +AILife=30 +Repeat=true +Wins=20 +Card Reward=2 multicolor rares;Breeding Pool|DIS +Credit Reward=200 +HumanExtras=Vigean Hydropon|Thrull Parasite +AIExtras=Momir Vig, Simic Visionary|Doubling Season +[metadata] +Name=quest4007 +Title=Momir Vig +Difficulty=hard +Description=Double trouble +Icon=Momir.jpg +Deck Type=constructed +[main] +4 Breeding Pool|GTC +4 Brushstrider|RTR +4 Cloudfin Raptor|GTC +4 Drakewing Krasis|GTC +4 Elusive Krasis|GTC +4 Experiment One|GTC +9 Forest|RTR +9 Island|RTR +2 Simic Guildgate|GTC +2 Remand|RAV +3 Shambleshark|GTC +3 Simic Charm|GTC +4 Spell Snare|DIS +4 Zameck Guildmage|GTC +[sideboard] +[planes] +[schemes] \ No newline at end of file diff --git a/res/quest/world/ravnica/challenges/quest4008.dck b/res/quest/world/ravnica/challenges/quest4008.dck new file mode 100644 index 00000000000..da67b950ff7 --- /dev/null +++ b/res/quest/world/ravnica/challenges/quest4008.dck @@ -0,0 +1,37 @@ +[quest] +id=4008 +OpponentName=Borborygmos +AILife=30 +Repeat=true +Wins=20 +Card Reward=99 Pit Fight;2 multicolor rares;Stomping Ground|GPT +Credit Reward=200 +HumanExtras=Crown of Convergence|Martial Law +AIExtras=Guild Feud +[metadata] +Name=quest4008 +Title=Borborygmos +Difficulty=hard +Description=Fightclub anyone? +Icon=Borborygmos.jpg +Deck Type=constructed +[main] +4 Domri Rade|GTC +4 Birds of Paradise|M12 +2 Borborygmos|GPT +2 Borborygmos Enraged|GTC +4 Carven Caryatid|RAV +8 Forest|RTR +4 Gruul Guildgate|GTC +2 Gruul Ragebeast|GTC +4 Indrik Stomphowler|DIS +2 Molten Primordial|GTC +8 Mountain|RTR +4 Sprouting Phytohydra|DIS +4 Stomping Ground|GTC +2 Sylvan Primordial|GTC +4 Wasteland Viper|GTC +2 Worldspine Wurm|RTR +[sideboard] +[planes] +[schemes] \ No newline at end of file diff --git a/res/quest/world/ravnica/challenges/quest4009.dck b/res/quest/world/ravnica/challenges/quest4009.dck new file mode 100644 index 00000000000..832d397b377 --- /dev/null +++ b/res/quest/world/ravnica/challenges/quest4009.dck @@ -0,0 +1,35 @@ +[quest] +id=4009 +OpponentName=Niv-Mizzet +AILife=30 +Repeat=true +Wins=20 +Card Reward=2 multicolor rares;Steam Vents|GPT +Credit Reward=200 +HumanExtras=Minister of Impediments +AIExtras=Goblin Electromancer|Guttersnipe +[metadata] +Name=quest4009 +Title=Niv-Mizzet +Difficulty=hard +Description=Instant karma is gonna get you +Icon=Niv-Mizzet.jpg +Deck Type=constructed +[main] +4 Cackling Flames|DIS +4 Char|RAV +4 Compulsive Research|RAV +2 Cyclonic Rift|RTR +4 Electrolyze|COM +4 Train of Thought|GPT +3 Goblin Electromancer|RTR +3 Guttersnipe|RTR +8 Island|RTR +4 Izzet Guildgate|RTR +4 Pyromatics|GPT +4 Mizzium Mortars|RTR +8 Mountain|RTR +4 Steam Vents|RTR +[sideboard] +[planes] +[schemes] \ No newline at end of file diff --git a/res/quest/world/ravnica/challenges/quest4010.dck b/res/quest/world/ravnica/challenges/quest4010.dck new file mode 100644 index 00000000000..1badf7c6bf4 --- /dev/null +++ b/res/quest/world/ravnica/challenges/quest4010.dck @@ -0,0 +1,37 @@ +[quest] +id=4010 +OpponentName=Jarad +AILife=30 +Repeat=true +Wins=20 +Card Reward=2 multicolor rares;Overgrown Tomb|RAV +Credit Reward=200 +HumanExtras=Trained Caracal +AIExtras=Jarad, Golgari Lich Lord|Savra, Queen of the Golgari +[metadata] +Name=quest4010 +Title=Jarad +Difficulty=hard +Description=Glorified Sacrifice +Icon=Jarad.jpg +Deck Type=constructed +[main] +4 Abrupt Decay|RTR +4 Birds of Paradise|M12 +2 Crypt Champion|DIS +3 Dimir House Guard|RAV +1 Drooling Groodion|RAV +6 Forest|RTR +4 Golgari Guildgate|RTR +2 Golgari Guildmage|COM +4 Grave-Shell Scarab|RAV +4 Grisly Salvage|RTR +4 Overgrown Tomb|RTR +4 Plagued Rusalka|GPT +4 Putrefy|RAV +4 Shambling Shell|RAV +4 Skeletal Vampire|GPT +6 Swamp|RTR +[sideboard] +[planes] +[schemes] \ No newline at end of file diff --git a/res/quest/world/ravnica/duels/Agrus 2.dck b/res/quest/world/ravnica/duels/Agrus 2.dck new file mode 100644 index 00000000000..008d504d2e3 --- /dev/null +++ b/res/quest/world/ravnica/duels/Agrus 2.dck @@ -0,0 +1,27 @@ +[duel] +[metadata] +Name=Agrus 2 +Title=Agrus +Icon=Agrus.jpg +Difficulty=medium +Description=Ein, Zwei, Polizei +Deck Type=constructed +[main] +4 Ash Zealot|RTR +2 Boros Charm|GTC +4 Boros Elite|GTC +4 Boros Recruit|RAV +2 Five-Alarm Fire|GTC +4 Foundry Street Denizen|GTC +4 Legion Loyalist|GTC +4 Lightning Helix|RAV +10 Mountain|RTR +8 Plains|RTR +2 Proclamation of Rebirth|DIS +4 Sacred Foundry|GTC +4 Seal of Fire|DIS +2 Skyknight Legionnaire|GTC +2 Wojek Halberdiers|GTC +[sideboard] +[planes] +[schemes] \ No newline at end of file diff --git a/res/quest/world/ravnica/duels/Aurelia 2.dck b/res/quest/world/ravnica/duels/Aurelia 2.dck new file mode 100644 index 00000000000..d7a0f516c2f --- /dev/null +++ b/res/quest/world/ravnica/duels/Aurelia 2.dck @@ -0,0 +1,26 @@ +[duel] +[metadata] +Name=Aurelia 2 +Title=Aurelia 2 +Icon=Aurelia.jpg +Difficulty=medium +Description=Ein, Zwei, Polizei +Deck Type=constructed +[main] +2 Angel of Serenity|RTR +4 Boros Guildgate|GTC +4 Concordia Pegasus|RTR +4 Faith's Fetters|RAV +3 Firemane Angel|RAV +4 Foundry Champion|GTC +4 Lightning Helix|RAV +4 Mizzium Mortars|RTR +8 Mountain|RTR +8 Plains|RTR +4 Sacred Foundry|GTC +4 Stoic Ephemera|DIS +3 Sunhome Guildmage|GTC +4 Wakestone Gargoyle|DIS +[sideboard] +[planes] +[schemes] \ No newline at end of file diff --git a/res/quest/world/ravnica/duels/Aurelia 3.dck b/res/quest/world/ravnica/duels/Aurelia 3.dck new file mode 100644 index 00000000000..526961d6951 --- /dev/null +++ b/res/quest/world/ravnica/duels/Aurelia 3.dck @@ -0,0 +1,28 @@ +[duel] +[metadata] +Name=Aurelia 3 +Title=Aurelia 3 +Icon=Aurelia.jpg +Difficulty=hard +Description=Ein, Zwei, Polizei +Deck Type=constructed +[main] +4 Ash Zealot|RTR +4 Boros Charm|GTC +4 Boros Elite|GTC +4 Boros Guildgate|GTC +2 Boros Reckoner|GTC +2 Demonfire|DIS +3 Firemane Avenger|GTC +3 Flame-Kin Zealot|RAV +4 Lightning Helix|RAV +8 Mountain|RTR +8 Plains|RTR +4 Precinct Captain|RTR +4 Sacred Foundry|GTC +4 Seal of Fire|DIS +3 Wojek Halberdiers|GTC +[sideboard] +[planes] +[schemes] + diff --git a/res/quest/world/ravnica/duels/Azorius2006 1.dck b/res/quest/world/ravnica/duels/Azorius2006 1.dck new file mode 100644 index 00000000000..a665859bd4e --- /dev/null +++ b/res/quest/world/ravnica/duels/Azorius2006 1.dck @@ -0,0 +1,34 @@ +[duel] +[metadata] +Name=Azorius2006 1 +Title=Azorius 2006 +Icon=Azorius-precon.jpg +Difficulty=easy +Description=Precon deck +Deck Type=constructed +[main] +2 Azorius First-Wing|DIS +1 Azorius Guildmage|DIS +3 Beacon Hawk|DIS +2 Benevolent Ancestor|RAV +1 Faith's Fetters|RAV +1 Halcyon Glaze|RAV +10 Island|RTR +1 Isperia the Inscrutable|DIS +2 Minister of Impediments|DIS +4 Mistral Charger|DIS +2 Ocular Halo|DIS +1 Paladin of Prahv|DIS +1 Palliation Accord|DIS +13 Plains|RTR +2 Plumes of Peace|DIS +1 Prahv, Spires of Order|DIS +1 Sinstriker's Will|GPT +2 Sky Hussar|DIS +4 Stoic Ephemera|DIS +1 To Arms!|GPT +4 Wakestone Gargoyle|DIS +1 Zephyr Spirit|RAV +[sideboard] +[planes] +[schemes] \ No newline at end of file diff --git a/res/quest/world/ravnica/duels/Azorius2012 1.dck b/res/quest/world/ravnica/duels/Azorius2012 1.dck new file mode 100644 index 00000000000..9eeb9d03ee3 --- /dev/null +++ b/res/quest/world/ravnica/duels/Azorius2012 1.dck @@ -0,0 +1,34 @@ +[duel] +[metadata] +Name=Azorius2012 1 +Title=Azorius 2012 +Icon=Azorius-precon.jpg +Difficulty=easy +Description=Precon deck +Deck Type=constructed +[main] +1 Archon of the Triumvirate|RTR +2 Arrest|RTR +2 Azorius Arrester|RTR +1 Azorius Guildgate|RTR +1 Azorius Justiciar|RTR +2 Azorius Keyrune|RTR +2 Bazaar Krovod|RTR +4 Concordia Pegasus|RTR +2 Dramatic Rescue|RTR +1 Inaction Injunction|RTR +12 Island|RTR +3 Lyev Skyknight|RTR +1 New Prahv Guildmage|RTR +12 Plains|RTR +1 Righteous Authority|RTR +1 Skyline Predator|RTR +1 Soulsworn Spirit|RTR +3 Stealer of Secrets|RTR +3 Swift Justice|RTR +1 Tablet of the Guilds|RTR +2 Trained Caracal|RTR +2 Vassal Soul|RTR +[sideboard] +[planes] +[schemes] \ No newline at end of file diff --git a/res/quest/world/ravnica/duels/Bep van Klaveren 3.dck b/res/quest/world/ravnica/duels/Bep van Klaveren 3.dck new file mode 100644 index 00000000000..c6d5f9d18e9 --- /dev/null +++ b/res/quest/world/ravnica/duels/Bep van Klaveren 3.dck @@ -0,0 +1,27 @@ +[duel] +[metadata] +Name=Bep van Klaveren 3 +Title=Bep van Klaveren +Icon=Bep.jpg +Difficulty=hard +Description=The Dutch Windmill +Deck Type=constructed +[main] +2 Darkblast|RAV +4 Dimir Guildgate|GTC +4 Glimpse the Unthinkable|RAV +8 Island|RTR +4 Grisly Spectacle|GTC +2 Mind Grind|GTC +4 Muddle the Mixture|RAV +2 Psychic Spiral|RTR +4 Remand|RAV +4 Dimir Infiltrator|RAV +8 Swamp|RTR +4 Watery Grave|GTC +2 Paranoid Delusions|GTC +4 Wight of Precinct Six|GTC +4 Compulsive Research|RAV +[sideboard] +[planes] +[schemes] \ No newline at end of file diff --git a/res/quest/world/ravnica/duels/Borborygmos 2.dck b/res/quest/world/ravnica/duels/Borborygmos 2.dck new file mode 100644 index 00000000000..ac869b74204 --- /dev/null +++ b/res/quest/world/ravnica/duels/Borborygmos 2.dck @@ -0,0 +1,30 @@ +[duel] +[metadata] +Name=Borborygmos 2 +Title=Borborygmos 2 +Icon=Borborygmos.jpg +Difficulty=medium +Description=Temper, Temper +Deck Type=constructed +[main] +4 Gyre Sage|GTC +4 Birds of Paradise|M12 +2 Borborygmos|GPT +1 Borborygmos Enraged|GTC +4 Carven Caryatid|RAV +8 Forest|RTR +2 Gruul Ragebeast|GTC +4 Farseek|RAV +4 Gruul Guildgate|GTC +2 Indrik Stomphowler|DIS +1 Molten Primordial|GTC +8 Mountain|RTR +4 Ground Assault|GTC +2 Sprouting Phytohydra|DIS +4 Stomping Ground|GTC +1 Sylvan Primordial|GTC +4 Wasteland Viper|GTC +1 Worldspine Wurm|RTR +[sideboard] +[planes] +[schemes] \ No newline at end of file diff --git a/res/quest/world/ravnica/duels/Borborygmos 3.dck b/res/quest/world/ravnica/duels/Borborygmos 3.dck new file mode 100644 index 00000000000..334f1fb3aad --- /dev/null +++ b/res/quest/world/ravnica/duels/Borborygmos 3.dck @@ -0,0 +1,25 @@ +[duel] +[metadata] +Name=Borborygmos 3 +Title=Borborygmos 3 +Icon=Borborygmos.jpg +Difficulty=hard +Description=Temper, Temper +Deck Type=constructed +[main] +4 Burning-Tree Emissary|GTC +4 Burning-Tree Shaman|GPT +4 Char|RAV +2 Demonfire|DIS +4 Experiment One|GTC +12 Forest|M10 +4 Ghor-Clan Rampager|GTC +4 Giant Solifuge|GPT +8 Mountain|RTR +2 Scab-Clan Mauler|GPT +4 Domri Rade|GTC +4 Stomping Ground|GTC +4 Wasteland Viper|GTC +[sideboard] +[planes] +[schemes] \ No newline at end of file diff --git a/res/quest/world/ravnica/duels/Boros2005.dck b/res/quest/world/ravnica/duels/Boros2005.dck new file mode 100644 index 00000000000..12cbf378a77 --- /dev/null +++ b/res/quest/world/ravnica/duels/Boros2005.dck @@ -0,0 +1,31 @@ +[duel] +[metadata] +Name=Boros2005 1 +Title=Boros 2005 +Icon=Boros-precon.jpg +Difficulty=easy +Description=Precon deck +Deck Type=constructed +[main] +1 Agrus Kos, Wojek Veteran|RAV +2 Bathe in Light|COM +1 Boros Guildmage|COM +3 Boros Recruit|RAV +2 Boros Swiftblade|RAV +1 Cyclopean Snare|RAV +4 Dogpile|RAV +2 Flame-Kin Zealot|RAV +2 Greater Forgeling|RAV +4 Lightning Helix|RAV +11 Mountain|RTR +2 Nightguard Patrol|RAV +2 Ordruun Commando|RAV +12 Plains|RTR +3 Skyknight Legionnaire|GTC +1 Sunhome, Fortress of the Legion|RAV +3 Thundersong Trumpeter|RAV +2 Viashino Slasher|RAV +2 War-Torch Goblin|RAV +[sideboard] +[planes] +[schemes] \ No newline at end of file diff --git a/res/quest/world/ravnica/duels/Boros2013.dck b/res/quest/world/ravnica/duels/Boros2013.dck new file mode 100644 index 00000000000..da449d8b97e --- /dev/null +++ b/res/quest/world/ravnica/duels/Boros2013.dck @@ -0,0 +1,38 @@ +[duel] +[metadata] +Name=Boros2013 1 +Title=Boros 2013 +Icon=Boros-precon.jpg +Difficulty=easy +Description=Precon deck +Deck Type=constructed +[main] +1 Act of Treason|GTC +2 Aerial Maneuver|GTC +1 Armored Transport|GTC +3 Arrows of Justice|GTC +1 Bomber Corps|GTC +3 Boros Elite|GTC +1 Boros Guildgate|GTC +2 Boros Keyrune|GTC +1 Court Street Denizen|GTC +2 Daring Skyjek|GTC +3 Ember Beast|GTC +1 Firefist Striker|GTC +1 Firemane Avenger|GTC +2 Fortress Cyclops|GTC +1 Foundry Champion|GTC +1 Mark for Death|GTC +12 Mountain|RTR +1 Mugging|GTC +1 Ordruun Veteran|GTC +12 Plains|RTR +1 Righteous Charge|GTC +1 Shielded Passage|GTC +2 Skyknight Legionnaire|GTC +1 Sunhome Guildmage|GTC +2 Warmind Infantry|GTC +3 Wojek Halberdiers|GTC +[sideboard] +[planes] +[schemes] \ No newline at end of file diff --git a/res/quest/world/ravnica/duels/Caprio 2.dck b/res/quest/world/ravnica/duels/Caprio 2.dck new file mode 100644 index 00000000000..e9421bba5d0 --- /dev/null +++ b/res/quest/world/ravnica/duels/Caprio 2.dck @@ -0,0 +1,29 @@ +[duel] +[metadata] +Name=Caprio 2 +Title=Caprio +Icon=Caprio.jpg +Difficulty=medium +Description=Catch me if you can.. +Deck Type=constructed +[main] +4 Compulsive Research|RAV +4 Cyclonic Rift|RTR +4 Muddle the Mixture|RAV +4 Dimir Guildgate|GTC +1 Duskmantle Seer|GTC +4 Hunted Horror|RAV +4 Hunted Phantasm|RAV +4 Illness in the Ranks|GTC +8 Island|RTR +1 Jace, Architect of Thought|RTR +4 Hatching Plans|GPT +4 Leyline of Singularity|GPT +1 Mimeofacture|GPT +1 Stinkweed Imp|RAV +1 Dimir House Guard|RAV +8 Swamp|RTR +4 Watery Grave|GTC +[sideboard] +[planes] +[schemes] \ No newline at end of file diff --git a/res/quest/world/ravnica/duels/Der Rattenfanger von Hameln 2.dck b/res/quest/world/ravnica/duels/Der Rattenfanger von Hameln 2.dck new file mode 100644 index 00000000000..89716c9a5dc --- /dev/null +++ b/res/quest/world/ravnica/duels/Der Rattenfanger von Hameln 2.dck @@ -0,0 +1,25 @@ +[duel] +[metadata] +Name=Der Rattenfanger von Hameln 2 +Title=Der Rattenfanger von Hameln +Icon=Hameln.jpg +Difficulty=medium +Description=Ratata +Deck Type=constructed +[main] +4 Blood Crypt|RTR +4 Drainpipe Vermin|RTR +4 Gobhobbler Rats|DIS +4 Gutter Skulk|GTC +4 Hellhole Rats|DIS +8 Mountain|RTR +4 Ogre Slumlord|GTC +4 Pack Rat|RTR +4 Rakdos Guildgate|RTR +4 Ratcatcher|DIS +4 Seal of Fire|DIS +4 Last Gasp|RAV +8 Swamp|RTR +[sideboard] +[planes] +[schemes] diff --git a/res/quest/world/ravnica/duels/Ghost Council 2.dck b/res/quest/world/ravnica/duels/Ghost Council 2.dck new file mode 100644 index 00000000000..2c89f82535f --- /dev/null +++ b/res/quest/world/ravnica/duels/Ghost Council 2.dck @@ -0,0 +1,28 @@ +[duel] +[metadata] +Name=Ghost Council 2 +Title=Ghost Council 2 +Icon=Ghost Council.jpg +Difficulty=medium +Description=Whether it's heaven or hell, those who believe can live forever +Deck Type=constructed +[main] +3 Blind Hunter|GPT +1 Blind Obedience|GTC +4 Castigate|GPT +4 Cry of Contrition|GPT +4 Drainpipe Vermin|RTR +2 Ghost Council of Orzhova|GPT +4 Godless Shrine|GTC +4 Orzhov Guildgate|GTC +4 Orzhov Euthanist|GPT +1 Orzhova, the Church of Deals|GPT +4 Plagued Rusalka|GPT +7 Plains|RTR +2 Proclamation of Rebirth|DIS +8 Swamp|RTR +4 Syndic of Tithes|GTC +4 Thrull Parasite|GTC +[sideboard] +[planes] +[schemes] \ No newline at end of file diff --git a/res/quest/world/ravnica/duels/Ghost Council 3.dck b/res/quest/world/ravnica/duels/Ghost Council 3.dck new file mode 100644 index 00000000000..6143ed5ec1e --- /dev/null +++ b/res/quest/world/ravnica/duels/Ghost Council 3.dck @@ -0,0 +1,32 @@ +[duel] +[metadata] +Name=Ghost Council 3 +Title=Ghost Council 3 +Icon=Ghost Council.jpg +Difficulty=hard +Description=Whether it's heaven or hell, those who believe can live forever +Deck Type=constructed +[main] +2 Angel of Despair|COM +2 Basilica Guards|GTC +3 Condemn|M11 +2 Crypt Ghast|GTC +1 Deathpact Angel|GTC +2 Debtors' Knell|GPT +1 Dimir House Guard|RAV +4 Godless Shrine|GTC +4 High Priest of Penance|GTC +3 Last Gasp|RAV +2 Merciless Eviction|GTC +4 Mortify|COM +2 Obzedat, Ghost Council|GTC +2 Order of the Stars|GPT +4 Orzhov Guildgate|GTC +8 Plains|RTR +1 Skeletal Vampire|GPT +2 Stinkweed Imp|RAV +8 Swamp|RTR +3 Underworld Connections|RTR +[sideboard] +[planes] +[schemes] \ No newline at end of file diff --git a/res/quest/world/ravnica/duels/Golgari2005 1.dck b/res/quest/world/ravnica/duels/Golgari2005 1.dck new file mode 100644 index 00000000000..b58c62abd9e --- /dev/null +++ b/res/quest/world/ravnica/duels/Golgari2005 1.dck @@ -0,0 +1,35 @@ +[duel] +[metadata] +Name=Golgari2005 1 +Title=Golgari 2005 +Icon=Golgari-precon.jpg +Difficulty=easy +Description=Precon deck +Deck Type=constructed +[main] +3 Darkblast|RAV +2 Drooling Groodion|RAV +2 Elves of Deep Shadow|RAV +1 Elvish Skysweeper|RAV +12 Forest|RTR +2 Golgari Brownscale|RAV +1 Golgari Grave-Troll|RAV +1 Golgari Guildmage|COM +2 Golgari Rotwurm|RAV +3 Greater Mossdog|RAV +2 Infectious Host|RAV +2 Last Gasp|RAV +1 Moldervine Cloak|RAV +1 Necromantic Thirst|RAV +2 Putrefy|RAV +2 Recollect|10E +1 Rolling Spoil|RAV +1 Savra, Queen of the Golgari|RAV +2 Shambling Shell|RAV +2 Stinkweed Imp|RAV +12 Swamp|RTR +1 Vigor Mortis|RAV +2 Woodwraith Strangler|RAV +[sideboard] +[planes] +[schemes] \ No newline at end of file diff --git a/res/quest/world/ravnica/duels/Gruul2006 1.dck b/res/quest/world/ravnica/duels/Gruul2006 1.dck new file mode 100644 index 00000000000..ba672483007 --- /dev/null +++ b/res/quest/world/ravnica/duels/Gruul2006 1.dck @@ -0,0 +1,36 @@ +[duel] +[metadata] +Name=Gruul2006 1 +Title=Gruul 2006 +Icon=Gruul-precon.jpg +Difficulty=easy +Description=Precon deck +Deck Type=constructed +[main] +1 Battering Wurm|GPT +3 Beastmaster's Magemark|GPT +3 Bloodscale Prowler|GPT +1 Borborygmos|GPT +2 Dowsing Shaman|PC2 +2 Dryad Sophisticate|GPT +3 Fencer's Magemark|GPT +2 Fists of Ironwood|COM +12 Forest|RTR +2 Gatherer of Graces|GPT +1 Gruul Guildmage|GPT +1 Gruul Nodorog|GPT +2 Gruul Scrapper|GPT +1 Indentured Oaf|RAV +11 Mountain|RTR +1 Scab-Clan Mauler|GPT +1 Scorched Rusalka|GPT +1 Skarrg, the Rage Pits|PC2 +2 Skarrgan Skybreaker|GPT +2 Sparkmage Apprentice|M10 +3 Streetbreaker Wurm|GPT +1 Wild Cantor|GPT +1 Wildsize|GPT +1 Wurmweaver Coil|GPT +[sideboard] +[planes] +[schemes] \ No newline at end of file diff --git a/res/quest/world/ravnica/duels/Isperia 2.dck b/res/quest/world/ravnica/duels/Isperia 2.dck new file mode 100644 index 00000000000..7005927f8cd --- /dev/null +++ b/res/quest/world/ravnica/duels/Isperia 2.dck @@ -0,0 +1,29 @@ +[duel] +[metadata] +Name=Isperia 2 +Title=Isperia 2 +Icon=Isperia.jpg +Difficulty=medium +Description=Fly baby +Deck Type=constructed +[main] +4 Azorius Charm|RTR +2 Azorius Herald|DIS +2 Civic Saber|RTR +4 Compulsive Research|RAV +4 Dramatic Rescue|RTR +4 Hallowed Fountain|RTR +4 Azorius Guildgate|RTR +8 Island|RTR +4 Lyev Skyknight|RTR +4 Mistral Charger|DIS +8 Plains|RTR +2 Pride of the Clouds|DIS +2 Snapping Drake|RAV +2 Skymark Roc|RTR +4 Spell Snare|DIS +1 Azorius Guildmage|DIS +1 New Prahv Guildmage|RTR +[sideboard] +[planes] +[schemes] \ No newline at end of file diff --git a/res/quest/world/ravnica/duels/Isperia 3.dck b/res/quest/world/ravnica/duels/Isperia 3.dck new file mode 100644 index 00000000000..37b999102b7 --- /dev/null +++ b/res/quest/world/ravnica/duels/Isperia 3.dck @@ -0,0 +1,31 @@ +[duel] +[metadata] +Name=Isperia 3 +Title=Isperia 3 +Icon=Isperia.jpg +Difficulty=hard +Description=a tiny bit controllish +Deck Type=constructed +[main] +2 Angel of Serenity|RTR +2 Azorius Charm|RTR +4 Azorius Guildgate|RTR +1 Cerulean Sphinx|RAV +3 Compulsive Research|RAV +2 Condemn|M11 +3 Court Hussar|DIS +2 Detention Sphere|RTR +2 Faith's Fetters|RAV +4 Hallowed Fountain|RTR +9 Island|RTR +2 Azorius Herald|DIS +2 Jace, Architect of Thought|RTR +2 Muddle the Mixture|RAV +9 Plains|RTR +1 Pride of the Clouds|DIS +4 Remand|RAV +2 Sphinx's Revelation|RTR +4 Supreme Verdict|RTR +[sideboard] +[planes] +[schemes] \ No newline at end of file diff --git a/res/quest/world/ravnica/duels/Izzet2012 1.dck b/res/quest/world/ravnica/duels/Izzet2012 1.dck new file mode 100644 index 00000000000..4f359957a63 --- /dev/null +++ b/res/quest/world/ravnica/duels/Izzet2012 1.dck @@ -0,0 +1,36 @@ +[duel] +[metadata] +Name=Izzet2012 1 +Title=Izzet 2012 +Icon=Izzet-precon.jpg +Difficulty=easy +Description=Precon deck +Deck Type=constructed +[main] +3 Annihilating Fire|RTR +2 Blistercoil Weird|RTR +1 Blustersquall|RTR +3 Cobblebrute|RTR +1 Downsize|RTR +2 Electrickery|RTR +1 Explosive Impact|RTR +2 Goblin Electromancer|RTR +2 Goblin Rally|RTR +2 Guttersnipe|RTR +1 Hypersonic Dragon|RTR +12 Island|RTR +1 Izzet Guildgate|RTR +2 Izzet Keyrune|RTR +2 Sparkmage Apprentice|RAV +2 Surveilling Sprite|RAV +1 Mizzium Mortars|RTR +12 Mountain|RTR +1 Nivix Guildmage|RTR +1 Pursuit of Flight|RTR +3 Runewing|RTR +1 Teleportal|RTR +1 Tenement Crasher|RTR +1 Thoughtflare|RTR +[sideboard] +[planes] +[schemes] \ No newline at end of file diff --git a/res/quest/world/ravnica/duels/Jarad 2.dck b/res/quest/world/ravnica/duels/Jarad 2.dck new file mode 100644 index 00000000000..d477915cee8 --- /dev/null +++ b/res/quest/world/ravnica/duels/Jarad 2.dck @@ -0,0 +1,27 @@ +[duel] +[metadata] +Name=Jarad 2 +Title=Jarad +Icon=Jarad.jpg +Difficulty=medium +Description=Dead? Undead? Make up your mind! +Deck Type=constructed +[main] +3 Bloodbond March|RAV +4 Darkblast|RAV +3 Dimir House Guard|RAV +4 Elves of Deep Shadow|RAV +8 Forest|RTR +2 Golgari Grave-Troll|RAV +4 Golgari Guildgate|RTR +4 Grisly Salvage|RTR +1 Jarad's Orders|RTR +3 Jarad, Golgari Lich Lord|RTR +4 Lotleth Troll|RTR +4 Overgrown Tomb|RTR +4 Slitherhead|RTR +4 Stinkweed Imp|RAV +8 Swamp|RTR +[sideboard] +[planes] +[schemes] \ No newline at end of file diff --git a/res/quest/world/ravnica/duels/Kraj 3.dck b/res/quest/world/ravnica/duels/Kraj 3.dck new file mode 100644 index 00000000000..31efa0e690c --- /dev/null +++ b/res/quest/world/ravnica/duels/Kraj 3.dck @@ -0,0 +1,26 @@ +[duel] +[metadata] +Name=Kraj 3 +Title=Experiment Kraj +Icon=Kraj.jpg +Difficulty=hard +Description=Darwin, eat your heart out +Deck Type=constructed +[main] +4 Breeding Pool|GTC +4 Brushstrider|RTR +4 Cloudfin Raptor|GTC +4 Drakewing Krasis|GTC +4 Elusive Krasis|GTC +4 Experiment One|GTC +9 Forest|RTR +9 Island|RTR +2 Simic Guildgate|GTC +2 Remand|RAV +3 Shambleshark|GTC +3 Simic Charm|GTC +4 Spell Snare|DIS +4 Zameck Guildmage|GTC +[sideboard] +[planes] +[schemes] \ No newline at end of file diff --git a/res/quest/world/ravnica/duels/Lyzolda 2.dck b/res/quest/world/ravnica/duels/Lyzolda 2.dck new file mode 100644 index 00000000000..13c7b7632cb --- /dev/null +++ b/res/quest/world/ravnica/duels/Lyzolda 2.dck @@ -0,0 +1,31 @@ +[duel] +[metadata] +Name=Lyzolda 2 +Title=Lyzolda 2 +Icon=Lyzolda.jpg +Difficulty=medium +Description=Big Fellas +Deck Type=constructed +[main] +2 Bloodfray Giant|RTR +2 Carnival Hellsteed|RTR +2 Cobblebrute|RTR +3 Desecration Demon|RTR +3 Guild Feud|RTR +2 Hammerfist Giant|RAV +1 Hellhole Rats|DIS +3 Hellraiser Goblin|GTC +1 Hunted Dragon|RAV +4 Last Gasp|RAV +1 Lord of the Void|GTC +10 Mountain|RTR +4 Rakdos Guildgate|RTR +4 Rakdos Keyrune|RTR +4 Seal of Fire|DIS +1 Smog Elemental|GTC +1 Stalking Vengeance|DIS +2 Street Spasm|RTR +10 Swamp|RTR +[sideboard] +[planes] +[schemes] \ No newline at end of file diff --git a/res/quest/world/ravnica/duels/Lyzolda 3.dck b/res/quest/world/ravnica/duels/Lyzolda 3.dck new file mode 100644 index 00000000000..779b593af26 --- /dev/null +++ b/res/quest/world/ravnica/duels/Lyzolda 3.dck @@ -0,0 +1,29 @@ +[duel] +[metadata] +Name=Lyzolda 3 +Title=Lyzolda 3 +Icon=Lyzolda.jpg +Difficulty=hard +Description=Burn, burn, yes you're gonna burn +Deck Type=constructed +[main] +4 Ash Zealot|RTR +4 Blood Crypt|RTR +4 Char|RAV +4 Dark Confidant|RAV +2 Demonfire|DIS +2 Foundry Street Denizen|GTC +2 Gore-House Chainwalker|RTR +4 Hellhole Flailer|RTR +9 Mountain|RAV +2 Rakdos Guildgate|RTR +4 Rakdos Cackler|RTR +4 Rakdos Shred-Freak|RTR +4 Seal of Fire|DIS +3 Skullcrack|GTC +1 Rakdos Guildmage|DIS +1 Rix Maadi Guildmage|RTR +9 Swamp|RTR +[sideboard] +[planes] +[schemes] \ No newline at end of file diff --git a/res/quest/world/ravnica/duels/Niv-Mizzet 3.dck b/res/quest/world/ravnica/duels/Niv-Mizzet 3.dck new file mode 100644 index 00000000000..979bd3e3f4d --- /dev/null +++ b/res/quest/world/ravnica/duels/Niv-Mizzet 3.dck @@ -0,0 +1,28 @@ +[duel] +[metadata] +Name=Niv-Mizzet 3 +Title=Niv-Mizzet 3 +Icon=Niv-Mizzet.jpg +Difficulty=hard +Description=Instant karma is gonna get you +Deck Type=constructed +[main] +4 Compulsive Research|RAV +1 Diluvian Primordial|GTC +4 Electrolyze|COM +4 Frostburn Weird|RTR +4 Spell Snare|DIS +2 Hypersonic Dragon|RTR +9 Island|RTR +4 Izzet Guildgate|RTR +3 Jace, Architect of Thought|RTR +4 Mizzium Mortars|RTR +9 Mountain|RTR +2 Niv-Mizzet, Dracogenius|RTR +1 Niv-Mizzet, the Firemind|GPT +4 Remand|RAV +4 Steam Vents|RTR +3 Steamcore Weird|GPT +[sideboard] +[planes] +[schemes] \ No newline at end of file diff --git a/res/quest/world/ravnica/duels/Orzhov2006 1.dck b/res/quest/world/ravnica/duels/Orzhov2006 1.dck new file mode 100644 index 00000000000..0f50acdbdc5 --- /dev/null +++ b/res/quest/world/ravnica/duels/Orzhov2006 1.dck @@ -0,0 +1,34 @@ +[duel] +[metadata] +Name=Orzhov2006 1 +Title=Orzhov 2006 +Icon=Orzhov-precon.jpg +Difficulty=easy +Description=Precon deck +Deck Type=constructed +[main] +2 Agent of Masks|GPT +1 Belfry Spirit|GPT +2 Blind Hunter|GPT +2 Castigate|GPT +2 Hissing Miasma|GPT +2 Infectious Host|RAV +2 Mortify|COM +2 Mourning Thrull|GPT +2 Orzhov Euthanist|GPT +1 Orzhov Guildmage|COM +1 Orzhova, the Church of Deals|GPT +2 Ostiary Thrull|GPT +2 Pillory of the Sleepless|GPT +4 Plagued Rusalka|GPT +11 Plains|RTR +2 Poisonbelly Ogre|GPT +2 Shrieking Grotesque|GPT +1 Skeletal Vampire|GPT +2 Souls of the Faultless|GPT +2 Strands of Undeath|RAV +12 Swamp|RTR +1 Teysa, Orzhov Scion|GPT +[sideboard] +[planes] +[schemes] \ No newline at end of file diff --git a/res/quest/world/ravnica/duels/Rakdos the defiler 2.dck b/res/quest/world/ravnica/duels/Rakdos the defiler 2.dck new file mode 100644 index 00000000000..42ad605525c --- /dev/null +++ b/res/quest/world/ravnica/duels/Rakdos the defiler 2.dck @@ -0,0 +1,25 @@ +[duel] +[metadata] +Name=Rakdos the defiler 2 +Title=Rakdos the Defiler +Icon=Rakdos.jpg +Difficulty=medium +Description=Blood, Sweat & Tears +Deck Type=constructed +[main] +4 Blood Crypt|RTR +4 Char|RAV +4 Dreadbore|RTR +4 Grave Betrayal|RTR +4 Mizzium Mortars|RTR +9 Mountain|RTR +4 Rakdos Guildgate|RTR +4 Rakdos's Return|RTR +9 Swamp|RTR +4 Underworld Connections|RTR +4 Wight of Precinct Six|GTC +4 Mind Rot|RTR +2 Seal of Fire|DIS +[sideboard] +[planes] +[schemes] \ No newline at end of file diff --git a/res/quest/world/ravnica/duels/Savra 3.dck b/res/quest/world/ravnica/duels/Savra 3.dck new file mode 100644 index 00000000000..ec57e5336ef --- /dev/null +++ b/res/quest/world/ravnica/duels/Savra 3.dck @@ -0,0 +1,26 @@ +[duel] +[metadata] +Name=Savra 3 +Title=Savra +Icon=Savra.jpg +Difficulty=hard +Description=Controllish +Deck Type=constructed +[main] +4 Abrupt Decay|RTR +4 Birds of Paradise|M12 +4 Last Gasp|RAV +2 Elves of Deep Shadow|RAV +8 Forest|RTR +4 Golgari Guildgate|RTR +3 Dreg Mangler|RTR +4 Overgrown Tomb|RTR +4 Putrefy|RAV +4 Skeletal Vampire|GPT +8 Swamp|RTR +3 Trestle Troll|RTR +4 Underworld Connections|RTR +4 Vraska the Unseen|RTR +[sideboard] +[planes] +[schemes] \ No newline at end of file diff --git a/res/quest/world/ravnica/duels/Selesnya2005 1.dck b/res/quest/world/ravnica/duels/Selesnya2005 1.dck new file mode 100644 index 00000000000..89122b9e6bb --- /dev/null +++ b/res/quest/world/ravnica/duels/Selesnya2005 1.dck @@ -0,0 +1,32 @@ +[duel] +[metadata] +Name=Selesnya2005 1 +Title=Selesnya 2005 +Icon=Selesnya-precon.jpg +Difficulty=easy +Description=Precon deck +Deck Type=constructed +[main] +2 Centaur Safeguard|RAV +2 Conclave Phalanx|RAV +1 Conclave's Blessing|RAV +1 Dowsing Shaman|RAV +4 Elvish Skysweeper|RAV +4 Fists of Ironwood|RAV +12 Forest|M10 +12 Forest|RTR +3 Gather Courage|RAV +11 Plains|RTR +3 Root-Kin Ally|RAV +2 Scatter the Seeds|RAV +1 Scion of the Wild|RAV +2 Selesnya Evangel|RAV +1 Selesnya Guildmage|RAV +4 Siege Wurm|RAV +1 Tolsimir Wolfblood|RAV +4 Transguild Courier|DIS +1 Vitu-Ghazi, the City-Tree|RAV +1 Watchwolf|RAV +[sideboard] +[planes] +[schemes] \ No newline at end of file diff --git a/res/quest/world/ravnica/duels/Selesnya2012 1.dck b/res/quest/world/ravnica/duels/Selesnya2012 1.dck new file mode 100644 index 00000000000..cc332829b20 --- /dev/null +++ b/res/quest/world/ravnica/duels/Selesnya2012 1.dck @@ -0,0 +1,36 @@ +[duel] +[metadata] +Name=Selesnya2012 1 +Title=Selesnya 2012 +Icon=Selesnya-precon.jpg +Difficulty=easy +Description=Precon deck +Deck Type=constructed +[main] +1 Axebane Stag|RTR +1 Brushstrider|RTR +2 Call of the Conclave|RTR +4 Centaur Healer|RTR +3 Centaur's Herald|RTR +2 Chorus of Might|RTR +1 Coursers' Accord|RTR +1 Druid's Deliverance|RTR +2 Eyes in the Skies|RTR +12 Forest|RTR +1 Grove of the Guardian|RTR +1 Heroes' Reunion|RTR +2 Phantom General|RTR +11 Plains|RTR +1 Risen Sanctuary|RTR +1 Rootborn Defenses|RTR +2 Rubbleback Rhino|RTR +2 Savage Surge|RTR +1 Selesnya Guildgate|RTR +2 Selesnya Keyrune|RTR +3 Seller of Songbirds|RTR +2 Trostani's Judgment|RTR +1 Vitu-Ghazi Guildmage|RTR +1 Wayfaring Temple|RTR +[sideboard] +[planes] +[schemes] \ No newline at end of file diff --git a/res/quest/world/ravnica/duels/Simic2013 1.dck b/res/quest/world/ravnica/duels/Simic2013 1.dck new file mode 100644 index 00000000000..7facef9c8d9 --- /dev/null +++ b/res/quest/world/ravnica/duels/Simic2013 1.dck @@ -0,0 +1,37 @@ +[duel] +[metadata] +Name=Simic2013 1 +Title=Simic 2013 +Icon=Simic-precon.jpg +Difficulty=easy +Description=Precon deck +Deck Type=constructed +[main] +2 Adaptive Snapjaw|GTC +2 Cloudfin Raptor|GTC +4 Crocanura|GTC +1 Crowned Ceratok|GTC +2 Drakewing Krasis|GTC +1 Elusive Krasis|GTC +3 Agoraphobia|GTC +1 Fathom Mage|GTC +2 Forced Adaptation|GTC +12 Forest|RTR +1 Frilled Oculus|GTC +1 Hindervines|GTC +13 Island|RTR +1 Ivy Lane Denizen|GTC +4 Kraken Hatchling|M13 +1 Leyline Phantom|GTC +1 Merfolk of the Depths|GTC +1 Sapphire Drake|GTC +2 Shambleshark|GTC +1 Simic Guildgate|GTC +2 Simic Keyrune|GTC +1 Sleep|M13 +2 Unexpected Results|GTC +1 Urban Evolution|GTC +1 Zameck Guildmage|GTC +[sideboard] +[planes] +[schemes] \ No newline at end of file diff --git a/res/quest/world/ravnica/duels/Sisters of Stone Death 3.dck b/res/quest/world/ravnica/duels/Sisters of Stone Death 3.dck new file mode 100644 index 00000000000..7725574c453 --- /dev/null +++ b/res/quest/world/ravnica/duels/Sisters of Stone Death 3.dck @@ -0,0 +1,26 @@ +[duel] +[metadata] +Name=Sisters of Stone Death 3 +Title=Sisters of Stone Death +Icon=Sisters of Stone Death.jpg +Difficulty=hard +Description=Some creatures that really want to eat you +Deck Type=constructed +[main] +4 Birds of Paradise|M12 +3 Deadbridge Goliath|RTR +3 Desecration Demon|RTR +4 Dreg Mangler|RTR +4 Elves of Deep Shadow|RAV +8 Forest|RTR +4 Golgari Guildgate|RTR +4 Abrupt Decay|RTR +4 Lotleth Troll|RTR +4 Overgrown Tomb|RTR +3 Sewer Shambler|RTR +3 Shambling Shell|RAV +4 Slitherhead|RTR +8 Swamp|RTR +[sideboard] +[planes] +[schemes] \ No newline at end of file diff --git a/res/quest/world/ravnica/duels/Sus Antigoon.dck b/res/quest/world/ravnica/duels/Sus Antigoon.dck new file mode 100644 index 00000000000..6d4facc6760 --- /dev/null +++ b/res/quest/world/ravnica/duels/Sus Antigoon.dck @@ -0,0 +1,30 @@ +[duel] +[metadata] +Name=Sus Antigoon 2 +Title=Sus Antigoon +Icon=Sus Antigoon.jpg +Difficulty=medium +Description=Your Ghost +Deck Type=constructed +[main] +1 Clinging Darkness|RAV +2 Dark Confidant|RAV +4 Dutiful Thrull|GTC +4 Ethereal Armor|RTR +2 Gift of Orzhova|GTC +4 Godless Shrine|GTC +4 Grim Roustabout|RTR +1 Guardian's Magemark|GPT +1 Necromancer's Magemark|GPT +4 Orzhov Guildgate|GTC +4 Pillory of the Sleepless|GPT +8 Plains|RTR +2 Precinct Captain|RTR +4 Shadow Lance|GPT +2 Sphere of Safety|RTR +1 Stab Wound|RTR +8 Swamp|RTR +4 Underworld Connections|RTR +[sideboard] +[planes] +[schemes] \ No newline at end of file diff --git a/res/quest/world/ravnica/duels/Szadek 2.dck b/res/quest/world/ravnica/duels/Szadek 2.dck new file mode 100644 index 00000000000..4e4766225df --- /dev/null +++ b/res/quest/world/ravnica/duels/Szadek 2.dck @@ -0,0 +1,30 @@ +[duel] +[metadata] +Name=Szadek 2 +Title=Szadek +Icon=Szadek.jpg +Difficulty=medium +Description=Lucipher +Deck Type=constructed +[main] +2 Cyclonic Rift|RTR +2 Daggerdrome Imp|RTR +4 Last Gasp|RAV +4 Dimir Guildgate|GTC +4 Dimir Infiltrator|RAV +8 Island|RTR +2 Last Thoughts|GTC +2 Muddle the Mixture|RAV +4 Cloudfin Raptor|GTC +2 Remand|RAV +4 Shadow Slice|GTC +2 Stolen Identity|GTC +2 Surveilling Sprite|RAV +8 Swamp|RTR +2 Thrill-Kill Assassin|RTR +2 Undercity Plague|GTC +4 Watery Grave|GTC +2 Deathcult Rogue|GTC +[sideboard] +[planes] +[schemes] \ No newline at end of file diff --git a/res/quest/world/ravnica/duels/Teysa 2.dck b/res/quest/world/ravnica/duels/Teysa 2.dck new file mode 100644 index 00000000000..6b07cba1130 --- /dev/null +++ b/res/quest/world/ravnica/duels/Teysa 2.dck @@ -0,0 +1,27 @@ +[duel] +[metadata] +Name=Teysa 2 +Title=Teysa +Icon=Teysa.jpg +Difficulty=medium +Description=Please let me play my combo +Deck Type=constructed +[main] +4 Belfry Spirit|GPT +2 Blind Hunter|GPT +2 Dimir House Guard|RAV +4 Eyes in the Skies|RTR +2 Ghost Council of Orzhova|GPT +4 Godless Shrine|GTC +4 Knight Watch|GTC +2 Ogre Slumlord|GTC +4 Orzhov Guildgate|GTC +8 Plains|RTR +4 Precinct Captain|RTR +4 Skeletal Vampire|GPT +8 Swamp|RTR +4 Teysa, Orzhov Scion|GPT +4 Twilight Drover|RAV +[sideboard] +[planes] +[schemes] \ No newline at end of file diff --git a/res/quest/world/ravnica/duels/Token 2.dck b/res/quest/world/ravnica/duels/Token 2.dck new file mode 100644 index 00000000000..0689df7defd --- /dev/null +++ b/res/quest/world/ravnica/duels/Token 2.dck @@ -0,0 +1,27 @@ +[duel] +[metadata] +Name=Token 2 +Title=Token +Icon=Token.jpg +Difficulty=medium +Description=Tokens'r'us +Deck Type=constructed +[main] +4 Birds of Paradise|RAV +4 Call of the Conclave|RTR +2 Collective Blessing|RTR +4 Fists of Ironwood|RAV +7 Forest|RTR +4 Glare of Subdual|RAV +2 Hour of Reckoning|RAV +4 Leyline of the Meek|GPT +7 Plains|RTR +4 Scatter the Seeds|RAV +4 Seed Spark|RAV +4 Selesnya Charm|RTR +4 Selesnya Guildgate|RTR +4 Temple Garden|RTR +2 Vitu-Ghazi, the City-Tree|RAV +[sideboard] +[planes] +[schemes] \ No newline at end of file diff --git a/res/quest/world/ravnica/duels/Tolsimir 2.dck b/res/quest/world/ravnica/duels/Tolsimir 2.dck new file mode 100644 index 00000000000..a6d1e81d4a0 --- /dev/null +++ b/res/quest/world/ravnica/duels/Tolsimir 2.dck @@ -0,0 +1,27 @@ +[duel] +[metadata] +Name=Tolsimir 2 +Title=Tolsimir +Icon=Tolsimir.jpg +Difficulty=medium +Description=Creatures'r'us +Deck Type=constructed +[main] +4 Call of the Conclave|RTR +4 Centaur Healer|RTR +4 Dryad Militant|RTR +8 Forest|RTR +3 Giant Growth|RTR +4 Loxodon Hierarch|RAV +4 Loxodon Smiter|RTR +8 Plains|RTR +2 Selesnya Guildmage|RAV +4 Selesnya Guildgate|RTR +4 Temple Garden|RTR +2 Tolsimir Wolfblood|RAV +4 Vinelasher Kudzu|RAV +4 Watchwolf|RAV +1 Vitu-Ghazi Guildmage|RTR +[sideboard] +[planes] +[schemes] \ No newline at end of file diff --git a/res/quest/world/ravnica/duels/Trostani 2.dck b/res/quest/world/ravnica/duels/Trostani 2.dck new file mode 100644 index 00000000000..120c050acea --- /dev/null +++ b/res/quest/world/ravnica/duels/Trostani 2.dck @@ -0,0 +1,33 @@ +[duel] +[metadata] +Name=Trostani 2 +Title=Trostani +Icon=Trostani.jpg +Difficulty=medium +Description=Ramp it up +Deck Type=constructed +[main] +1 Angel of Serenity|RTR +1 Armada Wurm|RTR +1 Autochthon Wurm|RAV +4 Birds of Paradise|RAV +1 Blazing Archon|RAV +4 Carven Caryatid|RAV +4 Civic Wayfinder|RAV +4 Gyre Sage|GTC +4 Farseek|RAV +10 Forest|RTR +1 Luminate Primordial|GTC +1 Oathsworn Giant|RAV +1 Palisade Giant|RTR +8 Plains|RTR +1 Primordial Sage|RAV +2 Selesnya Keyrune|RTR +4 Selesnya Guildgate|RTR +1 Sylvan Primordial|GTC +4 Temple Garden|RTR +2 Trostani, Selesnya's Voice|RTR +1 Worldspine Wurm|RTR +[sideboard] +[planes] +[schemes] \ No newline at end of file diff --git a/res/quest/world/ravnica/duels/Ulasht 2.dck b/res/quest/world/ravnica/duels/Ulasht 2.dck new file mode 100644 index 00000000000..bb3e2a5107e --- /dev/null +++ b/res/quest/world/ravnica/duels/Ulasht 2.dck @@ -0,0 +1,28 @@ +[duel] +[metadata] +Name=Ulasht 2 +Title=Ulasht +Icon=Ulasht.jpg +Difficulty=medium +Description=Temper, Temper +Deck Type=constructed +[main] +2 Burning-Tree Emissary|GTC +8 Forest|RTR +4 Ghor-Clan Rampager|GTC +10 Mountain|RTR +4 Mugging|GTC +2 Razortip Whip|GTC +4 Scab-Clan Mauler|GPT +4 Seal of Fire|DIS +2 Skarrg, the Rage Pits|PC2 +2 Skarrgan Firebird|GPT +4 Skarrgan Pit-Skulk|GPT +2 Skarrgan Skybreaker|GPT +4 Stomping Ground|GTC +4 Wasteland Viper|GTC +2 Ulasht, the Hate Seed|GPT +2 Domri Rade|GTC +[sideboard] +[planes] +[schemes] \ No newline at end of file diff --git a/res/quest/world/ravnica/duels/Zegana 3.dck b/res/quest/world/ravnica/duels/Zegana 3.dck new file mode 100644 index 00000000000..0a8568eda5d --- /dev/null +++ b/res/quest/world/ravnica/duels/Zegana 3.dck @@ -0,0 +1,31 @@ +[duel] +[metadata] +Name=Zegana 3 +Title=Zegana +Icon=Zegana.jpg +Difficulty=hard +Description=Darwin, eat your heart out +Deck Type=constructed +[main] +4 Birds of Paradise|M12 +4 Breeding Pool|GTC +2 Civic Wayfinder|10E +2 Coiling Oracle|DIS +4 Crocanura|GTC +4 Experiment One|GTC +4 Farseek|M13 +5 Forest|RTR +4 Island|RTR +2 Master Biomancer|GTC +2 Mystic Genesis|GTC +1 Novijen, Heart of Progress|DIS +3 Patagia Viper|DIS +4 Prime Speaker Zegana|GTC +4 Simic Charm|GTC +4 Simic Guildgate|GTC +3 Trygon Predator|DIS +2 Vigean Hydropon|DIS +2 Zameck Guildmage|GTC +[sideboard] +[planes] +[schemes] \ No newline at end of file diff --git a/res/quest/world/worlds.txt b/res/quest/world/worlds.txt index 5a31138a0dd..807d24e92e6 100644 --- a/res/quest/world/worlds.txt +++ b/res/quest/world/worlds.txt @@ -1,3 +1,4 @@ Name:Main world Name:Shandalar|Dir:shandalar|Sets:2ED, ARN, ATQ, 3ED, LEG, DRK, 4ED|Banned:Chaos Orb; Falling Star Name:Jamuraa|Dir:jamuraa|Sets:5ED, ARN, MIR, VIS, WTH|Banned:Chaos Orb; Falling Star +Name:Ravnica|Dir:ravnica|Sets:RAV, GPT, DIS, RTR, GTC|Banned:Chaos Orb; Falling Star From eaf3429ceac60257747dcc4ea63645e200f5b17a Mon Sep 17 00:00:00 2001 From: Sol Date: Mon, 4 Mar 2013 03:33:01 +0000 Subject: [PATCH 07/11] - Inform the human which turn position he's in during the Mulligan Input --- .../java/forge/control/input/InputMulligan.java | 17 +++++++++++++---- src/main/java/forge/game/GameState.java | 15 +++++++++++++++ 2 files changed, 28 insertions(+), 4 deletions(-) diff --git a/src/main/java/forge/control/input/InputMulligan.java b/src/main/java/forge/control/input/InputMulligan.java index 85c82714684..6939ff93c8c 100644 --- a/src/main/java/forge/control/input/InputMulligan.java +++ b/src/main/java/forge/control/input/InputMulligan.java @@ -62,10 +62,19 @@ public class InputMulligan extends Input { ButtonUtil.setButtonText("No", "Yes"); ButtonUtil.enableAllFocusOk(); - final String str = - (Singletons.getModel().getGame().getPhaseHandler().getPlayerTurn().equals(Singletons.getControl().getPlayer()) - ? "You're going first. " : "The computer is going first. "); - CMatchUI.SINGLETON_INSTANCE.showMessage(str + "Do you want to Mulligan?"); + GameState game = Singletons.getModel().getGame(); + Player startingPlayer = game.getPhaseHandler().getPlayerTurn(); + Player localPlayer = Singletons.getControl().getPlayer(); + + StringBuilder sb = new StringBuilder(); + sb.append(startingPlayer.getName()).append(" is going first. "); + + if (!startingPlayer.equals(localPlayer)) { + sb.append("You are going ").append(game.getOrdinalPosition(localPlayer, startingPlayer)).append(". "); + } + + sb.append("Do you want to Mulligan?"); + CMatchUI.SINGLETON_INSTANCE.showMessage(sb.toString()); } /** {@inheritDoc} */ diff --git a/src/main/java/forge/game/GameState.java b/src/main/java/forge/game/GameState.java index 9854253bdf4..ebe30d10398 100644 --- a/src/main/java/forge/game/GameState.java +++ b/src/main/java/forge/game/GameState.java @@ -478,6 +478,21 @@ public class GameState { return roIngamePlayers.get(iPlayer); } + + public String getOrdinalPosition(Player player, Player startingPlayer) { + int startPosition = roIngamePlayers.indexOf(startingPlayer); + int position = roIngamePlayers.indexOf(player) + startPosition + 1; + String[] sufixes = new String[] { "th", "st", "nd", "rd", "th", "th", "th", "th", "th", "th" }; + switch (position % 100) { + case 11: + case 12: + case 13: + return position + "th"; + default: + return position + sufixes[position % 10]; + + } + } /** * Only game knows how to get suitable players out of just connected clients. From 46fa85528f0c95744b5429d133d5ed83cd909174 Mon Sep 17 00:00:00 2001 From: Sol Date: Mon, 4 Mar 2013 03:56:04 +0000 Subject: [PATCH 08/11] - Adding the three "Opponent Chooses" modal spells from Alliances. If the Human casts one, the AI will currently choose the "least harmful" fork of the mode for now, this is a static "decision". --- .gitattributes | 3 ++ res/cardsfolder/f/fatal_lore.txt | 11 +++++++ res/cardsfolder/l/library_of_lat_nam.txt | 11 +++++++ res/cardsfolder/m/misfortune.txt | 13 ++++++++ .../java/forge/card/ability/ai/CharmAi.java | 22 +++++++++++--- .../card/ability/effects/CharmEffect.java | 30 +++++++++++++++---- 6 files changed, 81 insertions(+), 9 deletions(-) create mode 100644 res/cardsfolder/f/fatal_lore.txt create mode 100644 res/cardsfolder/l/library_of_lat_nam.txt create mode 100644 res/cardsfolder/m/misfortune.txt diff --git a/.gitattributes b/.gitattributes index bdc3671daee..7055ffbc1a9 100644 --- a/.gitattributes +++ b/.gitattributes @@ -3469,6 +3469,7 @@ res/cardsfolder/f/fastbond.txt svneol=native#text/plain res/cardsfolder/f/fatal_attraction.txt svneol=native#text/plain res/cardsfolder/f/fatal_blow.txt svneol=native#text/plain res/cardsfolder/f/fatal_frenzy.txt svneol=native#text/plain +res/cardsfolder/f/fatal_lore.txt -text res/cardsfolder/f/fatal_mutation.txt svneol=native#text/plain res/cardsfolder/f/fatestitcher.txt svneol=native#text/plain res/cardsfolder/f/fathom_mage.txt -text @@ -5975,6 +5976,7 @@ res/cardsfolder/l/liability.txt svneol=native#text/plain res/cardsfolder/l/liberate.txt svneol=native#text/plain res/cardsfolder/l/liberated_dwarf.txt svneol=native#text/plain res/cardsfolder/l/library_of_alexandria.txt svneol=native#text/plain +res/cardsfolder/l/library_of_lat_nam.txt -text res/cardsfolder/l/library_of_leng.txt -text res/cardsfolder/l/lich.txt svneol=native#text/plain res/cardsfolder/l/lich_lord_of_unx.txt svneol=native#text/plain @@ -6684,6 +6686,7 @@ res/cardsfolder/m/mischievous_poltergeist.txt svneol=native#text/plain res/cardsfolder/m/mischievous_quanar.txt -text res/cardsfolder/m/misers_cage.txt svneol=native#text/plain res/cardsfolder/m/misery_charm.txt svneol=native#text/plain +res/cardsfolder/m/misfortune.txt -text res/cardsfolder/m/misfortunes_gain.txt svneol=native#text/plain res/cardsfolder/m/misguided_rage.txt svneol=native#text/plain res/cardsfolder/m/mishra.txt -text diff --git a/res/cardsfolder/f/fatal_lore.txt b/res/cardsfolder/f/fatal_lore.txt new file mode 100644 index 00000000000..1bd8c60fafb --- /dev/null +++ b/res/cardsfolder/f/fatal_lore.txt @@ -0,0 +1,11 @@ +Name:Fatal Lore +ManaCost:2 B B +Types:Sorcery +A:SP$ Charm | Cost$ 2 B B | Chooser$ Opponent | Choices$ DrawThree,DestroyAndDraw | SpellDescription$ An opponent chooses one - You draw three cards; or you destroy up to two target creatures that opponent controls and that player draws up to three cards. Those creatures can't be regenerated. +SVar:DrawThree:DB$ Draw | NumCards$ 3 | Defined$ You | SpellDescription$ You draw three cards. +SVar:DestroyAndDraw:DB$ Destroy | ValidTgts$ Creature.ChosenCtrl | TgtPrompt$ Select target creature | TargetMin$ 0 | TargetMax$ 2 | NoRegen$ True | SpellDescription$ You destroy up to two target creatures that opponent controls and that player draws up to three cards. Those creatures can't be regenerated. | SubAbility$ ChooserDraws +SVar:ChooserDraws:DB$ Draw | NumCards$ 3 | Defined$ ChosenPlayer +SVar:RemAIDeck:True +SVar:Picture:http://www.wizards.com/global/images/magic/general/fatal_lore.jpg +SetInfo:ALL|Rare|http://magiccards.info/scans/en/ai/7.jpg +Oracle:An opponent chooses one - You draw three cards; or you destroy up to two target creatures that opponent controls and that player draws up to three cards. Those creatures can't be regenerated. diff --git a/res/cardsfolder/l/library_of_lat_nam.txt b/res/cardsfolder/l/library_of_lat_nam.txt new file mode 100644 index 00000000000..42ec77fb039 --- /dev/null +++ b/res/cardsfolder/l/library_of_lat_nam.txt @@ -0,0 +1,11 @@ +Name:Library of Lat-Nam +ManaCost:4 U +Types:Sorcery +A:SP$ Charm | Cost$ 4 U | Chooser$ Opponent | Choices$ SlowDraw,Tutor | SpellDescription$ An opponent chooses one - You draw three cards at the beginning of the next turn's upkeep; or you search your library for a card, put that card into your hand, then shuffle your library. +SVar:SlowDraw:DB$ Draw | NumCards$ 3 | Defined$ You | NextUpkeep$ True | SpellDescription$ You draw three cards at the beginning of the next turn's upkeep +SVar:Tutor:DB$ ChangeZone | Origin$ Library | Destination$ Hand | ChangeType$ Card | ChangeNum$ 1 | Mandatory$ True | SpellDescription$ You search your library for a card, put that card into your hand, then shuffle your library. +SVar:RemAIDeck:True +SVar:Picture:http://www.wizards.com/global/images/magic/general/library_of_lat_nam.jpg +SetInfo:6ED|Rare|http://magiccards.info/scans/en/6e/78.jpg +SetInfo:ALL|Rare|http://magiccards.info/scans/en/ai/47.jpg +Oracle:An opponent chooses one - You draw three cards at the beginning of the next turn's upkeep; or you search your library for a card, put that card into your hand, then shuffle your library. diff --git a/res/cardsfolder/m/misfortune.txt b/res/cardsfolder/m/misfortune.txt new file mode 100644 index 00000000000..1713d479166 --- /dev/null +++ b/res/cardsfolder/m/misfortune.txt @@ -0,0 +1,13 @@ +Name:Misfortune +ManaCost:1 B R G +Types:Sorcery +A:SP$ Charm | Cost$ 1 B R G | Chooser$ Opponent | Choices$ Fortune,Misfortune | SpellDescription$ An opponent chooses one - You put a +1/+1 counter on each creature you control and gain 4 life; or you put a -1/-1 counter on each creature that player controls and Misfortune deals 4 damage to him or her. +SVar:Fortune:DB$ PutCounterAll | ValidCards$ Creature.YouCtrl | CounterType$ P1P1 | CounterNum$ 1 | SubAbility$ DBGainLife | SpellDescription$ Put a +1/+1 counter on each creature you control. You gain 4 life. | SubAbility$ DBGainLife +SVar:DBGainLife:DB$ GainLife | LifeAmount$ 4 +SVar:Misfortune:DB$ PutCounterAll | ValidCards$ Creature.ChosenCtrl | CounterType$ M1M1 | CounterNum$ 1 | SubAbility$ DBLoseLife | SpellDescription$ you put a -1/-1 counter on each creature that player controls and Misfortune deals 4 damage to him or her. | SubAbility$ DBDamage +SVar:DBDamage:DB$ DealDamage | Defined$ ChosenPlayer | NumDmg$ 4 +SVar:ChooserDraws:DB$ Draw | NumCards$ 3 | Defined$ ChosenPlayer +SVar:RemAIDeck:True +SVar:Picture:http://www.wizards.com/global/images/magic/general/misfortune.jpg +SetInfo:ALL|Rare|http://magiccards.info/scans/en/ai/194.jpg +Oracle:An opponent chooses one - You put a +1/+1 counter on each creature you control and gain 4 life; or you put a -1/-1 counter on each creature that player controls and Misfortune deals 4 damage to him or her. diff --git a/src/main/java/forge/card/ability/ai/CharmAi.java b/src/main/java/forge/card/ability/ai/CharmAi.java index fcf44b20ee0..bcdc1f4715d 100644 --- a/src/main/java/forge/card/ability/ai/CharmAi.java +++ b/src/main/java/forge/card/ability/ai/CharmAi.java @@ -4,11 +4,12 @@ import java.util.ArrayList; import java.util.List; import java.util.Random; -import forge.card.ability.SpellAbilityAi; -import forge.card.ability.effects.CharmEffect; +import org.apache.commons.lang.math.RandomUtils; +import forge.card.ability.SpellAbilityAi;import forge.card.ability.effects.CharmEffect; import forge.card.spellability.AbilitySub; import forge.card.spellability.SpellAbility; import forge.game.player.AIPlayer; +import forge.game.player.Player; import forge.util.MyRandom; public class CharmAi extends SpellAbilityAi { @@ -22,7 +23,7 @@ public class CharmAi extends SpellAbilityAi { boolean timingRight = sa.isTrigger(); //is there a reason to play the charm now? List chooseFrom = CharmEffect.makePossibleOptions(sa); - List chosenList = chooseOptionsAi(ai, timingRight, chooseFrom, num, min); + List chosenList = chooseOptionsAi(ai, timingRight, chooseFrom, num, min, false); if (chosenList == null || chosenList.isEmpty()) { return false; @@ -32,9 +33,17 @@ public class CharmAi extends SpellAbilityAi { return r.nextFloat() <= Math.pow(.6667, sa.getActivationsThisTurn()); } - public static List chooseOptionsAi(final AIPlayer ai, boolean playNow, List choices, int num, int min) { + public static List chooseOptionsAi(final AIPlayer ai, boolean playNow, List choices, int num, int min, boolean opponentChoser) { List chosenList = new ArrayList(); + if (opponentChoser) { + // This branch is for "An Opponent chooses" Charm spells from Alliances + // Current just choose the first available spell, which seem generally less disastrous for the AI. + //return choices.subList(0, 1); + return choices.subList(1, choices.size()); + } + + for (int i = 0; i < num; i++) { AbilitySub thisPick = null; for (SpellAbility sub : choices) { @@ -57,4 +66,9 @@ public class CharmAi extends SpellAbilityAi { } return chosenList.size() >= min ? chosenList : null; } + + public static Player determineOpponentChooser(AIPlayer ai, SpellAbility sa, List opponents) { + return opponents.get(RandomUtils.nextInt(opponents.size())); + } + } diff --git a/src/main/java/forge/card/ability/effects/CharmEffect.java b/src/main/java/forge/card/ability/effects/CharmEffect.java index d1051a7e301..bddf06f663c 100644 --- a/src/main/java/forge/card/ability/effects/CharmEffect.java +++ b/src/main/java/forge/card/ability/effects/CharmEffect.java @@ -50,17 +50,37 @@ public class CharmEffect extends SpellAbilityEffect { final List choices = makePossibleOptions(sa); List chosen = null; - + Card source = sa.getSourceCard(); Player activator = sa.getActivatingPlayer(); - if (activator.isHuman()) { + Player chooser = sa.getActivatingPlayer(); + if (sa.hasParam("Chooser")) { + // Three modal cards require you to choose a player to make the modal choice' + // Two of these also reference the chosen player during the spell effect + String choose = sa.getParam("Chooser"); + List opponents = activator.getOpponents(); + int numOpps = opponents.size(); + if (numOpps == 1) { + chooser = opponents.get(0); + } else { + if (activator.isComputer()) { + chooser = CharmAi.determineOpponentChooser((AIPlayer)activator, sa, opponents); + } else { + chooser = GuiChoose.one("Choose an opponent", opponents); + } + } + source.setChosenPlayer(chooser); + } + + if (chooser.isHuman()) { + String modeTitle = String.format("%s activated %s - Choose a mode", activator, source); chosen = new ArrayList(); for (int i = 0; i < num; i++) { AbilitySub a; if (i < min) { - a = GuiChoose.one("Choose a mode", choices); + a = GuiChoose.one(modeTitle, choices); } else { - a = GuiChoose.oneOrNone("Choose a mode", choices); + a = GuiChoose.oneOrNone(modeTitle, choices); } if (null == a) { break; @@ -70,7 +90,7 @@ public class CharmEffect extends SpellAbilityEffect { chosen.add(a); } } else { - chosen = CharmAi.chooseOptionsAi((AIPlayer)activator, sa.isTrigger(), choices, num, min); + chosen = CharmAi.chooseOptionsAi((AIPlayer)chooser, sa.isTrigger(), choices, num, min, !chooser.equals(activator)); } chainAbilities(sa, chosen); From 9b2e1a8d22511e7ad26c53416e0a9bb6d8adc923 Mon Sep 17 00:00:00 2001 From: swordshine Date: Mon, 4 Mar 2013 04:31:35 +0000 Subject: [PATCH 09/11] - Added Goblin Welder (please test) --- .gitattributes | 1 + res/cardsfolder/c/carpet_of_flowers.txt | 1 + res/cardsfolder/g/goblin_welder.txt | 13 +++++++++++++ .../card/spellability/SpellAbilityCondition.java | 3 +-- 4 files changed, 16 insertions(+), 2 deletions(-) create mode 100644 res/cardsfolder/g/goblin_welder.txt diff --git a/.gitattributes b/.gitattributes index 7055ffbc1a9..581112757df 100644 --- a/.gitattributes +++ b/.gitattributes @@ -4342,6 +4342,7 @@ res/cardsfolder/g/goblin_warchief.txt svneol=native#text/plain res/cardsfolder/g/goblin_warchief_avatar.txt -text res/cardsfolder/g/goblin_wardriver.txt svneol=native#text/plain res/cardsfolder/g/goblin_warrens.txt svneol=native#text/plain +res/cardsfolder/g/goblin_welder.txt -text res/cardsfolder/g/goblin_wizard.txt svneol=native#text/plain res/cardsfolder/g/goblins_of_the_flarg.txt svneol=native#text/plain res/cardsfolder/g/godhead_of_awe.txt svneol=native#text/plain diff --git a/res/cardsfolder/c/carpet_of_flowers.txt b/res/cardsfolder/c/carpet_of_flowers.txt index c5f865847d9..162bf57fede 100644 --- a/res/cardsfolder/c/carpet_of_flowers.txt +++ b/res/cardsfolder/c/carpet_of_flowers.txt @@ -13,6 +13,7 @@ SVar:X:Count$ChosenNumber SVar:NumManaMax:Count$Valid Island.RememberedPlayerCtrl SVar:CarpetX:Number$0 SVar:RemAIDeck:True +SVar:RemRandomDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/carpet_of_flowers.jpg SetInfo:USG|Uncommon|http://magiccards.info/scans/en/us/240.jpg Oracle:At the beginning of each of your main phases, if you haven't added mana to your mana pool with this ability this turn, you may add up to X mana of any one color to your mana pool, where X is the number of Islands target opponent controls. diff --git a/res/cardsfolder/g/goblin_welder.txt b/res/cardsfolder/g/goblin_welder.txt new file mode 100644 index 00000000000..1d811ad915b --- /dev/null +++ b/res/cardsfolder/g/goblin_welder.txt @@ -0,0 +1,13 @@ +Name:Goblin Welder +ManaCost:R +Types:Creature Goblin Artificer +PT:1/1 +A:AB$ Pump | Cost$ T | ValidTgts$ Artifact | TgtPrompt$ Select target artifact a player controls | RememberObjects$ Targeted | Condition$ AllTargetsLegal | StackDescription$ SpellDescription | SubAbility$ DBTargetYard | SpellDescription$ Choose target artifact a player controls and target artifact card in that player's graveyard. If both targets are still legal as this ability resolves, that player simultaneously sacrifices the artifact and returns the artifact card to the battlefield. +SVar:DBTargetYard:DB$ Pump | ValidTgts$ Artifact | TgtPrompt$ Select target artifact in that player's graveyard | TgtZone$ Graveyard | PumpZone$ Graveyard | TargetsWithSameController$ True | ImprintCards$ Targeted | Condition$ AllTargetsLegal | StackDescription$ None | SubAbility$ DBSacrifice +SVar:DBSacrifice:DB$ SacrificeAll | ValidCards$ Card.IsRemembered | ConditionDefined$ Remembered | ConditionPresent$ Artifact | ConditionCompare$ GE1 | ConditionCheckSVar$ CheckImprint | ConditionSVarCompare$ GE1 | SubAbility$ DBReturn | StackDescription$ None +SVar:DBReturn:DB$ ChangeZone | Defined$ Imprinted | Origin$ Graveyard | Destination$ Battlefield | SubAbility$ DBCleanup | ConditionDefined$ Remembered | ConditionPresent$ Artifact | ConditionCompare$ GE1 | ConditionCheckSVar$ CheckImprint | ConditionSVarCompare$ GE1 | StackDescription$ None +SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True | ClearImprinted$ True +SVar:CheckImprint:Imprinted$Valid Artifact.sharesControllerWith Remembered +SVar:Picture:http://www.wizards.com/global/images/magic/general/goblin_welder.jpg +SetInfo:ULG|Rare|http://magiccards.info/scans/en/ul/80.jpg +Oracle:{T}: Choose target artifact a player controls and target artifact card in that player's graveyard. If both targets are still legal as this ability resolves, that player simultaneously sacrifices the artifact and returns the artifact card to the battlefield. diff --git a/src/main/java/forge/card/spellability/SpellAbilityCondition.java b/src/main/java/forge/card/spellability/SpellAbilityCondition.java index 17eeb328e66..f176565fd2b 100644 --- a/src/main/java/forge/card/spellability/SpellAbilityCondition.java +++ b/src/main/java/forge/card/spellability/SpellAbilityCondition.java @@ -200,8 +200,7 @@ public class SpellAbilityCondition extends SpellAbilityVariables { } } if (this.isAllTargetsLegal()) { - SpellAbility root = sa.getRootAbility(); - for (Card c : root.getTarget().getTargetCards()) { + for (Card c : sa.getTarget().getTargetCards()) { if (!CardFactoryUtil.isTargetStillValid(sa, c)) { return false; } From 05a0cc2a2a170e5f6207cef1e800b99871bf7434 Mon Sep 17 00:00:00 2001 From: swordshine Date: Mon, 4 Mar 2013 04:34:01 +0000 Subject: [PATCH 10/11] - Some SVar updates --- res/cardsfolder/g/goblin_welder.txt | 2 ++ 1 file changed, 2 insertions(+) diff --git a/res/cardsfolder/g/goblin_welder.txt b/res/cardsfolder/g/goblin_welder.txt index 1d811ad915b..36b558df420 100644 --- a/res/cardsfolder/g/goblin_welder.txt +++ b/res/cardsfolder/g/goblin_welder.txt @@ -8,6 +8,8 @@ SVar:DBSacrifice:DB$ SacrificeAll | ValidCards$ Card.IsRemembered | ConditionDef SVar:DBReturn:DB$ ChangeZone | Defined$ Imprinted | Origin$ Graveyard | Destination$ Battlefield | SubAbility$ DBCleanup | ConditionDefined$ Remembered | ConditionPresent$ Artifact | ConditionCompare$ GE1 | ConditionCheckSVar$ CheckImprint | ConditionSVarCompare$ GE1 | StackDescription$ None SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True | ClearImprinted$ True SVar:CheckImprint:Imprinted$Valid Artifact.sharesControllerWith Remembered +SVar:RemAIDeck:True +SVar:RemRandomDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/goblin_welder.jpg SetInfo:ULG|Rare|http://magiccards.info/scans/en/ul/80.jpg Oracle:{T}: Choose target artifact a player controls and target artifact card in that player's graveyard. If both targets are still legal as this ability resolves, that player simultaneously sacrifices the artifact and returns the artifact card to the battlefield. From c654c5c20aa7e90d9878080c1f79a7015f0e97af Mon Sep 17 00:00:00 2001 From: swordshine Date: Mon, 4 Mar 2013 04:55:07 +0000 Subject: [PATCH 11/11] - Added Delaying Shield by AlexV --- .gitattributes | 1 + res/cardsfolder/d/delaying_shield.txt | 16 ++++++++++++++++ 2 files changed, 17 insertions(+) create mode 100644 res/cardsfolder/d/delaying_shield.txt diff --git a/.gitattributes b/.gitattributes index 581112757df..c19b64bed7e 100644 --- a/.gitattributes +++ b/.gitattributes @@ -2493,6 +2493,7 @@ res/cardsfolder/d/deglamer.txt svneol=native#text/plain res/cardsfolder/d/dehydration.txt svneol=native#text/plain res/cardsfolder/d/deity_of_scars.txt svneol=native#text/plain res/cardsfolder/d/deja_vu.txt svneol=native#text/plain +res/cardsfolder/d/delaying_shield.txt -text res/cardsfolder/d/delifs_cone.txt -text res/cardsfolder/d/delifs_cube.txt -text res/cardsfolder/d/delirium.txt svneol=native#text/plain diff --git a/res/cardsfolder/d/delaying_shield.txt b/res/cardsfolder/d/delaying_shield.txt new file mode 100644 index 00000000000..4eee8db3508 --- /dev/null +++ b/res/cardsfolder/d/delaying_shield.txt @@ -0,0 +1,16 @@ +Name:Delaying Shield +ManaCost:3 W +Types:Enchantment +R:Event$ DamageDone | ActiveZones$ Battlefield | ValidTarget$ You | ReplaceWith$ Counters | Description$ If damage would be dealt to you, put that many delay counters on CARDNAME instead. +SVar:Counters:AB$ PutCounter | Cost$ 0 | CounterType$ DELAY | CounterNum$ NumDamage | References$ NumDamage | Defined$ Self +SVar:NumDamage:ReplaceCount$DamageAmount +T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | IsPresent$ Card.Self+counters_GE1_DELAY | Execute$ RemoveCounters | TriggerZones$ Battlefield | TriggerDescription$ At the beginning of your upkeep, remove all delay counters from CARDNAME. For each delay counter removed this way, you lose 1 life unless you pay 1 W. +SVar:RemoveCounters:AB$ RemoveCounter | Cost$ 0 | CounterType$ DELAY | CounterNum$ All | RememberRemoved$ True | SubAbility$ RepeatOnUpkeep +SVar:RepeatOnUpkeep:DB$ Repeat | MaxRepeat$ NumRemoved | References$ NumRemoved | RepeatSubAbility$ DBLoseLife | SubAbility$ DBCleanup +SVar:DBLoseLife:DB$ LoseLife | LifeAmount$ 1 | Defined$ You | UnlessCost$ 1 W | UnlessPayer$ You +SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True +SVar:NumRemoved:Count$RememberedSize +SVar:RemAIDeck:True +SVar:Picture:http://www.wizards.com/global/images/magic/general/delaying_shield.jpg +SetInfo:ODY|Rare|http://magiccards.info/scans/en/od/17.jpg +Oracle:If damage would be dealt to you, put that many delay counters on Delaying Shield instead.\nAt the beginning of your upkeep, remove all delay counters from Delaying Shield. For each delay counter removed this way, you lose 1 life unless you pay {1}{W}.