From 3011758bd9154a00de934fc1581c29382b21dd68 Mon Sep 17 00:00:00 2001 From: moomarc Date: Thu, 6 Dec 2012 11:06:30 +0000 Subject: [PATCH] - Added Aura Graft --- .gitattributes | 1 + res/cardsfolder/a/aura_graft.txt | 13 +++++++++ res/cardsfolder/a/auriok_survivors.txt | 2 +- res/cardsfolder/r/retether.txt | 2 +- src/main/java/forge/Card.java | 39 ++++++++++++++++++++++---- 5 files changed, 50 insertions(+), 7 deletions(-) create mode 100644 res/cardsfolder/a/aura_graft.txt diff --git a/.gitattributes b/.gitattributes index 4ef09bb6107..0f3b1f9420f 100644 --- a/.gitattributes +++ b/.gitattributes @@ -559,6 +559,7 @@ res/cardsfolder/a/aura_finesse.txt -text res/cardsfolder/a/aura_flux.txt svneol=native#text/plain res/cardsfolder/a/aura_fracture.txt svneol=native#text/plain res/cardsfolder/a/aura_gnarlid.txt svneol=native#text/plain +res/cardsfolder/a/aura_graft.txt -text res/cardsfolder/a/aura_mutation.txt svneol=native#text/plain res/cardsfolder/a/aura_of_dominion.txt svneol=native#text/plain res/cardsfolder/a/aura_of_silence.txt svneol=native#text/plain diff --git a/res/cardsfolder/a/aura_graft.txt b/res/cardsfolder/a/aura_graft.txt new file mode 100644 index 00000000000..0c5d5f41a7e --- /dev/null +++ b/res/cardsfolder/a/aura_graft.txt @@ -0,0 +1,13 @@ +Name:Aura Graft +ManaCost:1 U +Types:Instant +Text:no text +A:SP$ GainControl | Cost$ 1 U | ValidTgts$ Aura.AttachedTo Permanent | TgtPrompt$ Select target Aura attached to a permanent | SubAbility$ ChooseNewHost | SpellDescription$ Gain control of target Aura that's attached to a permanent. Attach it to another permanent it can enchant. +SVar:ChooseNewHost:DB$ ChooseCard | Defined$ You | Amount$ 1 | Choices$ Permanent.CanBeEnchantedByTargeted+NotEnchantedByTargeted | ChoiceZone$ Battlefield | SubAbility$ ReEnchant | RememberChosen$ True | AILogic$ AtLeast1 | +SVar:ReEnchant:DB$ Attach | Object$ ParentTarget | Defined$ Remembered +SVar:Rarity:Uncommon +SVar:Picture:http://www.wizards.com/global/images/magic/general/aura_graft.jpg +SetInfo:ODY|Uncommon|http://magiccards.info/scans/en/od/62.jpg +SetInfo:10E|Uncommon|http://magiccards.info/scans/en/10e/67.jpg +Oracle:Gain control of target Aura that's attached to a permanent. Attach it to another permanent it can enchant. +End \ No newline at end of file diff --git a/res/cardsfolder/a/auriok_survivors.txt b/res/cardsfolder/a/auriok_survivors.txt index 5c759d9a313..ad9dca9848a 100644 --- a/res/cardsfolder/a/auriok_survivors.txt +++ b/res/cardsfolder/a/auriok_survivors.txt @@ -4,7 +4,7 @@ Types:Creature Human Soldier Text:no text PT:4/6 T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigChangeZone | OptionalDecider$ You | TriggerDescription$ When CARDNAME enters the battlefield, you may return target Equipment card from your graveyard to the battlefield. If you do, you may attach it to CARDNAME. -SVar:TrigChangeZone:AB$ChangeZone | Cost$ 0 | Origin$ Graveyard | Destination$ Battlefield | ValidTgts$ Equipment.YouCtrl | SubAbility$ DBAttach +SVar:TrigChangeZone:AB$ ChangeZone | Cost$ 0 | Origin$ Graveyard | Destination$ Battlefield | ValidTgts$ Equipment.YouCtrl | SubAbility$ DBAttach SVar:DBAttach:DB$ Attach | Object$ Targeted | Defined$ Self | Optional$ True SVar:Rarity:Uncommon SVar:Picture:http://www.wizards.com/global/images/magic/general/auriok_survivors.jpg diff --git a/res/cardsfolder/r/retether.txt b/res/cardsfolder/r/retether.txt index b98057d0afb..262ebadcec0 100644 --- a/res/cardsfolder/r/retether.txt +++ b/res/cardsfolder/r/retether.txt @@ -3,7 +3,7 @@ ManaCost:3 W Types:Sorcery Text:no text A:SP$ RepeatEach | Cost$ 3 W | RepeatCards$ Aura.YouOwn | Zone$ Graveyard | RepeatSubAbility$ DBAttach | SpellDescription$ Return each Aura card from your graveyard to the battlefield. Only creatures can be enchanted this way. (Aura cards that can't enchant a creature on the battlefield remain in your graveyard.) -SVar:DBAttach:DB$ ChangeZone | Origin$ Graveyard | Destination$ Battlefield | Defined$ Remembered | AttachedTo$ Creature.CanBeEnchantedBySource +SVar:DBAttach:DB$ ChangeZone | Origin$ Graveyard | Destination$ Battlefield | Defined$ Remembered | AttachedTo$ Creature.CanBeEnchantedByTargeted SVar:RemRandomDeck:True DeckNeeds:Type$Aura SVar:Rarity:Rare diff --git a/src/main/java/forge/Card.java b/src/main/java/forge/Card.java index cf4d63a4fdf..6649d470d55 100644 --- a/src/main/java/forge/Card.java +++ b/src/main/java/forge/Card.java @@ -6438,8 +6438,22 @@ public class Card extends GameEntity implements Comparable { return false; } } else if (property.startsWith("NotEnchantedBy")) { - if (this.getEnchantedBy().contains(source)) { - return false; + final String rest = property.split("NotEnchantedBy")[1]; + if (rest.equals("Targeted")) { + for (final SpellAbility sa : source.getCharacteristics().getSpellAbility()) { + final SpellAbility saTargeting = sa.getSATargetingCard(); + if (saTargeting != null) { + for (final Card c : saTargeting.getTarget().getTargetCards()) { + if (this.getEnchantedBy().contains(c)) { + return false; + } + } + } + } + } else { + if (this.getEnchantedBy().contains(source)) { + return false; + } } } else if (property.startsWith("Enchanted")) { if (!source.equals(this.enchanting)) { @@ -6449,9 +6463,24 @@ public class Card extends GameEntity implements Comparable { if (!source.canBeEnchantedBy(this)) { return false; } - } else if (property.startsWith("CanBeEnchantedBySource")) { - if (!this.canBeEnchantedBy(source)) { - return false; + } else if (property.startsWith("CanBeEnchantedBy")) { + Card aura = source; + final String rest = property.split("CanBeEnchantedBy")[1]; + if (rest.equals("Targeted")) { + for (final SpellAbility sa : source.getCharacteristics().getSpellAbility()) { + final SpellAbility saTargeting = sa.getSATargetingCard(); + if (saTargeting != null) { + for (final Card c : saTargeting.getTarget().getTargetCards()) { + if (!this.canBeEnchantedBy(c)) { + return false; + } + } + } + } + } else { + if (!this.canBeEnchantedBy(source)) { + return false; + } } } else if (property.startsWith("EquippedBy")) { if (!this.equippedBy.contains(source)) {