CardProperty: make sharesCreatureTypeWith use DefinedCard

This commit is contained in:
Hans Mackowiak
2021-02-25 17:08:49 +01:00
parent 96532309ce
commit 8ccbffce48
18 changed files with 51 additions and 103 deletions

View File

@@ -140,6 +140,7 @@ public class CardFactory {
c.clearControllers(); c.clearControllers();
c.setOwner(controller); c.setOwner(controller);
c.setCopiedSpell(true); c.setCopiedSpell(true);
c.setCopiedPermanent(original);
c.setXManaCostPaidByColor(original.getXManaCostPaidByColor()); c.setXManaCostPaidByColor(original.getXManaCostPaidByColor());
c.setKickerMagnitude(original.getKickerMagnitude()); c.setKickerMagnitude(original.getKickerMagnitude());

View File

@@ -162,6 +162,15 @@ public final class CardPredicates {
}; };
} }
public static Predicate<Card> sharesCardTypeWith(final Card card) {
return new Predicate<Card>() {
@Override
public boolean apply(final Card c) {
return c.sharesCardTypeWith(card);
}
};
}
public static Predicate<Card> sharesCreatureTypeWith(final Card card) { public static Predicate<Card> sharesCreatureTypeWith(final Card card) {
return new Predicate<Card>() { return new Predicate<Card>() {
@Override @Override

View File

@@ -789,12 +789,6 @@ public class CardProperty {
} else { } else {
final String restriction = property.split("sharesCreatureTypeWith ")[1]; final String restriction = property.split("sharesCreatureTypeWith ")[1];
switch (restriction) { switch (restriction) {
case "TopCardOfLibrary":
final CardCollectionView cards = sourceController.getCardsIn(ZoneType.Library);
if (cards.isEmpty() || !card.sharesCreatureTypeWith(cards.get(0))) {
return false;
}
break;
case "Commander": case "Commander":
final List<Card> cmdrs = sourceController.getCommanders(); final List<Card> cmdrs = sourceController.getCommanders();
for (Card cmdr : cmdrs) { for (Card cmdr : cmdrs) {
@@ -803,35 +797,6 @@ public class CardProperty {
} }
} }
return false; return false;
case "Enchanted":
for (final SpellAbility sa : source.getCurrentState().getNonManaAbilities()) {
final SpellAbility root = sa.getRootAbility();
Card c = source.getEnchantingCard();
if ((c == null) && (root != null)
&& (root.getPaidList("Sacrificed") != null)
&& !root.getPaidList("Sacrificed").isEmpty()) {
c = root.getPaidList("Sacrificed").get(0).getEnchantingCard();
if (!card.sharesCreatureTypeWith(c)) {
return false;
}
}
}
break;
case "Equipped":
if (source.isEquipping() && card.sharesCreatureTypeWith(source.getEquipping())) {
return true;
}
return false;
case "Remembered":
for (final Object rem : source.getRemembered()) {
if (rem instanceof Card) {
final Card c = (Card) rem;
if (card.sharesCreatureTypeWith(c)) {
return true;
}
}
}
return false;
case "AllRemembered": case "AllRemembered":
for (final Object rem : source.getRemembered()) { for (final Object rem : source.getRemembered()) {
if (rem instanceof Card) { if (rem instanceof Card) {
@@ -843,13 +808,7 @@ public class CardProperty {
} }
break; break;
default: default:
boolean shares = false; if (!Iterables.any(AbilityUtils.getDefinedCards(source, restriction, spellAbility), CardPredicates.sharesCreatureTypeWith(card))) {
for (final Card c : sourceController.getCardsIn(ZoneType.Battlefield)) {
if (c.isValid(restriction, sourceController, source, spellAbility) && card.sharesCreatureTypeWith(c)) {
shares = true;
}
}
if (!shares) {
return false; return false;
} }
break; break;
@@ -891,15 +850,9 @@ public class CardProperty {
} }
return false; return false;
default: default:
final CardCollection cards1 = AbilityUtils.getDefinedCards(card, restriction, spellAbility); if (!Iterables.any(AbilityUtils.getDefinedCards(source, restriction, spellAbility), CardPredicates.sharesCardTypeWith(card))) {
if (cards1.isEmpty()) {
return false; return false;
} }
for (Card c : cards1) {
if (!card.sharesCardTypeWith(c)) {
return false;
}
}
} }
} }
} else if (property.equals("sharesPermanentTypeWith")) { } else if (property.equals("sharesPermanentTypeWith")) {
@@ -935,9 +888,6 @@ public class CardProperty {
return !CardLists.filter(game.getCardsIn(ZoneType.Battlefield), CardPredicates.sharesNameWith(card)).isEmpty(); return !CardLists.filter(game.getCardsIn(ZoneType.Battlefield), CardPredicates.sharesNameWith(card)).isEmpty();
} else if (restriction.equals("ThisTurnCast")) { } else if (restriction.equals("ThisTurnCast")) {
return !CardLists.filter(CardUtil.getThisTurnCast("Card", source), CardPredicates.sharesNameWith(card)).isEmpty(); return !CardLists.filter(CardUtil.getThisTurnCast("Card", source), CardPredicates.sharesNameWith(card)).isEmpty();
} else if (restriction.startsWith("Remembered") || restriction.startsWith("Imprinted")) {
CardCollection list = AbilityUtils.getDefinedCards(source, restriction, spellAbility);
return !CardLists.filter(list, CardPredicates.sharesNameWith(card)).isEmpty();
} else if (restriction.equals("MovedToGrave")) { } else if (restriction.equals("MovedToGrave")) {
for (final SpellAbility sa : source.getCurrentState().getNonManaAbilities()) { for (final SpellAbility sa : source.getCurrentState().getNonManaAbilities()) {
final SpellAbility root = sa.getRootAbility(); final SpellAbility root = sa.getRootAbility();
@@ -969,6 +919,10 @@ public class CardProperty {
} }
} }
return false; return false;
} else {
if (!Iterables.any(AbilityUtils.getDefinedCards(source, restriction, spellAbility), CardPredicates.sharesNameWith(card))) {
return false;
}
} }
} }
} else if (property.startsWith("doesNotShareNameWith")) { } else if (property.startsWith("doesNotShareNameWith")) {
@@ -1859,6 +1813,11 @@ public class CardProperty {
if (card.equals(obj)) { if (card.equals(obj)) {
return false; return false;
} }
} else if (property.startsWith("NotDefined")) {
final String key = property.substring("NotDefined".length());
if (Iterables.contains(AbilityUtils.getDefinedCards(source, key, spellAbility), card)) {
return false;
}
} else if (property.equals("CanPayManaCost")) { } else if (property.equals("CanPayManaCost")) {
final class CheckCanPayManaCost { final class CheckCanPayManaCost {
private List<Mana> manaPaid; private List<Mana> manaPaid;

View File

@@ -4,6 +4,5 @@ Types:Enchantment Aura
K:Enchant creature K:Enchant creature
A:SP$ Attach | Cost$ 3 U | ValidTgts$ Creature | AILogic$ Pump A:SP$ Attach | Cost$ 3 U | ValidTgts$ Creature | AILogic$ Pump
T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | TriggerZones$ Battlefield | OptionalDecider$ You| Execute$ TrigDig | TriggerDescription$ At the beginning of your upkeep, you may look at the top five cards of your library. If you do, you may put a creature card that shares a creature type with enchanted creature from among them onto the battlefield, then you put the rest of those cards on the bottom of your library in any order. T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | TriggerZones$ Battlefield | OptionalDecider$ You| Execute$ TrigDig | TriggerDescription$ At the beginning of your upkeep, you may look at the top five cards of your library. If you do, you may put a creature card that shares a creature type with enchanted creature from among them onto the battlefield, then you put the rest of those cards on the bottom of your library in any order.
SVar:TrigDig:DB$ Dig | DigNum$ 5 | ChangeNum$ 1 | ChangeValid$ Creature.sharesCreatureTypeWith Card.EnchantedBy | Optional$ True | DestinationZone$ Battlefield SVar:TrigDig:DB$ Dig | DigNum$ 5 | ChangeNum$ 1 | ChangeValid$ Creature.sharesCreatureTypeWith Enchanted | Optional$ True | DestinationZone$ Battlefield
SVar:Picture:http://www.wizards.com/global/images/magic/general/call_to_the_kindred.jpg
Oracle:Enchant creature\nAt the beginning of your upkeep, you may look at the top five cards of your library. If you do, you may put a creature card that shares a creature type with enchanted creature from among them onto the battlefield, then you put the rest of those cards on the bottom of your library in any order. Oracle:Enchant creature\nAt the beginning of your upkeep, you may look at the top five cards of your library. If you do, you may put a creature card that shares a creature type with enchanted creature from among them onto the battlefield, then you put the rest of those cards on the bottom of your library in any order.

View File

@@ -4,7 +4,7 @@ Types:Enchantment Aura
K:Enchant creature K:Enchant creature
A:SP$ Attach | Cost$ 1 U | ValidTgts$ Creature | AILogic$ Pump A:SP$ Attach | Cost$ 1 U | ValidTgts$ Creature | AILogic$ Pump
S:Mode$ Continuous | Affected$ Creature.EnchantedBy | AddKeyword$ Flying | Description$ Enchanted creature has flying. S:Mode$ Continuous | Affected$ Creature.EnchantedBy | AddKeyword$ Flying | Description$ Enchanted creature has flying.
A:AB$ PumpAll | Cost$ Sac<1/CARDNAME> | ValidCards$ Creature.sharesCreatureTypeWith Enchanted | KW$ Flying | SpellDescription$ Enchanted creature and other creatures that share a creature type with it gain flying until end of turn. A:AB$ Pump | Cost$ Sac<1/CARDNAME> | Defined$ AttachedBy Sacrificed | KW$ Flying | SubAbility$ DBPumpAll | SpellDescription$ Enchanted creature and other creatures that share a creature type with it gain flying until end of turn.
SVar:DBPumpAll:DB$ PumpAll | ValidCards$ Creature.NotDefinedAttachedBy Sacrificed+sharesCreatureTypeWith AttachedBy Sacrificed | KW$ Flying
AI:RemoveDeck:All AI:RemoveDeck:All
SVar:Picture:http://www.wizards.com/global/images/magic/general/crown_of_ascension.jpg
Oracle:Enchant creature\nEnchanted creature has flying.\nSacrifice Crown of Ascension: Enchanted creature and other creatures that share a creature type with it gain flying until end of turn. Oracle:Enchant creature\nEnchanted creature has flying.\nSacrifice Crown of Ascension: Enchanted creature and other creatures that share a creature type with it gain flying until end of turn.

View File

@@ -4,7 +4,7 @@ Types:Enchantment Aura
K:Enchant creature K:Enchant creature
A:SP$ Attach | Cost$ 1 W | ValidTgts$ Creature | AILogic$ Pump A:SP$ Attach | Cost$ 1 W | ValidTgts$ Creature | AILogic$ Pump
S:Mode$ Continuous | Affected$ Creature.EnchantedBy | AddKeyword$ Protection from black & Protection from red | Description$ Enchanted creature has protection from black and from red. S:Mode$ Continuous | Affected$ Creature.EnchantedBy | AddKeyword$ Protection from black & Protection from red | Description$ Enchanted creature has protection from black and from red.
A:AB$ PumpAll | Cost$ Sac<1/CARDNAME> | ValidCards$ Creature.sharesCreatureTypeWith Enchanted | KW$ Protection from black & Protection from red | SpellDescription$ Enchanted creature and other creatures that share a creature type with it gain protection from black and from red until end of turn. A:AB$ Pump | Cost$ Sac<1/CARDNAME> | Defined$ AttachedBy Sacrificed | KW$ Protection from black & Protection from red | SubAbility$ DBPumpAll | SpellDescription$ Enchanted creature and other creatures that share a creature type with it gain protection from black and from red until end of turn.
SVar:DBPumpAll:DB$ PumpAll | ValidCards$ Creature.NotDefinedAttachedBy Sacrificed+sharesCreatureTypeWith AttachedBy Sacrificed | KW$ Protection from black & Protection from red
AI:RemoveDeck:All AI:RemoveDeck:All
SVar:Picture:http://www.wizards.com/global/images/magic/general/crown_of_awe.jpg
Oracle:Enchant creature\nEnchanted creature has protection from black and from red.\nSacrifice Crown of Awe: Enchanted creature and other creatures that share a creature type with it gain protection from black and from red until end of turn. Oracle:Enchant creature\nEnchanted creature has protection from black and from red.\nSacrifice Crown of Awe: Enchanted creature and other creatures that share a creature type with it gain protection from black and from red until end of turn.

View File

@@ -4,7 +4,7 @@ Types:Enchantment Aura
K:Enchant creature K:Enchant creature
A:SP$ Attach | Cost$ 1 R | ValidTgts$ Creature | AILogic$ Pump A:SP$ Attach | Cost$ 1 R | ValidTgts$ Creature | AILogic$ Pump
S:Mode$ Continuous | Affected$ Creature.EnchantedBy | AddPower$ 1 | AddKeyword$ First Strike | Description$ Enchanted creature gets +1/+0 and has first strike. S:Mode$ Continuous | Affected$ Creature.EnchantedBy | AddPower$ 1 | AddKeyword$ First Strike | Description$ Enchanted creature gets +1/+0 and has first strike.
A:AB$ PumpAll | Cost$ Sac<1/CARDNAME> | ValidCards$ Creature.sharesCreatureTypeWith Enchanted | NumAtt$ 1 | KW$ First Strike | SpellDescription$ Enchanted creature and other creatures that share a creature type with it get +1/+0 and gain first strike until end of turn. A:AB$ Pump | Cost$ Sac<1/CARDNAME> | Defined$ AttachedBy Sacrificed | NumAtt$ 1 | KW$ First Strike | SubAbility$ DBPumpAll | SpellDescription$ Enchanted creature and other creatures that share a creature type with it get +1/+0 and gain first strike until end of turn.
SVar:DBPumpAll:DB$ PumpAll | ValidCards$ Creature.NotDefinedAttachedBy Sacrificed+sharesCreatureTypeWith AttachedBy Sacrificed | NumAtt$ 1 | KW$ First Strike
AI:RemoveDeck:All AI:RemoveDeck:All
SVar:Picture:http://www.wizards.com/global/images/magic/general/crown_of_fury.jpg
Oracle:Enchant creature\nEnchanted creature gets +1/+0 and has first strike.\nSacrifice Crown of Fury: Enchanted creature and other creatures that share a creature type with it get +1/+0 and gain first strike until end of turn. Oracle:Enchant creature\nEnchanted creature gets +1/+0 and has first strike.\nSacrifice Crown of Fury: Enchanted creature and other creatures that share a creature type with it get +1/+0 and gain first strike until end of turn.

View File

@@ -4,7 +4,7 @@ Types:Enchantment Aura
K:Enchant creature K:Enchant creature
A:SP$ Attach | Cost$ 1 B | ValidTgts$ Creature | AILogic$ Pump A:SP$ Attach | Cost$ 1 B | ValidTgts$ Creature | AILogic$ Pump
S:Mode$ Continuous | Affected$ Creature.EnchantedBy | AddPower$ 2 | AddToughness$ -1 | Description$ Enchanted creature gets +2/-1. S:Mode$ Continuous | Affected$ Creature.EnchantedBy | AddPower$ 2 | AddToughness$ -1 | Description$ Enchanted creature gets +2/-1.
A:AB$ PumpAll | Cost$ Sac<1/CARDNAME> | ValidCards$ Creature.sharesCreatureTypeWith Enchanted | NumAtt$ 2 | NumDef$ -1 | SpellDescription$ Enchanted creature and other creatures that share a creature type with it get +2/-1 until end of turn. A:AB$ Pump | Cost$ Sac<1/CARDNAME> | Defined$ AttachedBy Sacrificed | NumAtt$ 2 | NumDef$ -1 | SubAbility$ DBPumpAll | SpellDescription$ Enchanted creature and other creatures that share a creature type with it get +2/-1 until end of turn.
SVar:DBPumpAll:DB$ PumpAll | ValidCards$ Creature.NotDefinedAttachedBy Sacrificed+sharesCreatureTypeWith AttachedBy Sacrificed | NumAtt$ 2 | NumDef$ -1
AI:RemoveDeck:All AI:RemoveDeck:All
SVar:Picture:http://www.wizards.com/global/images/magic/general/crown_of_suspicion.jpg
Oracle:Enchant creature\nEnchanted creature gets +2/-1.\nSacrifice Crown of Suspicion: Enchanted creature and other creatures that share a creature type with it get +2/-1 until end of turn. Oracle:Enchant creature\nEnchanted creature gets +2/-1.\nSacrifice Crown of Suspicion: Enchanted creature and other creatures that share a creature type with it get +2/-1 until end of turn.

View File

@@ -4,7 +4,7 @@ Types:Enchantment Aura
K:Enchant creature K:Enchant creature
A:SP$ Attach | Cost$ 1 G | ValidTgts$ Creature | AILogic$ Pump A:SP$ Attach | Cost$ 1 G | ValidTgts$ Creature | AILogic$ Pump
S:Mode$ Continuous | Affected$ Creature.EnchantedBy | AddPower$ 1 | AddToughness$ 1 | Description$ Enchanted creature gets +1/+1. S:Mode$ Continuous | Affected$ Creature.EnchantedBy | AddPower$ 1 | AddToughness$ 1 | Description$ Enchanted creature gets +1/+1.
A:AB$ PumpAll | Cost$ Sac<1/CARDNAME> | ValidCards$ Creature.sharesCreatureTypeWith Enchanted | NumAtt$ 1 | NumDef$ 1 | SpellDescription$ Enchanted creature and other creatures that share a creature type with it get +1/+1 until end of turn. A:AB$ Pump | Cost$ Sac<1/CARDNAME> | Defined$ AttachedBy Sacrificed | NumAtt$ 1 | NumDef$ 1 | SubAbility$ DBPumpAll | SpellDescription$ Enchanted creature and other creatures that share a creature type with it get +1/+1 until end of turn.
SVar:DBPumpAll:DB$ PumpAll | ValidCards$ Creature.Other+sharesCreatureTypeWith AttachedBy Sacrificed | NumAtt$ 1 | NumDef$ 1
AI:RemoveDeck:All AI:RemoveDeck:All
SVar:Picture:http://www.wizards.com/global/images/magic/general/crown_of_vigor.jpg
Oracle:Enchant creature\nEnchanted creature gets +1/+1.\nSacrifice Crown of Vigor: Enchanted creature and other creatures that share a creature type with it get +1/+1 until end of turn. Oracle:Enchant creature\nEnchanted creature gets +1/+1.\nSacrifice Crown of Vigor: Enchanted creature and other creatures that share a creature type with it get +1/+1 until end of turn.

View File

@@ -1,11 +1,9 @@
Name:Descendants' Path Name:Descendants' Path
ManaCost:2 G ManaCost:2 G
Types:Enchantment Types:Enchantment
T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigDig | TriggerDescription$ At the beginning of your upkeep, reveal the top card of your library. If it's a creature card that shares a creature type with a creature you control, you may cast that card without paying its mana cost. Otherwise, put that card on the bottom of your library. T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | TriggerZones$ Battlefield | Execute$ DBReveal | TriggerDescription$ At the beginning of your upkeep, reveal the top card of your library. If it's a creature card that shares a creature type with a creature you control, you may cast that card without paying its mana cost. Otherwise, put that card on the bottom of your library.
SVar:TrigDig:DB$ Dig | DigNum$ 1 | Reveal$ True | RememberRevealed$ True | ChangeNum$ All | ChangeValid$ Creature.sharesCreatureTypeWith Creature.YouCtrl | DestinationZone$ Library | LibraryPosition$ 0 | LibraryPosition2$ -1 | SubAbility$ DBPlayIT SVar:DBReveal:DB$ PeekAndReveal | PeekAmount$ 1 | RevealValid$ Card | RememberRevealed$ True | SubAbility$ DBMayCast
SVar:DBPlayIT:DB$ Play | Defined$ Remembered | Controller$ You | WithoutManaCost$ True | Optional$ True | RememberPlayed$ True | ConditionCheckSVar$ MatchType | ConditionSVarCompare$ EQ1 | SubAbility$ DBCleanup SVar:DBMayCast:DB$ Play | Defined$ Remembered | ForgetRemembered$ True | WithoutManaCost$ True | Optional$ True | ConditionDefined$ Remembered | ConditionPresent$ Creature.sharesCreatureTypeWith Valid Creature.YouCtrl | SubAbility$ DBChangeZone
SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True SVar:DBChangeZone:DB$ ChangeZone | Defined$ Remembered | Origin$ Library | DestinationZone$ Library | LibraryPosition$ -1 | NoShuffle$ True | ForgetChanged$ True
SVar:MatchType:Remembered$Valid Creature.sharesCreatureTypeWith Card
AI:RemoveDeck:Random AI:RemoveDeck:Random
SVar:Picture:http://www.wizards.com/global/images/magic/general/descendants_path.jpg
Oracle:At the beginning of your upkeep, reveal the top card of your library. If it's a creature card that shares a creature type with a creature you control, you may cast that card without paying its mana cost. Otherwise, put that card on the bottom of your library. Oracle:At the beginning of your upkeep, reveal the top card of your library. If it's a creature card that shares a creature type with a creature you control, you may cast that card without paying its mana cost. Otherwise, put that card on the bottom of your library.

View File

@@ -1,8 +1,6 @@
Name:Endemic Plague Name:Endemic Plague
ManaCost:3 B ManaCost:3 B
Types:Sorcery Types:Sorcery
A:SP$ DestroyAll | Cost$ 3 B Sac<1/Creature> | RememberCostCards$ True | ValidCards$ Creature.sharesCreatureTypeWith Remembered | SubAbility$ DBCleanup | SpellDescription$ Destroy all creatures that share a creature type with the sacrificed creature. They can't be regenerated. A:SP$ DestroyAll | Cost$ 3 B Sac<1/Creature> | ValidCards$ Creature.sharesCreatureTypeWith Sacrificed | SpellDescription$ Destroy all creatures that share a creature type with the sacrificed creature. They can't be regenerated.
SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True
AI:RemoveDeck:All AI:RemoveDeck:All
SVar:Picture:http://www.wizards.com/global/images/magic/general/endemic_plague.jpg
Oracle:As an additional cost to cast Endemic Plague, sacrifice a creature.\nDestroy all creatures that share a creature type with the sacrificed creature. They can't be regenerated. Oracle:As an additional cost to cast Endemic Plague, sacrifice a creature.\nDestroy all creatures that share a creature type with the sacrificed creature. They can't be regenerated.

View File

@@ -1,14 +1,8 @@
Name:Heirloom Blade Name:Heirloom Blade
ManaCost:3 ManaCost:3
Types:Artifact Equipment Types:Artifact Equipment
T:Mode$ Attached | ValidSource$ Card.Self | ValidTarget$ Creature | TriggerZones$ Battlefield | Execute$ TrigRemember | Static$ True
SVar:TrigRemember:DB$ Cleanup | ClearRemembered$ True | SubAbility$ RememberNew
SVar:RememberNew:DB$ Pump | RememberObjects$ Equipped
S:Mode$ Continuous | Affected$ Creature.EquippedBy | AddPower$ 3 | AddToughness$ 1 | Description$ Equipped creature gets +3/+1. S:Mode$ Continuous | Affected$ Creature.EquippedBy | AddPower$ 3 | AddToughness$ 1 | Description$ Equipped creature gets +3/+1.
T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Graveyard | ValidCard$ Card.AttachedBy | Execute$ TrigDigUntil | OptionalDecider$ You | TriggerDescription$ Whenever equipped creature dies, you may reveal cards from the top of your library until you reveal a creature card that shares a creature type with it. Put that card into your hand and the rest on the bottom of your library in a random order. T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Graveyard | ValidCard$ Card.AttachedBy | Execute$ TrigDigUntil | OptionalDecider$ You | TriggerDescription$ Whenever equipped creature dies, you may reveal cards from the top of your library until you reveal a creature card that shares a creature type with it. Put that card into your hand and the rest on the bottom of your library in a random order.
SVar:TrigDigUntil:DB$DigUntil | Valid$ Creature.sharesCreatureTypeWith Remembered | ValidDescription$ creature that shares a creature type | FoundDestination$ Hand | RevealedDestination$ Library | RevealedLibraryPosition$ -1 | RevealRandomOrder$ True | SubAbility$ DBCleanup SVar:TrigDigUntil:DB$ DigUntil | Valid$ Creature.sharesCreatureTypeWith TriggeredCardLKICopy | ValidDescription$ creature that shares a creature type | FoundDestination$ Hand | RevealedDestination$ Library | RevealedLibraryPosition$ -1 | RevealRandomOrder$ True
T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Any | ValidCard$ Card.Self | Execute$ DBCleanup | Static$ True
SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True
K:Equip:1 K:Equip:1
SVar:Picture:http://www.wizards.com/global/images/magic/general/heirloom_blade.jpg Oracle:Equipped creature gets +3/+1.\nWhenever equipped creature dies, you may reveal cards from the top of your library until you reveal a creature card that shares a creature type with it. Put that card into your hand and the rest on the bottom of your library in a random order.\nEquip {1}
Oracle:Equipped creature gets +3/+1.\nWhenever equipped creature dies, you may reveal cards from the top of your library until you reveal a creature card that shares a creature type with it. Put that card into your hand and the rest on the bottom of your library in a random order.\nEquip {1}

View File

@@ -7,5 +7,4 @@ S:Mode$ Continuous | Affected$ Creature.SharesColorWith Equipped | AddPower$ 1 |
S:Mode$ Continuous | Affected$ Creature.sharesCreatureTypeWith Equipped | AddPower$ 1 | AddToughness$ 1 | Description$ Creatures that share a creature type with equipped creature get +1/+1. S:Mode$ Continuous | Affected$ Creature.sharesCreatureTypeWith Equipped | AddPower$ 1 | AddToughness$ 1 | Description$ Creatures that share a creature type with equipped creature get +1/+1.
AI:RemoveDeck:Random AI:RemoveDeck:Random
DeckHints:Type$Legendary DeckHints:Type$Legendary
SVar:Picture:http://www.wizards.com/global/images/magic/general/kondas_banner.jpg
Oracle:Konda's Banner can be attached only to a legendary creature.\nCreatures that share a color with equipped creature get +1/+1.\nCreatures that share a creature type with equipped creature get +1/+1.\nEquip {2} Oracle:Konda's Banner can be attached only to a legendary creature.\nCreatures that share a color with equipped creature get +1/+1.\nCreatures that share a creature type with equipped creature get +1/+1.\nEquip {2}

View File

@@ -1,11 +1,8 @@
Name:Mana Echoes Name:Mana Echoes
ManaCost:2 R R ManaCost:2 R R
Types:Enchantment Types:Enchantment
T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Creature | TriggerZones$ Battlefield | TriggerController$ You | OptionalDecider$ You | Execute$ TrigPump | TriggerDescription$ Whenever a creature enters the battlefield, you may add an amount of {C} equal to the number of creatures you control that share a creature type with it. T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Creature | TriggerZones$ Battlefield | TriggerController$ You | OptionalDecider$ You | Execute$ DBMana | TriggerDescription$ Whenever a creature enters the battlefield, you may add an amount of {C} equal to the number of creatures you control that share a creature type with it.
SVar:TrigPump:DB$ Pump | Defined$ TriggeredCard | RememberObjects$ TriggeredCard | AILogic$ MimicVat | SubAbility$ DBMana SVar:DBMana:DB$ Mana | Produced$ C | Defined$ You | Amount$ X | References$ X
SVar:DBMana:DB$ Mana | Produced$ C | Defined$ You | Amount$ X | References$ X | SubAbility$ DBCleanup SVar:X:Count$Valid Creature.YouCtrl+sharesCreatureTypeWith TriggeredCard
SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True
SVar:X:Count$Valid Creature.sharesCreatureTypeWith Remembered+YouCtrl
AI:RemoveDeck:Random AI:RemoveDeck:Random
SVar:Picture:http://www.wizards.com/global/images/magic/general/mana_echoes.jpg Oracle:Whenever a creature enters the battlefield, you may add an amount of {C} equal to the number of creatures you control that share a creature type with it.
Oracle:Whenever a creature enters the battlefield, you may add an amount of {C} equal to the number of creatures you control that share a creature type with it.

View File

@@ -1,9 +1,8 @@
Name:Pyre of Heroes Name:Pyre of Heroes
ManaCost:2 ManaCost:2
Types:Artifact Types:Artifact
A:AB$ ChangeZone | Cost$ 2 T Sac<1/Creature> | RememberCostCards$ True | Origin$ Library | Destination$ Battlefield | ChangeType$ Creature.cmcEQX+sharesCreatureTypeWith Remembered | References$ X | ChangeNum$ 1 | SorcerySpeed$ True | AILogic$ SacAndUpgrade | StackDescription$ Search your library for a creature card that shares a creature type with the sacrificed creature and has converted mana cost equal to 1 plus that creature's converted mana cost. Put that card onto the battlefield, then shuffle your library. | SubAbility$ DBCleanup | SpellDescription$ Search your library for a creature card that shares a creature type with the sacrificed creature and has converted mana cost equal to 1 plus that creature's converted mana cost. Put that card onto the battlefield, then shuffle your library. Activate this ability only any time you could cast a sorcery. A:AB$ ChangeZone | Cost$ 2 T Sac<1/Creature> | Origin$ Library | Destination$ Battlefield | ChangeType$ Creature.cmcEQX+sharesCreatureTypeWith Sacrificed | References$ X | ChangeNum$ 1 | SorcerySpeed$ True | AILogic$ SacAndUpgrade | StackDescription$ SpellDescription | SpellDescription$ Search your library for a creature card that shares a creature type with the sacrificed creature and has converted mana cost equal to 1 plus that creature's converted mana cost. Put that card onto the battlefield, then shuffle your library. Activate this ability only any time you could cast a sorcery.
SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True SVar:X:Sacrificed$CardManaCost/Plus.1
SVar:X:Remembered$CardManaCost/Plus.1
SVar:AIPreference:SacCost$Creature SVar:AIPreference:SacCost$Creature
DeckHas:Ability$Sacrifice DeckHas:Ability$Sacrifice
DeckNeeds:Type$Creature DeckNeeds:Type$Creature

View File

@@ -4,12 +4,10 @@ Types:Enchantment Aura
K:Enchant creature K:Enchant creature
A:SP$ Attach | Cost$ 3 G | ValidTgts$ Creature | AILogic$ Pump A:SP$ Attach | Cost$ 3 G | ValidTgts$ Creature | AILogic$ Pump
S:Mode$ Continuous | Affected$ Creature.EnchantedBy | AddPower$ 2 | AddToughness$ 2 | Description$ Enchanted creature gets +2/+2. S:Mode$ Continuous | Affected$ Creature.EnchantedBy | AddPower$ 2 | AddToughness$ 2 | Description$ Enchanted creature gets +2/+2.
T:Mode$ ChangesZone | ValidCard$ Creature.EnchantedBy | Origin$ Battlefield | Destination$ Graveyard | OptionalDecider$ You | Execute$ TrigReturnOwner | TriggerDescription$ When enchanted creature dies, you may return CARDNAME from your graveyard to the battlefield attached to a creature that shares a creature type with that creature. T:Mode$ ChangesZone | ValidCard$ Creature.EnchantedBy | Origin$ Battlefield | Destination$ Graveyard | OptionalDecider$ You | Execute$ DBReturnChoose | TriggerDescription$ When enchanted creature dies, you may return CARDNAME from your graveyard to the battlefield attached to a creature that shares a creature type with that creature.
SVar:TrigReturnOwner:DB$ Pump | RememberObjects$ TriggeredCard | SubAbility$ DBReturnChoose SVar:DBReturnChoose:DB$ ChooseCard | Choices$ Creature.CanBeEnchantedBy+sharesCreatureTypeWith TriggeredCardLKICopy | ChoiceTitle$ Choose a creature shares a creature type with the former enchanted creature | SubAbility$ DBReturn
SVar:DBReturnChoose:DB$ ChooseCard | Choices$ Creature.sharesCreatureTypeWith Remembered+CanBeEnchantedBy | ChoiceTitle$ Choose a creature shares a creature type with the former enchanted creature | SubAbility$ DBReturn
SVar:DBReturn:DB$ ChangeZone | Defined$ Self | Origin$ Graveyard | Destination$ Battlefield | AttachedTo$ ChosenCard | SubAbility$ DBCleanup SVar:DBReturn:DB$ ChangeZone | Defined$ Self | Origin$ Graveyard | Destination$ Battlefield | AttachedTo$ ChosenCard | SubAbility$ DBCleanup
SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True SVar:DBCleanup:DB$ Cleanup | ClearChosenCard$ True
AI:RemoveDeck:All AI:RemoveDeck:All
AI:RemoveDeck:Random AI:RemoveDeck:Random
SVar:Picture:http://www.wizards.com/global/images/magic/general/reins_of_the_vinesteed.jpg
Oracle:Enchant creature\nEnchanted creature gets +2/+2.\nWhen enchanted creature dies, you may return Reins of the Vinesteed from your graveyard to the battlefield attached to a creature that shares a creature type with that creature. Oracle:Enchant creature\nEnchanted creature gets +2/+2.\nWhen enchanted creature dies, you may return Reins of the Vinesteed from your graveyard to the battlefield attached to a creature that shares a creature type with that creature.

View File

@@ -2,10 +2,7 @@ Name:Shared Animosity
ManaCost:2 R ManaCost:2 R
Types:Enchantment Types:Enchantment
T:Mode$ Attacks | ValidCard$ Creature.YouCtrl | TriggerZones$ Battlefield | Execute$ AnimosityPump | TriggerDescription$ Whenever a creature you control attacks, it gets +1/+0 until end of turn for each other attacking creature that shares a creature type with it. T:Mode$ Attacks | ValidCard$ Creature.YouCtrl | TriggerZones$ Battlefield | Execute$ AnimosityPump | TriggerDescription$ Whenever a creature you control attacks, it gets +1/+0 until end of turn for each other attacking creature that shares a creature type with it.
SVar:AnimosityPump:DB$ Pump | RememberObjects$ TriggeredAttacker | SubAbility$ AnimosityPump2 SVar:AnimosityPump:DB$ Pump | Defined$ TriggeredAttacker | NumAtt$ X | References$ X
SVar:AnimosityPump2:DB$ Pump | Defined$ Remembered | NumAtt$ X | References$ X | SubAbility$ DBCleanup SVar:X:Count$Valid Creature.attacking+NotTriggeredAttacker+sharesCreatureTypeWith TriggeredAttacker
SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True
SVar:X:Count$Valid Creature.attacking+IsNotRemembered+sharesCreatureTypeWith Remembered
AI:RemoveDeck:Random AI:RemoveDeck:Random
SVar:Picture:http://www.wizards.com/global/images/magic/general/shared_animosity.jpg
Oracle:Whenever a creature you control attacks, it gets +1/+0 until end of turn for each other attacking creature that shares a creature type with it. Oracle:Whenever a creature you control attacks, it gets +1/+0 until end of turn for each other attacking creature that shares a creature type with it.

View File

@@ -5,6 +5,6 @@ PT:3/2
S:Mode$ Continuous | EffectZone$ All | Affected$ Card.Self | CharacteristicDefining$ True | AddType$ Cleric & Rogue & Warrior & Wizard | Description$ CARDNAME is also a Cleric, Rogue, Warrior, and Wizard. S:Mode$ Continuous | EffectZone$ All | Affected$ Card.Self | CharacteristicDefining$ True | AddType$ Cleric & Rogue & Warrior & Wizard | Description$ CARDNAME is also a Cleric, Rogue, Warrior, and Wizard.
K:Kicker:3 K:Kicker:3
T:Mode$ ChangesZone | ValidCard$ Card.Self+kicked | Origin$ Any | Destination$ Battlefield | Execute$ TrigDig | TriggerDescription$ When CARDNAME enters the battlefield, if it was kicked, reveal the top six cards of your library. You may put a card that shares a creature type with it from among them into your hand. Put the rest on the bottom of your library in a random order. T:Mode$ ChangesZone | ValidCard$ Card.Self+kicked | Origin$ Any | Destination$ Battlefield | Execute$ TrigDig | TriggerDescription$ When CARDNAME enters the battlefield, if it was kicked, reveal the top six cards of your library. You may put a card that shares a creature type with it from among them into your hand. Put the rest on the bottom of your library in a random order.
SVar:TrigDig:DB$ Dig | DigNum$ 6 | Reveal$ True | ChangeNum$ 1 | Optional$ True | ChangeValid$ Creature.sharesCreatureTypeWith Card.Self | DestinationZone$ Hand | DestinationZone2$ Library | LibraryPosition$ -1 | RestRandomOrder$ True SVar:TrigDig:DB$ Dig | DigNum$ 6 | Reveal$ True | ChangeNum$ 1 | Optional$ True | ChangeValid$ Creature.sharesCreatureTypeWith Self | DestinationZone$ Hand | DestinationZone2$ Library | LibraryPosition$ -1 | RestRandomOrder$ True
DeckHints:Ability$Party DeckHints:Ability$Party
Oracle:Tajuru Paragon is also a Cleric, Rogue, Warrior, and Wizard.\nKicker {3}\nWhen Tajuru Paragon enters the battlefield, if it was kicked, reveal the top six cards of your library. You may put a card that shares a creature type with it from among them into your hand. Put the rest on the bottom of your library in a random order. Oracle:Tajuru Paragon is also a Cleric, Rogue, Warrior, and Wizard.\nKicker {3}\nWhen Tajuru Paragon enters the battlefield, if it was kicked, reveal the top six cards of your library. You may put a card that shares a creature type with it from among them into your hand. Put the rest on the bottom of your library in a random order.