YWOE high_fae_prankster.txt and support (#3921)

* high_fae_prankster.txt and support

* Perpetual rework

* fix imports

* fix imports

* 12/9 cards and tweaks

* fix absorb_energy

* tidy

* 12/10 updates

* 12/12 tweaks and fixes

* 12/13 tweaks

* last tweaks for this PR

* revert unneeded

* revert unneeded for real

* tidy executePerpetual

* cleanup imports

* tweaks 12/15

* fix imports

* LosePerpetualEffect

* cleanup import
This commit is contained in:
Northmoc
2023-12-16 14:25:41 -05:00
committed by GitHub
parent 848e756815
commit de851fc749
57 changed files with 368 additions and 195 deletions

View File

@@ -107,6 +107,7 @@ public enum SpellApiToAi {
.put(ApiType.Investigate, InvestigateAi.class) .put(ApiType.Investigate, InvestigateAi.class)
.put(ApiType.Learn, LearnAi.class) .put(ApiType.Learn, LearnAi.class)
.put(ApiType.LoseLife, LifeLoseAi.class) .put(ApiType.LoseLife, LifeLoseAi.class)
.put(ApiType.LosePerpetual, AlwaysPlayAi.class)
.put(ApiType.LosesGame, GameLossAi.class) .put(ApiType.LosesGame, GameLossAi.class)
.put(ApiType.MakeCard, AlwaysPlayAi.class) .put(ApiType.MakeCard, AlwaysPlayAi.class)
.put(ApiType.Mana, ManaEffectAi.class) .put(ApiType.Mana, ManaEffectAi.class)

View File

@@ -250,7 +250,7 @@ public final class CardType implements Comparable<CardType>, CardTypeView {
@Override @Override
public boolean isEmpty() { public boolean isEmpty() {
return coreTypes.isEmpty() && supertypes.isEmpty() && subtypes.isEmpty() && !excludedCreatureSubtypes.isEmpty(); return coreTypes.isEmpty() && supertypes.isEmpty() && subtypes.isEmpty() && excludedCreatureSubtypes.isEmpty();
} }
@Override @Override

View File

@@ -315,6 +315,16 @@ public class GameAction {
} }
} }
// perpetual stuff
if (c.hasIntensity()) {
copied.setIntensity(c.getIntensity(false));
}
if (c.isSpecialized()) {
copied.setState(c.getCurrentStateName(), false);
}
if (c.hasPerpetual()) {
copied.setPerpetual(c);
}
// ensure that any leftover keyword/type changes are cleared in the state view // ensure that any leftover keyword/type changes are cleared in the state view
copied.updateStateForView(); copied.updateStateForView();
@@ -577,15 +587,6 @@ public class GameAction {
copied.clearEtbCounters(); copied.clearEtbCounters();
} }
// intensity is perpetual
if (c.hasIntensity()) {
copied.setIntensity(c.getIntensity(false));
}
// specialize is perpetual
if (c.isSpecialized()) {
copied.setState(c.getCurrentStateName(), false);
}
// update state for view // update state for view
copied.updateStateForView(); copied.updateStateForView();

View File

@@ -2154,6 +2154,10 @@ public class AbilityUtils {
return doXMath(c.getRememberedCount(), expr, c, ctb); return doXMath(c.getRememberedCount(), expr, c, ctb);
} }
if (sq[0].startsWith("ChosenSize")) {
return doXMath(c.getChosenCards().size(), expr, c, ctb);
}
if (sq[0].startsWith("ImprintedSize")) { if (sq[0].startsWith("ImprintedSize")) {
return doXMath(c.getImprintedCards().size(), expr, c, ctb); return doXMath(c.getImprintedCards().size(), expr, c, ctb);
} }

View File

