From 0cc4a1c471e2fdbc77d758c2c9e1507a8076044c Mon Sep 17 00:00:00 2001 From: Sloth Date: Fri, 2 Mar 2012 20:16:54 +0000 Subject: [PATCH] - Added the optional parameter "TargetsFromDifferentZone" (allows only targets with different controllers). - Added Prey Upon. --- .gitattributes | 1 + res/cardsfolder/p/prey_upon.txt | 11 +++++++++++ .../forge/card/abilityfactory/AbilityFactory.java | 3 +++ src/main/java/forge/card/spellability/Target.java | 15 +++++++++++++++ .../forge/card/spellability/TargetSelection.java | 4 ++++ 5 files changed, 34 insertions(+) create mode 100644 res/cardsfolder/p/prey_upon.txt diff --git a/.gitattributes b/.gitattributes index ddab8ab240f..24784993824 100644 --- a/.gitattributes +++ b/.gitattributes @@ -6659,6 +6659,7 @@ res/cardsfolder/p/presence_of_gond.txt svneol=native#text/plain res/cardsfolder/p/presence_of_the_master.txt svneol=native#text/plain res/cardsfolder/p/presence_of_the_wise.txt svneol=native#text/plain res/cardsfolder/p/pretenders_claim.txt svneol=native#text/plain +res/cardsfolder/p/prey_upon.txt -text res/cardsfolder/p/preys_vengeance.txt -text res/cardsfolder/p/price_of_progress.txt svneol=native#text/plain res/cardsfolder/p/prickly_boggart.txt svneol=native#text/plain diff --git a/res/cardsfolder/p/prey_upon.txt b/res/cardsfolder/p/prey_upon.txt new file mode 100644 index 00000000000..373b67894fa --- /dev/null +++ b/res/cardsfolder/p/prey_upon.txt @@ -0,0 +1,11 @@ +Name:Prey Upon +ManaCost:G +Types:Sorcery +Text:no text +A:SP$ Fight | Cost$ G | ValidTgts$ Creature | TgtPrompt$ Select target creature | TargetsFromDifferentZone$ True | TargetMin$ 2 | TargetMax$ 2 | SpellDescription$ Target creature you control fights target creature you don't control. (Each deals damage equal to its power to the other.) +SVar:RemAIDeck:True +SVar:Rarity:Common +SVar:Picture:http://www.wizards.com/global/images/magic/general/prey_upon.jpg +SetInfo:ISD|Common|http://magiccards.info/scans/en/isd/200.jpg +Oracle:Target creature you control fights target creature you don't control. (Each deals damage equal to its power to the other.) +End \ No newline at end of file diff --git a/src/main/java/forge/card/abilityfactory/AbilityFactory.java b/src/main/java/forge/card/abilityfactory/AbilityFactory.java index ba8b1e22e9c..90f6d829fed 100644 --- a/src/main/java/forge/card/abilityfactory/AbilityFactory.java +++ b/src/main/java/forge/card/abilityfactory/AbilityFactory.java @@ -416,6 +416,9 @@ public class AbilityFactory { if (this.mapParams.containsKey("TargetsFromSingleZone")) { this.abTgt.setSingleZone(true); } + if (this.mapParams.containsKey("TargetsFromDifferentZone")) { + this.abTgt.setDifferentZone(true); + } } this.hasSubAb = this.mapParams.containsKey("SubAbility"); diff --git a/src/main/java/forge/card/spellability/Target.java b/src/main/java/forge/card/spellability/Target.java index da7231faead..234f7bf0308 100644 --- a/src/main/java/forge/card/spellability/Target.java +++ b/src/main/java/forge/card/spellability/Target.java @@ -44,6 +44,7 @@ public class Target { private Card srcCard; private boolean uniqueTargets = false; private boolean singleZone = false; + private boolean differentZone = false; private TargetChoices choice = null; /** @@ -771,4 +772,18 @@ public class Target { } return clone; } + + /** + * @return the differentZone + */ + public boolean isDifferentZone() { + return differentZone; + } + + /** + * @param different the differentZone to set + */ + public void setDifferentZone(boolean different) { + this.differentZone = different; + } } diff --git a/src/main/java/forge/card/spellability/TargetSelection.java b/src/main/java/forge/card/spellability/TargetSelection.java index d4cbd85c794..124a97e6130 100644 --- a/src/main/java/forge/card/spellability/TargetSelection.java +++ b/src/main/java/forge/card/spellability/TargetSelection.java @@ -285,6 +285,10 @@ public class TargetSelection { if (tgt.isSingleZone() && !targeted.isEmpty()) { choices = choices.getController(targeted.get(0).getController()); } + // If all cards must be from different zones + if (tgt.isDifferentZone() && !targeted.isEmpty()) { + choices = choices.getController(targeted.get(0).getController().getOpponent()); + } if (zone.contains(Constant.Zone.Battlefield)) { AllZone.getInputControl().setInput(this.inputTargetSpecific(choices, true, mandatory, objects));