Merge branch '1530-reality-acid-glitch-with-flicker-of-fate' into 'master'

Resolve "Reality Acid glitch with Flicker of Fate"

Closes #1530

See merge request core-developers/forge!3121
This commit is contained in:
Michael Kamensky
2020-11-09 14:48:08 +00:00
228 changed files with 432 additions and 375 deletions

View File

@@ -155,9 +155,10 @@ public class Game {
public void copyLastState() {
lastStateBattlefield.clear();
lastStateGraveyard.clear();
Map<Integer, Card> cachedMap = Maps.newHashMap();
for (final Player p : getPlayers()) {
lastStateBattlefield.addAll(p.getZone(ZoneType.Battlefield).getLKICopy());
lastStateGraveyard.addAll(p.getZone(ZoneType.Graveyard).getLKICopy());
lastStateBattlefield.addAll(p.getZone(ZoneType.Battlefield).getLKICopy(cachedMap));
lastStateGraveyard.addAll(p.getZone(ZoneType.Graveyard).getLKICopy(cachedMap));
}
}
@@ -171,7 +172,8 @@ public class Game {
: zone.equals(ZoneType.Graveyard) ? lastStateGraveyard
: null;
if (lookup != null && lookup.remove(c)) {
if (lookup != null) {
lookup.remove(c);
lookup.add(CardUtil.getLKICopy(c));
}
}

View File

@@ -105,7 +105,22 @@ public class AbilityUtils {
else if (defined.equals("Equipped")) {
c = hostCard.getEquipping();
}
else if (defined.startsWith("AttachedTo ")) {
String v = defined.split(" ")[1];
for (GameEntity ge : getDefinedEntities(hostCard, v, sa)) {
// TODO handle phased out inside attachedCards
Iterables.addAll(cards, ge.getAttachedCards());
}
}
else if (defined.startsWith("AttachedBy ")) {
String v = defined.split(" ")[1];
for (Card attachment : getDefinedCards(hostCard, v, sa)) {
Card attached = attachment.getAttachedTo();
if (attached != null) {
cards.add(attached);
}
}
}
else if (defined.equals("Enchanted")) {
c = hostCard.getEnchantingCard();
if ((c == null) && (sa != null) && (sa.getRootAbility() != null)

View File

@@ -126,7 +126,6 @@ public class DamageDealEffect extends DamageBaseEffect {
@Override
public void resolve(SpellAbility sa) {
final Card hostCard = sa.getHostCard();
final Player activationPlayer = sa.getActivatingPlayer();
final Game game = hostCard.getGame();
final String damage = sa.getParam("NumDmg");
@@ -152,22 +151,7 @@ public class DamageDealEffect extends DamageBaseEffect {
}
}
final boolean targeted = (sa.usesTargeting());
if (sa.hasParam("Radiance") && targeted) {
Card origin = null;
for (int i = 0; i < tgts.size(); i++) {
if (tgts.get(i) instanceof Card) {
origin = (Card) tgts.get(i);
break;
}
}
// Can't radiate from a player
if (origin != null) {
tgts.addAll(CardUtil.getRadiance(hostCard, origin,
sa.getParam("ValidTgts").split(",")));
}
}
final CardCollection untargetedCards = CardUtil.getRadiance(sa);
final boolean remember = sa.hasParam("RememberDamaged");
@@ -236,7 +220,7 @@ public class DamageDealEffect extends DamageBaseEffect {
tgts = AbilityUtils.getDefinedObjects(source, sa.getParam("Defined"), sa);
}
for (final Object o : tgts) {
for (final GameObject o : tgts) {
if (!removeDamage) {
dmg = (sa.usesTargeting() && sa.hasParam("DividedAsYouChoose")) ? sa.getTargetRestrictions().getDividedValue(o) : dmg;
if (dmg <= 0) {
@@ -250,15 +234,50 @@ public class DamageDealEffect extends DamageBaseEffect {
// timestamp different or not in play
continue;
}
if (!targeted || c.canBeTargetedBy(sa)) {
if (removeDamage) {
if (!sa.usesTargeting() || gc.canBeTargetedBy(sa)) {
internalDamageDeal(sa, sourceLKI, gc, dmg, damageMap, preventMap, counterTable);
}
} else if (o instanceof Player) {
final Player p = (Player) o;
if (!sa.usesTargeting() || p.canBeTargetedBy(sa)) {
p.addDamage(dmg, sourceLKI, false, noPrevention, damageMap, preventMap, counterTable, sa);
}
}
}
for (final Card unTgtC : untargetedCards) {
if (unTgtC.isInPlay()) {
internalDamageDeal(sa, sourceLKI, unTgtC, dmg, damageMap, preventMap, counterTable);
}
}
if (remember) {
source.addRemembered(damageMap.row(sourceLKI).keySet());
}
}
if (!usedDamageMap) {
preventMap.triggerPreventDamage(false);
// non combat damage cause lifegain there
damageMap.triggerDamageDoneOnce(false, game, sa);
preventMap.clear();
damageMap.clear();
}
counterTable.triggerCountersPutAll(game);
replaceDying(sa);
}
protected void internalDamageDeal(SpellAbility sa, Card sourceLKI, Card c, int dmg, CardDamageMap damageMap, CardDamageMap preventMap, GameEntityCounterTable counterTable) {
final Card hostCard = sa.getHostCard();
final Player activationPlayer = sa.getActivatingPlayer();
final boolean noPrevention = sa.hasParam("NoPrevention");
if (sa.hasParam("Remove")) {
c.setDamage(0);
c.setHasBeenDealtDeathtouchDamage(false);
c.clearAssignedDamage();
} else {
if (sa.hasParam("ExcessDamage") && (!sa.hasParam("ExcessDamageCondition") ||
sourceLKI.isValid(sa.getParam("ExcessDamageCondition").split(","), activationPlayer, hostCard, sa))) {
// excess damage explicit says toughness, not lethal damage in the rules
int lethal = c.getLethalDamage();
if (sourceLKI.hasKeyword(Keyword.DEATHTOUCH)) {
lethal = Math.min(lethal, 1);
@@ -279,27 +298,4 @@ public class DamageDealEffect extends DamageBaseEffect {
}
}
}
} else if (o instanceof Player) {
final Player p = (Player) o;
if (!targeted || p.canBeTargetedBy(sa)) {
p.addDamage(dmg, sourceLKI, false, noPrevention, damageMap, preventMap, counterTable, sa);
}
}
}
if (remember) {
source.addRemembered(damageMap.row(sourceLKI).keySet());
}
}
if (!usedDamageMap) {
preventMap.triggerPreventDamage(false);
// non combat damage cause lifegain there
damageMap.triggerDamageDoneOnce(false, game, sa);
preventMap.clear();
damageMap.clear();
}
counterTable.triggerCountersPutAll(game);
replaceDying(sa);
}
}

View File

@@ -9,6 +9,7 @@ import forge.game.GameObject;
import forge.game.ability.AbilityUtils;
import forge.game.ability.SpellAbilityEffect;
import forge.game.card.Card;
import forge.game.card.CardCollection;
import forge.game.card.CardUtil;
import forge.game.player.Player;
import forge.game.spellability.SpellAbility;
@@ -69,21 +70,7 @@ public class DamagePreventEffect extends SpellAbilityEffect {
int numDam = AbilityUtils.calculateAmount(host, sa.getParam("Amount"), sa);
final List<GameObject> tgts = getTargets(sa);
final List<Card> untargetedCards = new ArrayList<>();
if (sa.hasParam("Radiance") && (sa.usesTargeting())) {
Card origin = null;
for (int i = 0; i < tgts.size(); i++) {
if (tgts.get(i) instanceof Card) {
origin = (Card) tgts.get(i);
break;
}
}
if (origin != null) {
// Can't radiate from a player
untargetedCards.addAll(CardUtil.getRadiance(host, origin, sa.getParam("ValidTgts").split(",")));
}
}
final CardCollection untargetedCards = CardUtil.getRadiance(sa);
final boolean targeted = (sa.usesTargeting());
final boolean preventionWithEffect = sa.hasParam("PreventionSubAbility");

View File

@@ -1,5 +1,9 @@
package forge.game.ability.effects;
import java.util.Map;
import com.google.common.collect.Maps;
import forge.game.Game;
import forge.game.GameActionUtil;
import forge.game.ability.AbilityUtils;
@@ -87,9 +91,10 @@ public class DestroyAllEffect extends SpellAbilityEffect {
CardZoneTable table = new CardZoneTable();
Map<Integer, Card> cachedMap = Maps.newHashMap();
for (Card c : list) {
if (game.getAction().destroy(c, sa, !noRegen, table) && remDestroyed) {
card.addRemembered(CardUtil.getLKICopy(c));
card.addRemembered(CardUtil.getLKICopy(c, cachedMap));
}
}
table.triggerChangesZoneAll(game);

View File

@@ -12,6 +12,9 @@ import forge.game.zone.ZoneType;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import com.google.common.collect.Maps;
public class DestroyEffect extends SpellAbilityEffect {
@Override
@@ -65,46 +68,29 @@ public class DestroyEffect extends SpellAbilityEffect {
final Card card = sa.getHostCard();
final Game game = card.getGame();
final boolean remDestroyed = sa.hasParam("RememberDestroyed");
final boolean remAttached = sa.hasParam("RememberAttached");
if (remDestroyed || remAttached) {
if (sa.hasParam("RememberDestroyed") || sa.hasParam("RememberAttached")) {
card.clearRemembered();
}
final boolean noRegen = sa.hasParam("NoRegen");
final boolean sac = sa.hasParam("Sacrifice");
CardCollection tgtCards = getTargetCards(sa);
CardCollection untargetedCards = new CardCollection();
if (sa.hasParam("Radiance")) {
untargetedCards.addAll(CardUtil.getRadiance(card, tgtCards.get(0),
sa.getParam("ValidTgts").split(",")));
}
CardCollection untargetedCards = CardUtil.getRadiance(sa);
if (tgtCards.size() > 1) {
tgtCards = (CardCollection) GameActionUtil.orderCardsByTheirOwners(game, tgtCards, ZoneType.Graveyard);
}
CardZoneTable table = new CardZoneTable();
Map<Integer, Card> cachedMap = Maps.newHashMap();
for (final Card tgtC : tgtCards) {
if (tgtC.isInPlay() && (!sa.usesTargeting() || tgtC.canBeTargetedBy(sa))) {
boolean destroyed = false;
final Card lki = CardUtil.getLKICopy(tgtC);
if (remAttached) {
card.addRemembered(tgtC.getAttachedCards());
}
if (sac) {
destroyed = game.getAction().sacrifice(tgtC, sa, table) != null;
} else {
destroyed = game.getAction().destroy(tgtC, sa, !noRegen, table);
}
if (destroyed && remDestroyed) {
card.addRemembered(tgtC);
}
if (destroyed && sa.hasParam("RememberLKI")) {
card.addRemembered(lki);
Card gameCard = game.getCardState(tgtC, null);
// gameCard is LKI in that case, the card is not in game anymore
// or the timestamp did change
// this should check Self too
if (gameCard == null || !tgtC.equalsWithTimestamp(gameCard)) {
continue;
}
internalDestroy(gameCard, sa, table, cachedMap);
}
}
@@ -114,18 +100,38 @@ public class DestroyEffect extends SpellAbilityEffect {
for (final Card unTgtC : untargetedCards) {
if (unTgtC.isInPlay()) {
boolean destroyed = false;
if (sac) {
destroyed = game.getAction().sacrifice(unTgtC, sa, table) != null;
} else {
destroyed = game.getAction().destroy(unTgtC, sa, !noRegen, table);
} if (destroyed && remDestroyed) {
card.addRemembered(unTgtC);
}
internalDestroy(unTgtC, sa, table, cachedMap);
}
}
table.triggerChangesZoneAll(game);
}
protected void internalDestroy(Card gameCard, SpellAbility sa, CardZoneTable table, Map<Integer, Card> cachedMap) {
final Card card = sa.getHostCard();
final Game game = card.getGame();
final boolean remDestroyed = sa.hasParam("RememberDestroyed");
final boolean remAttached = sa.hasParam("RememberAttached");
final boolean noRegen = sa.hasParam("NoRegen");
final boolean sac = sa.hasParam("Sacrifice");
boolean destroyed = false;
final Card lki = CardUtil.getLKICopy(gameCard, cachedMap);
if (remAttached) {
card.addRemembered(gameCard.getAttachedCards());
}
if (sac) {
destroyed = game.getAction().sacrifice(gameCard, sa, table) != null;
} else {
destroyed = game.getAction().destroy(gameCard, sa, !noRegen, table);
}
if (destroyed && remDestroyed) {
card.addRemembered(gameCard);
}
if (destroyed && sa.hasParam("RememberLKI")) {
card.addRemembered(lki);
}
}
}

View File

@@ -15,6 +15,9 @@ import forge.util.Localizer;
import forge.util.CardTranslation;
import java.util.List;
import java.util.Map;
import com.google.common.collect.Maps;
/**
* PeeakAndReveal is a simplified why of handling something that could
@@ -65,18 +68,21 @@ public class PeekAndRevealEffect extends SpellAbilityEffect {
// Singletons.getModel().getGameAction().revealCardsToOtherPlayers(peekingPlayer, revealableCards);
if (rememberRevealed) {
Map<Integer, Card> cachedMap = Maps.newHashMap();
for(Card c : revealableCards) {
source.addRemembered(CardUtil.getLKICopy(c));
source.addRemembered(CardUtil.getLKICopy(c, cachedMap));
}
}
if (imprintRevealed) {
Map<Integer, Card> cachedMap = Maps.newHashMap();
for(Card c : revealableCards) {
source.addImprintedCard(CardUtil.getLKICopy(c));
source.addImprintedCard(CardUtil.getLKICopy(c, cachedMap));
}
}
} else if (sa.hasParam("RememberPeeked")) {
Map<Integer, Card> cachedMap = Maps.newHashMap();
for(Card c : revealableCards) {
source.addRemembered(CardUtil.getLKICopy(c));
source.addRemembered(CardUtil.getLKICopy(c, cachedMap));
}
}
}

View File

@@ -6,10 +6,10 @@ import forge.card.MagicColor;
import forge.game.Game;
import forge.game.ability.SpellAbilityEffect;
import forge.game.card.Card;
import forge.game.card.CardCollection;
import forge.game.card.CardUtil;
import forge.game.player.Player;
import forge.game.spellability.SpellAbility;
import forge.game.spellability.TargetRestrictions;
import forge.util.Lang;
import forge.util.TextUtil;
import forge.util.Localizer;
@@ -129,14 +129,7 @@ public class ProtectEffect extends SpellAbilityEffect {
gainsKWList.add(TextUtil.concatWithSpace("Protection from", color));
}
final List<Card> untargetedCards = new ArrayList<>();
final TargetRestrictions tgt = sa.getTargetRestrictions();
if (sa.hasParam("Radiance") && (tgt != null)) {
untargetedCards.addAll(CardUtil.getRadiance(host, tgtCards.get(0),
sa.getParam("ValidTgts").split(",")));
}
final CardCollection untargetedCards = CardUtil.getRadiance(sa);
final long timestamp = game.getNextTimestamp();
@@ -147,7 +140,7 @@ public class ProtectEffect extends SpellAbilityEffect {
}
// if this is a target, make sure we can still target now
if ((tgt != null) && !tgtC.canBeTargetedBy(sa)) {
if (sa.usesTargeting() && !tgtC.canBeTargetedBy(sa)) {
continue;
}

View File

@@ -10,6 +10,7 @@ import forge.game.GameEntity;
import forge.game.ability.AbilityUtils;
import forge.game.ability.SpellAbilityEffect;
import forge.game.card.Card;
import forge.game.card.CardCollection;
import forge.game.card.CardUtil;
import forge.game.event.GameEventCardStatsChanged;
import forge.game.keyword.KeywordInterface;
@@ -257,8 +258,6 @@ public class PumpEffect extends SpellAbilityEffect {
@Override
public void resolve(final SpellAbility sa) {
final List<Card> untargetedCards = Lists.newArrayList();
final Game game = sa.getActivatingPlayer().getGame();
final Card host = sa.getHostCard();
final long timestamp = game.getNextTimestamp();
@@ -284,6 +283,7 @@ public class PumpEffect extends SpellAbilityEffect {
List<Player> tgtPlayers = getTargetPlayers(sa);
tgts.addAll(tgtCards);
tgts.addAll(tgtPlayers);
final CardCollection untargetedCards = CardUtil.getRadiance(sa);
if (sa.hasParam("DefinedKW")) {
String defined = sa.getParam("DefinedKW");
@@ -383,11 +383,6 @@ public class PumpEffect extends SpellAbilityEffect {
}
}
if (sa.hasParam("Radiance")) {
untargetedCards.addAll(CardUtil.getRadiance(host, tgtCards.get(0), sa.getParam("ValidTgts")
.split(",")));
}
final ZoneType pumpZone = sa.hasParam("PumpZone") ? ZoneType.smartValueOf(sa.getParam("PumpZone"))
: ZoneType.Battlefield;

View File

@@ -1,5 +1,9 @@
package forge.game.ability.effects;
import java.util.Map;
import com.google.common.collect.Maps;
import forge.game.Game;
import forge.game.GameActionUtil;
import forge.game.ability.AbilityUtils;
@@ -64,8 +68,9 @@ public class SacrificeAllEffect extends SpellAbilityEffect {
}
CardZoneTable table = new CardZoneTable();
Map<Integer, Card> cachedMap = Maps.newHashMap();
for (Card sac : list) {
final Card lKICopy = CardUtil.getLKICopy(sac);
final Card lKICopy = CardUtil.getLKICopy(sac, cachedMap);
if (game.getAction().sacrifice(sac, sa, table) != null && remSacrificed) {
card.addRemembered(lKICopy);
}

View File

@@ -18,6 +18,8 @@ import forge.util.Aggregates;
import forge.util.Localizer;
import org.apache.commons.lang3.StringUtils;
import com.google.common.collect.Maps;
import java.util.List;
import java.util.Map;
@@ -139,8 +141,9 @@ public class SacrificeEffect extends SpellAbilityEffect {
choosenToSacrifice = GameActionUtil.orderCardsByTheirOwners(game, choosenToSacrifice, ZoneType.Graveyard);
}
Map<Integer, Card> cachedMap = Maps.newHashMap();
for (Card sac : choosenToSacrifice) {
final Card lKICopy = CardUtil.getLKICopy(sac);
final Card lKICopy = CardUtil.getLKICopy(sac, cachedMap);
boolean wasSacrificed = !destroy && game.getAction().sacrifice(sac, sa, table) != null;
boolean wasDestroyed = destroy && game.getAction().destroy(sac, sa, true, table);
// Run Devour Trigger

View File

@@ -3729,11 +3729,11 @@ public class CardFactoryUtil {
+ " | Description$ Totem armor (" + inst.getReminderText() + ")";
String abprevDamage = "DB$ DealDamage | Defined$ ReplacedCard | Remove$ All ";
String abdestory = "DB$ Destroy | Defined$ Self";
String abdestroy = "DB$ Destroy | Defined$ Self";
SpellAbility sa = AbilityFactory.getAbility(abprevDamage, card);
final AbilitySub dessub = (AbilitySub) AbilityFactory.getAbility(abdestory, card);
final AbilitySub dessub = (AbilitySub) AbilityFactory.getAbility(abdestroy, card);
sa.setSubAbility(dessub);

View File

@@ -24,6 +24,7 @@ import forge.card.CardType;
import forge.card.ColorSet;
import forge.card.MagicColor;
import forge.game.Game;
import forge.game.GameEntity;
import forge.game.GameObject;
import forge.game.ability.AbilityKey;
import forge.game.ability.AbilityUtils;
@@ -37,6 +38,7 @@ import io.sentry.Sentry;
import io.sentry.event.BreadcrumbBuilder;
import java.util.List;
import java.util.Map;
import java.util.Set;
public final class CardUtil {
@@ -181,11 +183,41 @@ public final class CardUtil {
}
public static List<Card> getLKICopyList(final Iterable<Card> in, Map<Integer, Card> cachedMap) {
if (in == null) {
return null;
}
List<Card> result = Lists.newArrayList();
for (final Card c : in) {
result.add(getLKICopy(c, cachedMap));
}
return result;
}
public static GameEntity getLKICopy(final GameEntity in, Map<Integer, Card> cachedMap) {
if (in instanceof Card) {
return getLKICopy((Card)in, cachedMap);
}
return in;
}
/**
* @param in a Card to copy.
* @return a copy of C with LastKnownInfo stuff retained.
*/
public static Card getLKICopy(final Card in) {
if (in == null) {
return null;
}
return getLKICopy(in, Maps.newHashMap());
}
public static Card getLKICopy(final Card in, Map<Integer, Card> cachedMap) {
if (in == null) {
return null;
}
Card cachedCard = cachedMap.get(in.getId());
if (cachedCard != null) {
return cachedCard;
}
String msg = "CardUtil:getLKICopy copy object";
Sentry.getContext().recordBreadcrumb(
new BreadcrumbBuilder().setMessage(msg)
@@ -196,6 +228,7 @@ public final class CardUtil {
);
final Card newCopy = new Card(in.getId(), in.getPaperCard(), in.getGame(), null);
cachedMap.put(in.getId(), newCopy);
newCopy.setSetCode(in.getSetCode());
newCopy.setOwner(in.getOwner());
newCopy.setController(in.getController(), 0);
@@ -243,8 +276,8 @@ public final class CardUtil {
newCopy.setReceivedDamageFromPlayerThisTurn(in.getReceivedDamageFromPlayerThisTurn());
newCopy.getDamageHistory().setCreatureGotBlockedThisTurn(in.getDamageHistory().getCreatureGotBlockedThisTurn());
newCopy.setAttachedCards(in.getAttachedCards());
newCopy.setEntityAttachedTo(in.getEntityAttachedTo());
newCopy.setAttachedCards(getLKICopyList(in.getAttachedCards(), cachedMap));
newCopy.setEntityAttachedTo(getLKICopy(in.getEntityAttachedTo(), cachedMap));
newCopy.setHaunting(in.getHaunting());
newCopy.setCopiedPermanent(in.getCopiedPermanent());
@@ -272,7 +305,7 @@ public final class CardUtil {
newCopy.copyChangedTextFrom(in);
newCopy.setMeldedWith(in.getMeldedWith());
newCopy.setMeldedWith(getLKICopy(in.getMeldedWith(), cachedMap));
newCopy.setTimestamp(in.getTimestamp());
@@ -295,26 +328,42 @@ public final class CardUtil {
}
newCopy.setCastFrom(in.getCastFrom());
newCopy.setExiledWith(in.getExiledWith());
newCopy.setExiledWith(getLKICopy(in.getExiledWith(), cachedMap));
return newCopy;
}
public static CardCollection getRadiance(final Card source, final Card origin, final String[] valid) {
final CardCollection res = new CardCollection();
public static CardCollection getRadiance(final SpellAbility sa) {
if (!sa.usesTargeting() || !sa.hasParam("Radiance")) {
return new CardCollection();
}
final Card source = sa.getHostCard();
final Game game = source.getGame();
ColorSet cs = CardUtil.getColors(origin);
final CardCollection res = new CardCollection();
final String[] valid = sa.getParam("ValidTgts").split(",");
final CardCollectionView tgts = sa.getTargets().getTargetCards();
byte combinedColor = 0;
for (Card tgt : tgts) {
ColorSet cs = CardUtil.getColors(tgt);
for (byte color : MagicColor.WUBRG) {
if(!cs.hasAnyColor(color))
continue;
combinedColor |= color;
}
}
for (byte color : MagicColor.WUBRG) {
if ((combinedColor & color) == 0) {
continue;
}
for(final Card c : game.getColoredCardsInPlay(MagicColor.toLongString(color))) {
if (!res.contains(c) && c.isValid(valid, source.getController(), source, null) && !c.equals(origin)) {
if (!res.contains(c) && !tgts.contains(c) && c.isValid(valid, source.getController(), source, sa)) {
res.add(c);
}
}
}
return res;
}

View File

@@ -40,6 +40,7 @@ public class WrappedAbility extends Ability {
ApiType.GainLife,
ApiType.LoseLife,
ApiType.ChangeZone,
ApiType.Destroy,
ApiType.Token
);

View File

@@ -300,14 +300,10 @@ public class Zone implements java.io.Serializable, Iterable<Card> {
return zoneType.toString();
}
public Zone getLKICopy() {
public Zone getLKICopy(Map<Integer, Card> cachedMap) {
Zone result = new Zone(zoneType, game);
final CardCollection list = new CardCollection();
for (final Card c : getCards()) {
list.add(CardUtil.getLKICopy(c));
}
result.setCards(list);
result.setCards(CardUtil.getLKICopyList(getCards(), cachedMap));
return result;
}

View File

@@ -804,7 +804,7 @@ public class GameSimulatorTest extends SimulationTestCase {
assertNotNull(simBrood);
assertEquals(0, simBrood.getDamage());
// destoryed because of to much redirected damage
// destroyed because of to much redirected damage
assertNull(simPalisade);
assertNotNull(simPridemate);

View File

@@ -4,7 +4,7 @@ Types:Artifact
A:AB$ Effect | Cost$ 4 T | Name$ Acidic Dagger Effect | ValidTgts$ Creature | TgtPrompt$ Select target creature | Triggers$ TrigDam,TrigLeave | SVars$ TrigDestroy,TrigSac,ExileEffect | RememberObjects$ Targeted | ImprintCards$ Self | ActivationPhases$ Upkeep->Declare Attackers | SpellDescription$ Whenever target creature deals combat damage to a non-Wall creature this turn, destroy that non-Wall creature. When the targeted creature leaves the battlefield this turn, sacrifice CARDNAME. Activate this ability only before blockers are declared.
SVar:TrigDam:Mode$ DamageDone | ValidSource$ Creature.IsRemembered | ValidTarget$ Creature.nonWall | CombatDamage$ True | TriggerZones$ Command | Execute$ TrigDestroy | TriggerDescription$ Whenever targeted creature deals combat damage to a non-Wall creature this turn, destroy that non-Wall creature.
SVar:TrigLeave:Mode$ ChangesZone | ValidCard$ Creature.IsRemembered | Origin$ Battlefield | Destination$ Any | Execute$ TrigSac | TriggerZones$ Command | TriggerDescription$ When the targeted creature leaves the battlefield this turn, sacrifice Acidic Dagger.
SVar:TrigDestroy:DB$ Destroy | Defined$ TriggeredTarget
SVar:TrigDestroy:DB$ Destroy | Defined$ TriggeredTargetLKICopy
SVar:TrigSac:DB$ SacrificeAll | Defined$ Imprinted | SubAbility$ ExileEffect
SVar:ExileEffect:DB$ ChangeZone | Defined$ Self | Origin$ Command | Destination$ Exile | Static$ True
AI:RemoveDeck:All

View File

@@ -3,7 +3,7 @@ ManaCost:W
Types:Creature Human Soldier
PT:1/1
T:Mode$ AttackerBlocked | ValidCard$ Creature | ValidBlocker$ Card.Self | Execute$ TrigDestroy | TriggerDescription$ When CARDNAME blocks a creature, destroy that creature and CARDNAME.
SVar:TrigDestroy:DB$ Destroy | Defined$ TriggeredAttacker | SubAbility$ DestroySelf
SVar:TrigDestroy:DB$ Destroy | Defined$ TriggeredAttackerLKICopy | SubAbility$ DestroySelf
SVar:DestroySelf:DB$ Destroy | Defined$ Self
SVar:Picture:http://serv2.tcgimages.eu/img/cards/Portal_Second_Age/alaborn_zealot.jpg
Oracle:When Alaborn Zealot blocks a creature, destroy that creature and Alaborn Zealot.

View File

@@ -3,6 +3,6 @@ ManaCost:no cost
Types:Vanguard
HandLifeModifier:+1/-8
T:Mode$ DamageDone | ValidSource$ Creature | ValidTarget$ You | Execute$ TrigDestroy | TriggerZones$ Command | TriggerDescription$ Whenever a creature deals damage to you, destroy it.
SVar:TrigDestroy:DB$ Destroy | Defined$ TriggeredSource
SVar:TrigDestroy:DB$ Destroy | Defined$ TriggeredSourceLKICopy
SVar:Picture:https://downloads.cardforge.org/images/cards/VAN/Ashnod.full.jpg
Oracle:Hand +1, life -8\nWhenever a creature deals damage to you, destroy it.

View File

@@ -4,7 +4,7 @@ Types:Enchantment Aura
K:Enchant land
A:SP$ Attach | Cost$ B B | ValidTgts$ Land | AILogic$ Curse
T:Mode$ Taps | ValidCard$ Card.AttachedBy | Execute$ TrigDestroy | TriggerDescription$ When enchanted land becomes tapped, destroy it.
SVar:TrigDestroy:DB$Destroy | Defined$ TriggeredCard
SVar:TrigDestroy:DB$ Destroy | Defined$ TriggeredCardLKICopy
SVar:NonStackingAttachEffect:True
SVar:Picture:http://www.wizards.com/global/images/magic/general/blight.jpg
Oracle:Enchant land\nWhen enchanted land becomes tapped, destroy it.

View File

@@ -4,7 +4,7 @@ Types:Enchantment Aura
K:Enchant creature or land
A:SP$ Attach | Cost$ 2 B B | ValidTgts$ Creature,Land | AILogic$ Curse
T:Mode$ Taps | ValidCard$ Card.AttachedBy | Execute$ TrigDestroy | TriggerDescription$ When enchanted permanent becomes tapped, destroy it.
SVar:TrigDestroy:DB$ Destroy | Defined$ TriggeredCard
SVar:TrigDestroy:DB$ Destroy | Defined$ TriggeredCardLKICopy
SVar:NonStackingAttachEffect:True
SVar:Picture:http://www.wizards.com/global/images/magic/general/brink_of_disaster.jpg
Oracle:Enchant creature or land\nWhen enchanted permanent becomes tapped, destroy it.

View File

@@ -4,5 +4,5 @@ Types:Artifact Equipment
K:Equip:1
S:Mode$ Continuous | Affected$ Creature.EquippedBy | AddPower$ 2 | AddToughness$ 0 | AddType$ Pirate | AddKeyword$ Menace | Description$ Equipped creature gets +2/+0, has menace, and is a Pirate in addition to its other creature types.
T:Mode$ Unattach | ValidAttachment$ Card.Self | ValidObject$ Permanent | Execute$ TrigDestroy | TriggerDescription$ Whenever CARDNAME becomes unattached from a permanent, destroy that permanent.
SVar:TrigDestroy:DB$Destroy | Defined$ TriggeredObject
SVar:TrigDestroy:DB$ Destroy | Defined$ TriggeredObjectLKICopy
Oracle:Equipped creature gets +2/+0, has menace, and is a Pirate in addition to its other creature types.\nWhenever Captain's Hook becomes unattached from a permanent, destroy that permanent.\nEquip {1}

View File

@@ -5,7 +5,7 @@ PT:1/1
K:Indestructible
T:Mode$ DamageDone | ValidSource$ Card.Self | ValidTarget$ Creature | CombatDamage$ True | Execute$ TrigFlip | TriggerZones$ Battlefield | TriggerDescription$ Whenever CARDNAME deals combat damage to a creature, flip a coin. If you win the flip, destroy that creature.
SVar:TrigFlip:DB$ FlipACoin | Defined$ You | WinSubAbility$ DBDestroy
SVar:DBDestroy:DB$Destroy | Defined$ TriggeredTarget | NoRegen$ False
SVar:DBDestroy:DB$ Destroy | Defined$ TriggeredTargetLKICopy | NoRegen$ False
SVar:HasCombatEffect:TRUE
SVar:Picture:http://www.wizards.com/global/images/magic/general/creepy_doll.jpg
Oracle:Indestructible\nWhenever Creepy Doll deals combat damage to a creature, flip a coin. If you win the flip, destroy that creature.

View File

@@ -7,7 +7,7 @@ A:AB$ Dig | Cost$ 2 | DigNum$ 1 | ActivationLimit$ 1 | Reveal$ True | Destinatio
SVar:TrigAnimate:DB$ Animate | Defined$ Self | Triggers$ TrigDamage | sVars$ TrigDestroy | ConditionDefined$ Remembered | ConditionPresent$ Card.Land | ConditionCompare$ GE1 | SubAbility$ DBCleanup
SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True
SVar:TrigDamage:Mode$ DamageDone | ValidSource$ Card.Self | ValidTarget$ Creature | TriggerZones$ Battlefield | Execute$ TrigDestroy | TriggerDescription$ Whenever CARDNAME deals damage to a creature, destroy that creature.
SVar:TrigDestroy:DB$ Destroy | Defined$ TriggeredTarget
SVar:TrigDestroy:DB$ Destroy | Defined$ TriggeredTargetLKICopy
AI:RemoveDeck:All
SVar:Picture:http://www.wizards.com/global/images/magic/general/cruel_deceiver.jpg
Oracle:{1}: Look at the top card of your library.\n{2}: Reveal the top card of your library. If it's a land card, Cruel Deceiver gains "Whenever Cruel Deceiver deals damage to a creature, destroy that creature" until end of turn. Activate this ability only once each turn.

View File

@@ -4,8 +4,8 @@ Types:Artifact Equipment
K:Equip:2
T:Mode$ AttackerBlockedByCreature | ValidCard$ Creature | ValidBlocker$ Creature.AttachedBy | TriggerZones$ Battlefield | Execute$ TrigDestroy | TriggerDescription$ Whenever equipped creature blocks or becomes blocked by a creature, destroy both creatures.
T:Mode$ AttackerBlockedByCreature | ValidCard$ Creature.AttachedBy | ValidBlocker$ Creature | TriggerZones$ Battlefield | Execute$ TrigDestroy | TriggerDescription$ Whenever equipped creature blocks or becomes blocked by a creature, destroy both creatures.
SVar:TrigDestroy:DB$Destroy | Defined$ TriggeredAttacker | SubAbility$ DBDestroy
SVar:DBDestroy:DB$Destroy | Defined$ TriggeredBlocker
SVar:TrigDestroy:DB$ Destroy | Defined$ TriggeredAttackerLKICopy | SubAbility$ DBDestroy
SVar:DBDestroy:DB$ Destroy | Defined$ TriggeredBlockerLKICopy
AI:RemoveDeck:All
SVar:NonStackingAttachEffect:True
SVar:Picture:http://www.wizards.com/global/images/magic/general/dead_iron_sledge.jpg

View File

@@ -4,7 +4,7 @@ Types:Enchantment
S:Mode$ Continuous | Affected$ Creature | AddSVar$ DeathDestroy
SVar:DeathDestroy:SVar:DestroyWhenDamaged:True
T:Mode$ DamageDoneOnce | ValidTarget$ Creature | Execute$ TrigDestroy | TriggerZones$ Battlefield | TriggerDescription$ Whenever a creature is dealt damage, destroy it. It can't be regenerated.
SVar:TrigDestroy:DB$ Destroy | Defined$ TriggeredTarget | NoRegen$ True
SVar:TrigDestroy:DB$ Destroy | Defined$ TriggeredTargetLKICopy | NoRegen$ True
SVar:NonStackingEffect:True
AI:RemoveDeck:Random
SVar:Picture:http://www.wizards.com/global/images/magic/general/death_pits_of_rath.jpg

View File

@@ -3,6 +3,6 @@ ManaCost:1 B
Types:Creature Human Pirate
PT:2/2
T:Mode$ DamageDone | ValidSource$ Card.Self | ValidTarget$ Dinosaur | TriggerZones$ Battlefield | Execute$ TrigDestroy | TriggerDescription$ Whenever CARDNAME deals damage to a Dinosaur, destroy that creature.
SVar:TrigDestroy:DB$Destroy | Defined$ TriggeredTarget
SVar:TrigDestroy:DB$ Destroy | Defined$ TriggeredTargetLKICopy
SVar:Picture:http://www.wizards.com/global/images/magic/general/dinosaur_hunter.jpg
Oracle:Whenever Dinosaur Hunter deals damage to a Dinosaur, destroy that creature.

View File

@@ -6,6 +6,6 @@ K:Fear
T:Mode$ DamageDone | ValidSource$ Creature | ValidTarget$ You | Execute$ TrigDestroy | TriggerZones$ Battlefield | TriggerDescription$ Whenever a creature deals damage to you, destroy it.
T:Mode$ ChangesZone | Origin$ Any | Destination$ Graveyard | ValidCard$ Creature.Self | Execute$ TrigShuffle | TriggerDescription$ When CARDNAME is put into a graveyard from anywhere, shuffle it into its owner's library.
SVar:TrigShuffle:DB$ ChangeZone | Origin$ Graveyard | Destination$ Library | Shuffle$ True | Defined$ TriggeredCardLKICopy
SVar:TrigDestroy:DB$Destroy | Defined$ TriggeredSource
SVar:TrigDestroy:DB$ Destroy | Defined$ TriggeredSourceLKICopy
SVar:Picture:http://www.wizards.com/global/images/magic/general/dread.jpg
Oracle:Fear (This creature can't be blocked except by artifact creatures and/or black creatures.)\nWhenever a creature deals damage to you, destroy it.\nWhen Dread is put into a graveyard from anywhere, shuffle it into its owner's library.

View File

@@ -4,6 +4,6 @@ Types:Creature Zombie
PT:4/1
K:CARDNAME can't block.
T:Mode$ DamageDone | ValidSource$ Card.Self | ValidTarget$ Creature | CombatDamage$ True | TriggerZones$ Battlefield | Execute$ TrigDestroy | TriggerDescription$ Whenever CARDNAME deals combat damage to a creature, destroy that creature. It can't be regenerated.
SVar:TrigDestroy:DB$Destroy | Defined$ TriggeredTarget | NoRegen$ True
SVar:TrigDestroy:DB$ Destroy | Defined$ TriggeredTargetLKICopy | NoRegen$ True
SVar:Picture:http://www.wizards.com/global/images/magic/general/dripping_dead.jpg
Oracle:Dripping Dead can't block.\nWhenever Dripping Dead deals combat damage to a creature, destroy that creature. It can't be regenerated.

View File

@@ -5,5 +5,5 @@ K:Enchant creature
A:SP$ Attach | Cost$ 2 U | ValidTgts$ Creature | IsCurse$ True | SpellDescription$ Enchant creature
S:Mode$ Continuous | Affected$ Creature.EnchantedBy | AddPower$ -6 | AddToughness$ -0 | Description$ Enchanted creature gets -6/-0.
T:Mode$ AttackerBlockedByCreature | ValidCard$ Creature | ValidBlocker$ Creature.EnchantedBy | TriggerZones$ Battlefield | Execute$ TrigDestroy | TriggerDescription$ When enchanted creature blocks, destroy it.
SVar:TrigDestroy:DB$ Destroy | Defined$ TriggeredBlocker
SVar:TrigDestroy:DB$ Destroy | Defined$ TriggeredBlockerLKICopy
Oracle:Enchant creature\nEnchanted creature gets -6/-0.\nWhen enchanted creature blocks, destroy it. (The attacking creature remains blocked.)

View File

@@ -4,8 +4,8 @@ Types:Creature Wurm
PT:7/7
T:Mode$ AttackerBlockedByCreature | ValidCard$ Creature | ValidBlocker$ Card.Self | Execute$ TrigDestroyBlocked | TriggerDescription$ Whenever CARDNAME blocks or becomes blocked by a creature, destroy that creature. You gain life equal to that creature's toughness.
T:Mode$ AttackerBlockedByCreature | ValidCard$ Card.Self | ValidBlocker$ Creature | Execute$ TrigDestroyBlocker | Secondary$ True | TriggerDescription$ Whenever CARDNAME blocks or becomes blocked by a creature, destroy that creature. You gain life equal to that creature's toughness.
SVar:TrigDestroyBlocked:DB$Destroy | Defined$ TriggeredAttacker | SubAbility$ DBGainLifeBlocked
SVar:TrigDestroyBlocker:DB$Destroy | Defined$ TriggeredBlocker | SubAbility$ DBGainLifeBlocker
SVar:TrigDestroyBlocked:DB$ Destroy | Defined$ TriggeredAttackerLKICopy | SubAbility$ DBGainLifeBlocked
SVar:TrigDestroyBlocker:DB$ Destroy | Defined$ TriggeredBlockerLKICopy | SubAbility$ DBGainLifeBlocker
SVar:DBGainLifeBlocked:DB$GainLife | Defined$ You | LifeAmount$ X | References$ X
SVar:DBGainLifeBlocker:DB$GainLife | Defined$ You | LifeAmount$ Y | References$ Y
SVar:X:TriggeredAttacker$CardToughness

View File

@@ -4,6 +4,6 @@ Types:Creature Eye
PT:6/3
S:Mode$ Continuous | Affected$ Creature.nonEye+YouCtrl | AddHiddenKeyword$ CARDNAME can't attack. | Description$ Non-Eye creatures you control can't attack.
T:Mode$ AttackerBlockedByCreature | ValidCard$ Card.Self | ValidBlocker$ Creature | Execute$ TrigDestroyBlocker | TriggerZones$ Battlefield | TriggerDescription$ Whenever CARDNAME becomes blocked by a creature, destroy that creature.
SVar:TrigDestroyBlocker:DB$Destroy | Defined$ TriggeredBlocker
SVar:TrigDestroyBlocker:DB$ Destroy | Defined$ TriggeredBlockerLKICopy
SVar:Picture:http://www.wizards.com/global/images/magic/general/evil_eye_of_urborg.jpg
Oracle:Non-Eye creatures you control can't attack.\nWhenever Evil Eye of Urborg becomes blocked by a creature, destroy that creature.

View File

@@ -4,7 +4,7 @@ Types:Enchantment Aura
K:Enchant creature
A:SP$ Attach | Cost$ B | ValidTgts$ Creature | AILogic$ Curse
T:Mode$ TurnFaceUp | ValidCard$ Card.AttachedBy | Execute$ TrigDestroy | TriggerZones$ Battlefield | TriggerDescription$ When enchanted creature is turned face up, destroy it. It can't be regenerated.
SVar:TrigDestroy:DB$ Destroy | Defined$ TriggeredCard | NoRegen$ True
SVar:TrigDestroy:DB$ Destroy | Defined$ TriggeredCardLKICopy | NoRegen$ True
AI:RemoveDeck:Random
AI:RemoveDeck:All
SVar:Picture:http://www.wizards.com/global/images/magic/general/fatal_mutation.jpg

View File

@@ -6,6 +6,6 @@ A:SP$ Attach | Cost$ 1 U U | ValidTgts$ Creature | AILogic$ KeepTapped
S:Mode$ Continuous | Affected$ Creature.EnchantedBy | AddHiddenKeyword$ CARDNAME doesn't untap during your untap step. | AddSVar$ FrozenSolidDestroy | Description$ Enchanted creature doesn't untap during its controller's untap step.
SVar:FrozenSolidDestroy:SVar:DestroyWhenDamaged:True
T:Mode$ DamageDoneOnce | ValidTarget$ Creature.EnchantedBy | Execute$ TrigDestroy | TriggerZones$ Battlefield | TriggerDescription$ When enchanted creature is dealt damage, destroy it.
SVar:TrigDestroy:DB$ Destroy | Defined$ TriggeredTarget
SVar:TrigDestroy:DB$ Destroy | Defined$ TriggeredTargetLKICopy
SVar:Picture:http://www.wizards.com/global/images/magic/general/frozen_solid.jpg
Oracle:Enchant creature\nEnchanted creature doesn't untap during its controller's untap step.\nWhen enchanted creature is dealt damage, destroy it.

View File

@@ -3,7 +3,7 @@ ManaCost:1 B
Types:Enchantment
T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Creature.nonBlack |TriggerZones$ Battlefield | Execute$ TrigSac | TriggerDescription$ When a nonblack creature enters the battlefield, sacrifice Grave Peril. If you do, destroy that creature.
SVar:TrigSac:DB$ SacrificeAll | ValidCards$ Card.Self | SubAbility$ DBDestroy | RememberSacrificed$ True
SVar:DBDestroy:DB$ Destroy | Defined$ TriggeredCard | ConditionDefined$ Remembered | ConditionPresent$ Card
SVar:DBDestroy:DB$ Destroy | Defined$ TriggeredCardLKICopy | ConditionDefined$ Remembered | ConditionPresent$ Card
SVar:NonStackingEffect:True
AI:RemoveDeck:Random
SVar:Picture:http://www.wizards.com/global/images/magic/general/grave_peril.jpg

View File

@@ -3,6 +3,6 @@ ManaCost:no cost
Types:Vanguard
HandLifeModifier:-1/+2
T:Mode$ DamageDone | ValidSource$ Creature.YouCtrl | ValidTarget$ Creature | TriggerZones$ Command | Execute$ TrigDestroy | TriggerDescription$ Whenever a creature you control deals damage to a creature, destroy the other creature. It can't be regenerated.
SVar:TrigDestroy:DB$ Destroy | Defined$ TriggeredTarget | NoRegen$ True
SVar:TrigDestroy:DB$ Destroy | Defined$ TriggeredTargetLKICopy | NoRegen$ True
SVar:Picture:https://downloads.cardforge.org/images/cards/VAN/Greven il-Vec.full.jpg
Oracle:Hand -1, life +2\nWhenever a creature you control deals damage to a creature, destroy the other creature. It can't be regenerated.

View File

@@ -3,7 +3,7 @@ ManaCost:4 B
Types:Creature Zombie
PT:3/3
T:Mode$ DamageDone | ValidSource$ Card.Self | ValidTarget$ Creature | CombatDamage$ True | TriggerZones$ Battlefield | Execute$ TrigDestroy | TriggerDescription$ Whenever CARDNAME deals combat damage to a creature, destroy that creature. It can't be regenerated.
SVar:TrigDestroy:DB$Destroy | Defined$ TriggeredTarget | NoRegen$ True
SVar:TrigDestroy:DB$ Destroy | Defined$ TriggeredTargetLKICopy | NoRegen$ True
A:AB$ Pump | Cost$ Discard<1/Card> | Defined$ Self | KW$ Flying | SubAbility$ DBProtect | SpellDescription$ CARDNAME gains flying and protection from green and from white until end of turn.
SVar:DBProtect:DB$ Protection | Defined$ Self | Gains$ green,white
Oracle:Whenever Grotesque Hybrid deals combat damage to a creature, destroy that creature. It can't be regenerated.\nDiscard a card: Grotesque Hybrid gains flying and protection from green and from white until end of turn.

View File

@@ -7,7 +7,7 @@ T:Mode$ Attacks | ValidCard$ Creature.YouCtrl+withDeathtouch | TriggerZones$ Bat
SVar:TrigLoseLife:DB$ LoseLife | Defined$ Opponent | LifeAmount$ 1 | SubAbility$ DBGainLife
SVar:DBGainLife:DB$ GainLife | LifeAmount$ 1
T:Mode$ DamageDone | ValidSource$ Creature.YouCtrl+withDeathtouch | ValidTarget$ Planeswalker | TriggerZones$ Battlefield | Execute$ TrigDestroy | TriggerDescription$ Whenever a creature you control with deathtouch deals damage to a planeswalker, destroy that planeswalker.
SVar:TrigDestroy:DB$ Destroy | Defined$ TriggeredTarget
SVar:TrigDestroy:DB$ Destroy | Defined$ TriggeredTargetLKICopy
SVar:PlayMain1:TRUE
DeckHas:Ability$LifeGain
DeckHints:Keyword$Deathtouch

View File

@@ -4,6 +4,6 @@ Types:Legendary Creature Spirit
PT:4/4
K:Flying
T:Mode$ BecomesTarget | ValidTarget$ Creature.inZoneBattlefield | TriggerZones$ Battlefield | Execute$ TrigDestroy | TriggerDescription$ Whenever a creature becomes the target of a spell or ability, destroy that creature.
SVar:TrigDestroy:DB$Destroy | Defined$ TriggeredTarget
SVar:TrigDestroy:DB$ Destroy | Defined$ TriggeredTargetLKICopy
SVar:Picture:http://www.wizards.com/global/images/magic/general/horobi_deaths_wail.jpg
Oracle:Flying\nWhenever a creature becomes the target of a spell or ability, destroy that creature.

View File

@@ -5,7 +5,7 @@ K:Equip:3
S:Mode$ Continuous | Affected$ Creature.EquippedBy | AddSVar$ HotSoupDestroy | AddHiddenKeyword$ Unblockable | Description$ Equipped creature can't be blocked.
SVar:HotSoupDestroy:SVar:DestroyWhenDamaged:True
T:Mode$ DamageDoneOnce | ValidTarget$ Creature.EquippedBy | Execute$ TrigDestroy | TriggerZones$ Battlefield | TriggerDescription$ When equipped creature is dealt damage, destroy it.
SVar:TrigDestroy:DB$ Destroy | Defined$ TriggeredTarget
SVar:TrigDestroy:DB$ Destroy | Defined$ TriggeredTargetLKICopy
SVar:NonStackingAttachEffect:True
SVar:Picture:http://www.wizards.com/global/images/magic/general/hot_soup.jpg
Oracle:Equipped creature can't be blocked.\nWhenever equipped creature is dealt damage, destroy it.\nEquip {3} ({3}: Attach to target creature you control. Equip only as a sorcery.)

View File

@@ -7,8 +7,8 @@ T:Mode$ AttackerBlockedByCreature | ValidCard$ Creature.EnchantedBy | ValidBlock
T:Mode$ AttackerBlockedByCreature | ValidCard$ Creature.toughnessLE3 | ValidBlocker$ Creature.EnchantedBy | Execute$ DelTrigBlocked | Secondary$ True | TriggerZones$ Battlefield | TriggerDescription$ Whenever enchanted creature blocks or becomes blocked by a creature with toughness 3 or less, destroy the other creature at end of combat. At the beginning of the next end step, if that creature was destroyed this way, put a +1/+1 counter on the first creature.
SVar:DelTrigBlocked:DB$ DelayedTrigger | Mode$ Phase | Phase$ EndCombat | ValidPlayer$ Player | Execute$ TrigDestroyBlocked | CopyTriggeringObjects$ True | TriggerDescription$ Destroy blocked creature at end of combat.
SVar:DelTrigBlocker:DB$ DelayedTrigger | Mode$ Phase | Phase$ EndCombat | ValidPlayer$ Player | Execute$ TrigDestroyBlocker | CopyTriggeringObjects$ True | TriggerDescription$ Destroy blocking creature at end of combat.
SVar:TrigDestroyBlocked:DB$ Destroy | Defined$ TriggeredAttacker | RememberDestroyed$ True | SubAbility$ DBDelTrigAttacker
SVar:TrigDestroyBlocker:DB$ Destroy | Defined$ TriggeredBlocker | RememberDestroyed$ True | SubAbility$ DBDelTrigBlocker
SVar:TrigDestroyBlocked:DB$ Destroy | Defined$ TriggeredAttackerLKICopy | RememberDestroyed$ True | SubAbility$ DBDelTrigAttacker
SVar:TrigDestroyBlocker:DB$ Destroy | Defined$ TriggeredBlockerLKICopy | RememberDestroyed$ True | SubAbility$ DBDelTrigBlocker
SVar:DBDelTrigAttacker:DB$ DelayedTrigger | Mode$ Phase | Phase$ End of Turn | Execute$ DBPutCounter | RememberObjects$ TriggeredBlocker | TriggerDescription$ At the beginning of the next end step, if that creature was destroyed this way, put a +1/+1 counter on the first creature. | ConditionDefined$ Remembered | ConditionPresent$ Card | ConditionCompare$ GE1 | SubAbility$ DBCleanup
SVar:DBDelTrigBlocker:DB$ DelayedTrigger | Mode$ Phase | Phase$ End of Turn | Execute$ DBPutCounter | RememberObjects$ TriggeredAttacker | TriggerDescription$ At the beginning of the next end step, if that creature was destroyed this way, put a +1/+1 counter on the first creature. | ConditionDefined$ Remembered | ConditionPresent$ Card | ConditionCompare$ GE1 | SubAbility$ DBCleanup
SVar:DBPutCounter:DB$ PutCounter | Defined$ DelayTriggerRemembered | CounterType$ P1P1 | CounterNum$ 1

View File

@@ -4,7 +4,7 @@ Types:Enchantment Aura
K:Enchant land
A:SP$ Attach | Cost$ 1 G G | ValidTgts$ Land | AILogic$ Curse
T:Mode$ Taps | ValidCard$ Card.AttachedBy | Execute$ TrigDestroy | TriggerDescription$ When enchanted land becomes tapped, destroy it. That land's controller may attach CARDNAME to a land of their choice.
SVar:TrigDestroy:DB$ Destroy | Defined$ TriggeredCard | SubAbility$ DBChoose
SVar:TrigDestroy:DB$ Destroy | Defined$ TriggeredCardLKICopy | SubAbility$ DBChoose
SVar:DBChoose:DB$ ChooseCard | Defined$ TriggeredCardController | Choices$ Land | AILogic$ OppPreferred | SubAbility$ DBAttach
SVar:DBAttach:DB$ Attach | Defined$ ChosenCard
SVar:NonStackingAttachEffect:True

View File

@@ -2,7 +2,7 @@ Name:Lethal Vapors
ManaCost:2 B B
Types:Enchantment
T:Mode$ ChangesZone | Destination$ Battlefield | ValidCard$ Creature | Execute$ TrigDestroy | TriggerZones$ Battlefield | TriggerDescription$ Whenever a creature enters the battlefield, destroy it.
SVar:TrigDestroy:DB$ Destroy | Defined$ TriggeredCard
SVar:TrigDestroy:DB$ Destroy | Defined$ TriggeredCardLKICopy
A:AB$ Destroy | Cost$ 0 | Defined$ Self | SubAbility$ DBSkipTurn | Activator$ Player | AILogic$ WillSkipTurn | SpellDescription$ Destroy CARDNAME. You skip your next turn. Any player may activate this ability.
SVar:DBSkipTurn:DB$ SkipTurn | Defined$ You | NumTurns$ 1 | AILogic$ Always
SVar:AICurseEffect:DestroyCreature

View File

@@ -3,7 +3,7 @@ ManaCost:W
Types:Creature Human Soldier
PT:1/1
T:Mode$ AttackerBlocked | ValidCard$ Creature | ValidBlocker$ Card.Self | Execute$ TrigDestroy | TriggerDescription$ When CARDNAME blocks a creature, destroy that creature and CARDNAME.
SVar:TrigDestroy:DB$Destroy | Defined$ TriggeredAttacker | SubAbility$ DestroySelf
SVar:TrigDestroy:DB$ Destroy | Defined$ TriggeredAttackerLKICopy | SubAbility$ DestroySelf
SVar:DestroySelf:DB$ Destroy | Defined$ Self
SVar:Picture:http://www.wizards.com/global/images/magic/general/loyal_sentry.jpg
Oracle:When Loyal Sentry blocks a creature, destroy that creature and Loyal Sentry.

View File

@@ -5,7 +5,7 @@ PT:0/5
S:Mode$ Continuous | Affected$ Card.Self | AddPower$ X | References$ X | Description$ CARDNAME gets +1/+0 for each artifact you control.
SVar:X:Count$Valid Artifact.YouCtrl
T:Mode$ DamageDone | ValidSource$ Card.Self | ValidTarget$ Creature | CombatDamage$ True | TriggerZones$ Battlefield | Execute$ TrigDestroy | TriggerDescription$ Whenever CARDNAME deals combat damage to a creature, destroy that creature. It can't be regenerated.
SVar:TrigDestroy:DB$Destroy | Defined$ TriggeredTarget | NoRegen$ True
SVar:TrigDestroy:DB$ Destroy | Defined$ TriggeredTargetLKICopy | NoRegen$ True
SVar:BuffedBy:Artifact
SVar:Picture:http://www.wizards.com/global/images/magic/general/mephitic_ooze.jpg
Oracle:Mephitic Ooze gets +1/+0 for each artifact you control.\nWhenever Mephitic Ooze deals combat damage to a creature, destroy that creature. The creature can't be regenerated.

View File

@@ -5,7 +5,7 @@ PT:5/5
K:Intimidate
T:Mode$ DamageDone | ValidSource$ Human | ValidTarget$ You | Execute$ TrigDestroy | TriggerZones$ Battlefield | TriggerDescription$ Whenever a Human deals damage to you, destroy it.
S:Mode$ Continuous | AffectedZone$ Battlefield | Affected$ Creature.nonHuman+Other+YouCtrl | AddPower$ 1 | AddToughness$ 1 | AddKeyword$ Undying | Description$ Other non-Human creatures you control get +1/+1 and have undying.
SVar:TrigDestroy:DB$Destroy | Defined$ TriggeredSource
SVar:TrigDestroy:DB$ Destroy | Defined$ TriggeredSourceLKICopy
SVar:PlayMain1:TRUE
SVar:Picture:http://www.wizards.com/global/images/magic/general/mikaeus_the_unhallowed.jpg
Oracle:Intimidate\nWhenever a Human deals damage to you, destroy it.\nOther non-Human creatures you control get +1/+1 and have undying. (When a creature with undying dies, if it had no +1/+1 counters on it, return it to the battlefield under its owner's control with a +1/+1 counter on it.)

View File

@@ -4,7 +4,7 @@ Types:Creature Dwarf
PT:1/1
A:AB$ PutCounter | Cost$ 1 R T | ValidTgts$ Land | TgtPrompt$ Select target land | CounterType$ MINE | CounterNum$ 1 | IsCurse$ True | SpellDescription$ Put a mine counter on target land.
T:Mode$ Taps | ValidCard$ Land.counters_GE1_MINE | TriggerZones$ Battlefield | Execute$ TrigDestroy | TriggerDescription$ Whenever a land with a mine counter on it becomes tapped, destroy it.
SVar:TrigDestroy:DB$Destroy | Defined$ TriggeredCard
SVar:TrigDestroy:DB$ Destroy | Defined$ TriggeredCardLKICopy
T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Any | ValidCard$ Card.Self | Execute$ TrigRemove | TriggerController$ TriggeredCardController | TriggerDescription$ When CARDNAME leaves the battlefield, remove all mine counters from all lands.
SVar:TrigRemove:DB$ RemoveCounterAll | ValidCards$ Land | CounterType$ MINE | AllCounters$ True
SVar:Picture:http://www.wizards.com/global/images/magic/general/mine_layer.jpg

View File

@@ -6,7 +6,7 @@ A:SP$ Attach | Cost$ B | ValidTgts$ Creature | AILogic$ Curse
S:Mode$ Continuous | Affected$ Creature.EnchantedBy | AddSVar$ MireDestroy
SVar:MireDestroy:SVar:DestroyWhenDamaged:True
T:Mode$ DamageDoneOnce | ValidTarget$ Creature.EnchantedBy | Execute$ TrigDestroy | TriggerZones$ Battlefield | TriggerDescription$ When enchanted creature is dealt damage, destroy it.
SVar:TrigDestroy:DB$ Destroy | Defined$ TriggeredTarget
SVar:TrigDestroy:DB$ Destroy | Defined$ TriggeredTargetLKICopy
SVar:NonStackingAttachEffect:True
SVar:Picture:http://www.wizards.com/global/images/magic/general/mire_blight.jpg
Oracle:Enchant creature\nWhen enchanted creature is dealt damage, destroy it.

View File

@@ -4,7 +4,7 @@ Types:Artifact Equipment
S:Mode$ Continuous | Affected$ Card.EquippedBy | AddToughness$ 2 | AddKeyword$ Hexproof | AddTrigger$ TrigBlocks & TrigBecomeBlocked | Description$ Equipped creature gets +0/+2 and has hexproof and "Whenever a creature with deathtouch blocks or becomes blocked by this creature, destroy that creature."
SVar:TrigBlocks:Mode$ AttackerBlockedByCreature | ValidCard$ Card.Self | ValidBlocker$ Creature.withDeathtouch | Execute$ TrigDestroyBlocker | TriggerZones$ Battlefield | TriggerDescription$ Whenever a creature with deathtouch blocks or becomes blocked by this creature, destroy that creature.
SVar:TrigBecomeBlocked:Mode$ AttackerBlockedByCreature | ValidCard$ Creature.withDeathtouch | ValidBlocker$ Card.Self | Execute$ TrigDestroyAttacker | TriggerZones$ Battlefield | Secondary$ True | TriggerDescription$ Whenever a creature with deathtouch blocks or becomes blocked by this creature, destroy that creature.
SVar:TrigDestroyBlocker:DB$ Destroy | Defined$ TriggeredBlocker
SVar:TrigDestroyAttacker:DB$ Destroy | Defined$ TriggeredAttacker
SVar:TrigDestroyBlocker:DB$ Destroy | Defined$ TriggeredBlockerLKICopy
SVar:TrigDestroyAttacker:DB$ Destroy | Defined$ TriggeredAttackerLKICopy
K:Equip:2
Oracle:Equipped creature gets +0/+2 and has hexproof and "Whenever a creature with deathtouch blocks or becomes blocked by this creature, destroy that creature."\nEquip {2} ({2}: Attach to target creature you control. Equip only as a sorcery.)

View File

@@ -6,7 +6,7 @@ A:SP$ Attach | Cost$ G | ValidTgts$ Creature | AILogic$ Curse
S:Mode$ Continuous | Affected$ Creature.EnchantedBy | AddSVar$ MortalDestroy
SVar:MortalDestroy:SVar:DestroyWhenDamaged:True
T:Mode$ DamageDoneOnce | ValidTarget$ Creature.EnchantedBy | Execute$ TrigDestroy | TriggerZones$ Battlefield | TriggerDescription$ When enchanted creature is dealt damage, destroy it.
SVar:TrigDestroy:DB$ Destroy | Defined$ TriggeredTarget
SVar:TrigDestroy:DB$ Destroy | Defined$ TriggeredTargetLKICopy
SVar:NonStackingAttachEffect:True
SVar:Picture:http://www.wizards.com/global/images/magic/general/mortal_wound.jpg
Oracle:Enchant creature\nWhen enchanted creature is dealt damage, destroy it.

View File

@@ -2,6 +2,6 @@ Name:No Mercy
ManaCost:2 B B
Types:Enchantment
T:Mode$ DamageDone | ValidSource$ Creature | ValidTarget$ You | Execute$ TrigDestroy | TriggerZones$ Battlefield | TriggerDescription$ Whenever a creature deals damage to you, destroy it.
SVar:TrigDestroy:DB$Destroy | Defined$ TriggeredSource
SVar:TrigDestroy:DB$ Destroy | Defined$ TriggeredSourceLKICopy
SVar:Picture:http://www.wizards.com/global/images/magic/general/no_mercy.jpg
Oracle:Whenever a creature deals damage to you, destroy it.

View File

@@ -3,8 +3,8 @@ ManaCost:3 R
Types:Enchantment
T:Mode$ AttackerBlockedByCreature | ValidCard$ Creature | ValidBlocker$ LessPowerThanAttacker | References$ AttackerPower | TriggerZones$ Battlefield | Execute$ DestroyBlocker | TriggerDescription$ Whenever a creature becomes blocked by a creature with lesser power, destroy the blocking creature.
T:Mode$ AttackerBlockedByCreature | ValidCard$ LessPowerThanBlocker | ValidBlocker$ Creature | References$ BlockerPower | TriggerZones$ Battlefield | Execute$ DestroyAttacker | TriggerDescription$ Whenever a creature blocks a creature with lesser power, destroy the attacking creature.
SVar:DestroyBlocker:DB$ Destroy | Defined$ TriggeredBlocker
SVar:DestroyAttacker:DB$ Destroy | Defined$ TriggeredAttacker
SVar:DestroyBlocker:DB$ Destroy | Defined$ TriggeredBlockerLKICopy
SVar:DestroyAttacker:DB$ Destroy | Defined$ TriggeredAttackerLKICopy
SVar:AttackerPower:Count$ TriggeredAttacker.Power
SVar:BlockerPower:Count$ TriggeredBlocker.Power
AI:RemoveDeck:Random

View File

@@ -3,6 +3,6 @@ ManaCost:4 R
Types:Creature Ogre
PT:3/3
T:Mode$ AttackerBlockedByCreature | ValidCard$ Card.Self | ValidBlocker$ Creature.Artifact | TriggerZones$ Battlefield | Execute$ TrigDestroy | TriggerDescription$ Whenever CARDNAME becomes blocked by an artifact creature, destroy that creature.
SVar:TrigDestroy:DB$Destroy | Defined$ TriggeredBlocker
SVar:TrigDestroy:DB$ Destroy | Defined$ TriggeredBlockerLKICopy
SVar:Picture:http://www.wizards.com/global/images/magic/general/ogre_leadfoot.jpg
Oracle:Whenever Ogre Leadfoot becomes blocked by an artifact creature, destroy that creature.

View File

@@ -6,7 +6,6 @@ K:Fading:1
A:SP$ Attach | Cost$ 1 B | ValidTgts$ Creature | AILogic$ Pump
S:Mode$ Continuous | Affected$ Creature.EnchantedBy | AddPower$ 3 | AddToughness$ 2 | Description$ Enchanted creature gets +3/+2.
T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Any | ValidCard$ Card.Self | Execute$ TrigDestroy | TriggerController$ TriggeredCardController | TriggerDescription$ When CARDNAME leaves the battlefield, destroy enchanted creature. That creature can't be regenerated.
SVar:TrigDestroy:DB$DestroyAll | ValidCards$ Triggered.EnchantedBy | NoRegen$ True
SVar:TrigSac:DB$ Destroy | Sacrifice$ True | Defined$ AttachedBy TriggeredCardLKICopy | NoRegen$ True
AI:RemoveDeck:All
SVar:Picture:http://www.wizards.com/global/images/magic/general/parallax_dementia.jpg
Oracle:Enchant creature\nFading 1 (This enchantment enters the battlefield with one fade counter on it. At the beginning of your upkeep, remove a fade counter from it. If you can't, sacrifice it.)\nEnchanted creature gets +3/+2.\nWhen Parallax Dementia leaves the battlefield, destroy enchanted creature. That creature can't be regenerated.

View File

@@ -5,7 +5,7 @@ PT:4/4
T:Mode$ ChangesZone | ValidCard$ Card.wasNotCastFromHand+Self | Destination$ Battlefield | Execute$ TrigYouLose | TriggerDescription$ When CARDNAME enters the battlefield, if you didn't cast it from your hand, you lose the game.
SVar:TrigYouLose:DB$ LosesGame | Defined$ You
T:Mode$ DamageDone | ValidSource$ Card.Self | ValidTarget$ Creature | CombatDamage$ True | Execute$ TrigDestroy | TriggerDescription$ Whenever CARDNAME deals combat damage to a creature, destroy that creature. It can't be regenerated.
SVar:TrigDestroy:DB$ Destroy | Defined$ TriggeredTarget | NoRegen$ True
SVar:TrigDestroy:DB$ Destroy | Defined$ TriggeredTargetLKICopy | NoRegen$ True
T:Mode$ DamageDone | ValidSource$ Card.Self | ValidTarget$ Player | CombatDamage$ True | Execute$ TrigTheyLose | TriggerDescription$ Whenever Phage deals combat damage to a player, that player loses the game.
SVar:TrigTheyLose:DB$ LosesGame | Defined$ TriggeredTarget
SVar:MustBeBlocked:True

View File

@@ -4,9 +4,9 @@ Types:Vanguard
HandLifeModifier:+0/-5
A:AB$ Effect | Cost$ PayLife<1> | ActivationZone$ Command | Triggers$ TrigPhageDestroy | SVars$ PhageAvatarDestroy | References$ TrigPhageDestroy,PhageAvatarDestroy | SpellDescription$ Until end of turn, whenever a creature deals combat damage to you, destroy that creature.
SVar:TrigPhageDestroy:Mode$ DamageDone | ValidSource$ Creature | ValidTarget$ You | TriggerZones$ Command | CombatDamage$ True | Execute$ PhageAvatarDestroy | TriggerDescription$ Whenever a creature deals combat damage to you, destroy that creature.
SVar:PhageAvatarDestroy:DB$ Destroy | Defined$ TriggeredSource
SVar:PhageAvatarDestroy:DB$ Destroy | Defined$ TriggeredSourceLKICopy
A:AB$ Effect | Cost$ PayLife<1> | ActivationZone$ Command | ValidTgts$ Creature.YouCtrl | TgtPrompt$ Select target creature you control | Triggers$ TrigPhageCreature | SVars$ PhageAvatarDestroy2 | RememberObjects$ Targeted | References$ TrigPhageCreature,PhageAvatarDestroy2 | SpellDescription$ Until end of turn, whenever target creature you control deals combat damage to a creature, destroy the damaged creature.
SVar:TrigPhageCreature:Mode$ DamageDone | ValidSource$ Creature.IsRemembered | ValidTarget$ Creature | TriggerZones$ Command | CombatDamage$ True | Execute$ PhageAvatarDestroy2 | TriggerDescription$ Whenever target creature you control deals combat damage to a creature, destroy the damaged creature.
SVar:PhageAvatarDestroy2:DB$ Destroy | Defined$ TriggeredTarget
SVar:PhageAvatarDestroy2:DB$ Destroy | Defined$ TriggeredTargetLKICopy
SVar:Picture:https://downloads.cardforge.org/images/cards/VAN/Phage the Untouchable Avatar.full.jpg
Oracle:Hand +0, life -5\nPay 1 life: Until end of turn, whenever a creature deals combat damage to you, destroy that creature.\nPay 1 life: Until end of turn, whenever target creature you control deals combat damage to a creature, destroy the damaged creature.

View File

@@ -3,6 +3,6 @@ ManaCost:4 B
Types:Creature Zombie
PT:3/3
T:Mode$ AttackerBlocked | ValidCard$ Card.Self | ValidBlocker$ Creature.Green | Execute$ TrigDestroyBlocker | TriggerDescription$ Whenever CARDNAME becomes blocked by a green creature, destroy that creature. It can't be regenerated.
SVar:TrigDestroyBlocker:DB$Destroy | Defined$ TriggeredBlocker | NoRegen$ True
SVar:TrigDestroyBlocker:DB$ Destroy | Defined$ TriggeredBlockerLKICopy | NoRegen$ True
SVar:Picture:http://www.wizards.com/global/images/magic/general/phyrexian_reaper.jpg
Oracle:Whenever Phyrexian Reaper becomes blocked by a green creature, destroy that creature. It can't be regenerated.

View File

@@ -4,7 +4,7 @@ Types:Creature Minion
PT:2/2
K:Flying
T:Mode$ AttackerBlocked | ValidCard$ Card.Self | ValidBlocker$ Creature.White | Execute$ TrigDestroyBlocker | TriggerDescription$ Whenever CARDNAME becomes blocked by a white creature, destroy that creature. It can't be regenerated.
SVar:TrigDestroyBlocker:DB$Destroy | Defined$ TriggeredBlocker | NoRegen$ True
SVar:TrigDestroyBlocker:DB$ Destroy | Defined$ TriggeredBlockerLKICopy | NoRegen$ True
AI:RemoveDeck:Random
SVar:Picture:http://www.wizards.com/global/images/magic/general/phyrexian_slayer.jpg
Oracle:Flying\nWhenever Phyrexian Slayer becomes blocked by a white creature, destroy that creature. It can't be regenerated.

View File

@@ -3,6 +3,6 @@ ManaCost:1 B
Types:Creature Insect
PT:1/1
T:Mode$ DamageDone | ValidSource$ Card.Self | ValidTarget$ Creature | CombatDamage$ True | TriggerZones$ Battlefield | Execute$ TrigDestroy | TriggerDescription$ Whenever CARDNAME deals combat damage to a creature, destroy that creature unless its controller pays {2}.
SVar:TrigDestroy:DB$Destroy | Defined$ TriggeredTarget | UnlessCost$ 2 | UnlessPayer$ TriggeredTargetController
SVar:TrigDestroy:DB$ Destroy | Defined$ TriggeredTargetLKICopy | UnlessCost$ 2 | UnlessPayer$ TriggeredTargetController
SVar:Picture:http://www.wizards.com/global/images/magic/general/plague_fiend.jpg
Oracle:Whenever Plague Fiend deals combat damage to a creature, destroy that creature unless its controller pays {2}.

View File

@@ -2,7 +2,7 @@ Name:Price of Glory
ManaCost:2 R
Types:Enchantment
T:Mode$ TapsForMana | ValidCard$ Land | Execute$ TrigDestroy | TriggerZones$ Battlefield | Activator$ Player.NonActive | TriggerDescription$ Whenever a player taps a land for mana, if it's not that player's turn, destroy that land.
SVar:TrigDestroy:DB$ Destroy | Defined$ TriggeredCard
SVar:TrigDestroy:DB$ Destroy | Defined$ TriggeredCardLKICopy
SVar:AICurseEffect:NonActive
AI:RemoveDeck:All
SVar:Picture:http://www.wizards.com/global/images/magic/general/price_of_glory.jpg

View File

@@ -1,9 +1,9 @@
Name:Puppet's Verdict
ManaCost:1 R R
Types:Instant
A:SP$ FlipACoin | Cost$ 1 R R | WinSubAbility$ DBDestorySmall | LoseSubAbility$ DBDestoryBig | SpellDescription$ Flip a coin. If you win the flip, destroy all creatures with power 2 or less. If you lose the flip, destroy all creatures with power 3 or greater.
SVar:DBDestorySmall:DB$ DestroyAll | ValidCards$ Creature.powerLE2
SVar:DBDestoryBig:DB$ DestroyAll | ValidCards$ Creature.powerGE3
A:SP$ FlipACoin | Cost$ 1 R R | WinSubAbility$ DBDestroySmall | LoseSubAbility$ DBDestroyBig | SpellDescription$ Flip a coin. If you win the flip, destroy all creatures with power 2 or less. If you lose the flip, destroy all creatures with power 3 or greater.
SVar:DBDestroySmall:DB$ DestroyAll | ValidCards$ Creature.powerLE2
SVar:DBDestroyBig:DB$ DestroyAll | ValidCards$ Creature.powerGE3
AI:RemoveDeck:All
SVar:Picture:http://www.wizards.com/global/images/magic/general/puppets_verdict.jpg
Oracle:Flip a coin. If you win the flip, destroy all creatures with power 2 or less. If you lose the flip, destroy all creatures with power 3 or greater.

View File

@@ -5,6 +5,5 @@ K:Enchant permanent
K:Vanishing:3
A:SP$ Attach | Cost$ 2 U | ValidTgts$ Permanent | TgtPrompt$ Select target permanent | AILogic$ Curse
T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Any | ValidCard$ Card.Self | Execute$ TrigSac | TriggerController$ TriggeredCardController | TriggerDescription$ When CARDNAME leaves the battlefield, enchanted permanent's controller sacrifices it.
SVar:TrigSac:DB$ SacrificeAll | ValidCards$ Triggered.EnchantedBy
SVar:Picture:http://www.wizards.com/global/images/magic/general/reality_acid.jpg
SVar:TrigSac:DB$ Destroy | Sacrifice$ True | Defined$ AttachedBy TriggeredCardLKICopy
Oracle:Enchant permanent\nVanishing 3 (This permanent enters the battlefield with three time counters on it. At the beginning of your upkeep, remove a time counter from it. When the last is removed, sacrifice it.)\nWhen Reality Acid leaves the battlefield, enchanted permanent's controller sacrifices it.

View File

@@ -6,7 +6,7 @@ A:SP$ Charm | Cost$ 2 B B | Choices$ DBEffect,DBEffect2 | CharmNum$ 1
SVar:DBEffect:DB$ Effect | Name$ Shriveling Rot Effect | Triggers$ Trig1 | SVars$ SVar1 | SpellDescription$ Until end of turn, whenever a creature is dealt damage, destroy it.
SVar:DBEffect2:DB$ Effect | Name$ Shriveling Rot Effect 2 | Triggers$ Trig2 | SVars$ SVar2,X | SpellDescription$ Until end of turn, whenever a creature dies, that creature's controller loses life equal to its toughness.
SVar:Trig1:Mode$ DamageDoneOnce | ValidTarget$ Creature | Execute$ SVar1 | TriggerDescription$ Whenever a creature is dealt damage, destroy it.
SVar:SVar1:DB$ Destroy | Defined$ TriggeredTarget
SVar:SVar1:DB$ Destroy | Defined$ TriggeredTargetLKICopy
SVar:Trig2:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Graveyard | ValidCard$ Creature | Execute$ SVar2 | TriggerDescription$ Whenever a creature dies, that creature's controller loses life equal to its toughness.
SVar:SVar2:DB$ LoseLife | Defined$ TriggeredCardController | LifeAmount$ X | References$ X
SVar:X:TriggeredCard$CardToughness

View File

@@ -2,8 +2,8 @@ Name:Slayer of the Wicked
ManaCost:3 W
Types:Creature Human Soldier
PT:3/2
T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigDestory | OptionalDecider$ You | TriggerDescription$ When CARDNAME enters the battlefield, you may destroy target Vampire, Werewolf, or Zombie.
SVar:TrigDestory:DB$ Destroy | ValidTgts$ Creature.Vampire,Creature.Werewolf,Creature.Zombie | TgtPrompt$ Select target Vampire, Werewolf, or Zombie
T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigDestroy | OptionalDecider$ You | TriggerDescription$ When CARDNAME enters the battlefield, you may destroy target Vampire, Werewolf, or Zombie.
SVar:TrigDestroy:DB$ Destroy | ValidTgts$ Creature.Vampire,Creature.Werewolf,Creature.Zombie | TgtPrompt$ Select target Vampire, Werewolf, or Zombie
SVar:PlayMain1:TRUE
SVar:Picture:http://www.wizards.com/global/images/magic/general/slayer_of_the_wicked.jpg
Oracle:When Slayer of the Wicked enters the battlefield, you may destroy target Vampire, Werewolf, or Zombie.

View File

@@ -5,6 +5,6 @@ K:Enchant creature
A:SP$ Attach | Cost$ 1 B | ValidTgts$ Creature | AILogic$ Pump
S:Mode$ Continuous | Affected$ Creature.EnchantedBy | AddPower$ 3 | AddToughness$ 3 | Description$ Enchanted creature gets +3/+3.
T:Mode$ BecomesTarget | ValidTarget$ Card.AttachedBy | TriggerZones$ Battlefield | Execute$ TrigDestroy | TriggerDescription$ When enchanted creature becomes the target of a spell or ability, destroy that creature. It can't be regenerated.
SVar:TrigDestroy:DB$Destroy | Defined$ TriggeredTarget | NoRegen$ True
SVar:TrigDestroy:DB$ Destroy | Defined$ TriggeredTargetLKICopy | NoRegen$ True
SVar:Picture:http://www.wizards.com/global/images/magic/general/spinal_graft.jpg
Oracle:Enchant creature\nEnchanted creature gets +3/+3.\nWhen enchanted creature becomes the target of a spell or ability, destroy that creature. It can't be regenerated.

View File

@@ -4,7 +4,7 @@ Types:Enchantment Aura
K:Enchant Swamp
A:SP$ Attach | Cost$ G | ValidTgts$ Swamp | AILogic$ Curse
T:Mode$ Taps | ValidCard$ Card.AttachedBy | Execute$ TrigDestroy | TriggerDescription$ When enchanted land becomes tapped, destroy it.
SVar:TrigDestroy:DB$ Destroy | Defined$ TriggeredCard
SVar:TrigDestroy:DB$ Destroy | Defined$ TriggeredCardLKICopy
T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Graveyard | ValidCard$ Card.Self | Execute$ TrigChangeZone | TriggerController$ TriggeredCardController | TriggerDescription$ When CARDNAME is put into a graveyard from the battlefield, return CARDNAME to its owner's hand.
SVar:TrigChangeZone:DB$ ChangeZone | Origin$ Graveyard | Destination$ Hand | Defined$ TriggeredCardLKICopy
SVar:SacMe:2

View File

@@ -4,7 +4,7 @@ Types:Enchantment Aura
K:Enchant land
A:SP$ Attach | Cost$ 1 R R | ValidTgts$ Land | AILogic$ Curse
T:Mode$ Taps | ValidCard$ Card.AttachedBy | Execute$ TrigDestroy | TriggerDescription$ When enchanted land becomes tapped, destroy it and CARDNAME deals 1 damage to that land's controller. That player attaches CARDNAME to a land of their choice.
SVar:TrigDestroy:DB$ Destroy | Defined$ TriggeredCard | SubAbility$ DBDmg
SVar:TrigDestroy:DB$ Destroy | Defined$ TriggeredCardLKICopy | SubAbility$ DBDmg
SVar:DBDmg:DB$ DealDamage | Defined$ TriggeredCardController | NumDmg$ 1 | SubAbility$ DBChoose
SVar:DBChoose:DB$ ChooseCard | Defined$ TriggeredCardController | Choices$ Land | AILogic$ OppPreferred | Mandatory$ True | Amount$ 1 | SubAbility$ DBAttach
SVar:DBAttach:DB$ Attach | Object$ Self | Defined$ ChosenCard

View File

@@ -4,6 +4,6 @@ Types:Creature Imp
PT:1/2
K:Flying
T:Mode$ DamageDone | ValidSource$ Card.Self | ValidTarget$ Creature | CombatDamage$ True | TriggerZones$ Battlefield | Execute$ TrigDestroy | TriggerDescription$ Whenever CARDNAME deals combat damage to a creature, destroy that creature.
SVar:TrigDestroy:DB$ Destroy | Defined$ TriggeredTarget
SVar:TrigDestroy:DB$ Destroy | Defined$ TriggeredTargetLKICopy
K:Dredge:5
Oracle:Flying\nWhenever Stinkweed Imp deals combat damage to a creature, destroy that creature.\nDredge 5 (If you would draw a card, you may mill five cards instead. If you do, return this card from your graveyard to your hand.)

View File

@@ -4,7 +4,7 @@ Types:Enchantment
T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigDestroyAll | TriggerDescription$ When CARDNAME enters the battlefield, destroy all Djinns and Efreets. They can't be regenerated.
SVar:TrigDestroyAll:DB$ DestroyAll | ValidCards$ Djinn,Efreet | NoRegen$ True
T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Djinn,Efreet | TriggerZones$ Battlefield | Execute$ TrigDestroy | TriggerDescription$ Whenever a Djinn or Efreet enters the battlefield, destroy it. It can't be regenerated.
SVar:TrigDestroy:DB$Destroy | Defined$ TriggeredCard | NoRegen$ True
SVar:TrigDestroy:DB$ Destroy | Defined$ TriggeredCardLKICopy | NoRegen$ True
AI:RemoveDeck:Random
SVar:NonStackingEffect:True
SVar:Picture:http://www.wizards.com/global/images/magic/general/suleimans_legacy.jpg

View File

@@ -3,6 +3,6 @@ ManaCost:3 G G
Types:Creature Basilisk
PT:2/4
T:Mode$ AttackerBlockedByCreature | ValidCard$ Card.Self | ValidBlocker$ Creature | Execute$ TrigDestroyBlocker | TriggerDescription$ Whenever CARDNAME becomes blocked by a creature, destroy that creature.
SVar:TrigDestroyBlocker:DB$Destroy | Defined$ TriggeredBlocker
SVar:TrigDestroyBlocker:DB$ Destroy | Defined$ TriggeredBlockerLKICopy
SVar:Picture:http://www.wizards.com/global/images/magic/general/sylvan_basilisk.jpg
Oracle:Whenever Sylvan Basilisk becomes blocked by a creature, destroy that creature.

View File

@@ -5,7 +5,7 @@ PT:4/4
K:Vigilance
K:Protection from creatures
T:Mode$ DamageDone | ValidSource$ Creature | ValidTarget$ You | CombatDamage$ True | Execute$ TrigDestroy | TriggerZones$ Battlefield | TriggerDescription$ Whenever a creature deals combat damage to you, destroy that creature. Create a 1/1 white and black Spirit creature token with flying.
SVar:TrigDestroy:DB$ Destroy | Defined$ TriggeredSource | SubAbility$ DBToken
SVar:TrigDestroy:DB$ Destroy | Defined$ TriggeredSourceLKICopy | SubAbility$ DBToken
SVar:DBToken:DB$ Token | TokenAmount$ 1 | TokenScript$ wb_1_1_spirit_flying | TokenOwner$ You | LegacyImage$ wb 1 1 spirit flying dgm
DeckHas:Ability$Token
SVar:Picture:http://www.wizards.com/global/images/magic/general/teysa_envoy_of_ghosts.jpg

View File

@@ -3,7 +3,7 @@ ManaCost:3 B
Types:Creature Sliver
PT:3/3
T:Mode$ DamageDone | ValidSource$ Sliver | ValidTarget$ Creature | CombatDamage$ True | TriggerZones$ Battlefield | Execute$ TrigDestroy | TriggerDescription$ Whenever a Sliver deals combat damage to a creature, destroy that creature. It can't be regenerated.
SVar:TrigDestroy:DB$Destroy | Defined$ TriggeredTarget | NoRegen$ True
SVar:TrigDestroy:DB$ Destroy | Defined$ TriggeredTargetLKICopy | NoRegen$ True
SVar:PlayMain1:TRUE
SVar:Picture:http://www.wizards.com/global/images/magic/general/toxin_sliver.jpg
Oracle:Whenever a Sliver deals combat damage to a creature, destroy that creature. It can't be regenerated.

View File

@@ -4,7 +4,7 @@ Types:Enchantment Aura
K:Enchant nonbasic land
A:SP$ Attach | Cost$ 1 R | ValidTgts$ Land.nonBasic | TgtPrompt$ Select target nonbasic land. | AILogic$ Curse
T:Mode$ Taps | ValidCard$ Card.AttachedBy | Execute$ TrigDestroy | TriggerDescription$ When enchanted land becomes tapped, destroy it.
SVar:TrigDestroy:DB$Destroy | Defined$ TriggeredCard
SVar:TrigDestroy:DB$ Destroy | Defined$ TriggeredCardLKICopy
SVar:NonStackingAttachEffect:True
SVar:Picture:http://www.wizards.com/global/images/magic/general/uncontrolled_infestation.jpg
Oracle:Enchant nonbasic land\nWhen enchanted land becomes tapped, destroy it.

View File

@@ -4,7 +4,7 @@ Types:Enchantment Aura
K:Enchant creature
A:SP$ Attach | Cost$ 2 G | ValidTgts$ Creature | AILogic$ Pump
T:Mode$ DamageDone | ValidSource$ Card.AttachedBy | ValidTarget$ Creature | TriggerZones$ Battlefield | Execute$ TrigDestroy | TriggerDescription$ Whenever enchanted creature deals damage to a creature, destroy the other creature.
SVar:TrigDestroy:DB$Destroy | Defined$ TriggeredTarget
SVar:TrigDestroy:DB$ Destroy | Defined$ TriggeredTargetLKICopy
SVar:NonStackingAttachEffect:True
SVar:Picture:http://www.wizards.com/global/images/magic/general/venomous_fangs.jpg
Oracle:Enchant creature\nWhenever enchanted creature deals damage to a creature, destroy the other creature.

View File

@@ -4,6 +4,6 @@ Types:Creature Snake
PT:2/2
K:First Strike
T:Mode$ DamageDone | ValidSource$ Card.Self | ValidTarget$ Creature | CombatDamage$ True | TriggerZones$ Battlefield | Execute$ TrigDestroy | TriggerDescription$ Whenever CARDNAME deals combat damage to a creature, destroy that creature.
SVar:TrigDestroy:DB$Destroy | Defined$ TriggeredTarget
SVar:TrigDestroy:DB$ Destroy | Defined$ TriggeredTargetLKICopy
SVar:Picture:http://www.wizards.com/global/images/magic/general/voracious_cobra.jpg
Oracle:First strike\nWhenever Voracious Cobra deals combat damage to a creature, destroy that creature.

View File

@@ -4,7 +4,7 @@ Types:Legendary Planeswalker Vraska
Loyalty:5
A:AB$ Animate | Cost$ AddCounter<1/LOYALTY> | Planeswalker$ True | Defined$ Self | Triggers$ TrigVraska | sVars$ VraskaGaze | UntilYourNextTurn$ True | AILogic$ EOT | SpellDescription$ Until your next turn, whenever a creature deals combat damage to CARDNAME, destroy that creature. | StackDescription$ Until your next turn, whenever a creature deals combat damage to CARDNAME, destroy that creature.
SVar:TrigVraska:Mode$ DamageDone | ValidSource$ Creature | ValidTarget$ Card.Self | TriggerZones$ Battlefield | CombatDamage$ True | Execute$ VraskaGaze | TriggerDescription$ Until your next turn, whenever a creature deals combat damage to CARDNAME, destroy that creature.
SVar:VraskaGaze:DB$ Destroy | Defined$ TriggeredSource
SVar:VraskaGaze:DB$ Destroy | Defined$ TriggeredSourceLKICopy
A:AB$ Destroy | Cost$ SubCounter<3/LOYALTY> | Planeswalker$ True | ValidTgts$ Permanent.nonLand | TgtPrompt$ Select target nonland permanent | SpellDescription$ Destroy target nonland permanent.
A:AB$ Token | Cost$ SubCounter<7/LOYALTY> | Planeswalker$ True | Ultimate$ True | TokenAmount$ 3 | TokenScript$ b_1_1_assassin_lose_con | TokenOwner$ You | LegacyImage$ b 1 1 assassin lose con rtr | SpellDescription$ Create three 1/1 black Assassin creature tokens with "Whenever this creature deals combat damage to a player, that player loses the game."
SVar:Picture:http://www.wizards.com/global/images/magic/general/vraska_the_unseen.jpg

View File

@@ -5,7 +5,7 @@ K:Equip:1
S:Mode$ Continuous | Affected$ Creature.EquippedBy | AddPower$ 1 | Description$ Equipped creature gets +1/+0.
T:Mode$ AttackerBlockedByCreature | ValidCard$ Creature.Vampire | ValidBlocker$ Card.AttachedBy | Execute$ TrigDestroyBlocked | TriggerDescription$ Whenever equipped creature blocks or becomes blocked by a Vampire, destroy that creature. It can't be regenerated.
T:Mode$ AttackerBlockedByCreature | ValidCard$ Card.AttachedBy | ValidBlocker$ Creature.Vampire | Execute$ TrigDestroyBlocker | Secondary$ True | TriggerDescription$ Whenever equipped creature blocks or becomes blocked by a Vampire, destroy that creature. It can't be regenerated.
SVar:TrigDestroyBlocked:DB$ Destroy | Defined$ TriggeredAttacker | NoRegen$ True
SVar:TrigDestroyBlocker:DB$ Destroy | Defined$ TriggeredBlocker | NoRegen$ True
SVar:TrigDestroyBlocked:DB$ Destroy | Defined$ TriggeredAttackerLKICopy | NoRegen$ True
SVar:TrigDestroyBlocker:DB$ Destroy | Defined$ TriggeredBlockerLKICopy | NoRegen$ True
SVar:Picture:http://www.wizards.com/global/images/magic/general/wooden_stake.jpg
Oracle:Equipped creature gets +1/+0.\nWhenever equipped creature blocks or becomes blocked by a Vampire, destroy that creature. It can't be regenerated.\nEquip {1} ({1}: Attach to target creature you control. Equip only as a sorcery.)

View File

@@ -9,7 +9,7 @@ S:Mode$ ReduceCost | ValidCard$ Card.Self | Type$ Spell | Amount$ X | EffectZone
SVar:X:Count$Party
S:Mode$ Continuous | Affected$ Creature.Other+YouCtrl | AddKeyword$ Deathtouch | Description$ Other creatures you control have deathtouch.
T:Mode$ DamageDone | ValidSource$ Creature.YouCtrl | ValidTarget$ Planeswalker | CombatDamage$ True | TriggerZones$ Battlefield | Execute$ TrigDestroy | TriggerDescription$ Whenever a creature you control deals combat damage to a planeswalker, destroy that planeswalker.
SVar:TrigDestroy:DB$ Destroy | Defined$ TriggeredTarget
SVar:TrigDestroy:DB$ Destroy | Defined$ TriggeredTargetLKICopy
DeckHas:Ability$Party
DeckHints:Type$Cleric|Warrior|Wizard
Oracle:This spell costs 1 less to cast for each creature in your party.\nFlying, deathtouch, haste \nOther creatures you control have deathtouch.\nWhenever a creature you control deals combat damage to a planeswalker, destroy that planeswalker.

View File

@@ -5,7 +5,7 @@ PT:3/3
A:AB$ ChooseColor | Cost$ 1 B | Defined$ You | AILogic$ MostProminentInHumanDeck | SorcerySpeed$ True | SubAbility$ DBEffect | SpellDescription$ Choose a color. Whenever CARDNAME becomes blocked by a creature of that color this turn, destroy that creature. Activate this ability only any time you could cast a sorcery.
SVar:DBEffect:DB$ Effect | Name$ Zombie Boa Effect | Triggers$ TrigBlocked | SVars$ ABDestroy | References$ TrigBlocked,ABDestroy | RememberObjects$ Self
SVar:TrigBlocked:Mode$ AttackerBlockedByCreature | ValidCard$ Creature.IsRemembered | ValidBlocker$ Creature.ChosenColor | Execute$ ABDestroy | TriggerDescription$ Whenever Zombie Boa becomes blocked by a creature of the chosen color this turn, destroy that creature.
SVar:ABDestroy:DB$ Destroy | Defined$ TriggeredBlocker
SVar:ABDestroy:DB$ Destroy | Defined$ TriggeredBlockerLKICopy
AI:RemoveDeck:All
SVar:Picture:http://www.wizards.com/global/images/magic/general/zombie_boa.jpg
Oracle:{1}{B}: Choose a color. Whenever Zombie Boa becomes blocked by a creature of that color this turn, destroy that creature. Activate this ability only any time you could cast a sorcery.

View File

@@ -5,5 +5,5 @@ Colors:black
PT:1/1
K:Deathtouch
T:Mode$ DamageDone | ValidSource$ Card.Self | ValidTarget$ Planeswalker | TriggerZones$ Battlefield | Execute$ TrigDestroyPW | TriggerDescription$ Whenever this creature deals damage to a planeswalker, destroy that planeswalker.
SVar:TrigDestroyPW:DB$ Destroy | Defined$ TriggeredTarget
SVar:TrigDestroyPW:DB$ Destroy | Defined$ TriggeredTargetLKICopy
Oracle:Deathtouch\nWhenever this creature deals damage to a planeswalker, destroy that planeswalker.