@@ -107,6 +107,7 @@ public enum ApiType {
Learn (LearnEffect.class), Learn (LearnEffect.class),
LookAt (LookAtEffect.class), LookAt (LookAtEffect.class),
LoseLife (LifeLoseEffect.class), LoseLife (LifeLoseEffect.class),
LosePerpetual (LosePerpetualEffect.class),
LosesGame (GameLossEffect.class), LosesGame (GameLossEffect.class),
MakeCard (MakeCardEffect.class), MakeCard (MakeCardEffect.class),
Mana (ManaEffect.class), Mana (ManaEffect.class),

View File

@@ -170,7 +170,8 @@ public abstract class SpellAbilityEffect {
if ("}".equals(t)) { isPlainText = true; continue; } if ("}".equals(t)) { isPlainText = true; continue; }
if (!isPlainText) { if (!isPlainText) {
if (t.startsWith("n:")) { // {n:<SVar> <noun(opt.)>} if (t.length() <= 2) sb.append("{").append(t).append("}"); // string includes mana cost (e.g. {2}{R})
else if (t.startsWith("n:")) { // {n:<SVar> <noun(opt.)>}
String parts[] = t.substring(2).split(" ", 2); String parts[] = t.substring(2).split(" ", 2);
int n = AbilityUtils.calculateAmount(sa.getHostCard(), parts[0], sa); int n = AbilityUtils.calculateAmount(sa.getHostCard(), parts[0], sa);
sb.append(parts.length == 1 ? Lang.getNumeral(n) : Lang.nounWithNumeral(n, parts[1])); sb.append(parts.length == 1 ? Lang.getNumeral(n) : Lang.nounWithNumeral(n, parts[1]));

View File

@@ -22,7 +22,7 @@ public class AnimateAllEffect extends AnimateEffectBase {
@Override @Override
protected String getStackDescription(SpellAbility sa) { protected String getStackDescription(SpellAbility sa) {
return "Animate all valid cards."; return sa.getParamOrDefault("SpellDescription", "Animate all valid cards.");
} }
@Override @Override
@@ -133,10 +133,12 @@ public class AnimateAllEffect extends AnimateEffectBase {
CardCollectionView list; CardCollectionView list;
ZoneType z = sa.hasParam("Zone") ? ZoneType.smartValueOf(sa.getParam("Zone")) : ZoneType.Battlefield;
if (sa.usesTargeting() || sa.hasParam("Defined")) { if (sa.usesTargeting() || sa.hasParam("Defined")) {
list = getTargetPlayers(sa).getCardsIn(ZoneType.Battlefield); list = getTargetPlayers(sa).getCardsIn(z);
} else { } else {
list = game.getCardsIn(ZoneType.Battlefield); list = game.getCardsIn(z);
} }
list = CardLists.getValidCards(list, valid, sa.getActivatingPlayer(), host, sa); list = CardLists.getValidCards(list, valid, sa.getActivatingPlayer(), host, sa);

View File

@@ -18,7 +18,9 @@
package forge.game.ability.effects; package forge.game.ability.effects;
import java.util.EnumSet; import java.util.EnumSet;
import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map;
import java.util.Set; import java.util.Set;
import com.google.common.collect.Lists; import com.google.common.collect.Lists;
@@ -52,6 +54,7 @@ public abstract class AnimateEffectBase extends SpellAbilityEffect {
final long timestamp, final String duration) { final long timestamp, final String duration) {
final Card source = sa.getHostCard(); final Card source = sa.getHostCard();
final Game game = source.getGame(); final Game game = source.getGame();
final boolean perpetual = "Perpetual".equals(duration);
boolean addAllCreatureTypes = sa.hasParam("AddAllCreatureTypes"); boolean addAllCreatureTypes = sa.hasParam("AddAllCreatureTypes");
@@ -79,15 +82,40 @@ public abstract class AnimateEffectBase extends SpellAbilityEffect {
} }
if (!addType.isEmpty() || !removeType.isEmpty() || addAllCreatureTypes || !remove.isEmpty()) { if (!addType.isEmpty() || !removeType.isEmpty() || addAllCreatureTypes || !remove.isEmpty()) {
if (perpetual) {
Map <String, Object> params = new HashMap<>();
params.put("AddTypes", addType);
params.put("RemoveTypes", removeType);
params.put("RemoveXTypes", remove);
params.put("Timestamp", timestamp);
params.put("Category", "Types");
c.addPerpetual(params);
}
c.addChangedCardTypes(addType, removeType, addAllCreatureTypes, remove, timestamp, 0, true, false); c.addChangedCardTypes(addType, removeType, addAllCreatureTypes, remove, timestamp, 0, true, false);
} }
if (!keywords.isEmpty() || !removeKeywords.isEmpty() || removeAll) { if (!keywords.isEmpty() || !removeKeywords.isEmpty() || removeAll) {
if (perpetual) {
Map <String, Object> params = new HashMap<>();
params.put("AddKeywords", keywords);
params.put("RemoveAll", removeAll);
params.put("Timestamp", timestamp);
params.put("Category", "Keywords");
c.addPerpetual(params);
}
c.addChangedCardKeywords(keywords, removeKeywords, removeAll, timestamp, 0); c.addChangedCardKeywords(keywords, removeKeywords, removeAll, timestamp, 0);
} }
// do this after changing types in case it wasn't a creature before // do this after changing types in case it wasn't a creature before
if (power != null || toughness != null) { if (power != null || toughness != null) {
if (perpetual) {
Map <String, Object> params = new HashMap<>();
params.put("Power", power);
params.put("Toughness", toughness);
params.put("Timestamp", timestamp);
params.put("Category", "NewPT");
c.addPerpetual(params);
}
c.addNewPT(power, toughness, timestamp, 0); c.addNewPT(power, toughness, timestamp, 0);
} }
@@ -184,10 +212,16 @@ public abstract class AnimateEffectBase extends SpellAbilityEffect {
|| !addedAbilities.isEmpty() || !removedAbilities.isEmpty() || !addedTriggers.isEmpty() || !addedAbilities.isEmpty() || !removedAbilities.isEmpty() || !addedTriggers.isEmpty()
|| !addedReplacements.isEmpty() || !addedStaticAbilities.isEmpty()) { || !addedReplacements.isEmpty() || !addedStaticAbilities.isEmpty()) {
c.addChangedCardTraits(addedAbilities, removedAbilities, addedTriggers, addedReplacements, c.addChangedCardTraits(addedAbilities, removedAbilities, addedTriggers, addedReplacements,
addedStaticAbilities, removeAll, removeNonManaAbilities, timestamp, 0); addedStaticAbilities, removeAll, removeNonManaAbilities, timestamp, 0);
if (perpetual) {
Map <String, Object> params = new HashMap<>();
params.put("Timestamp", timestamp);
params.put("Category", "Abilities");
c.addPerpetual(params);
}
} }
if (!"Permanent".equals(duration)) { if (!"Permanent".equals(duration) && !perpetual) {
if ("UntilControllerNextUntap".equals(duration)) { if ("UntilControllerNextUntap".equals(duration)) {
game.getUntap().addUntil(c.getController(), unanimate); game.getUntap().addUntil(c.getController(), unanimate);
} else { } else {

View File

@@ -45,7 +45,9 @@ public class ChooseCardEffect extends SpellAbilityEffect {
} }
sb.append(Lang.nounWithNumeralExceptOne(numCards, desc)); sb.append(Lang.nounWithNumeralExceptOne(numCards, desc));
if (sa.hasParam("FromDesc")) { if (sa.hasParam("FromDesc")) {
sb.append(" ").append(sa.getParam("FromDesc")); sb.append(" from ").append(sa.getParam("FromDesc"));
} else if (sa.hasParam("ChoiceZone") && sa.getParam("ChoiceZone").equals("Hand")) {
sb.append(" in their hand");
} }
sb.append("."); sb.append(".");

View File

@@ -24,6 +24,8 @@ public class DestroyEffect extends SpellAbilityEffect {
final StringBuilder sb = new StringBuilder(); final StringBuilder sb = new StringBuilder();
final List<Card> tgtCards = getTargetCards(sa); final List<Card> tgtCards = getTargetCards(sa);
// up to X targets and chose 0 or similar situations
if (tgtCards.isEmpty()) return sa.getParamOrDefault("SpellDescription", "");
final boolean justOne = tgtCards.size() == 1; final boolean justOne = tgtCards.size() == 1;
sb.append(sa.hasParam("Sacrifice") ? "Sacrifice " : "Destroy ").append(Lang.joinHomogenous(tgtCards)); sb.append(sa.hasParam("Sacrifice") ? "Sacrifice " : "Destroy ").append(Lang.joinHomogenous(tgtCards));

View File

@@ -0,0 +1,32 @@
package forge.game.ability.effects;
import com.google.common.collect.Table.Cell;
import forge.game.ability.SpellAbilityEffect;
import forge.game.card.Card;
import forge.game.card.CardTraitChanges;
import forge.game.spellability.SpellAbility;
import forge.game.trigger.Trigger;
public class LosePerpetualEffect extends SpellAbilityEffect {
@Override
public void resolve(SpellAbility sa) {
final Card host = sa.getHostCard();
long toRemove = (long) 0;
// currently only part of perpetual triggers... expand in future as needed
if (sa.getTrigger() != null) {
Trigger trig = sa.getTrigger();
for (Cell<Long, Long, CardTraitChanges> cell : host.getChangedCardTraits().cellSet()) {
if (cell.getValue().getTriggers().contains(trig)) {
toRemove = cell.getRowKey();
break;
}
}
if (toRemove != (long) 0) {
host.getChangedCardTraits().remove(toRemove, (long) 0);
host.removePerpetual(toRemove);
}
}
}
}

View File

@@ -1,6 +1,8 @@
package forge.game.ability.effects; package forge.game.ability.effects;
import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map;
import forge.GameCommand; import forge.GameCommand;
import forge.game.Game; import forge.game.Game;
@@ -34,6 +36,7 @@ public class PowerExchangeEffect extends SpellAbilityEffect {
*/ */
@Override @Override
public void resolve(SpellAbility sa) { public void resolve(SpellAbility sa) {
final boolean perpetual = "Perpetual".equals(sa.getParam("Duration"));
final Card source = sa.getHostCard(); final Card source = sa.getHostCard();
final Game game = source.getGame(); final Game game = source.getGame();
final Card c1; final Card c1;
@@ -51,18 +54,28 @@ public class PowerExchangeEffect extends SpellAbilityEffect {
if (!c1.isInPlay() || !c2.isInPlay()) { if (!c1.isInPlay() || !c2.isInPlay()) {
return; return;
} }
final int power1 = c1.getNetPower(); final boolean basePower = sa.hasParam("BasePower");
final int power2 = c2.getNetPower(); final int power1 = basePower ? c1.getCurrentPower() : c1.getNetPower();
final int power2 = basePower ? c2.getCurrentPower() : c2.getNetPower();
final long timestamp = game.getNextTimestamp(); final long timestamp = game.getNextTimestamp();
if (perpetual) {
Map <String, Object> params = new HashMap<>();
params.put("Power", power2);
params.put("Timestamp", timestamp);
params.put("Category", "NewPT");
c1.addPerpetual(params);
params.put("Power", power1);
c2.addPerpetual(params);
}
c1.addNewPT(power2, null, timestamp, 0); c1.addNewPT(power2, null, timestamp, 0);
c2.addNewPT(power1, null, timestamp, 0); c2.addNewPT(power1, null, timestamp, 0);
game.fireEvent(new GameEventCardStatsChanged(c1)); game.fireEvent(new GameEventCardStatsChanged(c1));
game.fireEvent(new GameEventCardStatsChanged(c2)); game.fireEvent(new GameEventCardStatsChanged(c2));
if (!"Permanent".equals(sa.getParam("Duration"))) { if (!"Permanent".equals(sa.getParam("Duration")) && !perpetual) {
// If not Permanent, remove Pumped at EOT // If not Permanent, remove Pumped at EOT
final GameCommand untilEOT = new GameCommand() { final GameCommand untilEOT = new GameCommand() {

View File

@@ -1,7 +1,9 @@
package forge.game.ability.effects; package forge.game.ability.effects;
import java.util.Arrays; import java.util.Arrays;
import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map;
import com.google.common.collect.Iterables; import com.google.common.collect.Iterables;
import com.google.common.collect.Lists; import com.google.common.collect.Lists;
@@ -27,6 +29,7 @@ public class PumpAllEffect extends SpellAbilityEffect {
final long timestamp = game.getNextTimestamp(); final long timestamp = game.getNextTimestamp();
final List<String> kws = Lists.newArrayList(); final List<String> kws = Lists.newArrayList();
final List<String> hiddenkws = Lists.newArrayList(); final List<String> hiddenkws = Lists.newArrayList();
final boolean perpetual = ("Perpetual").equals(sa.getParam("Duration"));
for (String kw : keywords) { for (String kw : keywords) {
if (kw.startsWith("HIDDEN")) { if (kw.startsWith("HIDDEN")) {
@@ -38,25 +41,33 @@ public class PumpAllEffect extends SpellAbilityEffect {
for (final Card tgtC : list) { for (final Card tgtC : list) {
// only pump things in the affected zones. // only pump things in the affected zones.
boolean found = false; if (!tgtC.isInZones(affectedZones)) {
for (final ZoneType z : affectedZones) {
if (tgtC.isInZone(z)) {
found = true;
break;
}
}
if (!found) {
continue; continue;
} }
boolean redrawPT = false; boolean redrawPT = false;
if (a != 0 || d != 0) { if (a != 0 || d != 0) {
if (perpetual) {
Map <String, Object> params = new HashMap<>();
params.put("Power", a);
params.put("Toughness", d);
params.put("Timestamp", timestamp);
params.put("Category", "PTBoost");
tgtC.addPerpetual(params);
}
tgtC.addPTBoost(a, d, timestamp, 0); tgtC.addPTBoost(a, d, timestamp, 0);
redrawPT = true; redrawPT = true;
} }
if (!kws.isEmpty()) { if (!kws.isEmpty()) {
if (perpetual) {
Map <String, Object> params = new HashMap<>();
params.put("AddKeywords", kws);
params.put("Timestamp", timestamp);
params.put("Category", "Keywords");
tgtC.addPerpetual(params);
}
tgtC.addChangedCardKeywords(kws, null, false, timestamp, 0); tgtC.addChangedCardKeywords(kws, null, false, timestamp, 0);
} }
if (redrawPT) { if (redrawPT) {
@@ -71,7 +82,7 @@ public class PumpAllEffect extends SpellAbilityEffect {
sa.getHostCard().addRemembered(tgtC); sa.getHostCard().addRemembered(tgtC);
} }
if (!"Permanent".equals(sa.getParam("Duration"))) { if (!"Permanent".equals(sa.getParam("Duration")) && !perpetual) {
// If not Permanent, remove Pumped at EOT // If not Permanent, remove Pumped at EOT
final GameCommand untilEOT = new GameCommand() { final GameCommand untilEOT = new GameCommand() {
private static final long serialVersionUID = 5415795460189457660L; private static final long serialVersionUID = 5415795460189457660L;

View File

@@ -1,7 +1,9 @@
package forge.game.ability.effects; package forge.game.ability.effects;
import java.util.Arrays; import java.util.Arrays;
import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
@@ -40,6 +42,7 @@ public class PumpEffect extends SpellAbilityEffect {
final Card host = sa.getHostCard(); final Card host = sa.getHostCard();
final Game game = host.getGame(); final Game game = host.getGame();
final String duration = sa.getParam("Duration"); final String duration = sa.getParam("Duration");
final boolean perpetual = ("Perpetual").equals(duration);
//if host is not on the battlefield don't apply //if host is not on the battlefield don't apply
// Suspend should does Affect the Stack // Suspend should does Affect the Stack
@@ -70,12 +73,28 @@ public class PumpEffect extends SpellAbilityEffect {
} }
if (a != 0 || d != 0) { if (a != 0 || d != 0) {
if (perpetual) {
Map <String, Object> params = new HashMap<>();
params.put("Power", a);
params.put("Toughness", d);
params.put("Timestamp", timestamp);
params.put("Category", "PTBoost");
gameCard.addPerpetual(params);
}
gameCard.addPTBoost(a, d, timestamp, 0); gameCard.addPTBoost(a, d, timestamp, 0);
redrawPT = true; redrawPT = true;
} }
if (!kws.isEmpty()) { if (!kws.isEmpty()) {
if (perpetual) {
Map <String, Object> params = new HashMap<>();
params.put("AddKeywords", kws);
params.put("Timestamp", timestamp);
params.put("Category", "Keywords");
gameCard.addPerpetual(params);
}
gameCard.addChangedCardKeywords(kws, Lists.newArrayList(), false, timestamp, 0); gameCard.addChangedCardKeywords(kws, Lists.newArrayList(), false, timestamp, 0);
} }
if (!hiddenKws.isEmpty()) { if (!hiddenKws.isEmpty()) {
gameCard.addHiddenExtrinsicKeywords(timestamp, 0, hiddenKws); gameCard.addHiddenExtrinsicKeywords(timestamp, 0, hiddenKws);
@@ -96,7 +115,7 @@ public class PumpEffect extends SpellAbilityEffect {
addLeaveBattlefieldReplacement(gameCard, sa, sa.getParam("LeaveBattlefield")); addLeaveBattlefieldReplacement(gameCard, sa, sa.getParam("LeaveBattlefield"));
} }
if (!"Permanent".equals(duration)) { if (!"Permanent".equals(duration) && !perpetual) {
// If not Permanent, remove Pumped at EOT // If not Permanent, remove Pumped at EOT
final GameCommand untilEOT = new GameCommand() { final GameCommand untilEOT = new GameCommand() {
private static final long serialVersionUID = -42244224L; private static final long serialVersionUID = -42244224L;
@@ -434,8 +453,8 @@ public class PumpEffect extends SpellAbilityEffect {
host.removeImprintedCards(AbilityUtils.getDefinedCards(host, sa.getParam("ForgetImprinted"), sa)); host.removeImprintedCards(AbilityUtils.getDefinedCards(host, sa.getParam("ForgetImprinted"), sa));
} }
final ZoneType pumpZone = sa.hasParam("PumpZone") ? ZoneType.smartValueOf(sa.getParam("PumpZone")) List<ZoneType> pumpZones = sa.hasParam("PumpZone") ? ZoneType.listValueOf(sa.getParam("PumpZone"))
: ZoneType.Battlefield; : ZoneType.listValueOf("Battlefield");
for (Card tgtC : tgtCards) { for (Card tgtC : tgtCards) {
// CR 702.26e // CR 702.26e
@@ -443,8 +462,8 @@ public class PumpEffect extends SpellAbilityEffect {
continue; continue;
} }
// only pump things in PumpZone // only pump things in PumpZones
if (!tgtC.isInZone(pumpZone)) { if (!tgtC.isInZones(pumpZones)) {
continue; continue;
} }
@@ -488,7 +507,7 @@ public class PumpEffect extends SpellAbilityEffect {
for (final Card tgtC : untargetedCards) { for (final Card tgtC : untargetedCards) {
// only pump things in PumpZone // only pump things in PumpZone
if (!tgtC.isInZone(pumpZone)) { if (!tgtC.isInZones(pumpZones)) {
continue; continue;
} }

View File

@@ -2175,8 +2175,6 @@ public class Card extends GameEntity implements Comparable<Card>, IHasSVars {
final String[] upkeepCostParams = keyword.split(":"); final String[] upkeepCostParams = keyword.split(":");
sbLong.append(upkeepCostParams.length > 2 ? "" + upkeepCostParams[2] : ManaCostParser.parse(upkeepCostParams[1])); sbLong.append(upkeepCostParams.length > 2 ? "" + upkeepCostParams[2] : ManaCostParser.parse(upkeepCostParams[1]));
sbLong.append("\r\n"); sbLong.append("\r\n");
} else if (keyword.startsWith("Alternative Cost")) {
sbLong.append("Has alternative cost.");
} else if (keyword.startsWith("AlternateAdditionalCost")) { } else if (keyword.startsWith("AlternateAdditionalCost")) {
final String[] costs = keyword.split(":", 2)[1].split(":"); final String[] costs = keyword.split(":", 2)[1].split(":");
sbLong.append("As an additional cost to cast this spell, "); sbLong.append("As an additional cost to cast this spell, ");
@@ -2386,7 +2384,8 @@ public class Card extends GameEntity implements Comparable<Card>, IHasSVars {
|| keyword.startsWith("Encore") || keyword.startsWith("Mutate") || keyword.startsWith("Dungeon") || keyword.startsWith("Encore") || keyword.startsWith("Mutate") || keyword.startsWith("Dungeon")
|| keyword.startsWith("Class") || keyword.startsWith("Blitz") || keyword.startsWith("Class") || keyword.startsWith("Blitz")
|| keyword.startsWith("Specialize") || keyword.equals("Ravenous") || keyword.startsWith("Specialize") || keyword.equals("Ravenous")
|| keyword.equals("For Mirrodin") || keyword.startsWith("Craft")) { || keyword.equals("For Mirrodin") || keyword.startsWith("Craft")
|| keyword.startsWith("Alternative Cost")) {
// keyword parsing takes care of adding a proper description // keyword parsing takes care of adding a proper description
} else if (keyword.startsWith("Read ahead")) { } else if (keyword.startsWith("Read ahead")) {
sb.append(Localizer.getInstance().getMessage("lblReadAhead")).append(" (").append(Localizer.getInstance().getMessage("lblReadAheadDesc")); sb.append(Localizer.getInstance().getMessage("lblReadAhead")).append(" (").append(Localizer.getInstance().getMessage("lblReadAheadDesc"));
@@ -4393,6 +4392,59 @@ public class Card extends GameEntity implements Comparable<Card>, IHasSVars {
return intensity > 0; return intensity > 0;
} }
private List<Map<String, Object>> perpetual = new ArrayList<>();
public final boolean hasPerpetual() {
return !perpetual.isEmpty();
}
public final List<Map<String, Object>> getPerpetual() {
return perpetual;
}
public final void addPerpetual(Map<String, Object> p) {
perpetual.add(p);
}
public final void executePerpetual(Map<String, Object> p) {
final String category = (String) p.get("Category");
if (category.equals("NewPT")) {
addNewPT((Integer) p.get("Power"), (Integer) p.get("Toughness"), (long)
p.get("Timestamp"), (long) 0);
} else if (category.equals("PTBoost")) {
addPTBoost((Integer) p.get("Power"), (Integer) p.get("Toughness"), (long)
p.get("Timestamp"), (long) 0);
} else if (category.equals("Keywords")) {
addChangedCardKeywords((List<String>) p.get("AddKeywords"), Lists.newArrayList(),
(boolean) p.get("RemoveAll"), (long) p.get("Timestamp"), (long) 0);
} else if (category.equals("Types")) {
addChangedCardTypes((CardType) p.get("AddTypes"), (CardType) p.get("RemoveTypes"),
false, (Set<RemoveType>) p.get("RemoveXTypes"),
(long) p.get("Timestamp"), (long) 0, true, false);
}
}
public final void removePerpetual(final long timestamp) {
Map<String, Object> toRemove = Maps.newHashMap();
for (Map<String, Object> p : perpetual) {
if (p.get("Timestamp").equals(timestamp)) {
toRemove = p;
break;
}
}
perpetual.remove(toRemove);
}
public final void setPerpetual(final Card oldCard) {
final List<Map<String, Object>> perp = oldCard.getPerpetual();
perpetual = perp;
for (Map<String, Object> p : perp) {
if (p.get("Category").equals("Abilities")) {
long timestamp = (long) p.get("Timestamp");
CardTraitChanges ctc = oldCard.getChangedCardTraits().get(timestamp, (long) 0).copy(this, false);
addChangedCardTraits(ctc, timestamp, (long) 0);
} else executePerpetual(p);
}
}
private int multiKickerMagnitude = 0; private int multiKickerMagnitude = 0;
public final void addMultiKickerMagnitude(final int n) { multiKickerMagnitude += n; } public final void addMultiKickerMagnitude(final int n) { multiKickerMagnitude += n; }
public final void setKickerMagnitude(final int n) { multiKickerMagnitude = n; } public final void setKickerMagnitude(final int n) { multiKickerMagnitude = n; }
@@ -4653,6 +4705,12 @@ public class Card extends GameEntity implements Comparable<Card>, IHasSVars {
updateAbilityTextForView(); updateAbilityTextForView();
} }
public final void addChangedCardTraits(CardTraitChanges ctc, long timestamp, long staticId) {
changedCardTraits.put(timestamp, staticId, ctc);
// update view
updateAbilityTextForView();
}
public final boolean removeChangedCardTraits(long timestamp, long staticId) { public final boolean removeChangedCardTraits(long timestamp, long staticId) {
boolean changed = false; boolean changed = false;
changed |= changedCardTraitsByText.remove(timestamp, staticId) != null; changed |= changedCardTraitsByText.remove(timestamp, staticId) != null;
@@ -6422,6 +6480,18 @@ public class Card extends GameEntity implements Comparable<Card>, IHasSVars {
return z != null && z.is(zone); return z != null && z.is(zone);
} }
public boolean isInZones(final List<ZoneType> zones) {
boolean inZones = false;
Zone z = this.getLastKnownZone();
for (ZoneType okZone : zones) {
if (z.is(okZone)) {
inZones = true;
break;
}
}
return z != null && inZones;
}
public final boolean canBeDestroyed() { public final boolean canBeDestroyed() {
return isInPlay() && !isPhasedOut() && (!hasKeyword(Keyword.INDESTRUCTIBLE) || (isCreature() && getNetToughness() <= 0)); return isInPlay() && !isPhasedOut() && (!hasKeyword(Keyword.INDESTRUCTIBLE) || (isCreature() && getNetToughness() <= 0));
} }

View File

@@ -291,6 +291,7 @@ public final class CardUtil {
} }
newCopy.setIntensity(in.getIntensity(false)); newCopy.setIntensity(in.getIntensity(false));
newCopy.setPerpetual(in);
newCopy.addRemembered(in.getRemembered()); newCopy.addRemembered(in.getRemembered());
newCopy.addImprintedCards(in.getImprintedCards()); newCopy.addImprintedCards(in.getImprintedCards());

View File

@@ -1000,7 +1000,7 @@ public class CardView extends GameEntityView {
} }
CardStateView currentStateView = currentState.getView(); CardStateView currentStateView = currentState.getView();
if (getCurrentState() != currentStateView) { if (getCurrentState() != currentStateView || c.hasPerpetual()) {
set(TrackableProperty.CurrentState, currentStateView); set(TrackableProperty.CurrentState, currentStateView);
currentStateView.updateName(currentState); currentStateView.updateName(currentState);
currentStateView.updatePower(c); //ensure power, toughness, and loyalty updated when current state changes currentStateView.updatePower(c); //ensure power, toughness, and loyalty updated when current state changes

View File

@@ -1,10 +1,10 @@
Name:Scarecrow Totem Name:Scarecrow Totem
ManaCost:no cost ManaCost:no cost
Types:Artifact Types:Artifact
T:Mode$ Phase | Phase$ End of Turn | ValidPlayer$ You | TriggerZones$ Command | Execute$ TrigChoose | TriggerDescription$ At the beginning of your end step, conjure a duplicate of a random creature card from your opponent's library into your hand. The duplicate perpetually becomes an Artifact Scarecrow in addition to it's other types and has alternative manacost {4}. T:Mode$ Phase | Phase$ End of Turn | ValidPlayer$ You | TriggerZones$ Command | Execute$ TrigChoose | TriggerDescription$ At the beginning of your end step, conjure a duplicate of a random creature card from your opponent's library into your hand. The duplicate perpetually becomes an Artifact Scarecrow in addition to its other types and has alternative manacost {4}.
SVar:TrigChoose:DB$ ChooseCard | Choices$ Creature.OppCtrl | ChoiceZone$ Library | AtRandom$ True | SubAbility$ DBConjure SVar:TrigChoose:DB$ ChooseCard | Choices$ Creature.OppCtrl | ChoiceZone$ Library | AtRandom$ True | SubAbility$ DBConjure
SVar:DBConjure:DB$ MakeCard | Conjure$ True | DefinedName$ ChosenCard | Zone$ Hand | RememberMade$ True | SubAbility$ DBEffect SVar:DBConjure:DB$ MakeCard | Conjure$ True | DefinedName$ ChosenCard | Zone$ Hand | RememberMade$ True | SubAbility$ DBEffect
SVar:DBEffect:DB$ Effect | RememberObjects$ Remembered | StaticAbilities$ PerpetualAbility | Duration$ Permanent | Name$ Scarecrow Captain's Perpetual Effect | SubAbility$ DBClearChosen SVar:DBEffect:DB$ Effect | RememberObjects$ Remembered | StaticAbilities$ PerpetualAbility | Duration$ Permanent | Name$ Scarecrow Captain's Perpetual Effect | SubAbility$ DBClearChosen
SVar:PerpetualAbility:Mode$ Continuous | Affected$ Card.IsRemembered | AddKeyword$ Alternative Cost:4 | EffectZone$ Command | AffectedZone$ Battlefield,Hand,Graveyard,Exile,Stack,Library,Command | AddType$ Artifact & Scarecrow | Description$ That duplicate perpetually becomes an Artifact Scarecrow in addition to it's other types and has alternative manacost {4}. SVar:PerpetualAbility:Mode$ Continuous | Affected$ Card.IsRemembered | AddKeyword$ Alternative Cost:4 | EffectZone$ Command | AffectedZone$ Battlefield,Hand,Graveyard,Exile,Stack,Library,Command | AddType$ Artifact & Scarecrow | Description$ That duplicate perpetually becomes an Artifact Scarecrow in addition to its other types and has alternative manacost {4}.
SVar:DBClearChosen:DB$ Cleanup | ClearChosenCard$ True | ClearRemembered$ True SVar:DBClearChosen:DB$ Cleanup | ClearChosenCard$ True | ClearRemembered$ True
Oracle:At the beginning of your end step, conjure a duplicate of a random creature card from your opponent's library into your hand. The duplicate perpetually becomes an Artifact Scarecrow in addition to it's other types and has alternative manacost {4}. Oracle:At the beginning of your end step, conjure a duplicate of a random creature card from your opponent's library into your hand. The duplicate perpetually becomes an Artifact Scarecrow in addition to its other types and has alternative manacost {4}.

View File

@@ -1,11 +1,8 @@
Name:Absorb Energy Name:Absorb Energy
ManaCost:1 U U ManaCost:1 U U
Types:Instant Types:Instant
A:SP$ Counter | TargetType$ Spell | TgtPrompt$ Select target spell | ValidTgts$ Card | RememberForCounter$ True | SubAbility$ DBEffect | SpellDescription$ Counter target spell. A:SP$ Counter | TargetType$ Spell | TgtPrompt$ Select target spell | ValidTgts$ Card | RememberForCounter$ True | SubAbility$ DBAnimate | SpellDescription$ Counter target spell.
SVar:DBEffect:DB$ Effect | ImprintCards$ Remembered | RememberObjects$ ValidHand Card.YouOwn+sharesCardTypeWith Remembered | StaticAbilities$ PerpetualAbility | Duration$ Permanent | Triggers$ Update | Name$ Absorb Energy's Perpetual Effect | SubAbility$ DBCleanup | SpellDescription$ Cards in your hand that share a card type with that spell perpetually gain "This spell costs {1} less to cast." SVar:DBAnimate:DB$ AnimateAll | Zone$ Hand | Duration$ Perpetual | ValidCards$ Card.YouOwn+sharesCardTypeWith Remembered | staticAbilities$ ReduceCost | SubAbility$ DBCleanup | SpellDescription$ Cards in your hand that share a card type with that spell perpetually gain "This spell costs {1} less to cast."
SVar:PerpetualAbility:Mode$ Continuous | Affected$ Card.IsRemembered | AddStaticAbility$ PerpetualReduceCost | EffectZone$ Command | AffectedZone$ Battlefield,Hand,Graveyard,Exile,Stack,Library,Command | Description$ Cards in your hand that share a card type with that [imprinted] spell perpetually gain "This spell costs {1} less to cast." SVar:ReduceCost:Mode$ ReduceCost | ValidCard$ Card.Self | Type$ Spell | Amount$ 1 | EffectZone$ All | Description$ This spell costs {1} less to cast.
SVar:PerpetualReduceCost:Mode$ ReduceCost | ValidCard$ Card.Self | Type$ Spell | Amount$ 1 | EffectZone$ All | Description$ This spell costs {1} less to cast.
SVar:Update:Mode$ ChangesZone | Origin$ Any | Destination$ Any | Static$ True | ValidCard$ Card.IsRemembered | Execute$ DBUpdate
SVar:DBUpdate:DB$ UpdateRemember
SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True
Oracle:Counter target spell. Cards in your hand that share a card type with that spell perpetually gain "This spell costs {1} less to cast." Oracle:Counter target spell. Cards in your hand that share a card type with that spell perpetually gain "This spell costs {1} less to cast."

View File

@@ -2,9 +2,8 @@ Name:Accident-Prone Apprentice
ManaCost:1 R ManaCost:1 R
Types:Creature Otter Wizard Types:Creature Otter Wizard
PT:1/1 PT:1/1
T:Mode$ SpellCast | ValidCard$ Card.nonCreature | ValidActivatingPlayer$ You | TriggerZones$ Battlefield,Exile | Execute$ TrigEffect | TriggerDescription$ Whenever you cast a noncreature spell, CARDNAME perpetually gets +1/+1. This ability also triggers if CARDNAME is in exile. T:Mode$ SpellCast | ValidCard$ Card.nonCreature | ValidActivatingPlayer$ You | TriggerZones$ Battlefield,Exile | Execute$ TrigPump | TriggerDescription$ Whenever you cast a noncreature spell, CARDNAME perpetually gets +1/+1. This ability also triggers if CARDNAME is in exile.
SVar:TrigEffect:DB$ Effect | StaticAbilities$ PerpetualBuff | RememberObjects$ Self | Name$ Accident-Prone Apprentice's Perpetual Effect | Duration$ Permanent SVar:TrigPump:DB$ Pump | PumpZone$ Battlefield,Exile | NumAtt$ 1 | NumDef$ 1 | Duration$ Perpetual
SVar:PerpetualBuff:Mode$ Continuous | Affected$ Card.IsRemembered | AddPower$ 1 | AddToughness$ 1 | EffectZone$ Command | AffectedZone$ Battlefield,Hand,Graveyard,Exile,Stack,Library,Command | Description$ This creature perpetually gets +1/+1
AlternateMode:Adventure AlternateMode:Adventure
Oracle:Whenever you cast a noncreature spell, Accident-Prone Apprentice perpetually gets +1/+1. This ability also triggers if Accident-Prone Apprentice is in exile. Oracle:Whenever you cast a noncreature spell, Accident-Prone Apprentice perpetually gets +1/+1. This ability also triggers if Accident-Prone Apprentice is in exile.
@@ -13,5 +12,5 @@ ALTERNATE
Name:Amphibian Accident Name:Amphibian Accident
ManaCost:1 U ManaCost:1 U
Types:Instant Adventure Types:Instant Adventure
A:SP$ Animate | ValidTgts$ Creature | Power$ 1 | Toughness$ 1 | RemoveAllAbilities$ True | Colors$ Blue | OverwriteColors$ True | Types$ Frog | RemoveCreatureTypes$ True | SpellDescription$ Until end of turn, target creature loses all abilities and becomes a blue Frog with base power and toughness 1/1. A:SP$ Animate | ValidTgts$ Creature | Power$ 1 | Toughness$ 1 | RemoveAllAbilities$ True | Colors$ Blue | OverwriteColors$ True | Types$ Frog | RemoveCreatureTypes$ True | StackDescription$ REP target creature_{c:Targeted} | SpellDescription$ Until end of turn, target creature loses all abilities and becomes a blue Frog with base power and toughness 1/1.
Oracle:Until end of turn, target creature loses all abilities and becomes a blue Frog with base power and toughness 1/1. Oracle:Until end of turn, target creature loses all abilities and becomes a blue Frog with base power and toughness 1/1.

View File

@@ -3,12 +3,9 @@ ManaCost:U
Types:Creature Human Rogue Types:Creature Human Rogue
PT:1/2 PT:1/2
A:AB$ Pump | Cost$ 2 T | ValidTgts$ Opponent | SubAbility$ DBConjure | StackDescription$ None | SpellDescription$ Choose target opponent. A:AB$ Pump | Cost$ 2 T | ValidTgts$ Opponent | SubAbility$ DBConjure | StackDescription$ None | SpellDescription$ Choose target opponent.
SVar:DBConjure:DB$ MakeCard | Conjure$ True | DefinedName$ ValidLibrary Card.TopLibrary+TargetedPlayerOwn | Zone$ Hand | RememberMade$ True | SubAbility$ DBEffect | StackDescription$ REP Conjure_{p:You} conjures & their_{p:Targeted}'s & your_their | SpellDescription$ Conjure a duplicate of the top card of their library into your hand. SVar:DBConjure:DB$ MakeCard | Conjure$ True | DefinedName$ ValidLibrary Card.TopLibrary+TargetedPlayerOwn | Zone$ Hand | RememberMade$ True | SubAbility$ DBAnimate | StackDescription$ REP Conjure_{p:You} conjures & their_{p:Targeted}'s & your_their | SpellDescription$ Conjure a duplicate of the top card of their library into your hand.
SVar:DBEffect:DB$ Effect | RememberObjects$ Remembered | StaticAbilities$ PerpetualAbility | Duration$ Permanent | Triggers$ Update | Name$ Agent of Raffine's Perpetual Effect | SubAbility$ DBCleanup | SpellDescription$ It perpetually gains "You may spend mana as though it were mana of any color to cast this spell." SVar:DBAnimate:DB$ Animate | Defined$ Remembered | staticAbilities$ SpendAnyMana | Duration$ Perpetual | SubAbility$ DBCleanup | StackDescription$ SpellDescription | SpellDescription$ It perpetually gains "You may spend mana as though it were mana of any color to cast this spell."
SVar:PerpetualAbility:Mode$ Continuous | AddStaticAbility$ SpendAnyMana | Affected$ Card.IsRemembered | EffectZone$ Command | AffectedZone$ Battlefield,Hand,Graveyard,Exile,Stack,Library,Command | Description$ The conjured card perpetually gains "You may spend mana as though it were mana of any color to cast this spell."
SVar:SpendAnyMana:Mode$ ManaConvert | EffectZone$ Stack | ValidPlayer$ You | ValidCard$ Card.Self | ValidSA$ Spell | ManaConversion$ AnyType->AnyColor | Description$ You may spend mana as though it were mana of any color to cast this spell. SVar:SpendAnyMana:Mode$ ManaConvert | EffectZone$ Stack | ValidPlayer$ You | ValidCard$ Card.Self | ValidSA$ Spell | ManaConversion$ AnyType->AnyColor | Description$ You may spend mana as though it were mana of any color to cast this spell.
SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True | SubAbility$ DBExileTop SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True | SubAbility$ DBExileTop
SVar:DBExileTop:DB$ Dig | Defined$ TargetedPlayer | DigNum$ 1 | ChangeNum$ All | DestinationZone$ Exile | ExileFaceDown$ True | StackDescription$ REP they exile_{p:Targeted} exiles | SpellDescription$ Then they exile the top card of their library face down. SVar:DBExileTop:DB$ Dig | Defined$ TargetedPlayer | DigNum$ 1 | ChangeNum$ All | DestinationZone$ Exile | ExileFaceDown$ True | StackDescription$ REP they exile_{p:Targeted} exiles | SpellDescription$ Then they exile the top card of their library face down.
SVar:Update:Mode$ ChangesZone | Origin$ Any | Destination$ Any | Static$ True | ValidCard$ Card.IsRemembered | Execute$ DBUpdate
SVar:DBUpdate:DB$ UpdateRemember
Oracle:{2}, {T}: Choose target opponent. Conjure a duplicate of the top card of their library into your hand. It perpetually gains "You may spend mana as though it were mana of any color to cast this spell." Then they exile the top card of their library face down. Oracle:{2}, {T}: Choose target opponent. Conjure a duplicate of the top card of their library into your hand. It perpetually gains "You may spend mana as though it were mana of any color to cast this spell." Then they exile the top card of their library face down.

View File

@@ -6,9 +6,8 @@ K:Flying
K:Lifelink K:Lifelink
T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigChoose | TriggerDescription$ Whenever CARDNAME enters the battlefield or you cast a party spell, choose a party creature card in your hand. It perpetually gets +1/+1. (A party card or spell is a Cleric, Rogue, Warrior, or Wizard.) T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigChoose | TriggerDescription$ Whenever CARDNAME enters the battlefield or you cast a party spell, choose a party creature card in your hand. It perpetually gets +1/+1. (A party card or spell is a Cleric, Rogue, Warrior, or Wizard.)
T:Mode$ SpellCast | ValidCard$ Card.Party | ValidActivatingPlayer$ You | Execute$ TrigChoose | TriggerZones$ Battlefield | Secondary$ True | TriggerDescription$ Whenever CARDNAME enters the battlefield or you cast a party spell, choose a party creature card in your hand. It perpetually gets +1/+1. (A party card or spell is a Cleric, Rogue, Warrior, or Wizard.) T:Mode$ SpellCast | ValidCard$ Card.Party | ValidActivatingPlayer$ You | Execute$ TrigChoose | TriggerZones$ Battlefield | Secondary$ True | TriggerDescription$ Whenever CARDNAME enters the battlefield or you cast a party spell, choose a party creature card in your hand. It perpetually gets +1/+1. (A party card or spell is a Cleric, Rogue, Warrior, or Wizard.)
SVar:TrigChoose:DB$ ChooseCard | ChoiceZone$ Hand | Choices$ Creature.Party+YouOwn | ChoiceTitle$ Choose a party creature card in your hand | Amount$ 1 | SubAbility$ DBEffect SVar:TrigChoose:DB$ ChooseCard | ChoiceZone$ Hand | Choices$ Creature.Party+YouOwn | ChoiceTitle$ Choose a party creature card in your hand | Amount$ 1 | SubAbility$ DBPump
SVar:DBEffect:DB$ Effect | StaticAbilities$ PerpetualP1P1 | Name$ Angel of Unity's Perpetual Effect | Duration$ Permanent | SubAbility$ DBCleanup SVar:DBPump:DB$ Pump | Defined$ ChosenCard | PumpZone$ Hand | NumAtt$ 1 | NumDef$ 1 | Duration$ Perpetual | SubAbility$ DBCleanup
SVar:PerpetualP1P1:Mode$ Continuous | Affected$ Card.ChosenCard | AddPower$ 1 | AddToughness$ 1 | EffectZone$ Command | AffectedZone$ Battlefield,Hand,Graveyard,Exile,Stack,Library,Command | Description$ The chosen card perpetually gets +1/+1.
SVar:DBCleanup:DB$ Cleanup | ClearChosenCard$ True SVar:DBCleanup:DB$ Cleanup | ClearChosenCard$ True
DeckHas:Ability$Party|LifeGain DeckHas:Ability$Party|LifeGain
SVar:BuffedBy:Cleric,Rogue,Warrior,Wizard SVar:BuffedBy:Cleric,Rogue,Warrior,Wizard

View File

@@ -3,14 +3,11 @@ ManaCost:1 G
Types:Creature Human Rogue Types:Creature Human Rogue
PT:2/2 PT:2/2
S:Mode$ CantBlockBy | ValidAttacker$ Creature.Self | ValidBlocker$ Creature.powerLE2 | Description$ CARDNAME can't be blocked by creatures with power 2 or less. S:Mode$ CantBlockBy | ValidAttacker$ Creature.Self | ValidBlocker$ Creature.powerLE2 | Description$ CARDNAME can't be blocked by creatures with power 2 or less.
T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigEffect | TriggerDescription$ When CARDNAME enters the battlefield, creatures you control perpetually gain "When this creature dies, you may shuffle it into its owner's library if it's in your graveyard. If you do, investigate." T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigAnimateAll | TriggerDescription$ When CARDNAME enters the battlefield, creatures you control perpetually gain "When this creature dies, you may shuffle it into its owner's library if it's in your graveyard. If you do, investigate."
SVar:TrigEffect:DB$ Effect | RememberObjects$ Valid Creature.YouCtrl | StaticAbilities$ PerpetualAbility | Duration$ Permanent | Triggers$ Update | Name$ Antique Collector's Perpetual Effect SVar:TrigAnimateAll:DB$ AnimateAll | Duration$ Perpetual | ValidCards$ Creature.YouCtrl | Triggers$ DiesTrigger
SVar:PerpetualAbility:Mode$ Continuous | Affected$ Card.IsRemembered | AddTrigger$ DiesTrigger | EffectZone$ Command | AffectedZone$ Battlefield,Hand,Graveyard,Exile,Stack,Library,Command | Description$ Creatures you control perpetually gain "When this creature dies, you may shuffle it into its owner's library if it's in your graveyard. If you do, investigate."
SVar:DiesTrigger:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Graveyard | ValidCard$ Card.Self | Execute$ TrigShuffle | OptionalDecider$ You | TriggerDescription$ When this creature dies, you may shuffle it into its owner's library if it's in your graveyard. If you do, investigate. SVar:DiesTrigger:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Graveyard | ValidCard$ Card.Self | Execute$ TrigShuffle | OptionalDecider$ You | TriggerDescription$ When this creature dies, you may shuffle it into its owner's library if it's in your graveyard. If you do, investigate.
SVar:TrigShuffle:DB$ ChangeZone | Origin$ Graveyard | Destination$ Library | Shuffle$ True | Defined$ TriggeredNewCardLKICopy | RememberChanged$ True | SubAbility$ DBInvestigate SVar:TrigShuffle:DB$ ChangeZone | Origin$ Graveyard | Destination$ Library | Shuffle$ True | Defined$ TriggeredNewCardLKICopy | RememberChanged$ True | SubAbility$ DBInvestigate
SVar:DBInvestigate:DB$ Investigate | ConditionDefined$ Remembered | ConditionPresent$ Card | ConditionCompare$ GE1 | SubAbility$ DBCleanup SVar:DBInvestigate:DB$ Investigate | ConditionDefined$ Remembered | ConditionPresent$ Card | SubAbility$ DBCleanup
SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True
SVar:Update:Mode$ ChangesZone | Origin$ Any | Destination$ Any | Static$ True | ValidCard$ Card.IsRemembered | Execute$ DBUpdate DeckHas:Ability$Investigate|Token|Graveyard & Type$Artifact|Clue
SVar:DBUpdate:DB$ UpdateRemember
DeckHas:Ability$Investigate|Token
Oracle:Antique Collector can't be blocked by creatures with power 2 or less.\nWhen Antique Collector enters the battlefield, creatures you control perpetually gain "When this creature dies, you may shuffle it into its owner's library if it's in your graveyard. If you do, investigate." Oracle:Antique Collector can't be blocked by creatures with power 2 or less.\nWhen Antique Collector enters the battlefield, creatures you control perpetually gain "When this creature dies, you may shuffle it into its owner's library if it's in your graveyard. If you do, investigate."

View File

@@ -1,8 +1,7 @@
Name:Argivian Welcome Name:Argivian Welcome
ManaCost:W U ManaCost:W U
Types:Instant Types:Instant
A:SP$ Destroy | ValidTgts$ Creature.powerGE4 | TargetMin$ 0 | TargetMax$ 1 | TgtPrompt$ Select up to one target creature with power 4 or greater | SubAbility$ DBChoose | StackDescription$ SpellDescription | SpellDescription$ Destroy up to one target creature with power 4 or greater. Choose a nonland card in your hand. It perpetually gains flash. A:SP$ Destroy | ValidTgts$ Creature.powerGE4 | TargetMin$ 0 | TargetMax$ 1 | TgtPrompt$ Select up to one target creature with power 4 or greater | SubAbility$ DBChoose | SpellDescription$ Destroy up to one target creature with power 4 or greater.
SVar:DBChoose:DB$ ChooseCard | Mandatory$ True | ChoiceZone$ Hand | Choices$ Card.nonLand+YouOwn | ChoiceTitle$ Choose a nonland card in your hand | Amount$ 1 | SubAbility$ DBEffect SVar:DBChoose:DB$ ChooseCard | Mandatory$ True | ChoiceZone$ Hand | Choices$ Card.nonLand+YouOwn | ChoiceDesc$ nonland | ChoiceTitle$ Choose a nonland card in your hand | Amount$ 1 | SubAbility$ DBPump | SpellDescription$ ,,,,,,Choose a nonland card in your hand.
SVar:DBEffect:DB$ Effect | StaticAbilities$ PerpetualFlash | Name$ Argivian Welcome's Perpetual Effect | Duration$ Permanent SVar:DBPump:DB$ Pump | Defined$ ChosenCard | KW$ Flash | Duration$ Perpetual | PumpZone$ Hand | StackDescription$ SpellDescription | SpellDescription$ It perpetually gains flash.
SVar:PerpetualFlash:Mode$ Continuous | Affected$ Card.ChosenCard | AddKeyword$ Flash | EffectZone$ Command | AffectedZone$ Battlefield,Hand,Graveyard,Exile,Stack,Library,Command | Description$ The chosen card perpetually gains flash.
Oracle:Destroy up to one target creature with power 4 or greater.\nChoose a nonland card in your hand. It perpetually gains flash. Oracle:Destroy up to one target creature with power 4 or greater.\nChoose a nonland card in your hand. It perpetually gains flash.

View File

@@ -2,5 +2,5 @@ Name:Argothian Elder
ManaCost:3 G ManaCost:3 G
Types:Creature Elf Druid Types:Creature Elf Druid
PT:2/2 PT:2/2
A:AB$ Untap | Cost$ T | TargetMin$ 2 | TargetMax$ 2 | ValidTgts$ Land | TgtPrompt$ Select target land | SpellDescription$ Untap two target lands. A:AB$ Untap | Cost$ T | TargetMin$ 2 | TargetMax$ 2 | ValidTgts$ Land | SpellDescription$ Untap two target lands.
Oracle:{T}: Untap two target lands. Oracle:{T}: Untap two target lands.

View File

@@ -1,9 +1,6 @@
Name:Arming Gala Name:Arming Gala
ManaCost:3 G W ManaCost:3 G W
Types:Enchantment Types:Enchantment
T:Mode$ Phase | Phase$ End of Turn | ValidPlayer$ You | TriggerZones$ Battlefield | Execute$ DBEffect | TriggerDescription$ At the beginning of your end step, creatures you control and creature cards in your hand, library, and graveyard perpetually get +1/+1. T:Mode$ Phase | Phase$ End of Turn | ValidPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigPerpetualP1P1 | TriggerDescription$ At the beginning of your end step, creatures you control and creature cards in your hand, library, and graveyard perpetually get +1/+1.
SVar:DBEffect:DB$ Effect | RememberObjects$ Valid Creature.YouCtrl,ValidHand Creature.YouOwn,ValidGraveyard Creature.YouOwn,ValidLibrary Creature.YouOwn | StaticAbilities$ PerpetualP1P1 | Name$ Arming Gala's Perpetual Effect | Duration$ Permanent SVar:TrigPerpetualP1P1:DB$ PumpAll | ValidCards$ Creature.YouCtrl | PumpZone$ Battlefield,Hand,Library,Graveyard | NumAtt$ 1 | NumDef$ 1 | Duration$ Perpetual
SVar:PerpetualP1P1:Mode$ Continuous | Affected$ Card.IsRemembered | AddPower$ 1 | AddToughness$ 1 | EffectZone$ Command | AffectedZone$ Battlefield,Hand,Graveyard,Exile,Stack,Library,Command | Description$ At the beginning of your end step, creatures you control and creature cards in your hand, library, and graveyard perpetually get +1/+1.
SVar:Update:Mode$ ChangesZone | Origin$ Any | Destination$ Any | Static$ True | ValidCard$ Card.IsRemembered | Execute$ DBUpdate
SVar:DBUpdate:DB$ UpdateRemember
Oracle:At the beginning of your end step, creatures you control and creature cards in your hand, library, and graveyard perpetually get +1/+1. Oracle:At the beginning of your end step, creatures you control and creature cards in your hand, library, and graveyard perpetually get +1/+1.

View File

@@ -4,12 +4,9 @@ Types:Legendary Creature Vampire Knight
PT:1/1 PT:1/1
K:Deathtouch K:Deathtouch
K:Lifelink K:Lifelink
T:Mode$ Phase | Phase$ End of Turn | ValidPlayer$ You | TriggerZones$ Battlefield,Graveyard | CheckSVar$ X | Execute$ DBStore | TriggerDescription$ At the beginning of your end step, if a creature died this turn, CARDNAME perpetually gets +X/+X where X is the number of creatures that died this turn. This ability also triggers if NICKNAME is in your graveyard. T:Mode$ Phase | Phase$ End of Turn | ValidPlayer$ You | TriggerZones$ Battlefield,Graveyard | CheckSVar$ X | Execute$ TrigPump | TriggerDescription$ At the beginning of your end step, if a creature died this turn, CARDNAME perpetually gets +X/+X where X is the number of creatures that died this turn. This ability also triggers if NICKNAME is in your graveyard.
SVar:DBStore:DB$ StoreSVar | SVar$ Num | Type$ CountSVar | Expression$ X | SubAbility$ DBEffect SVar:TrigPump:DB$ Pump | Defined$ Self | PumpZone$ Battlefield,Graveyard | NumAtt$ X | NumDef$ X | Duration$ Perpetual
SVar:DBEffect:DB$ Effect | StaticAbilities$ PerpetualPXPX | Name$ Arvad, Weatherlight Smuggler's Perpetual Effect | Duration$ Permanent
SVar:PerpetualPXPX:Mode$ Continuous | Affected$ Card.EffectSource | AddPower$ Num | AddToughness$ Num | EffectZone$ Command | AffectedZone$ Battlefield,Hand,Graveyard,Exile,Stack,Library,Command | Description$ CARDNAME perpetually gets +X/+X, where X is the number of creatures that died this turn.
SVar:X:Count$ThisTurnEntered_Graveyard_from_Battlefield_Creature SVar:X:Count$ThisTurnEntered_Graveyard_from_Battlefield_Creature
SVar:Num:Number$0
DeckHas:Ability$Graveyard|LifeGain DeckHas:Ability$Graveyard|LifeGain
DeckHints:Ability$Sacrifice DeckHints:Ability$Sacrifice|Graveyard
Oracle:Deathtouch, lifelink\nAt the beginning of your end step, if a creature died this turn, Arvad, Weatherlight Smuggler perpetually gets +X/+X, where X is the number of creature that died this turn. This ability also triggers if Arvad is in your graveyard. Oracle:Deathtouch, lifelink\nAt the beginning of your end step, if a creature died this turn, Arvad, Weatherlight Smuggler perpetually gets +X/+X where X is the number of creatures that died this turn. This ability also triggers if Arvad is in your graveyard.

View File

@@ -1,6 +1,5 @@
Name:Baffling Defenses Name:Baffling Defenses
ManaCost:1 W ManaCost:1 W
Types:Instant Types:Instant
A:SP$ Effect | StaticAbilities$ Perpetual0P | RememberObjects$ Targeted | ValidTgts$ Creature | TgtPrompt$ Select target creature | IsCurse$ True | Name$ Baffling Defenses's Perpetual Effect | Duration$ Permanent | SpellDescription$ Target creature's base power perpetually becomes 0. A:SP$ Animate | ValidTgts$ Creature | IsCurse$ True | Power$ 0 | Duration$ Perpetual | StackDescription$ REP Target creature_{c:Targeted} | SpellDescription$ Target creature's base power perpetually becomes 0.
SVar:Perpetual0P:Mode$ Continuous | Affected$ Card.IsRemembered | SetPower$ 0 | EffectZone$ Command | AffectedZone$ Battlefield,Hand,Graveyard,Exile,Stack,Library,Command | Description$ This creature's base power perpetually becomes 0.
Oracle:Target creature's base power perpetually becomes 0. Oracle:Target creature's base power perpetually becomes 0.

View File

@@ -1,9 +1,6 @@
Name:Begin Anew Name:Begin Anew
ManaCost:G G W W ManaCost:G G W W
Types:Sorcery Types:Sorcery
A:SP$ DestroyAll | ValidCards$ Creature | SubAbility$ DBEffect | SpellDescription$ Destroy all creatures. A:SP$ DestroyAll | ValidCards$ Creature | SubAbility$ DBPumpAll | SpellDescription$ Destroy all creatures.
SVar:DBEffect:DB$ Effect | RememberObjects$ ValidHand Creature.YouOwn | StaticAbilities$ PerpetualP1P1 | Duration$ Permanent | Triggers$ Update | Name$ Begin Anew's Perpetual Effect | SpellDescription$ Creature cards in your hand perpetually get +1/+1. SVar:DBPumpAll:DB$ PumpAll | ValidCards$ Creature | PumpZone$ Hand | Duration$ Perpetual | NumAtt$ 1 | NumDef$ 1 | StackDescription$ REP your_{p:You}'s | SpellDescription$ Creature cards in your hand perpetually get +1/+1.
SVar:PerpetualP1P1:Mode$ Continuous | Affected$ Card.IsRemembered | AddPower$ 1 | AddToughness$ 1 | EffectZone$ Command | AffectedZone$ Battlefield,Hand,Graveyard,Exile,Stack,Library,Command | Description$ Creature cards in your hand perpetually get +1/+1.
SVar:Update:Mode$ ChangesZone | Origin$ Any | Destination$ Any | Static$ True | ValidCard$ Card.IsRemembered | Execute$ DBUpdate
SVar:DBUpdate:DB$ UpdateRemember
Oracle:Destroy all creatures. Creature cards in your hand perpetually get +1/+1. Oracle:Destroy all creatures. Creature cards in your hand perpetually get +1/+1.

View File

@@ -4,10 +4,11 @@ Types:Creature Human Soldier
PT:1/2 PT:1/2
K:Lifelink K:Lifelink
T:Mode$ Cycled | ValidCard$ Card.Other | ValidPlayer$ You | TriggerZones$ Graveyard | Execute$ TrigReturn | TriggerDescription$ Whenever you cycle another card, you may pay {1}{W}. If you do, return CARDNAME from your graveyard to the battlefield tapped and it perpetually gets +1/+0. T:Mode$ Cycled | ValidCard$ Card.Other | ValidPlayer$ You | TriggerZones$ Graveyard | Execute$ TrigReturn | TriggerDescription$ Whenever you cycle another card, you may pay {1}{W}. If you do, return CARDNAME from your graveyard to the battlefield tapped and it perpetually gets +1/+0.
SVar:TrigReturn:AB$ ChangeZone | Cost$ 1 W | Defined$ Self | Origin$ Graveyard | Destination$ Battlefield | Tapped$ True | SubAbility$ DBEffect SVar:TrigReturn:AB$ ChangeZone | Cost$ 1 W | Origin$ Graveyard | Destination$ Battlefield | Tapped$ True | RememberChanged$ True | SubAbility$ DBPump
SVar:DBEffect:DB$ Effect | StaticAbilities$ PerpetualPump | RememberObjects$ Self | Name$ Benalish Partisan's Perpetual Effect | Duration$ Permanent SVar:DBPump:DB$ Pump | Defined$ Remembered | NumAtt$ 1 | Duration$ Perpetual | SubAbility$ DBCleanup
SVar:PerpetualPump:Mode$ Continuous | Affected$ Card.IsRemembered | AddPower$ 1 | EffectZone$ Command | AffectedZone$ Battlefield,Hand,Graveyard,Exile,Stack,Library,Command | Description$ EFFECTSOURCE perpetually gets +1/+0. SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True
K:Cycling:1 W K:Cycling:1 W
DeckHas:Ability$LifeGain|Graveyard DeckHas:Ability$LifeGain|Graveyard
DeckNeeds:Keyword$Cycling
SVar:SacMe:2 SVar:SacMe:2
Oracle:Lifelink\nWhenever you cycle another card, you may pay {1}{W}. If you do, return Benalish Partisan from your graveyard to the battlefield tapped and it perpetually gets +1/+0.\nCycling {1}{W} Oracle:Lifelink\nWhenever you cycle another card, you may pay {1}{W}. If you do, return Benalish Partisan from your graveyard to the battlefield tapped and it perpetually gets +1/+0.\nCycling {1}{W}

View File

@@ -1,11 +1,8 @@
Name:Better Offer Name:Better Offer
ManaCost:X U ManaCost:X U
Types:Sorcery Types:Sorcery
A:SP$ ChangeZone | Origin$ Library | Destination$ Battlefield | ValidTgts$ Opponent | TgtPrompt$ Select target opponent | ChangeType$ Creature.cmcLEX+TargetedPlayerOwn | ChangeNum$ 1 | Hidden$ True | AtRandom$ True | NoShuffle$ True | Mandatory$ True | NoLooking$ True | GainControl$ True | RememberChanged$ True | SubAbility$ DBStore | StackDescription$ {p:You} puts a random creature card with mana value X or less from {p:Targeted}'s library onto the battlefield under their control. | SpellDescription$ Put a random creature card with mana value X or less from target opponent's library onto the battlefield under your control. A:SP$ ChangeZone | Origin$ Library | Destination$ Battlefield | ValidTgts$ Opponent | ChangeType$ Creature.cmcLEX+TargetedPlayerOwn | ChangeNum$ 1 | Hidden$ True | AtRandom$ True | NoShuffle$ True | Mandatory$ True | NoLooking$ True | GainControl$ True | RememberChanged$ True | SubAbility$ DBAnimate | StackDescription$ {p:You} puts a random creature card with mana value X or less from {p:Targeted}'s library onto the battlefield under their control. | SpellDescription$ Put a random creature card with mana value X or less from target opponent's library onto the battlefield under your control.
SVar:DBStore:DB$ StoreSVar | SVar$ Num | Type$ CountSVar | Expression$ X | SubAbility$ DBEffect SVar:DBAnimate:DB$ Animate | Defined$ Remembered | Power$ X | Toughness$ X | Keywords$ Ward:1 | Duration$ Perpetual | SubAbility$ DBCleanup | StackDescription$ SpellDescription | SpellDescription$ It perpetually has base power and toughness X/X and gains ward {1}.
SVar:DBEffect:DB$ Effect | RememberObjects$ Remembered | StaticAbilities$ Perpetual | Name$ Better Offer's Perpetual Effect | Duration$ Permanent | SubAbility$ DBCleanup | SpellDescription$ It perpetually has base power and toughness X/X and perpetually gains ward {1}.
SVar:Perpetual:Mode$ Continuous | Affected$ Card.IsRemembered | SetPower$ Num | SetToughness$ Num | AddKeyword$ Ward:1 | EffectZone$ Command | AffectedZone$ Battlefield,Hand,Graveyard,Exile,Stack,Library,Command | Description$ The card perpetually has base power and toughness X/X and perpetually gains ward {1}.
SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True
SVar:X:Count$xPaid SVar:X:Count$xPaid
SVar:Num:Number$0 Oracle:Put a random creature card with mana value X or less from target opponent's library onto the battlefield under your control. It perpetually has base power and toughness X/X and gains ward {1}.
Oracle:Put a random creature card with mana value X or less from target opponent's library onto the battlefield under your control. It perpetually has base power and toughness X/X and perpetually gains ward {1}.

View File

@@ -1,15 +1,12 @@
Name:Bind to Secrecy Name:Bind to Secrecy
ManaCost:U B ManaCost:U B
Types:Instant Types:Instant
A:SP$ Charm | Choices$ CounterNonCreature,DBConjure | CharmNum$ 1 A:SP$ Charm | Choices$ CounterNonCreature,DBConjure | CharmNum$ 1 | SubAbility$ DBDraft
SVar:CounterNonCreature:DB$ Counter | TargetType$ Spell | TgtPrompt$ Select target noncreature spell | ValidTgts$ Card.nonCreature | SubAbility$ TrigDraft | SpellDescription$ Counter target noncreature spell. SVar:CounterNonCreature:DB$ Counter | TargetType$ Spell | TgtPrompt$ Select target noncreature spell | ValidTgts$ Card.nonCreature | SubAbility$ DBDraft | SpellDescription$ Counter target noncreature spell.
SVar:DBConjure:DB$ MakeCard | Conjure$ True | TgtPrompt$ Select target creature card in an opponent's graveyard | ValidTgts$ Creature.OppOwn+inZoneGraveyard | TgtZone$ Graveyard | DefinedName$ Targeted | Zone$ Hand | RememberMade$ True | SubAbility$ DBEffect | SpellDescription$ Conjure a duplicate of target creature card in an opponent's graveyard into your hand. It perpetually gains "You may spend mana as though it were mana of any color to cast this spell." SVar:DBConjure:DB$ MakeCard | Conjure$ True | TgtPrompt$ Select target creature card in an opponent's graveyard | ValidTgts$ Creature.OppOwn+inZoneGraveyard | TgtZone$ Graveyard | DefinedName$ Targeted | Zone$ Hand | RememberMade$ True | SubAbility$ DBAnimate | SpellDescription$ Conjure a duplicate of target creature card in an opponent's graveyard into your hand.
SVar:DBEffect:DB$ Effect | RememberObjects$ Remembered | StaticAbilities$ PerpetualAbility | Duration$ Permanent | Triggers$ Update | Name$ Bind to Secrecy's Perpetual Effect | SubAbility$ DBCleanup | SpellDescription$ It perpetually gains "You may spend mana as though it were mana of any color to cast this spell." SVar:DBAnimate:DB$ Animate | Defined$ Remembered | staticAbilities$ SpendAnyMana | Duration$ Perpetual | SubAbility$ DBCleanup | StackDescription$ SpellDescription | SpellDescription$ It perpetually gains "You may spend mana as though it were mana of any color to cast this spell."
SVar:PerpetualAbility:Mode$ Continuous | AddStaticAbility$ SpendAnyMana | Affected$ Card.IsRemembered | EffectZone$ Command | AffectedZone$ Battlefield,Hand,Graveyard,Exile,Stack,Library,Command | Description$ The conjured card perpetually gains "You may spend mana as though it were mana of any color to cast this spell."
SVar:SpendAnyMana:Mode$ ManaConvert | EffectZone$ Stack | ValidPlayer$ You | ValidCard$ Card.Self | ValidSA$ Spell | ManaConversion$ AnyType->AnyColor | Description$ You may spend mana as though it were mana of any color to cast this spell. SVar:SpendAnyMana:Mode$ ManaConvert | EffectZone$ Stack | ValidPlayer$ You | ValidCard$ Card.Self | ValidSA$ Spell | ManaConversion$ AnyType->AnyColor | Description$ You may spend mana as though it were mana of any color to cast this spell.
SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True | SubAbility$ TrigDraft SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True | SubAbility$ DBDraft
SVar:Update:Mode$ ChangesZone | Origin$ Any | Destination$ Any | Static$ True | ValidCard$ Card.IsRemembered | Execute$ DBUpdate SVar:DBDraft:DB$ Draft | ConditionCheckSVar$ Count$ValidGraveyard Card.YouOwn$DifferentCMC | ConditionSVarCompare$ GE5 | Spellbook$ Corpse Churn,Corpse Hauler,Courier Bat,Durable Coilbug,Fear of Death,Gorging Vulture,Locked in the Cemetery,Naga Oracle,Necrotic Wound,Obsessive Stitcher,Reassembling Skeleton,Strategic Planning,Unmarked Grave,Wonder | StackDescription$ SpellDescription | SpellDescription$ If there are five or more mana values among cards in your graveyard, draft a card from CARDNAME's spellbook.
SVar:DBUpdate:DB$ UpdateRemember DeckHints:Ability$Discard
SVar:TrigDraft:DB$ Draft | ConditionCheckSVar$ X | ConditionSVarCompare$ GE5 | Spellbook$ Corpse Churn,Corpse Hauler,Courier Bat,Durable Coilbug,Fear of Death,Gorging Vulture,Locked in the Cemetery,Naga Oracle,Necrotic Wound,Obsessive Stitcher,Reassembling Skeleton,Strategic Planning,Unmarked Grave,Wonder | SpellDescription$ If there are five or more mana values among cards in your graveyard, draft a card from CARDNAME's spellbook.
SVar:X:Count$ValidGraveyard Card.YouOwn$DifferentCMC
Oracle:Choose one —\n• Counter target noncreature spell.\n• Conjure a duplicate of target creature card in an opponent's graveyard into your hand. It perpetually gains "You may spend mana as though it were mana of any color to cast this spell."\nIf there are five or more mana values among cards in your graveyard, draft a card from Bind to Secrecy's spellbook. Oracle:Choose one —\n• Counter target noncreature spell.\n• Conjure a duplicate of target creature card in an opponent's graveyard into your hand. It perpetually gains "You may spend mana as though it were mana of any color to cast this spell."\nIf there are five or more mana values among cards in your graveyard, draft a card from Bind to Secrecy's spellbook.

View File

@@ -2,9 +2,8 @@ Name:Bloodsprout Talisman
ManaCost:B G ManaCost:B G
Types:Artifact Types:Artifact
K:CARDNAME enters the battlefield tapped. K:CARDNAME enters the battlefield tapped.
A:AB$ ChooseCard | Cost$ T PayLife<1> | ChoiceZone$ Hand | Choices$ Card.nonLand+YouOwn | ChoiceTitle$ Choose a nonland card in your hand | Amount$ 1 | SubAbility$ DBEffect | SpellDescription$ Choose a nonland card in your hand. It perpetually gains "This spell costs {1} less to cast." A:AB$ ChooseCard | Cost$ T PayLife<1> | Mandatory$ True | ChoiceZone$ Hand | Choices$ Card.nonLand+YouOwn | ChoiceDesc$ nonland | ChoiceTitle$ Choose a nonland card in your hand | SubAbility$ DBAnimate | SpellDescription$ Choose a nonland card in your hand.
SVar:DBEffect:DB$ Effect | StaticAbilities$ PerpetualAbility | Name$ Bloodsprout Talisman's Perpetual Effect | Duration$ Permanent | SubAbility$ DBCleanup SVar:DBAnimate:DB$ Animate | Duration$ Perpetual | Defined$ ChosenCard | staticAbilities$ ReduceCost | StackDescription$ SpellDescription | SpellDescription$ It perpetually gains "This spell costs {1} less to cast."
SVar:PerpetualAbility:Mode$ Continuous | Affected$ Card.ChosenCard | AddStaticAbility$ PerpetualReduce | EffectZone$ Command | AffectedZone$ Battlefield,Hand,Graveyard,Exile,Stack,Library,Command | Description$ The chosen card perpetually gains "This spell costs {1} less to cast." SVar:ReduceCost:Mode$ ReduceCost | ValidCard$ Card.Self | Type$ Spell | Amount$ 1 | EffectZone$ All | SubAbility$ DBCleanup | Description$ This spell costs {1} less to cast.
SVar:PerpetualReduce:Mode$ ReduceCost | ValidCard$ Card.Self | Type$ Spell | Amount$ 1 | EffectZone$ All | Description$ This spell costs {1} less to cast.
SVar:DBCleanup:DB$ Cleanup | ClearChosenCard$ True SVar:DBCleanup:DB$ Cleanup | ClearChosenCard$ True
Oracle:Bloodsprout Talisman enters the battlefield tapped.\n{T), pay 1 life: Choose a nonland card in your hand. It perpetually gains "This spell costs {1} less to cast." Oracle:Bloodsprout Talisman enters the battlefield tapped.\n{T), pay 1 life: Choose a nonland card in your hand. It perpetually gains "This spell costs {1} less to cast."

View File

@@ -4,8 +4,9 @@ Types:Creature Orc Knight
PT:3/1 PT:3/1
T:Mode$ ChangesZone | ValidCard$ Card.Self | Origin$ Any | Destination$ Battlefield | Execute$ TrigReveal | TriggerDescription$ When CARDNAME enters the battlefield, target opponent reveals all creature and land cards in their hand. Choose one of them. That card perpetually gains "This permanent enters the battlefield tapped." T:Mode$ ChangesZone | ValidCard$ Card.Self | Origin$ Any | Destination$ Battlefield | Execute$ TrigReveal | TriggerDescription$ When CARDNAME enters the battlefield, target opponent reveals all creature and land cards in their hand. Choose one of them. That card perpetually gains "This permanent enters the battlefield tapped."
SVar:TrigReveal:DB$ Reveal | ValidTgts$ Opponent | RevealAllValid$ Creature.TargetedPlayerOwn,Land.TargetedPlayerOwn | SubAbility$ DBChooseCard | RememberRevealed$ True SVar:TrigReveal:DB$ Reveal | ValidTgts$ Opponent | RevealAllValid$ Creature.TargetedPlayerOwn,Land.TargetedPlayerOwn | SubAbility$ DBChooseCard | RememberRevealed$ True
SVar:DBChooseCard:DB$ ChooseCard | ChoiceZone$ Hand | Choices$ Card.IsRemembered | SubAbility$ DBEffect SVar:DBChooseCard:DB$ ChooseCard | ChoiceZone$ Hand | Choices$ Card.IsRemembered | SubAbility$ DBAnimate
SVar:DBEffect:DB$ Effect | StaticAbilities$ PerpetualAbility | Name$ Boareskyr Tollkeeper's Perpetual Effect | Duration$ Permanent | SubAbility$ DBCleanup SVar:DBAnimate:DB$ Animate | Duration$ Perpetual | Defined$ ChosenCard | Replacements$ ReplaceETB | SubAbility$ DBCleanup
SVar:PerpetualAbility:Mode$ Continuous | Affected$ Card.ChosenCard | EffectZone$ Command | AddKeyword$ CARDNAME enters the battlefield tapped. | AffectedZone$ Battlefield,Hand,Graveyard,Exile,Stack,Library,Command | Description$ The chosen card perpetually gains "This permanent enters the battlefield tapped." SVar:ReplaceETB:Event$ Moved | ValidCard$ Card.Self | Destination$ Battlefield | ReplaceWith$ ETBTapped | ReplacementResult$ Updated | Description$ This permanent enters the battlefield tapped.
SVar:ETBTapped:DB$ Tap | ETB$ True | Defined$ ReplacedCard
SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True | ClearChosenCard$ True SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True | ClearChosenCard$ True
Oracle:When Boareskyr Tollkeeper enters the battlefield, target opponent reveals all creature and land cards in their hand. Choose one of them. That card perpetually gains "This permanent enters the battlefield tapped." Oracle:When Boareskyr Tollkeeper enters the battlefield, target opponent reveals all creature and land cards in their hand. Choose one of them. That card perpetually gains "This permanent enters the battlefield tapped."

View File

@@ -1,8 +1,7 @@
Name:Brittle Blast Name:Brittle Blast
ManaCost:2 R ManaCost:2 R
Types:Instant Types:Instant
A:SP$ Effect | RememberObjects$ Valid Creature.OppCtrl,Valid Planeswalker.OppCtrl | StaticAbilities$ MakeBrittle | Duration$ Permanent | Name$ Brittle Blast's Perpetual Effect | SubAbility$ DBDamage | SpellDescription$ Creatures and planeswalkers your opponents control perpetually gain "If this permanent would die, exile it instead." A:SP$ AnimateAll | ValidCards$ Creature.OppCtrl,Planeswalker.OppCtrl | Duration$ Perpetual | Replacements$ BrittleExile | SubAbility$ DBDamage | StackDescription$ REP your_{p:You}'s | SpellDescription$ Creatures and planeswalkers your opponents control perpetually gain "If this permanent would die, exile it instead."
SVar:MakeBrittle:Mode$ Continuous | Affected$ Card.IsRemembered | AddReplacementEffects$ BrittleExile | AddSVar$ BrittleRep | EffectZone$ Command | AffectedZone$ Battlefield,Hand,Graveyard,Exile,Stack,Library,Command | Description$ Creatures and planeswalkers your opponents control perpetually gain "If this permanent would die, exile it instead."
SVar:BrittleExile:Event$ Moved | Origin$ Battlefield | Destination$ Graveyard | ValidCard$ Card.Self | ReplaceWith$ BrittleRep | Description$ If this permanent would die, exile it instead. SVar:BrittleExile:Event$ Moved | Origin$ Battlefield | Destination$ Graveyard | ValidCard$ Card.Self | ReplaceWith$ BrittleRep | Description$ If this permanent would die, exile it instead.
SVar:BrittleRep:DB$ ChangeZone | Hidden$ True | Origin$ All | Destination$ Exile | Defined$ ReplacedCard SVar:BrittleRep:DB$ ChangeZone | Hidden$ True | Origin$ All | Destination$ Exile | Defined$ ReplacedCard
SVar:DBDamage:DB$ DealDamage | ValidTgts$ Creature,Planeswalker | TgtPrompt$ Select target creature or planeswalker | NumDmg$ 5 | SpellDescription$ CARDNAME deals 5 damage to target creature or planeswalker. SVar:DBDamage:DB$ DealDamage | ValidTgts$ Creature,Planeswalker | TgtPrompt$ Select target creature or planeswalker | NumDmg$ 5 | SpellDescription$ CARDNAME deals 5 damage to target creature or planeswalker.

View File

@@ -1,12 +1,11 @@
Name:Brokers' Safeguard Name:Brokers' Safeguard
ManaCost:W U ManaCost:W U
Types:Instant Types:Instant
A:SP$ ChangeZone | ValidTgts$ Creature.nonArtifact+YouCtrl | TgtPrompt$ Select target nonartifact creature you control | Origin$ Battlefield | Destination$ Exile | RememberTargets$ True | SubAbility$ DBEffect | SpellDescription$ Exile target target nonartifact creature you control. A:SP$ ChangeZone | ValidTgts$ Creature.nonArtifact+YouCtrl | TgtPrompt$ Select target nonartifact creature you control | Origin$ Battlefield | Destination$ Exile | RememberTargets$ True | SubAbility$ DBAnimate | SpellDescription$ Exile target target nonartifact creature you control.
SVar:DBEffect:DB$ Effect | Name$ Brokers' Safeguard's Perpetual Effect | RememberObjects$ RememberedLKI | StaticAbilities$ PerpetualStatic | Duration$ Permanent | SubAbility$ DBReturn | SpellDescription$ It perpetually gains "This creature enters the battlefield with an additional shield counter on it." SVar:DBAnimate:DB$ Animate | Defined$ Remembered | Replacements$ ETBAddCounter | Duration$ Perpetual | SubAbility$ DBReturn | StackDescription$ SpellDescription | SpellDescription$ It perpetually gains "This creature enters the battlefield with an additional shield counter on it."
SVar:PerpetualStatic:Mode$ Continuous | Affected$ Card.IsRemembered | AddReplacementEffects$ ETBAddCounter | EffectZone$ Command | AffectedZone$ Battlefield,Hand,Graveyard,Exile,Stack,Library,Command | Description$ This creature perpetually gains "This creature enters the battlefield with an additional shield counter on it."
SVar:ETBAddCounter:Event$ Moved | Destination$ Battlefield | ValidCard$ Card.Self | ReplaceWith$ ETBAddExtraCounter | ReplacementResult$ Updated | Description$ This creature enters the battlefield with an additional shield counter on it. SVar:ETBAddCounter:Event$ Moved | Destination$ Battlefield | ValidCard$ Card.Self | ReplaceWith$ ETBAddExtraCounter | ReplacementResult$ Updated | Description$ This creature enters the battlefield with an additional shield counter on it.
SVar:ETBAddExtraCounter:DB$ PutCounter | ETB$ True | Defined$ ReplacedCard | CounterType$ SHIELD SVar:ETBAddExtraCounter:DB$ PutCounter | ETB$ True | Defined$ ReplacedCard | CounterType$ SHIELD
SVar:DBReturn:DB$ ChangeZone | Defined$ Remembered | Origin$ All | Destination$ Battlefield | SubAbility$ DBCleanup | StackDescription$ Then return {c:Remembered} to the battlefield under its owner's control. | SpellDescription$ Then return that card to the battlefield under its owner's control. SVar:DBReturn:DB$ ChangeZone | Defined$ Remembered | Origin$ All | Destination$ Battlefield | SubAbility$ DBCleanup | StackDescription$ SpellDescription | SpellDescription$ Then return that card to the battlefield under its owner's control.
SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True
DeckHas:Ability$Counters DeckHas:Ability$Counters
Oracle:Exile target nonartifact creature you control. It perpetually gains "This creature enters the battlefield with an additional shield counter on it." Then return that card to the battlefield under its owner's control. Oracle:Exile target nonartifact creature you control. It perpetually gains "This creature enters the battlefield with an additional shield counter on it." Then return that card to the battlefield under its owner's control.

View File

@@ -3,13 +3,11 @@ ManaCost:2 W
Types:Enchantment Types:Enchantment
T:Mode$ Phase | Phase$ BeginCombat | ValidPlayer$ You | Execute$ TrigCharm | TriggerZones$ Battlefield | TriggerDescription$ At the beginning of combat on your turn, ABILITY T:Mode$ Phase | Phase$ BeginCombat | ValidPlayer$ You | Execute$ TrigCharm | TriggerZones$ Battlefield | TriggerDescription$ At the beginning of combat on your turn, ABILITY
SVar:TrigCharm:DB$ Charm | Choices$ PumpField,PumpHand,Token | ChoiceRestriction$ YourLastCombat SVar:TrigCharm:DB$ Charm | Choices$ PumpField,PumpHand,Token | ChoiceRestriction$ YourLastCombat
SVar:PumpField:DB$ Pump | ValidTgts$ Soldier | TargetMin$ 0 | TargetMax$ 1 | TgtPrompt$ Select up to one target Soldier | SubAbility$ DBEffect | SpellDescription$ Up to one target Soldier perpetually gets +1/+1 and gains flying. SVar:PumpField:DB$ Pump | ValidTgts$ Soldier | TargetMin$ 0 | TargetMax$ 1 | TgtPrompt$ Select up to one target Soldier | KW$ Flying | NumAtt$ 1 | NumDef$ 1 | Duration$ Perpetual | SpellDescription$ Up to one target Soldier perpetually gets +1/+1 and gains flying.
SVar:DBEffect:DB$ Effect | StaticAbilities$ PerpetualPump | RememberObjects$ Targeted | Name$ By Elspeth's Command's First Mode's Perpetual Effect | Duration$ Permanent | SubAbility$ DBCleanup SVar:PumpHand:DB$ ChooseCard | ChoiceZone$ Hand | Choices$ Soldier.YouOwn | ChoiceTitle$ Choose a Soldier card in your hand | Mandatory$ True | SubAbility$ DBPump | SpellDescription$ Choose a Soldier card in your hand. It perpetually gets +1/+1 and gains vigilance.
SVar:PerpetualPump:Mode$ Continuous | Affected$ Card.IsRemembered | AddPower$ 1 | AddToughness$ 1 | AddKeyword$ Flying | EffectZone$ Command | AffectedZone$ Battlefield,Hand,Graveyard,Exile,Stack,Library,Command | Description$ This Soldier perpetually gets +1/+1 and gains flying. SVar:DBPump:DB$ Pump | Defined$ ChosenCard | PumpZone$ Hand | KW$ Vigilance | NumAtt$ 1 | NumDef$ 1 | Duration$ Perpetual | SubAbility$ DBCleanup
SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True | ClearChosenCard$ True SVar:DBCleanup:DB$ Cleanup | ClearChosenCard$ True
SVar:PumpHand:DB$ ChooseCard | ChoiceZone$ Hand | Choices$ Soldier.YouOwn | ChoiceTitle$ Choose a Soldier card in your hand | Amount$ 1 | SubAbility$ DBEffect2 | SpellDescription$ Choose a Soldier card in your hand. It perpetually gets +1/+1 and gains vigilance.
SVar:DBEffect2:DB$ Effect | StaticAbilities$ PerpetualPump2 | Name$ By Elspeth's Command's Second Mode's Perpetual Effect | Duration$ Permanent | SubAbility$ DBCleanup
SVar:PerpetualPump2:Mode$ Continuous | Affected$ Card.ChosenCard | AddPower$ 1 | AddToughness$ 1 | AddKeyword$ Vigilance | EffectZone$ Command | AffectedZone$ Battlefield,Hand,Graveyard,Exile,Stack,Library,Command | Description$ The chosen Soldier card perpetually gets +1/+1 and gains vigilance.
SVar:Token:DB$ Token | TokenScript$ c_1_1_a_soldier | SpellDescription$ Create a 1/1 colorless Soldier artifact creature token. SVar:Token:DB$ Token | TokenScript$ c_1_1_a_soldier | SpellDescription$ Create a 1/1 colorless Soldier artifact creature token.
DeckHas:Ability$Token & Type$Artifact|Soldier DeckHas:Ability$Token & Type$Artifact|Soldier
DeckHints:Type$Soldier
Oracle:At the beginning of combat on your turn, choose one that wasn't chosen during your last combat —\n• Up to one target Soldier perpetually gets +1/+1 and gains flying.\n• Choose a Soldier card in your hand. It perpetually gets +1/+1 and gains vigilance.\n• Create a 1/1 colorless Soldier artifact creature token. Oracle:At the beginning of combat on your turn, choose one that wasn't chosen during your last combat —\n• Up to one target Soldier perpetually gets +1/+1 and gains flying.\n• Choose a Soldier card in your hand. It perpetually gets +1/+1 and gains vigilance.\n• Create a 1/1 colorless Soldier artifact creature token.

View File

@@ -2,11 +2,8 @@ Name:Conductive Current
ManaCost:R R R ManaCost:R R R
Types:Sorcery Types:Sorcery
A:SP$ DamageAll | NumDmg$ 3 | ValidCards$ Creature | ValidDescription$ each creature. | SubAbility$ DBChoose | SpellDescription$ CARDNAME deals 3 damage to each creature. A:SP$ DamageAll | NumDmg$ 3 | ValidCards$ Creature | ValidDescription$ each creature. | SubAbility$ DBChoose | SpellDescription$ CARDNAME deals 3 damage to each creature.
SVar:DBChoose:DB$ ChooseCard | ChoiceZone$ Hand | Choices$ Instant.YouOwn,Sorcery.YouOwn | ChoiceTitle$ Choose an instant or sorcery card in your hand | Amount$ 1 | SubAbility$ DBEffect SVar:DBChoose:DB$ ChooseCard | ChoiceZone$ Hand | Choices$ Instant.YouOwn,Sorcery.YouOwn | ChoiceDesc$ instant or sorcery | ChoiceTitle$ Choose an instant or sorcery card in your hand | Mandatory$ True | SubAbility$ DBAnimate | SpellDescription$ Choose an instant or sorcery card in your hand.
SVar:DBEffect:DB$ Effect | StaticAbilities$ PerpetualAbility | Duration$ Permanent | Name$ Conductive Current's Perpetual Effect | SubAbility$ DBCleanup SVar:DBAnimate:DB$ Animate | Defined$ ChosenCard | Replacements$ PerpDamageRep | Duration$ Perpetual | StackDescription$ SpellDescription | SpellDescription$ It perpetually gains "If this spell would deal noncombat damage to a permanent or player, it deals that much damage plus 2 instead."
SVar:PerpetualAbility:Mode$ Continuous | Affected$ Card.IsRemembered | AddReplacementEffects$ PerpDamageRep | EffectZone$ Command | AffectedZone$ Battlefield,Hand,Graveyard,Exile,Stack,Library,Command | Description$ The chosen card perpetually gains "If this spell would deal noncombat damage to a permanent or player, it deals that much damage plus 2 instead."
SVar:PerpDamageRep:Event$ DamageDone | ValidSource$ Card.Self | ValidTarget$ Permanent,Player | ReplaceWith$ DmgPlus2 | Description$ If this spell would deal noncombat damage to a permanent or player, it deals that much damage plus 2 instead. SVar:PerpDamageRep:Event$ DamageDone | ValidSource$ Card.Self | ValidTarget$ Permanent,Player | ReplaceWith$ DmgPlus2 | Description$ If this spell would deal noncombat damage to a permanent or player, it deals that much damage plus 2 instead.
SVar:DmgPlus2:DB$ ReplaceEffect | VarName$ DamageAmount | VarValue$ X SVar:DmgPlus2:DB$ ReplaceEffect | VarName$ DamageAmount | VarValue$ ReplaceCount$DamageAmount/Plus.2
SVar:X:ReplaceCount$DamageAmount/Plus.2
SVar:DBCleanup:DB$ Cleanup | ClearChosenCard$ True
Oracle:Conductive Current deals 3 damage to each creature. Choose an instant or sorcery card in your hand. It perpetually gains "If this spell would deal noncombat damage to a permanent or player, it deals that much damage plus 2 instead." Oracle:Conductive Current deals 3 damage to each creature. Choose an instant or sorcery card in your hand. It perpetually gains "If this spell would deal noncombat damage to a permanent or player, it deals that much damage plus 2 instead."

View File

@@ -1,10 +1,11 @@
Name:Divine Purge Name:Divine Purge
ManaCost:1 W W ManaCost:1 W W
Types:Sorcery Types:Sorcery
A:SP$ ChangeZoneAll | Origin$ Battlefield | Destination$ Exile | ChangeType$ Artifact.cmcLE3,Creature.cmcLE3 | RememberChanged$ True | SubAbility$ DBEffect | SpellDescription$ Exile all artifacts and creatures with mana value 3 or less. They perpetually gain "This spell costs {2} more to cast" and "This permanent enters the battlefield tapped." For as long as each of them remain exiled, its owner may play it. A:SP$ ChangeZoneAll | Origin$ Battlefield | Destination$ Exile | ChangeType$ Artifact.cmcLE3,Creature.cmcLE3 | RememberChanged$ True | SubAbility$ DBAnimate | SpellDescription$ Exile all artifacts and creatures with mana value 3 or less.
SVar:DBEffect:DB$ Effect | RememberObjects$ Remembered | StaticAbilities$ PerpetualAbility | Duration$ Permanent | Name$ Divine Purge's Perpetual Effect | SubAbility$ DBMayPlayEffect SVar:DBAnimate:DB$ Animate | Duration$ Perpetual | Defined$ Remembered | staticAbilities$ RaiseCost | Replacements$ ReplaceETB | SubAbility$ DBMayPlayEffect | StackDescription$ SpellDescription | SpellDescription$ They perpetually gain "This spell costs {2} more to cast" and "This permanent enters the battlefield tapped."
SVar:PerpetualAbility:Mode$ Continuous | Affected$ Card.IsRemembered | AddStaticAbility$ RaiseCost & ETBTappedDesc | EffectZone$ Command | AddKeyword$ CARDNAME enters the battlefield tapped. | AffectedZone$ Battlefield,Hand,Graveyard,Exile,Stack,Library,Command | SubAbility$ DBMayPlayEffect | Description$ The exiled cards perpetually gain "This spell costs {2} more to cast" and "This permanent enters the battlefield tapped."
SVar:RaiseCost:Mode$ RaiseCost | ValidCard$ Card.Self | Type$ Spell | Amount$ 2 | EffectZone$ All | Description$ This spell costs {2} more to cast. SVar:RaiseCost:Mode$ RaiseCost | ValidCard$ Card.Self | Type$ Spell | Amount$ 2 | EffectZone$ All | Description$ This spell costs {2} more to cast.
SVar:ReplaceETB:Event$ Moved | ValidCard$ Card.Self | Destination$ Battlefield | ReplaceWith$ ETBTapped | ReplacementResult$ Updated | Description$ This permanent enters the battlefield tapped.
SVar:ETBTapped:DB$ Tap | ETB$ True | Defined$ ReplacedCard
SVar:ETBTappedDesc:Mode$ Continuous | Affected$ Card.Self | Description$ This permanent enters the battlefield tapped. SVar:ETBTappedDesc:Mode$ Continuous | Affected$ Card.Self | Description$ This permanent enters the battlefield tapped.
SVar:DBMayPlayEffect:DB$ Effect | RememberObjects$ Remembered | StaticAbilities$ OwnerMayPlay | Duration$ Permanent | SubAbility$ DBCleanup | ForgetOnMoved$ Exile | SpellDescription$ For as long as each of them remain exiled, its owner may play it. SVar:DBMayPlayEffect:DB$ Effect | RememberObjects$ Remembered | StaticAbilities$ OwnerMayPlay | Duration$ Permanent | SubAbility$ DBCleanup | ForgetOnMoved$ Exile | SpellDescription$ For as long as each of them remain exiled, its owner may play it.
SVar:OwnerMayPlay:Mode$ Continuous | Affected$ Card.IsRemembered | AffectedZone$ Exile | MayPlay$ True | EffectZone$ Command | MayPlayPlayer$ CardOwner | Description$ For as long as each of these remain exiled, its owner may play it. SVar:OwnerMayPlay:Mode$ Continuous | Affected$ Card.IsRemembered | AffectedZone$ Exile | MayPlay$ True | EffectZone$ Command | MayPlayPlayer$ CardOwner | Description$ For as long as each of these remain exiled, its owner may play it.

View File

@@ -5,9 +5,8 @@ PT:3/3
K:Lifelink K:Lifelink
T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigChoose | TriggerDescription$ Whenever CARDNAME enters the battlefield or attacks, choose a card in your hand. It perpetually gains lifelink. T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigChoose | TriggerDescription$ Whenever CARDNAME enters the battlefield or attacks, choose a card in your hand. It perpetually gains lifelink.
T:Mode$ Attacks | ValidCard$ Card.Self | Execute$ TrigChoose | Secondary$ True | TriggerDescription$ Whenever CARDNAME enters the battlefield or attacks, choose a card in your hand. It perpetually gains lifelink. T:Mode$ Attacks | ValidCard$ Card.Self | Execute$ TrigChoose | Secondary$ True | TriggerDescription$ Whenever CARDNAME enters the battlefield or attacks, choose a card in your hand. It perpetually gains lifelink.
SVar:TrigChoose:DB$ ChooseCard | ChoiceZone$ Hand | Choices$ Card.YouOwn | ChoiceTitle$ Choose a card in your hand | Amount$ 1 | SubAbility$ DBEffect SVar:TrigChoose:DB$ ChooseCard | ChoiceZone$ Hand | Choices$ Card.YouOwn | ChoiceTitle$ Choose a card in your hand | SubAbility$ DBPump
SVar:DBEffect:DB$ Effect | StaticAbilities$ PerpetualLifelink | Name$ Ethereal Escort's Perpetual Effect | Duration$ Permanent | SubAbility$ DBCleanup SVar:DBPump:DB$ Pump | Defined$ ChosenCard | PumpZone$ Hand | KW$ Lifelink | Duration$ Perpetual | SubAbility$ DBCleanup
SVar:PerpetualLifelink:Mode$ Continuous | Affected$ Card.ChosenCard | AddKeyword$ Lifelink | EffectZone$ Command | AffectedZone$ Battlefield,Hand,Graveyard,Exile,Stack,Library,Command | Description$ The chosen card perpetually gains lifelink.
SVar:DBCleanup:DB$ Cleanup | ClearChosenCard$ True SVar:DBCleanup:DB$ Cleanup | ClearChosenCard$ True
SVar:HasAttackEffect:TRUE SVar:HasAttackEffect:TRUE
DeckHas:Ability$LifeGain DeckHas:Ability$LifeGain

View File

@@ -1,8 +1,8 @@
Name:Ethereal Grasp Name:Ethereal Grasp
ManaCost:2 U ManaCost:2 U
Types:Instant Types:Instant
A:SP$ Tap | ValidTgts$ Creature | TgtPrompt$ Select target creature | IsCurse$ True | SubAbility$ DBEffect | SpellDescription$ Tap target creature. That creature perpetually gains "This creature doesn't untap during your untap step" and "{8}: Untap this creature." A:SP$ Tap | ValidTgts$ Creature | IsCurse$ True | SubAbility$ DBAnimate | SpellDescription$ Tap target creature.
SVar:DBEffect:DB$ Effect | StaticAbilities$ EtherealGrasp | RememberObjects$ Targeted | Name$ Ethereal Grasp's Perpetual Effect | Duration$ Permanent | StackDescription$ That creature perpetually gains "This creature doesn't untap during your untap step" and "{8}: Untap this creature." SVar:DBAnimate:DB$ Animate | Defined$ Targeted | Duration$ Perpetual | staticAbilities$ EtherealGrasp | Abilities$ Untap | StackDescription$ SpellDescription | SpellDescription$ That creature perpetually gains "This creature doesn't untap during your untap step" and "{8}: Untap this creature."
SVar:EtherealGrasp:Mode$ Continuous | Affected$ Card.IsRemembered | AddHiddenKeyword$ CARDNAME doesn't untap during your untap step. | AddAbility$ Untap | EffectZone$ Command | AffectedZone$ Battlefield,Hand,Graveyard,Exile,Stack,Library,Command | Description$ This creature perpetually gains "This creature doesn't untap during your untap step" and "{8}: Untap this creature." SVar:EtherealGrasp:Mode$ Continuous | Affected$ Card.Self | AddHiddenKeyword$ CARDNAME doesn't untap during your untap step. | AffectedZone$ Battlefield,Hand,Graveyard,Exile,Stack,Library,Command | Description$ This creature doesn't untap during your untap step.
SVar:Untap:AB$ Untap | Cost$ 8 | Defined$ Self | SpellDescription$ Untap this creature. SVar:Untap:AB$ Untap | Cost$ 8 | SpellDescription$ Untap this creature.
Oracle:Tap target creature. That creature perpetually gains "This creature doesn't untap during your untap step" and "{8}: Untap this creature." Oracle:Tap target creature. That creature perpetually gains "This creature doesn't untap during your untap step" and "{8}: Untap this creature."

View File

@@ -4,9 +4,8 @@ Types:Creature Human Artificer
PT:2/4 PT:2/4
K:Haste K:Haste
T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigConjure | TriggerDescription$ When CARDNAME enters the battlefield, conjure a duplicate of another target nontoken creature or artifact you control into your graveyard. The duplicate perpetually gains unearth {1}{R}. T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigConjure | TriggerDescription$ When CARDNAME enters the battlefield, conjure a duplicate of another target nontoken creature or artifact you control into your graveyard. The duplicate perpetually gains unearth {1}{R}.
SVar:TrigConjure:DB$ MakeCard | Conjure$ True | TgtPrompt$ Select another target nontoken creature or artifact | DefinedName$ Targeted | ValidTgts$ Creature.YouCtrl+Other+nonToken,Artifact.YouCtrl+Other+nonToken | Zone$ Graveyard | RememberMade$ True | SubAbility$ DBEffect SVar:TrigConjure:DB$ MakeCard | Conjure$ True | TgtPrompt$ Select another target nontoken creature or artifact you control | DefinedName$ Targeted | ValidTgts$ Creature.YouCtrl+Other+nonToken,Artifact.YouCtrl+Other+nonToken | Zone$ Graveyard | RememberMade$ True | SubAbility$ DBPump
SVar:DBEffect:DB$ Effect | StaticAbilities$ PerpetualUnearth | RememberObjects$ Remembered | Name$ Fallaji Antiquarian's perpetual Effect | Duration$ Permanent | SubAbility$ DBCleanup SVar:DBPump:DB$ Pump | Defined$ Remembered | PumpZone$ Graveyard | KW$ Unearth:2 R | Duration$ Perpetual | SubAbility$ DBCleanup
SVar:PerpetualUnearth:Mode$ Continuous | Affected$ Card.IsRemembered | AddKeyword$ Unearth:2 R | EffectZone$ Command | AffectedZone$ Battlefield,Hand,Graveyard,Exile,Stack,Library,Command | Description$ This creature perpetually gains unearth {1}{R}.
SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True
DeckHas:Ability$Graveyard DeckHas:Ability$Graveyard
DeckHints:Type$Artifact DeckHints:Type$Artifact

View File

@@ -1,11 +1,12 @@
Name:Flames of Moradin Name:Flames of Moradin
ManaCost:2 R R ManaCost:2 R R
Types:Sorcery Types:Sorcery
A:SP$ Destroy | ValidTgts$ Artifact | TargetMin$ 0 | TargetMax$ 3 | TgtPrompt$ Select up to three target artifacts | SubAbility$ DBConjure A:SP$ Destroy | ValidTgts$ Artifact | TargetMin$ 0 | TargetMax$ 3 | TgtPrompt$ Select up to three target artifacts | SubAbility$ DBConjure | SpellDescription$ Destroy up to three target artifacts.
SVar:DBConjure:DB$ MakeCard | Conjure$ True | DefinedName$ Targeted.nonToken | Zone$ Hand | RememberMade$ True | SubAbility$ DBEffect SVar:DBConjure:DB$ MakeCard | Conjure$ True | DefinedName$ Targeted.nonToken | Zone$ Hand | RememberMade$ True | SubAbility$ DBAnimate | SpellDescription$ Conjure a duplicate of each nontoken artifact destroyed this way into your hand.
SVar:DBEffect:DB$ Effect | StaticAbilities$ PerpetualAbility | RememberObjects$ Remembered | Name$ Flames of Moradin's Perpetual Effect | Duration$ Permanent SVar:DBAnimate:DB$ Animate | Duration$ Perpetual | Defined$ Remembered | staticAbilities$ PerpAltCost | Triggers$ PhaseTrig | SubAbility$ DBCleanup | StackDescription$ SpellDescription | SpellDescription$ The duplicates perpetually gain "You may pay {R} rather than pay this spell's mana cost" and "at the beginning of your end step, sacrifice this artifact."
SVar:PerpetualAbility:Mode$ Continuous | RememberObjects$ Targeted | AddKeyword$ Alternative Cost: R | Affected$ Card.IsRemembered | AddTrigger$ TrigSac | EffectZone$ Command | AffectedZone$ Battlefield,Hand,Graveyard,Exile,Stack,Library,Command | Description$ This creature perpetually gains "You may pay {R} rather than pay this spell's mana cost" and "at the beginning of your end step, sacrifice this artifact." SVar:PerpAltCost:Mode$ Continuous | EffectZone$ All | MayPlay$ True | MayPlayAltManaCost$ R | MayPlayDontGrantZonePermissions$ True | Affected$ Card.Self | AffectedZone$ Hand,Graveyard,Library,Exile,Command | Description$ You may pay {R} rather than pay this spell's mana cost.
SVar:TrigSac:Mode$ Phase | ValidPlayer$ You | Phase$ End of Turn | Execute$ TrigSacrifice | TriggerZones$ Battlefield | TriggerDescription$ Sacrifice CARDNAME at you end step. SVar:PhaseTrig:Mode$ Phase | ValidPlayer$ You | Phase$ End of Turn | Execute$ TrigSacrifice | TriggerZones$ Battlefield | TriggerDescription$ At the beginning of your end step, sacrifice this artifact.
SVar:TrigSacrifice:DB$ Sacrifice SVar:TrigSacrifice:DB$ Sacrifice
SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True
DeckHas:Type$Artifact & Ability$Sacrifice DeckHas:Type$Artifact & Ability$Sacrifice
Oracle:Destroy up to three target artifacts. Conjure a duplicate of each nontoken artifact destroyed this way into your hand. The duplicates perpetually gain "You may pay {R} rather than pay this spell's mana cost" and "at the beginning of your end step, sacrifice this artifact.". Oracle:Destroy up to three target artifacts. Conjure a duplicate of each nontoken artifact destroyed this way into your hand. The duplicates perpetually gain "You may pay {R} rather than pay this spell's mana cost" and "at the beginning of your end step, sacrifice this artifact."

View File

@@ -4,10 +4,8 @@ Types:Creature Goblin Soldier
PT:2/1 PT:2/1
K:Haste K:Haste
K:Enlist K:Enlist
T:Mode$ Enlisted | ValidCard$ Card.Self | ValidEnlisted$ Card.nonToken | TriggerZones$ Battlefield | OptionalDecider$ You | Execute$ TrigConjure | TriggerDescription$ Whenever CARDNAME enlists a nontoken creature, you may conjure a duplicate of that creature into the top five cards of your library at random. The duplicate perpetually gets +1/+0 and gains haste. T:Mode$ Enlisted | ValidCard$ Card.Self | ValidEnlisted$ Creature.nonToken | TriggerZones$ Battlefield | OptionalDecider$ You | Execute$ TrigConjure | TriggerDescription$ Whenever CARDNAME enlists a nontoken creature, you may conjure a duplicate of that creature into the top five cards of your library at random. The duplicate perpetually gets +1/+0 and gains haste.
SVar:TrigConjure:DB$ MakeCard | Conjure$ True | DefinedName$ TriggeredEnlisted | Zone$ Library | LibraryPosition$ Z | RememberMade$ True | SubAbility$ DBEffect SVar:TrigConjure:DB$ MakeCard | Conjure$ True | DefinedName$ TriggeredEnlisted | Zone$ Library | LibraryPosition$ Count$Random.0.4 | RememberMade$ True | SubAbility$ DBPump
SVar:DBEffect:DB$ Effect | Name$ Goblin Morale Sergeant's Perpetual Effect | RememberObjects$ Remembered | StaticAbilities$ PerpetualAbility | Duration$ Permanent | SubAbility$ DBCleanup SVar:DBPump:DB$ Pump | Defined$ Remembered | PumpZone$ Library | KW$ Haste | NumAtt$ 1 | Duration$ Perpetual | SubAbility$ DBCleanup
SVar:PerpetualAbility:Mode$ Continuous | AddPower$ 1 | AddKeyword$ Haste | Affected$ Card.IsRemembered | EffectZone$ Command | AffectedZone$ Battlefield,Hand,Graveyard,Exile,Stack,Library,Command | Description$ The duplicate perpetually gets +1/+0 and gains haste.
SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True
SVar:Z:Count$Random.0.4
Oracle:Haste\nEnlist\nWhenever Goblin Morale Sergeant enlists a nontoken creature, you may conjure a duplicate of that creature into the top five cards of your library at random. The duplicate perpetually gets +1/+0 and gains haste. Oracle:Haste\nEnlist\nWhenever Goblin Morale Sergeant enlists a nontoken creature, you may conjure a duplicate of that creature into the top five cards of your library at random. The duplicate perpetually gets +1/+0 and gains haste.

View File

@@ -3,13 +3,11 @@ ManaCost:R
Types:Creature Goblin Types:Creature Goblin
PT:1/1 PT:1/1
T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Graveyard | ValidCard$ Card.Self | TriggerZones$ Battlefield | Execute$ DBSeek | TriggerDescription$ When CARDNAME dies, seek a creature card with mana value 3 or less. That card perpetually gains haste, "This spell costs {1} less to cast," and "At the beginning of your end step, sacrifice this creature." T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Graveyard | ValidCard$ Card.Self | TriggerZones$ Battlefield | Execute$ DBSeek | TriggerDescription$ When CARDNAME dies, seek a creature card with mana value 3 or less. That card perpetually gains haste, "This spell costs {1} less to cast," and "At the beginning of your end step, sacrifice this creature."
SVar:DBSeek:DB$ Seek | Type$ Creature.cmcLE3+YouOwn | RememberFound$ True | SubAbility$ DBEffect SVar:DBSeek:DB$ Seek | Type$ Creature.cmcLE3+YouOwn | RememberFound$ True | SubAbility$ DBAnimate
SVar:DBEffect:DB$ Effect | StaticAbilities$ PerpetualAbility | RememberObjects$ Remembered | Triggers$ Update | Name$ Goblin Trapfinder's Perpetual Effect | Duration$ Permanent SVar:DBAnimate:DB$ Animate | Defined$ Remembered | staticAbilities$ ReduceCost | Triggers$ SacTrig | Keywords$ Haste | Duration$ Perpetual
SVar:PerpetualAbility:Mode$ Continuous | Affected$ Card.IsRemembered | AddTrigger$ TrigSac | AddStaticAbility$ PerpetualReduceCost | AddKeyword$ Haste | EffectZone$ Command | AffectedZone$ Battlefield,Hand,Graveyard,Exile,Stack,Library,Command | Description$ This card perpetually gains haste, "This spell costs {1} less to cast," and "At the beginning of your end step, sacrifice this creature." SVar:ReduceCost:Mode$ ReduceCost | ValidCard$ Card.Self | Type$ Spell | Amount$ 1 | EffectZone$ All | Description$ This spell costs {1} less to cast.
SVar:PerpetualReduceCost:Mode$ ReduceCost | ValidCard$ Card.Self | Type$ Spell | Amount$ 1 | EffectZone$ All | Description$ This spell costs {1} less to cast. SVar:SacTrig:Mode$ Phase | Phase$ End of Turn | ValidPlayer$ You | Execute$ TrigSacrifice | TriggerZones$ Battlefield | TriggerDescription$ At the beginning of your end step, sacrifice this creature.
SVar:TrigSac:Mode$ Phase | Phase$ End of Turn | ValidPlayer$ You | Execute$ TrigSacrifice | TriggerZones$ Battlefield | TriggerDescription$ At the beginning of your end step, sacrifice this creature.
SVar:TrigSacrifice:DB$ Sacrifice SVar:TrigSacrifice:DB$ Sacrifice
SVar:Update:Mode$ ChangesZone | Origin$ Any | Destination$ Any | Static$ True | ValidCard$ Card.IsRemembered | Execute$ DBUpdate
SVar:DBUpdate:DB$ UpdateRemember
DeckHas:Ability$Sacrifice DeckHas:Ability$Sacrifice
DeckHints:Ability$Sacrifice
Oracle:When Goblin Trapfinder dies, seek a creature card with mana value 3 or less. That card perpetually gains haste, "This spell costs {1} less to cast," and "At the beginning of your end step, sacrifice this creature." Oracle:When Goblin Trapfinder dies, seek a creature card with mana value 3 or less. That card perpetually gains haste, "This spell costs {1} less to cast," and "At the beginning of your end step, sacrifice this creature."

View File

@@ -3,7 +3,7 @@ ManaCost:1 R
Types:Creature Human Warlock Types:Creature Human Warlock
PT:2/2 PT:2/2
A:AB$ Pump | Cost$ R | NumAtt$ +1 | SpellDescription$ CARDNAME gets +1/+0 until end of turn. A:AB$ Pump | Cost$ R | NumAtt$ +1 | SpellDescription$ CARDNAME gets +1/+0 until end of turn.
A:AB$ Effect | Cost$ 2 Reveal<1/CARDNAME> | StaticAbilities$ PerpetualPump | RememberObjects$ Self | Name$ Heir to Dragonfire's Perpetual Effect | Duration$ Permanent | ActivationZone$ Hand | SpellDescription$ CARDNAME perpetually becomes a Dragon, gets +3/+3, and gains flying. A:AB$ Animate | Cost$ 2 R Reveal<1/CARDNAME> | Duration$ Perpetual | Types$ Dragon | RemoveCreatureTypes$ True | ActivationZone$ Hand | SubAbility$ DBPump | StackDescription$ SpellDescription | SpellDescription$ CARDNAME perpetually becomes a Dragon,
SVar:PerpetualPump:Mode$ Continuous | Affected$ Card.IsRemembered | AddType$ Dragon | AddPower$ 3 | AddToughness$ 3 | EffectZone$ Command | AddKeyword$ Flying | AffectedZone$ Battlefield,Hand,Graveyard,Exile,Stack,Library,Command | Description$ EFFECTSOURCE perpetually becomes a Dragon, gets +3/+3, and gains flying. SVar:DBPump:DB$ Pump | Defined$ Self | PumpZone$ Hand | NumAtt$ 3 | NumDef$ 3 | KW$ Flying | Duration$ Perpetual | StackDescription$ SpellDescription | SpellDescription$ gets +3/+3, and gains flying.
DeckHas:Type$Dragon DeckHas:Type$Dragon
Oracle:{R}: Heir to Dragonfire gets +1/+0 until end of turn.\n{2}{R}, Reveal Heir to Dragonfire from your hand: Heir to Dragonfire perpetually becomes a Dragon, gets +3/+3, and gains flying. Oracle:{R}: Heir to Dragonfire gets +1/+0 until end of turn.\n{2}{R}, Reveal Heir to Dragonfire from your hand: Heir to Dragonfire perpetually becomes a Dragon, gets +3/+3, and gains flying.

View File

@@ -0,0 +1,12 @@
Name:High Fae Prankster
ManaCost:2 U B
Types:Creature Faerie Rogue
PT:1/4
K:Flying
K:Deathtouch
T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigCharm | TriggerDescription$ When CARDNAME enters the battlefield, ABILITY
SVar:TrigCharm:DB$ Charm | MinCharmNum$ 0 | CharmNum$ 1 | Choices$ Exchange,Switch
SVar:Exchange:DB$ ExchangePower | ValidTgts$ Creature | TargetMin$ 2 | TargetMax$ 2 | TargetUnique$ True | BasePower$ True | Duration$ Perpetual | SpellDescription$ Perpetually exchange target creature's base power with another target creature's base power.
SVar:Switch:DB$ Animate | Duration$ Perpetual | Power$ 4 | Toughness$ 1 | SpellDescription$ CARDNAME perpetually has base power and toughness 4/1.
SVar:NeedsToPlay:Creature.OppCtrl+powerGE4
Oracle:Flying, deathtouch\nWhen High Fae Prankster enters the battlefield, choose up to one —\n• Perpetually exchange target creature's base power with another target creature's base power.\n• High Fae Prankster perpetually has base power and toughness 4/1.

View File

@@ -2,7 +2,7 @@ Name:Holographic Double
ManaCost:U ManaCost:U
Types:Creature Illusion Types:Creature Illusion
PT:1/1 PT:1/1
A:AB$ ChooseCard | Cost$ U ExileFromHand<1/CARDNAME> | ActivationZone$ Hand | Mandatory$ True | ChoiceZone$ Hand | Choices$ Creature.YouOwn | ChoiceDesc$ creature | FromDesc$ from their hand | ChoiceTitle$ Choose a creature card in your hand | Amount$ 1 | SubAbility$ DBConjure | SpellDescription$ Choose a creature card in your hand. A:AB$ ChooseCard | Cost$ U ExileFromHand<1/CARDNAME> | ActivationZone$ Hand | Mandatory$ True | ChoiceZone$ Hand | Choices$ Creature.YouOwn | ChoiceDesc$ creature | ChoiceTitle$ Choose a creature card in your hand | Amount$ 1 | SubAbility$ DBConjure | SpellDescription$ Choose a creature card in your hand.
SVar:DBConjure:DB$ MakeCard | Conjure$ True | DefinedName$ ChosenCard | Zone$ Hand | SubAbility$ DBCleanup | StackDescription$ {p:You} conjures a duplicate of it into their hand. | SpellDescription$ Conjure a duplicate of it into your hand. SVar:DBConjure:DB$ MakeCard | Conjure$ True | DefinedName$ ChosenCard | Zone$ Hand | SubAbility$ DBCleanup | StackDescription$ {p:You} conjures a duplicate of it into their hand. | SpellDescription$ Conjure a duplicate of it into your hand.
SVar:DBCleanup:DB$ Cleanup | ClearChosenCard$ True SVar:DBCleanup:DB$ Cleanup | ClearChosenCard$ True
Oracle:{U}, Exile Holographic Double from your hand: Choose a creature card in your hand. Conjure a duplicate of it into your hand. Oracle:{U}, Exile Holographic Double from your hand: Choose a creature card in your hand. Conjure a duplicate of it into your hand.

View File

@@ -2,7 +2,7 @@ Name:Nightsnare
ManaCost:3 B ManaCost:3 B
Types:Sorcery Types:Sorcery
A:SP$ RevealHand | ValidTgts$ Opponent | RememberRevealed$ True | SubAbility$ DBChoose | SpellDescription$ Target opponent reveals their hand. A:SP$ RevealHand | ValidTgts$ Opponent | RememberRevealed$ True | SubAbility$ DBChoose | SpellDescription$ Target opponent reveals their hand.
SVar:DBChoose:DB$ ChooseCard | ChoiceZone$ Hand | Amount$ 1 | Choices$ Card.nonLand+IsRemembered | ChoiceDesc$ nonland | FromDesc$ from it | SubAbility$ DBBranch | ChoiceTitle$ You may choose a nonland card | SpellDescription$ You may choose a nonland card from it. SVar:DBChoose:DB$ ChooseCard | ChoiceZone$ Hand | Amount$ 1 | Choices$ Card.nonLand+IsRemembered | ChoiceDesc$ nonland | FromDesc$ it | SubAbility$ DBBranch | ChoiceTitle$ You may choose a nonland card | SpellDescription$ You may choose a nonland card from it.
SVar:DBBranch:DB$ Branch | BranchCondition$ ChosenCard | TrueSubAbility$ DBDiscard | FalseSubAbility$ DBDiscard2 | StackDescription$ If they do, {p:Targeted} discards that card. If they don't, {p:Targeted} discards two cards. | SpellDescription$ If you do, that player discards that card. If you don't, that player discards two cards. SVar:DBBranch:DB$ Branch | BranchCondition$ ChosenCard | TrueSubAbility$ DBDiscard | FalseSubAbility$ DBDiscard2 | StackDescription$ If they do, {p:Targeted} discards that card. If they don't, {p:Targeted} discards two cards. | SpellDescription$ If you do, that player discards that card. If you don't, that player discards two cards.
SVar:DBDiscard:DB$ Discard | DefinedCards$ ChosenCard | Defined$ Targeted | Mode$ Defined | SubAbility$ DBCleanup SVar:DBDiscard:DB$ Discard | DefinedCards$ ChosenCard | Defined$ Targeted | Mode$ Defined | SubAbility$ DBCleanup
SVar:DBDiscard2:DB$ Discard | Defined$ Targeted | NumCards$ 2 | Mode$ TgtChoose | SubAbility$ DBCleanup SVar:DBDiscard2:DB$ Discard | Defined$ Targeted | NumCards$ 2 | Mode$ TgtChoose | SubAbility$ DBCleanup

View File

@@ -3,11 +3,11 @@ ManaCost:R G
Types:Creature Cat Warrior Types:Creature Cat Warrior
PT:3/2 PT:3/2
T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigChoose | TriggerDescription$ When CARDNAME enters the battlefield, you may choose 2 creature and/or planeswalker cards in your hand. They perpetually gain "When you cast this spell, create a Treasure token and this spell perpetually loses this ability." T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigChoose | TriggerDescription$ When CARDNAME enters the battlefield, you may choose 2 creature and/or planeswalker cards in your hand. They perpetually gain "When you cast this spell, create a Treasure token and this spell perpetually loses this ability."
SVar:TrigChoose:DB$ ChooseCard | ChoiceZone$ Hand | Choices$ Creature.YouOwn,Planeswalker.YouOwn | ChoiceTitle$ Choose up to two creature and/or planeswalker cards in your hand. | MinAmount$ 0 | Amount$ 2 | SubAbility$ DBEffect SVar:TrigChoose:DB$ ChooseCard | ChoiceZone$ Hand | Choices$ Creature.YouOwn,Planeswalker.YouOwn | ChoiceTitle$ Choose up to two creature and/or planeswalker cards in your hand | MinAmount$ 0 | Amount$ 2 | SubAbility$ DBAnimate
SVar:DBEffect:DB$ Effect | RememberObjects$ ChosenCard | ForgetOnCast$ True | ConditionDefined$ ChosenCard | ConditionPresent$ Card | ConditionCompare$ GE1 | StaticAbilities$ PerpetualEffect | Name$ Racketeer Boss's Perpetual Effect | Duration$ Permanent | SubAbility$ DBCleanup SVar:DBAnimate:DB$ Animate | Defined$ ChosenCard | Triggers$ SpellCastTrig | Duration$ Perpetual | SubAbility$ DBCleanup
SVar:PerpetualEffect:Mode$ Continuous | Affected$ Card.IsRemembered | AddTrigger$ SpellCastTrig | EffectZone$ Command | AffectedZone$ Battlefield,Hand,Graveyard,Exile,Stack,Library,Command | Description$ When you cast this spell, create a Treasure token and this spell perpetually loses this ability.
SVar:SpellCastTrig:Mode$ SpellCast | ValidCard$ Card.Self | Execute$ TrigTreasure | TriggerDescription$ When you cast this spell, create a Treasure token and this spell perpetually loses this ability. SVar:SpellCastTrig:Mode$ SpellCast | ValidCard$ Card.Self | Execute$ TrigTreasure | TriggerDescription$ When you cast this spell, create a Treasure token and this spell perpetually loses this ability.
SVar:TrigTreasure:DB$ Token | TokenScript$ c_a_treasure_sac SVar:TrigTreasure:DB$ Token | TokenScript$ c_a_treasure_sac | SubAbility$ DBLosePerpAbility
SVar:DBLosePerpAbility:DB$ LosePerpetual
SVar:DBCleanup:DB$ Cleanup | ClearChosenCard$ True SVar:DBCleanup:DB$ Cleanup | ClearChosenCard$ True
DeckHints:Type$Planeswalker DeckHints:Type$Planeswalker
DeckHas:Ability$Token|Sacrifice & Type$Treasure|Artifact DeckHas:Ability$Token|Sacrifice & Type$Treasure|Artifact

View File

@@ -6,4 +6,4 @@ A:SP$ Attach | 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.
SVar:AltCost:Cost$ 2 W | ActivationZone$ Graveyard | Description$ You may cast CARDNAME from your graveyard by paying {2}{W} rather than paying its mana cost. SVar:AltCost:Cost$ 2 W | ActivationZone$ Graveyard | Description$ You may cast CARDNAME from your graveyard by paying {2}{W} rather than paying its mana cost.
DeckHas:Ability$Graveyard DeckHas:Ability$Graveyard
Oracle:Enchant creature\nEnchanted creature gets +1/+1.\nYou may cast Raffine's Guidance from your graveyard by paying {2}{W} instead of its mana cost. Oracle:Enchant creature\nEnchanted creature gets +1/+1.\nYou may cast Raffine's Guidance from your graveyard by paying {2}{W} rather than paying its mana cost.

View File

@@ -2,7 +2,7 @@ Name:Reckoner Shakedown
ManaCost:2 B ManaCost:2 B
Types:Sorcery Types:Sorcery
A:SP$ RevealHand | ValidTgts$ Opponent | TgtPrompt$ Select target opponent | RememberRevealed$ True | SubAbility$ DBChoose | SpellDescription$ Target opponent reveals their hand. A:SP$ RevealHand | ValidTgts$ Opponent | TgtPrompt$ Select target opponent | RememberRevealed$ True | SubAbility$ DBChoose | SpellDescription$ Target opponent reveals their hand.
SVar:DBChoose:DB$ ChooseCard | ChoiceZone$ Hand | Amount$ 1 | Choices$ Card.nonLand+IsRemembered | ChoiceDesc$ nonland | FromDesc$ from it | SubAbility$ DBBranch | ChoiceTitle$ You may choose a nonland card | SpellDescription$ You may choose a nonland card from it. SVar:DBChoose:DB$ ChooseCard | ChoiceZone$ Hand | Amount$ 1 | Choices$ Card.nonLand+IsRemembered | ChoiceDesc$ nonland | FromDesc$ it | SubAbility$ DBBranch | ChoiceTitle$ You may choose a nonland card | SpellDescription$ You may choose a nonland card from it.
SVar:DBBranch:DB$ Branch | BranchCondition$ ChosenCard | TrueSubAbility$ DBDiscard | FalseSubAbility$ DBPutCounter | StackDescription$ If they do, {p:Targeted} discards that card. If they don't, they put two +1/+1 counters on a creature or Vehicle they control. | SpellDescription$ If you do, that player discards that card. If you don't, put two +1/+1 counters on a creature or Vehicle you control. SVar:DBBranch:DB$ Branch | BranchCondition$ ChosenCard | TrueSubAbility$ DBDiscard | FalseSubAbility$ DBPutCounter | StackDescription$ If they do, {p:Targeted} discards that card. If they don't, they put two +1/+1 counters on a creature or Vehicle they control. | SpellDescription$ If you do, that player discards that card. If you don't, put two +1/+1 counters on a creature or Vehicle you control.
SVar:DBDiscard:DB$ Discard | DefinedCards$ ChosenCard | Defined$ Targeted | Mode$ Defined | SubAbility$ DBCleanup SVar:DBDiscard:DB$ Discard | DefinedCards$ ChosenCard | Defined$ Targeted | Mode$ Defined | SubAbility$ DBCleanup
SVar:DBPutCounter:DB$ PutCounter | Choices$ Creature.YouCtrl,Vehicle.YouCtrl | ChoiceTitle$ Choose a creature or Vehicle you control | CounterType$ P1P1 | CounterNum$ 2 | SubAbility$ DBCleanup SVar:DBPutCounter:DB$ PutCounter | Choices$ Creature.YouCtrl,Vehicle.YouCtrl | ChoiceTitle$ Choose a creature or Vehicle you control | CounterType$ P1P1 | CounterNum$ 2 | SubAbility$ DBCleanup

View File

@@ -2,12 +2,9 @@ Name:Sarkhan, Wanderer to Shiv
ManaCost:3 R ManaCost:3 R
Types:Legendary Planeswalker Sarkhan Types:Legendary Planeswalker Sarkhan
Loyalty:4 Loyalty:4
A:AB$ Effect | Cost$ AddCounter<1/LOYALTY> | Planeswalker$ True | RememberObjects$ ValidHand Dragon.YouOwn | StaticAbilities$ PerpetualAbility | Duration$ Permanent | Triggers$ Update | Name$ Sarkhan, Wanderer to Shiv's Perpetual Effect | SpellDescription$ Dragon cards in your hand perpetually gain "This spell costs {1} less to cast," and "You may pay {X} rather than pay this spell's mana cost, where X is its mana value." A:AB$ AnimateAll | Cost$ AddCounter<1/LOYALTY> | Planeswalker$ True | ValidCards$ Dragon.YouOwn | Zone$ Hand | staticAbilities$ DragonReduceCost,DragonAltCost | Duration$ Perpetual | SpellDescription$ Dragon cards in your hand perpetually gain "This spell costs {1} less to cast," and "You may pay {X} rather than pay this spell's mana cost, where X is its mana value."
SVar:PerpetualAbility:Mode$ Continuous | Affected$ Card.IsRemembered | AddStaticAbility$ DragonReduceCost & DragonAltCost | EffectZone$ Command | AffectedZone$ Battlefield,Hand,Graveyard,Exile,Stack,Library,Command | Description$ Dragon cards in your hand perpetually gain "This spell costs {1} less to cast," and "You may pay {X} rather than pay this spell's mana cost, where X is its mana value."
SVar:DragonReduceCost:Mode$ ReduceCost | ValidCard$ Card.Self | Type$ Spell | Amount$ 1 | EffectZone$ All | Description$ This spell costs {1} less to cast. SVar:DragonReduceCost:Mode$ ReduceCost | ValidCard$ Card.Self | Type$ Spell | Amount$ 1 | EffectZone$ All | Description$ This spell costs {1} less to cast.
SVar:DragonAltCost:Mode$ Continuous | CharacteristicDefining$ True | AddKeyword$ Alternative Cost:ConvertedManaCost | Description$ You may pay {X} rather than pay this spell's mana cost, where X is its mana value. SVar:DragonAltCost:Mode$ Continuous | EffectZone$ All | MayPlay$ True | MayPlayAltManaCost$ ConvertedManaCost | MayPlayDontGrantZonePermissions$ True | Affected$ Card.Self | AffectedZone$ Hand,Graveyard,Library,Exile,Command | Description$ You may pay {X} rather than pay this spell's mana cost, where X is its mana value.
SVar:Update:Mode$ ChangesZone | Origin$ Any | Destination$ Any | Static$ True | ValidCard$ Card.IsRemembered | Execute$ DBUpdate
SVar:DBUpdate:DB$ UpdateRemember
A:AB$ MakeCard | Cost$ AddCounter<1/LOYALTY> | Planeswalker$ True | Conjure$ True | Name$ Shivan Dragon | Zone$ Hand | SpellDescription$ Conjure a Shivan Dragon card into your hand. A:AB$ MakeCard | Cost$ AddCounter<1/LOYALTY> | Planeswalker$ True | Conjure$ True | Name$ Shivan Dragon | Zone$ Hand | SpellDescription$ Conjure a Shivan Dragon card into your hand.
A:AB$ DealDamage | Cost$ SubCounter<2/LOYALTY> | Planeswalker$ True | ValidTgts$ Creature | TgtPrompt$ Select target creature | NumDmg$ 3 | SpellDescription$ CARDNAME deals 3 damage to target creature. A:AB$ DealDamage | Cost$ SubCounter<2/LOYALTY> | Planeswalker$ True | ValidTgts$ Creature | TgtPrompt$ Select target creature | NumDmg$ 3 | SpellDescription$ CARDNAME deals 3 damage to target creature.
DeckHints:Type$Dragon DeckHints:Type$Dragon

View File

@@ -2,7 +2,6 @@ Name:Second Little Pig
ManaCost:1 WB ManaCost:1 WB
Types:Creature Boar Types:Creature Boar
PT:2/3 PT:2/3
A:AB$ Effect | Cost$ 2 WB WB | StaticAbilities$ PerpetualSpirit | IsPresent$ Card.Self+!Spirit | RememberObjects$ Self | Name$ Second Little Pig's Perpetual Effect | Duration$ Permanent | SpellDescription$ CARDNAME perpetually becomes a Boar Spirit with base power and toughness 4/4 and gains flying. Activate only if CARDNAME isn't a Spirit. A:AB$ Animate | Cost$ 2 WB WB | Duration$ Perpetual | Types$ Boar,Spirit | RemoveCreatureTypes$ True | Power$ 4 | Toughness$ 4 | Keywords$ Flying | IsPresent$ Card.Self+!Spirit | StackDescription$ CARDNAME perpetually becomes a Boar Spirit with base power and toughness 4/4 and gains flying. | SpellDescription$ CARDNAME perpetually becomes a Boar Spirit with base power and toughness 4/4 and gains flying. Activate only if CARDNAME isn't a Spirit.
SVar:PerpetualSpirit:Mode$ Continuous | AddKeyword$ Flying | Affected$ Card.IsRemembered | SetPower$ 4 | SetToughness$ 4 | AddType$ Spirit | EffectZone$ Command | AffectedZone$ Battlefield,Hand,Graveyard,Exile,Stack,Library,Command | Description$ This creature perpetually becomes a Boar Spirit with base power and toughness 4/4 and gains flying.
DeckHas:Type$Spirit DeckHas:Type$Spirit
Oracle:{2}{W/B}{W/B}: Second Little Pig perpetually becomes a Boar Spirit with base power and toughness 4/4 and gains flying. Activate only if Second Little Pig isn't a Spirit. Oracle:{2}{W/B}{W/B}: Second Little Pig perpetually becomes a Boar Spirit with base power and toughness 4/4 and gains flying. Activate only if Second Little Pig isn't a Spirit.

View File

@@ -2,7 +2,6 @@ Name:Third Little Pig
ManaCost:1 BG ManaCost:1 BG
Types:Creature Boar Types:Creature Boar
PT:2/2 PT:2/2
T:Mode$ ConjureAll | ValidPlayer$ You | ValidCard$ Card | TriggerZones$ Battlefield,Graveyard | Execute$ TrigEffect | TriggerDescription$ Whenever you conjure one or more other cards, CARDNAME perpetually gets +1/+1. This ability also triggers if CARDNAME is in your graveyard. T:Mode$ ConjureAll | ValidPlayer$ You | ValidCard$ Card | TriggerZones$ Battlefield,Graveyard | Execute$ TrigPump | TriggerDescription$ Whenever you conjure one or more other cards, CARDNAME perpetually gets +1/+1. This ability also triggers if CARDNAME is in your graveyard.
SVar:TrigEffect:DB$ Effect | StaticAbilities$ PerpetualBuff | RememberObjects$ Self | Name$ Third Little Pig's Perpetual Effect | Duration$ Permanent SVar:TrigPump:DB$ Pump | Defined$ Self | PumpZone$ Battlefield,Graveyard | NumAtt$ 1 | NumDef$ 1 | Duration$ Perpetual
SVar:PerpetualBuff:Mode$ Continuous | Affected$ Card.IsRemembered | AddPower$ 1 | AddToughness$ 1 | EffectZone$ Command | AffectedZone$ Battlefield,Hand,Graveyard,Exile,Stack,Library,Command | Description$ This creature perpetually gets +1/+1.
Oracle:Whenever you conjure one or more other cards, Third Little Pig perpetually gets +1/+1. This ability also triggers if Third Little Pig is in your graveyard. Oracle:Whenever you conjure one or more other cards, Third Little Pig perpetually gets +1/+1. This ability also triggers if Third Little Pig is in your graveyard.

View File

@@ -1,7 +1,7 @@
Name:Toils of Night and Day Name:Toils of Night and Day
ManaCost:2 U ManaCost:2 U
Types:Instant Arcane Types:Instant Arcane
A:SP$ TapOrUntap | Cost$ 2 U | ValidTgts$ Permanent | TgtPrompt$ Select target permanent | SubAbility$ DBTapOrUntap | SpellDescription$ You may tap or untap target permanent, then you may tap or untap another target permanent. A:SP$ TapOrUntap | Cost$ 2 U | ValidTgts$ Permanent | SubAbility$ DBTapOrUntap | SpellDescription$ You may tap or untap target permanent, then you may tap or untap another target permanent.
SVar:DBTapOrUntap:DB$ TapOrUntap | ValidTgts$ Permanent | TgtPrompt$ Select target permanent (2) | TargetUnique$ True SVar:DBTapOrUntap:DB$ TapOrUntap | ValidTgts$ Permanent | TgtPrompt$ Select another target permanent | TargetUnique$ True
AI:RemoveDeck:All AI:RemoveDeck:All
Oracle:You may tap or untap target permanent, then you may tap or untap another target permanent. Oracle:You may tap or untap target permanent, then you may tap or untap another target permanent.

View File

@@ -0,0 +1,10 @@
Name:Cogwork Progenitor
ManaCost:1 W
Types:Artifact Creature Gnome
PT:2/2
T:Mode$ Phase | Phase$ End of Turn | ValidPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigSeek | TriggerDescription$ At the beginning of your end step, you may exile another artifact you control or an artifact card in your graveyard. If you do, seek an artifact card. That card perpetually has base power and toughness 1/1 and becomes a Gnome creature in addition to its other types.
SVar:TrigSeek:AB$ Seek | Cost$ ExileCtrlOrGrave<1/Artifact.Other> | Type$ Artifact | RememberFound$ True | SubAbility$ DBAnimate
SVar:DBAnimate:DB$ Animate | Defined$ Remembered | Power$ 1 | Toughness$ 1 | Types$ Creature,Gnome | Duration$ Perpetual | SubAbility$ DBCleanup
SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True
DeckNeeds:Type$Artifact
Oracle:At the beginning of your end step, you may exile another artifact you control or an artifact card in your graveyard. If you do, seek an artifact card. That card perpetually has base power and toughness 1/1 and becomes a Gnome creature in addition to its other types.