mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-18 11:48:02 +00:00
Merge pull request #663 from Card-Forge/goneInternalETB
Remove InternalETB and replace with UpdateResult
This commit is contained in:
@@ -185,7 +185,6 @@ public enum SpellApiToAi {
|
|||||||
.put(ApiType.WinsGame, GameWinAi.class)
|
.put(ApiType.WinsGame, GameWinAi.class)
|
||||||
|
|
||||||
.put(ApiType.DamageResolve, AlwaysPlayAi.class)
|
.put(ApiType.DamageResolve, AlwaysPlayAi.class)
|
||||||
.put(ApiType.InternalEtbReplacement, CanPlayAsDrawbackAi.class)
|
|
||||||
.put(ApiType.InternalLegendaryRule, LegendaryRuleAi.class)
|
.put(ApiType.InternalLegendaryRule, LegendaryRuleAi.class)
|
||||||
.put(ApiType.InternalIgnoreEffect, CannotPlayAi.class)
|
.put(ApiType.InternalIgnoreEffect, CannotPlayAi.class)
|
||||||
.build());
|
.build());
|
||||||
|
|||||||
@@ -1,35 +0,0 @@
|
|||||||
package forge.ai.ability;
|
|
||||||
|
|
||||||
import forge.ai.SpellAbilityAi;
|
|
||||||
import forge.game.player.Player;
|
|
||||||
import forge.game.spellability.SpellAbility;
|
|
||||||
|
|
||||||
public class CanPlayAsDrawbackAi extends SpellAbilityAi {
|
|
||||||
|
|
||||||
/* (non-Javadoc)
|
|
||||||
* @see forge.card.abilityfactory.SpellAiLogic#canPlayAI(forge.game.player.Player, java.util.Map, forge.card.spellability.SpellAbility)
|
|
||||||
*/
|
|
||||||
@Override
|
|
||||||
protected boolean canPlayAI(Player aiPlayer, SpellAbility sa) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* <p>
|
|
||||||
* copySpellTriggerAI.
|
|
||||||
* </p>
|
|
||||||
* @param sa
|
|
||||||
* a {@link forge.game.spellability.SpellAbility} object.
|
|
||||||
* @param mandatory
|
|
||||||
* a boolean.
|
|
||||||
* @param af
|
|
||||||
* a {@link forge.game.ability.AbilityFactory} object.
|
|
||||||
*
|
|
||||||
* @return a boolean.
|
|
||||||
*/
|
|
||||||
@Override
|
|
||||||
protected boolean doTriggerAINoCost(Player aiPlayer, SpellAbility sa, boolean mandatory) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -365,7 +365,7 @@ public class GameAction {
|
|||||||
}
|
}
|
||||||
|
|
||||||
ReplacementResult repres = game.getReplacementHandler().run(ReplacementType.Moved, repParams);
|
ReplacementResult repres = game.getReplacementHandler().run(ReplacementType.Moved, repParams);
|
||||||
if (repres != ReplacementResult.NotReplaced) {
|
if (repres != ReplacementResult.NotReplaced && repres != ReplacementResult.Updated) {
|
||||||
// reset failed manifested Cards back to original
|
// reset failed manifested Cards back to original
|
||||||
if (c.isManifested() && !c.isInPlay()) {
|
if (c.isManifested() && !c.isInPlay()) {
|
||||||
c.forceTurnFaceUp();
|
c.forceTurnFaceUp();
|
||||||
|
|||||||
@@ -677,13 +677,12 @@ public final class GameActionUtil {
|
|||||||
if (!StringUtils.isNumeric(amount)) {
|
if (!StringUtils.isNumeric(amount)) {
|
||||||
sa.setSVar(amount, sourceCard.getSVar(amount));
|
sa.setSVar(amount, sourceCard.getSVar(amount));
|
||||||
}
|
}
|
||||||
CardFactoryUtil.setupETBReplacementAbility(sa);
|
|
||||||
|
|
||||||
String desc = "It enters the battlefield with ";
|
String desc = "It enters the battlefield with ";
|
||||||
desc += Lang.nounWithNumeral(amount, CounterType.getType(counter).getName() + " counter");
|
desc += Lang.nounWithNumeral(amount, CounterType.getType(counter).getName() + " counter");
|
||||||
desc += " on it.";
|
desc += " on it.";
|
||||||
|
|
||||||
String repeffstr = "Event$ Moved | ValidCard$ Card.IsRemembered | Destination$ Battlefield | Description$ " + desc;
|
String repeffstr = "Event$ Moved | ValidCard$ Card.IsRemembered | Destination$ Battlefield | ReplacementResult$ Updated | Description$ " + desc;
|
||||||
|
|
||||||
ReplacementEffect re = ReplacementHandler.parseReplacement(repeffstr, eff, true);
|
ReplacementEffect re = ReplacementHandler.parseReplacement(repeffstr, eff, true);
|
||||||
re.setLayer(ReplacementLayer.Other);
|
re.setLayer(ReplacementLayer.Other);
|
||||||
|
|||||||
@@ -55,6 +55,7 @@ import forge.game.phase.PhaseHandler;
|
|||||||
import forge.game.player.Player;
|
import forge.game.player.Player;
|
||||||
import forge.game.player.PlayerCollection;
|
import forge.game.player.PlayerCollection;
|
||||||
import forge.game.player.PlayerPredicates;
|
import forge.game.player.PlayerPredicates;
|
||||||
|
import forge.game.replacement.ReplacementType;
|
||||||
import forge.game.spellability.AbilitySub;
|
import forge.game.spellability.AbilitySub;
|
||||||
import forge.game.spellability.LandAbility;
|
import forge.game.spellability.LandAbility;
|
||||||
import forge.game.spellability.OptionalCost;
|
import forge.game.spellability.OptionalCost;
|
||||||
@@ -217,10 +218,15 @@ public class AbilityUtils {
|
|||||||
else if (defined.startsWith("Replaced") && sa instanceof SpellAbility) {
|
else if (defined.startsWith("Replaced") && sa instanceof SpellAbility) {
|
||||||
final SpellAbility root = ((SpellAbility)sa).getRootAbility();
|
final SpellAbility root = ((SpellAbility)sa).getRootAbility();
|
||||||
AbilityKey type = AbilityKey.fromString(defined.substring(8));
|
AbilityKey type = AbilityKey.fromString(defined.substring(8));
|
||||||
|
// for Moved Effects, if it wants to know the affected Card, it might need to return the LKI
|
||||||
|
// or otherwise the timestamp does match
|
||||||
|
if (type == AbilityKey.Card && root.isReplacementAbility() && root.getReplacementEffect().getMode() == ReplacementType.Moved) {
|
||||||
|
type = AbilityKey.CardLKI;
|
||||||
|
}
|
||||||
final Object crd = root.getReplacingObject(type);
|
final Object crd = root.getReplacingObject(type);
|
||||||
|
|
||||||
if (crd instanceof Card) {
|
if (crd instanceof Card) {
|
||||||
c = game.getCardState((Card) crd);
|
c = (Card) crd;
|
||||||
} else if (crd instanceof Iterable<?>) {
|
} else if (crd instanceof Iterable<?>) {
|
||||||
cards.addAll(Iterables.filter((Iterable<?>) crd, Card.class));
|
cards.addAll(Iterables.filter((Iterable<?>) crd, Card.class));
|
||||||
}
|
}
|
||||||
@@ -1415,11 +1421,7 @@ public class AbilityUtils {
|
|||||||
|
|
||||||
// Needed - Equip an untapped creature with Sword of the Paruns then cast Deadshot on it. Should deal 2 more damage.
|
// Needed - Equip an untapped creature with Sword of the Paruns then cast Deadshot on it. Should deal 2 more damage.
|
||||||
game.getAction().checkStaticAbilities(); // this will refresh continuous abilities for players and permanents.
|
game.getAction().checkStaticAbilities(); // this will refresh continuous abilities for players and permanents.
|
||||||
if (sa.isReplacementAbility() && abSub.getApi() == ApiType.InternalEtbReplacement) {
|
game.getTriggerHandler().resetActiveTriggers(!sa.isReplacementAbility());
|
||||||
game.getTriggerHandler().resetActiveTriggers(false);
|
|
||||||
} else {
|
|
||||||
game.getTriggerHandler().resetActiveTriggers();
|
|
||||||
}
|
|
||||||
AbilityUtils.resolveApiAbility(abSub, game);
|
AbilityUtils.resolveApiAbility(abSub, game);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -189,7 +189,6 @@ public enum ApiType {
|
|||||||
|
|
||||||
DamageResolve (DamageResolveEffect.class),
|
DamageResolve (DamageResolveEffect.class),
|
||||||
ChangeZoneResolve (ChangeZoneResolveEffect.class),
|
ChangeZoneResolve (ChangeZoneResolveEffect.class),
|
||||||
InternalEtbReplacement (ETBReplacementEffect.class),
|
|
||||||
InternalLegendaryRule (CharmEffect.class),
|
InternalLegendaryRule (CharmEffect.class),
|
||||||
InternalIgnoreEffect (CharmEffect.class),
|
InternalIgnoreEffect (CharmEffect.class),
|
||||||
UpdateRemember (UpdateRememberEffect.class);
|
UpdateRemember (UpdateRememberEffect.class);
|
||||||
|
|||||||
@@ -1,32 +0,0 @@
|
|||||||
package forge.game.ability.effects;
|
|
||||||
|
|
||||||
import java.util.Map;
|
|
||||||
|
|
||||||
import forge.game.Game;
|
|
||||||
import forge.game.ability.AbilityKey;
|
|
||||||
import forge.game.ability.SpellAbilityEffect;
|
|
||||||
import forge.game.card.Card;
|
|
||||||
import forge.game.spellability.SpellAbility;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* TODO: Write javadoc for this type.
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
public class ETBReplacementEffect extends SpellAbilityEffect {
|
|
||||||
@Override
|
|
||||||
public void resolve(SpellAbility sa) {
|
|
||||||
final Game game = sa.getActivatingPlayer().getGame();
|
|
||||||
final Card card = (Card) sa.getReplacingObject(AbilityKey.Card);
|
|
||||||
|
|
||||||
Map<AbilityKey, Object> params = AbilityKey.newMap();
|
|
||||||
params.put(AbilityKey.CardLKI, sa.getReplacingObject(AbilityKey.CardLKI));
|
|
||||||
params.put(AbilityKey.ReplacementEffect, sa.getReplacementEffect());
|
|
||||||
params.put(AbilityKey.LastStateBattlefield, sa.getReplacingObject(AbilityKey.LastStateBattlefield));
|
|
||||||
params.put(AbilityKey.LastStateGraveyard, sa.getReplacingObject(AbilityKey.LastStateGraveyard));
|
|
||||||
|
|
||||||
final SpellAbility root = sa.getRootAbility();
|
|
||||||
SpellAbility cause = (SpellAbility) root.getReplacingObject(AbilityKey.Cause);
|
|
||||||
|
|
||||||
game.getAction().moveToPlay(card, card.getController(), cause, params);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -52,7 +52,6 @@ import forge.game.GameLogEntryType;
|
|||||||
import forge.game.ability.AbilityFactory;
|
import forge.game.ability.AbilityFactory;
|
||||||
import forge.game.ability.AbilityKey;
|
import forge.game.ability.AbilityKey;
|
||||||
import forge.game.ability.AbilityUtils;
|
import forge.game.ability.AbilityUtils;
|
||||||
import forge.game.ability.ApiType;
|
|
||||||
import forge.game.cost.Cost;
|
import forge.game.cost.Cost;
|
||||||
import forge.game.keyword.Keyword;
|
import forge.game.keyword.Keyword;
|
||||||
import forge.game.keyword.KeywordInterface;
|
import forge.game.keyword.KeywordInterface;
|
||||||
@@ -651,14 +650,13 @@ public class CardFactoryUtil {
|
|||||||
final boolean intrinsic, final String valid, final String zone) {
|
final boolean intrinsic, final String valid, final String zone) {
|
||||||
Card host = card.getCard();
|
Card host = card.getCard();
|
||||||
String desc = repAb.getDescription();
|
String desc = repAb.getDescription();
|
||||||
setupETBReplacementAbility(repAb);
|
|
||||||
if (!intrinsic) {
|
if (!intrinsic) {
|
||||||
repAb.setIntrinsic(false);
|
repAb.setIntrinsic(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
StringBuilder repEffsb = new StringBuilder();
|
StringBuilder repEffsb = new StringBuilder();
|
||||||
repEffsb.append("Event$ Moved | ValidCard$ ").append(valid);
|
repEffsb.append("Event$ Moved | ValidCard$ ").append(valid);
|
||||||
repEffsb.append(" | Destination$ Battlefield | Description$ ").append(desc);
|
repEffsb.append(" | Destination$ Battlefield | ReplacementResult$ Updated | Description$ ").append(desc);
|
||||||
if (optional) {
|
if (optional) {
|
||||||
repEffsb.append(" | Optional$ True");
|
repEffsb.append(" | Optional$ True");
|
||||||
}
|
}
|
||||||
@@ -751,13 +749,12 @@ public class CardFactoryUtil {
|
|||||||
}
|
}
|
||||||
|
|
||||||
SpellAbility sa = AbilityFactory.getAbility(abStr, card);
|
SpellAbility sa = AbilityFactory.getAbility(abStr, card);
|
||||||
setupETBReplacementAbility(sa);
|
|
||||||
if (!intrinsic) {
|
if (!intrinsic) {
|
||||||
sa.setIntrinsic(false);
|
sa.setIntrinsic(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
String repeffstr = "Event$ Moved | ValidCard$ Card.Self | Destination$ Battlefield "
|
String repeffstr = "Event$ Moved | ValidCard$ Card.Self | Destination$ Battlefield "
|
||||||
+ "| Secondary$ True | Description$ " + desc + (!extraparams.equals("") ? " | " + extraparams : "");
|
+ "| Secondary$ True | ReplacementResult$ Updated | Description$ " + desc + (!extraparams.equals("") ? " | " + extraparams : "");
|
||||||
|
|
||||||
ReplacementEffect re = ReplacementHandler.parseReplacement(repeffstr, card.getCard(), intrinsic, card);
|
ReplacementEffect re = ReplacementHandler.parseReplacement(repeffstr, card.getCard(), intrinsic, card);
|
||||||
|
|
||||||
@@ -2055,7 +2052,7 @@ public class CardFactoryUtil {
|
|||||||
|
|
||||||
// Setup ETB replacement effects
|
// Setup ETB replacement effects
|
||||||
final String actualRep = "Event$ Moved | Destination$ Battlefield | ValidCard$ Card.Self |"
|
final String actualRep = "Event$ Moved | Destination$ Battlefield | ValidCard$ Card.Self |"
|
||||||
+ " | Description$ Amplify " + amplifyMagnitude + " ("
|
+ " | ReplacementResult$ Updated | Description$ Amplify " + amplifyMagnitude + " ("
|
||||||
+ inst.getReminderText() + ")";
|
+ inst.getReminderText() + ")";
|
||||||
|
|
||||||
final String abString = "DB$ Reveal | AnyNumber$ True | RevealValid$ "
|
final String abString = "DB$ Reveal | AnyNumber$ True | RevealValid$ "
|
||||||
@@ -2075,7 +2072,6 @@ public class CardFactoryUtil {
|
|||||||
AbilitySub saCleanup = (AbilitySub) AbilityFactory.getAbility(dbClean, card);
|
AbilitySub saCleanup = (AbilitySub) AbilityFactory.getAbility(dbClean, card);
|
||||||
|
|
||||||
saPut.setSubAbility(saCleanup);
|
saPut.setSubAbility(saCleanup);
|
||||||
setupETBReplacementAbility(saCleanup);
|
|
||||||
|
|
||||||
saReveal.setSubAbility(saPut);
|
saReveal.setSubAbility(saPut);
|
||||||
|
|
||||||
@@ -2168,13 +2164,12 @@ public class CardFactoryUtil {
|
|||||||
|
|
||||||
inst.addReplacement(re);
|
inst.addReplacement(re);
|
||||||
} else if (keyword.equals("Daybound")) {
|
} else if (keyword.equals("Daybound")) {
|
||||||
final String actualRep = "Event$ Moved | ValidCard$ Card.Self | Destination$ Battlefield | DayTime$ Night | Secondary$ True | Layer$ Transform | Description$ If it is night, this permanent enters the battlefield transformed.";
|
final String actualRep = "Event$ Moved | ValidCard$ Card.Self | Destination$ Battlefield | DayTime$ Night | Secondary$ True | Layer$ Transform | ReplacementResult$ Updated | Description$ If it is night, this permanent enters the battlefield transformed.";
|
||||||
final String abTransform = "DB$ SetState | Defined$ ReplacedCard | Mode$ Transform | ETB$ True | Daybound$ True";
|
final String abTransform = "DB$ SetState | Defined$ ReplacedCard | Mode$ Transform | ETB$ True | Daybound$ True";
|
||||||
|
|
||||||
ReplacementEffect re = ReplacementHandler.parseReplacement(actualRep, host, intrinsic, card);
|
ReplacementEffect re = ReplacementHandler.parseReplacement(actualRep, host, intrinsic, card);
|
||||||
|
|
||||||
SpellAbility saTransform = AbilityFactory.getAbility(abTransform, card);
|
SpellAbility saTransform = AbilityFactory.getAbility(abTransform, card);
|
||||||
setupETBReplacementAbility(saTransform);
|
|
||||||
re.setOverridingAbility(saTransform);
|
re.setOverridingAbility(saTransform);
|
||||||
|
|
||||||
inst.addReplacement(re);
|
inst.addReplacement(re);
|
||||||
@@ -2206,11 +2201,10 @@ public class CardFactoryUtil {
|
|||||||
AbilitySub cleanupSA = (AbilitySub) AbilityFactory.getAbility(cleanupStr, card);
|
AbilitySub cleanupSA = (AbilitySub) AbilityFactory.getAbility(cleanupStr, card);
|
||||||
counterSA.setSubAbility(cleanupSA);
|
counterSA.setSubAbility(cleanupSA);
|
||||||
|
|
||||||
String repeffstr = "Event$ Moved | ValidCard$ Card.Self | Destination$ Battlefield | Secondary$ True | Description$ Devour " + magnitude + " ("+ inst.getReminderText() + ")";
|
String repeffstr = "Event$ Moved | ValidCard$ Card.Self | Destination$ Battlefield | Secondary$ True | ReplacementResult$ Updated | Description$ Devour " + magnitude + " ("+ inst.getReminderText() + ")";
|
||||||
|
|
||||||
ReplacementEffect re = ReplacementHandler.parseReplacement(repeffstr, host, intrinsic, card);
|
ReplacementEffect re = ReplacementHandler.parseReplacement(repeffstr, host, intrinsic, card);
|
||||||
|
|
||||||
setupETBReplacementAbility(cleanupSA);
|
|
||||||
re.setOverridingAbility(sacrificeSA);
|
re.setOverridingAbility(sacrificeSA);
|
||||||
|
|
||||||
inst.addReplacement(re);
|
inst.addReplacement(re);
|
||||||
@@ -3693,14 +3687,6 @@ public class CardFactoryUtil {
|
|||||||
return altCostSA;
|
return altCostSA;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static final Map<String,String> emptyMap = Maps.newTreeMap();
|
|
||||||
public static SpellAbility setupETBReplacementAbility(SpellAbility sa) {
|
|
||||||
AbilitySub as = new AbilitySub(ApiType.InternalEtbReplacement, sa.getHostCard(), null, emptyMap);
|
|
||||||
sa.appendSubAbility(as);
|
|
||||||
return as;
|
|
||||||
// ETBReplacementMove(sa.getHostCard(), null));
|
|
||||||
}
|
|
||||||
|
|
||||||
public static void setupAdventureAbility(Card card) {
|
public static void setupAdventureAbility(Card card) {
|
||||||
if (card.getCurrentStateName() != CardStateName.Adventure) {
|
if (card.getCurrentStateName() != CardStateName.Adventure) {
|
||||||
return;
|
return;
|
||||||
|
|||||||
@@ -96,7 +96,7 @@ public class ReplaceMoved extends ReplacementEffect {
|
|||||||
@Override
|
@Override
|
||||||
public void setReplacingObjects(Map<AbilityKey, Object> runParams, SpellAbility sa) {
|
public void setReplacingObjects(Map<AbilityKey, Object> runParams, SpellAbility sa) {
|
||||||
sa.setReplacingObject(AbilityKey.Card, runParams.get(AbilityKey.Affected));
|
sa.setReplacingObject(AbilityKey.Card, runParams.get(AbilityKey.Affected));
|
||||||
sa.setReplacingObjectsFrom(runParams, AbilityKey.CardLKI, AbilityKey.Cause, AbilityKey.LastStateBattlefield, AbilityKey.LastStateGraveyard);
|
sa.setReplacingObjectsFrom(runParams, AbilityKey.NewCard, AbilityKey.CardLKI, AbilityKey.Cause, AbilityKey.LastStateBattlefield, AbilityKey.LastStateGraveyard);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -211,6 +211,7 @@ public class ReplacementHandler {
|
|||||||
re.setHostCard(affectedCard);
|
re.setHostCard(affectedCard);
|
||||||
}
|
}
|
||||||
runParams.put(AbilityKey.Affected, affectedCard);
|
runParams.put(AbilityKey.Affected, affectedCard);
|
||||||
|
runParams.put(AbilityKey.NewCard, CardUtil.getLKICopy(affectedLKI));
|
||||||
}
|
}
|
||||||
game.getAction().checkStaticAbilities(false);
|
game.getAction().checkStaticAbilities(false);
|
||||||
}
|
}
|
||||||
@@ -418,8 +419,8 @@ public class ReplacementHandler {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ("Replaced".equals(replacementEffect.getParam("ReplacementResult"))) {
|
if (replacementEffect.hasParam("ReplacementResult")) {
|
||||||
return ReplacementResult.Replaced; // Event is replaced without SA.
|
return ReplacementResult.valueOf(replacementEffect.getParam("ReplacementResult")); // Event is replaced without SA.
|
||||||
}
|
}
|
||||||
|
|
||||||
// if the spellability is a replace effect then its some new logic
|
// if the spellability is a replace effect then its some new logic
|
||||||
|
|||||||
@@ -4,9 +4,8 @@ Types:Snow Creature Elf Warrior
|
|||||||
PT:3/2
|
PT:3/2
|
||||||
T:Mode$ SpellCast | ValidCard$ Creature | ValidActivatingPlayer$ You | Execute$ TrigEffect | TriggerZones$ Battlefield | SnowSpentForCardsColor$ True | TriggerDescription$ Whenever you cast a creature spell, if {S} of any of that spell's colors was spent to cast it, that creature enters the battlefield with an additional +1/+1 counter on it. ({S} is mana from a snow source.)
|
T:Mode$ SpellCast | ValidCard$ Creature | ValidActivatingPlayer$ You | Execute$ TrigEffect | TriggerZones$ Battlefield | SnowSpentForCardsColor$ True | TriggerDescription$ Whenever you cast a creature spell, if {S} of any of that spell's colors was spent to cast it, that creature enters the battlefield with an additional +1/+1 counter on it. ({S} is mana from a snow source.)
|
||||||
SVar:TrigEffect:DB$ Effect | RememberObjects$ TriggeredCard | ReplacementEffects$ ETBCreat
|
SVar:TrigEffect:DB$ Effect | RememberObjects$ TriggeredCard | ReplacementEffects$ ETBCreat
|
||||||
SVar:ETBCreat:Event$ Moved | ValidCard$ Card.IsRemembered | Destination$ Battlefield | ReplaceWith$ DBPutP1P1 | Description$ That creature enters the battlefield with an additional +1/+1 counter on it.
|
SVar:ETBCreat:Event$ Moved | ValidCard$ Card.IsRemembered | Destination$ Battlefield | ReplaceWith$ DBPutP1P1 | ReplacementResult$ Updated | Description$ That creature enters the battlefield with an additional +1/+1 counter on it.
|
||||||
SVar:DBPutP1P1:DB$ PutCounter | Defined$ ReplacedCard | CounterType$ P1P1 | ETB$ True | CounterNum$ 1 | SubAbility$ ToBattlefield
|
SVar:DBPutP1P1:DB$ PutCounter | Defined$ ReplacedCard | CounterType$ P1P1 | ETB$ True | CounterNum$ 1 | SubAbility$ DBExile
|
||||||
SVar:ToBattlefield:DB$ InternalEtbReplacement | SubAbility$ DBExile
|
|
||||||
SVar:DBExile:DB$ ChangeZone | Defined$ Self | Origin$ Command | Destination$ Exile
|
SVar:DBExile:DB$ ChangeZone | Defined$ Self | Origin$ Command | Destination$ Exile
|
||||||
DeckHints:Type$Snow
|
DeckHints:Type$Snow
|
||||||
DeckHas:Ability$Counters
|
DeckHas:Ability$Counters
|
||||||
|
|||||||
@@ -3,9 +3,8 @@ ManaCost:2 R
|
|||||||
Types:Creature Devil
|
Types:Creature Devil
|
||||||
PT:2/3
|
PT:2/3
|
||||||
K:Menace
|
K:Menace
|
||||||
R:Event$ Moved | ValidCard$ Card.Self | Destination$ Battlefield | DayTime$ Neither | ReplaceWith$ DoDay | Description$ If it's neither day nor night, it becomes day as CARDNAME enters the battlefield.
|
R:Event$ Moved | ValidCard$ Card.Self | Destination$ Battlefield | DayTime$ Neither | ReplaceWith$ DoDay | ReplacementResult$ Updated | Description$ If it's neither day nor night, it becomes day as CARDNAME enters the battlefield.
|
||||||
SVar:DoDay:DB$ DayTime | Value$ Day | SubAbility$ ETB
|
SVar:DoDay:DB$ DayTime | Value$ Day
|
||||||
SVar:ETB:DB$ InternalEtbReplacement
|
|
||||||
T:Mode$ DayTimeChanges | Execute$ TrigDamage | TriggerZones$ Battlefield | TriggerDescription$ Whenever day becomes night or night becomes day, CARDNAME deals 1 damage to each opponent.
|
T:Mode$ DayTimeChanges | Execute$ TrigDamage | TriggerZones$ Battlefield | TriggerDescription$ Whenever day becomes night or night becomes day, CARDNAME deals 1 damage to each opponent.
|
||||||
SVar:TrigDamage:DB$ DealDamage | Defined$ Player.Opponent | NumDmg$ 1
|
SVar:TrigDamage:DB$ DealDamage | Defined$ Player.Opponent | NumDmg$ 1
|
||||||
Oracle:Menace (This creature can't be blocked except by two or more creatures.)\nIf it's neither day nor night, it becomes day as Brimstone Vandal enters the battlefield.\nWhenever day becomes night or night becomes day, Brimstone Vandal deals 1 damage to each opponent.
|
Oracle:Menace (This creature can't be blocked except by two or more creatures.)\nIf it's neither day nor night, it becomes day as Brimstone Vandal enters the battlefield.\nWhenever day becomes night or night becomes day, Brimstone Vandal deals 1 damage to each opponent.
|
||||||
|
|||||||
@@ -2,9 +2,8 @@ Name:Celestus Sanctifier
|
|||||||
ManaCost:2 W
|
ManaCost:2 W
|
||||||
Types:Creature Human Cleric
|
Types:Creature Human Cleric
|
||||||
PT:3/2
|
PT:3/2
|
||||||
R:Event$ Moved | ValidCard$ Card.Self | Destination$ Battlefield | DayTime$ Neither | ReplaceWith$ DoDay | Description$ If it's neither day nor night, it becomes day as CARDNAME enters the battlefield.
|
R:Event$ Moved | ValidCard$ Card.Self | Destination$ Battlefield | DayTime$ Neither | ReplaceWith$ DoDay | ReplacementResult$ Updated | Description$ If it's neither day nor night, it becomes day as CARDNAME enters the battlefield.
|
||||||
SVar:DoDay:DB$ DayTime | Value$ Day | SubAbility$ ETB
|
SVar:DoDay:DB$ DayTime | Value$ Day
|
||||||
SVar:ETB:DB$ InternalEtbReplacement
|
|
||||||
T:Mode$ DayTimeChanges | Execute$ DBDig | TriggerZones$ Battlefield | TriggerDescription$ Whenever day becomes night or night becomes day, look at the top two cards of your library. Put one of them into your graveyard.
|
T:Mode$ DayTimeChanges | Execute$ DBDig | TriggerZones$ Battlefield | TriggerDescription$ Whenever day becomes night or night becomes day, look at the top two cards of your library. Put one of them into your graveyard.
|
||||||
SVar:DBDig:DB$ Dig | DigNum$ 2 | DestinationZone$ Graveyard | LibraryPosition2$ 0
|
SVar:DBDig:DB$ Dig | DigNum$ 2 | DestinationZone$ Graveyard | LibraryPosition2$ 0
|
||||||
DeckHas:Ability$Graveyard
|
DeckHas:Ability$Graveyard
|
||||||
|
|||||||
@@ -2,9 +2,8 @@ Name:Component Collector
|
|||||||
ManaCost:2 U
|
ManaCost:2 U
|
||||||
Types:Creature Homunculus
|
Types:Creature Homunculus
|
||||||
PT:1/4
|
PT:1/4
|
||||||
R:Event$ Moved | ValidCard$ Card.Self | Destination$ Battlefield | DayTime$ Neither | ReplaceWith$ DoDay | Description$ If it's neither day nor night, it becomes day as CARDNAME enters the battlefield.
|
R:Event$ Moved | ValidCard$ Card.Self | Destination$ Battlefield | DayTime$ Neither | ReplaceWith$ DoDay | ReplacementResult$ Updated | Description$ If it's neither day nor night, it becomes day as CARDNAME enters the battlefield.
|
||||||
SVar:DoDay:DB$ DayTime | Value$ Day | SubAbility$ ETB
|
SVar:DoDay:DB$ DayTime | Value$ Day
|
||||||
SVar:ETB:DB$ InternalEtbReplacement
|
|
||||||
T:Mode$ DayTimeChanges | Execute$ TrigTapOrUntap | TriggerZones$ Battlefield | TriggerDescription$ Whenever day becomes night or night becomes day, you may tap or untap target nonland permanent.
|
T:Mode$ DayTimeChanges | Execute$ TrigTapOrUntap | TriggerZones$ Battlefield | TriggerDescription$ Whenever day becomes night or night becomes day, you may tap or untap target nonland permanent.
|
||||||
SVar:TrigTapOrUntap:DB$ TapOrUntap | ValidTgts$ Permanent.nonLand | TgtPrompt$ Select target nonland permanent
|
SVar:TrigTapOrUntap:DB$ TapOrUntap | ValidTgts$ Permanent.nonLand | TgtPrompt$ Select target nonland permanent
|
||||||
Oracle:If it's neither day nor night, it becomes day as Component Collector enters the battlefield.\nWhenever day becomes night or night becomes day, you may tap or untap target nonland permanent.
|
Oracle:If it's neither day nor night, it becomes day as Component Collector enters the battlefield.\nWhenever day becomes night or night becomes day, you may tap or untap target nonland permanent.
|
||||||
|
|||||||
@@ -2,9 +2,8 @@ Name:Firmament Sage
|
|||||||
ManaCost:3 U
|
ManaCost:3 U
|
||||||
Types:Creature Human Wizard
|
Types:Creature Human Wizard
|
||||||
PT:2/3
|
PT:2/3
|
||||||
R:Event$ Moved | ValidCard$ Card.Self | Destination$ Battlefield | DayTime$ Neither | ReplaceWith$ DoDay | Description$ If it's neither day nor night, it becomes day as CARDNAME enters the battlefield.
|
R:Event$ Moved | ValidCard$ Card.Self | Destination$ Battlefield | DayTime$ Neither | ReplaceWith$ DoDay | ReplacementResult$ Updated | Description$ If it's neither day nor night, it becomes day as CARDNAME enters the battlefield.
|
||||||
SVar:DoDay:DB$ DayTime | Value$ Day | SubAbility$ ETB
|
SVar:DoDay:DB$ DayTime | Value$ Day
|
||||||
SVar:ETB:DB$ InternalEtbReplacement
|
|
||||||
T:Mode$ DayTimeChanges | Execute$ DBDraw | TriggerZones$ Battlefield | TriggerDescription$ Whenever day becomes night or night becomes day, draw a card.
|
T:Mode$ DayTimeChanges | Execute$ DBDraw | TriggerZones$ Battlefield | TriggerDescription$ Whenever day becomes night or night becomes day, draw a card.
|
||||||
SVar:DBDraw:DB$ Draw | Defined$ You | NumCards$ 1
|
SVar:DBDraw:DB$ Draw | Defined$ You | NumCards$ 1
|
||||||
Oracle:If it's neither day nor night, it becomes day as Firmament Sage enters the battlefield.\nWhenever day becomes night or night becomes day, draw a card.
|
Oracle:If it's neither day nor night, it becomes day as Firmament Sage enters the battlefield.\nWhenever day becomes night or night becomes day, draw a card.
|
||||||
|
|||||||
@@ -3,9 +3,8 @@ ManaCost:1 W W
|
|||||||
Types:Creature Human Soldier
|
Types:Creature Human Soldier
|
||||||
PT:3/3
|
PT:3/3
|
||||||
K:Ward:1
|
K:Ward:1
|
||||||
R:Event$ Moved | ValidCard$ Card.Self | Destination$ Battlefield | DayTime$ Neither | ReplaceWith$ DoDay | Description$ If it's neither day nor night, it becomes day as CARDNAME enters the battlefield.
|
R:Event$ Moved | ValidCard$ Card.Self | Destination$ Battlefield | DayTime$ Neither | ReplaceWith$ DoDay | ReplacementResult$ Updated | Description$ If it's neither day nor night, it becomes day as CARDNAME enters the battlefield.
|
||||||
SVar:DoDay:DB$ DayTime | Value$ Day | SubAbility$ ETB
|
SVar:DoDay:DB$ DayTime | Value$ Day
|
||||||
SVar:ETB:DB$ InternalEtbReplacement
|
|
||||||
T:Mode$ DayTimeChanges | Execute$ TrigDig | TriggerZones$ Battlefield | TriggerDescription$ Whenever day becomes night or night becomes day, look at the top four cards of your library. You may reveal a creature card with mana value 3 or less from among them and put it into your hand. Put the rest on the bottom of your library in any order.
|
T:Mode$ DayTimeChanges | Execute$ TrigDig | TriggerZones$ Battlefield | TriggerDescription$ Whenever day becomes night or night becomes day, look at the top four cards of your library. You may reveal a creature card with mana value 3 or less from among them and put it into your hand. Put the rest on the bottom of your library in any order.
|
||||||
SVar:TrigDig:DB$ Dig | ForceRevealToController$ True | DigNum$ 4 | ChangeNum$ 1 | Optional$ True | ChangeValid$ Creature.cmcLE3
|
SVar:TrigDig:DB$ Dig | ForceRevealToController$ True | DigNum$ 4 | ChangeNum$ 1 | Optional$ True | ChangeValid$ Creature.cmcLE3
|
||||||
Oracle:Ward {1}\nIf it's neither day nor night, it becomes day as Gavony Dawnguard enters the battlefield.\nWhenever day becomes night or night becomes day, look at the top four cards of your library. You may reveal a creature card with mana value 3 or less from among them and put it into your hand. Put the rest on the bottom of your library in any order.
|
Oracle:Ward {1}\nIf it's neither day nor night, it becomes day as Gavony Dawnguard enters the battlefield.\nWhenever day becomes night or night becomes day, look at the top four cards of your library. You may reveal a creature card with mana value 3 or less from among them and put it into your hand. Put the rest on the bottom of your library in any order.
|
||||||
|
|||||||
@@ -18,9 +18,7 @@ Types:Legendary Snow Artifact
|
|||||||
A:AB$ Effect | Cost$ T | TgtZone$ Graveyard | ValidTgts$ Permanent.Snow+YouCtrl | TgtPrompt$ Choose target snow permanent card in your graveyard | StaticAbilities$ STPlay | RememberObjects$ Targeted | ForgetOnMoved$ Graveyard | SubAbility$ DBEffect | SpellDescription$ You may play target snow permanent card from your graveyard this turn. If you do, it enters the battlefield tapped.
|
A:AB$ Effect | Cost$ T | TgtZone$ Graveyard | ValidTgts$ Permanent.Snow+YouCtrl | TgtPrompt$ Choose target snow permanent card in your graveyard | StaticAbilities$ STPlay | RememberObjects$ Targeted | ForgetOnMoved$ Graveyard | SubAbility$ DBEffect | SpellDescription$ You may play target snow permanent card from your graveyard this turn. If you do, it enters the battlefield tapped.
|
||||||
SVar:STPlay:Mode$ Continuous | MayPlay$ True | EffectZone$ Command | Affected$ Card.IsRemembered | AffectedZone$ Graveyard | Description$ You may play target snow permanent card from your graveyard this turn.
|
SVar:STPlay:Mode$ Continuous | MayPlay$ True | EffectZone$ Command | Affected$ Card.IsRemembered | AffectedZone$ Graveyard | Description$ You may play target snow permanent card from your graveyard this turn.
|
||||||
SVar:DBEffect:DB$ Effect | RememberObjects$ ParentTarget | ForgetOnMoved$ Stack | ReplacementEffects$ ETBCreat
|
SVar:DBEffect:DB$ Effect | RememberObjects$ ParentTarget | ForgetOnMoved$ Stack | ReplacementEffects$ ETBCreat
|
||||||
SVar:ETBCreat:Event$ Moved | ValidCard$ Card.IsRemembered | Destination$ Battlefield | ReplaceWith$ DBTap | Description$ If you do, it enters the battlefield tapped.
|
SVar:ETBCreat:Event$ Moved | ValidCard$ Card.IsRemembered | Destination$ Battlefield | ReplaceWith$ DBTap | ReplacementResult$ Updated | Description$ If you do, it enters the battlefield tapped.
|
||||||
SVar:DBTap:DB$ Tap | Defined$ ReplacedCard | ETB$ True | SubAbility$ ToBattlefield
|
SVar:DBTap:DB$ Tap | Defined$ ReplacedCard | ETB$ True | SubAbility$ DBExile
|
||||||
SVar:ToBattlefield:DB$ InternalEtbReplacement | SubAbility$ DBExile
|
|
||||||
SVar:DBExile:DB$ ChangeZone | Defined$ Self | Origin$ Command | Destination$ Exile
|
SVar:DBExile:DB$ ChangeZone | Defined$ Self | Origin$ Command | Destination$ Exile
|
||||||
SVar:STTapped:Mode$ Continuous | Affected$ Card.IsRemembered | AddKeyword$ CARDNAME enters the battlefield tapped.
|
|
||||||
Oracle:{T}: You may play target snow permanent card from your graveyard this turn. If you do, it enters the battlefield tapped.
|
Oracle:{T}: You may play target snow permanent card from your graveyard this turn. If you do, it enters the battlefield tapped.
|
||||||
|
|||||||
@@ -6,9 +6,8 @@ K:Changeling
|
|||||||
K:ETBReplacement:Copy:DBCopy:Optional
|
K:ETBReplacement:Copy:DBCopy:Optional
|
||||||
SVar:DBCopy:DB$ Clone | Choices$ Permanent.Other+YouCtrl | AddTypes$ Legendary & Snow | SubAbility$ DBConditionEffect | AddKeywords$ Changeling | SpellDescription$ You may have Moritte of the Frost enter the battlefield as a copy of a permanent you control, except it's legendary and snow in addition to its other types and, if it's a creature, it enters with two additional +1/+1 counters on it and has changeling.
|
SVar:DBCopy:DB$ Clone | Choices$ Permanent.Other+YouCtrl | AddTypes$ Legendary & Snow | SubAbility$ DBConditionEffect | AddKeywords$ Changeling | SpellDescription$ You may have Moritte of the Frost enter the battlefield as a copy of a permanent you control, except it's legendary and snow in addition to its other types and, if it's a creature, it enters with two additional +1/+1 counters on it and has changeling.
|
||||||
SVar:DBConditionEffect:DB$ Effect | RememberObjects$ Self | Name$ Moritte of the Frost Effect | ReplacementEffects$ ETBCreat
|
SVar:DBConditionEffect:DB$ Effect | RememberObjects$ Self | Name$ Moritte of the Frost Effect | ReplacementEffects$ ETBCreat
|
||||||
SVar:ETBCreat:Event$ Moved | ValidCard$ Creature.IsRemembered | Destination$ Battlefield | ReplaceWith$ DBPutP1P1 | Description$ If it's a creature, it enters with two additional +1/+1 counters on it.
|
SVar:ETBCreat:Event$ Moved | ValidCard$ Creature.IsRemembered | Destination$ Battlefield | ReplaceWith$ DBPutP1P1 | ReplacementResult$ Updated | Description$ If it's a creature, it enters with two additional +1/+1 counters on it.
|
||||||
SVar:DBPutP1P1:DB$ PutCounter | Defined$ ReplacedCard | CounterType$ P1P1 | ETB$ True | CounterNum$ 2 | SubAbility$ ToBattlefield
|
SVar:DBPutP1P1:DB$ PutCounter | Defined$ ReplacedCard | CounterType$ P1P1 | ETB$ True | CounterNum$ 2 | SubAbility$ DBExile
|
||||||
SVar:ToBattlefield:DB$ InternalEtbReplacement | SubAbility$ DBExile
|
|
||||||
SVar:DBExile:DB$ ChangeZone | Defined$ Self | Origin$ Command | Destination$ Exile
|
SVar:DBExile:DB$ ChangeZone | Defined$ Self | Origin$ Command | Destination$ Exile
|
||||||
DeckHas:Ability$Counters
|
DeckHas:Ability$Counters
|
||||||
Oracle:Changeling (This card is every creature type.)\nYou may have Moritte of the Frost enter the battlefield as a copy of a permanent you control, except it's legendary and snow in addition to its other types and, if it's a creature, it enters with two additional +1/+1 counters on it and has changeling.
|
Oracle:Changeling (This card is every creature type.)\nYou may have Moritte of the Frost enter the battlefield as a copy of a permanent you control, except it's legendary and snow in addition to its other types and, if it's a creature, it enters with two additional +1/+1 counters on it and has changeling.
|
||||||
|
|||||||
@@ -2,9 +2,8 @@ Name:Mystic Reflection
|
|||||||
ManaCost:1 U
|
ManaCost:1 U
|
||||||
Types:Instant
|
Types:Instant
|
||||||
A:SP$ Effect | ValidTgts$ Creature.nonLegendary | TgtPrompt$ Choose target nonlegendary creature | RememberObjects$ Targeted | ReplacementEffects$ ReplaceETB | Triggers$ TrigRemove | SpellDescription$ Choose target nonlegendary creature. The next time one or more creatures or planeswalkers enter the battlefield this turn, they enter as copies of the chosen creature.
|
A:SP$ Effect | ValidTgts$ Creature.nonLegendary | TgtPrompt$ Choose target nonlegendary creature | RememberObjects$ Targeted | ReplacementEffects$ ReplaceETB | Triggers$ TrigRemove | SpellDescription$ Choose target nonlegendary creature. The next time one or more creatures or planeswalkers enter the battlefield this turn, they enter as copies of the chosen creature.
|
||||||
SVar:ReplaceETB:Event$ Moved | Destination$ Battlefield | ValidCard$ Creature,Planeswalker | ReplaceWith$ EnterAsCopy | Description$ The next time one or more creatures or planeswalkers enter the battlefield this turn, they enter as copies of the chosen creature.
|
SVar:ReplaceETB:Event$ Moved | Destination$ Battlefield | ValidCard$ Creature,Planeswalker | ReplaceWith$ EnterAsCopy | ReplacementResult$ Updated | Description$ The next time one or more creatures or planeswalkers enter the battlefield this turn, they enter as copies of the chosen creature.
|
||||||
SVar:EnterAsCopy:DB$ Clone | Defined$ Remembered | CloneTarget$ ReplacedCard | SubAbility$ MoveToBattlefield
|
SVar:EnterAsCopy:DB$ Clone | Defined$ Remembered | CloneTarget$ ReplacedCard | SubAbility$ DBImprint
|
||||||
SVar:MoveToBattlefield:DB$ InternalEtbReplacement | SubAbility$ DBImprint
|
|
||||||
SVar:DBImprint:DB$ Pump | ImprintCards$ ReplacedCard
|
SVar:DBImprint:DB$ Pump | ImprintCards$ ReplacedCard
|
||||||
SVar:TrigRemove:Mode$ ChangesZoneAll | CheckSVar$ Z | Execute$ ExileSelf | Static$ True
|
SVar:TrigRemove:Mode$ ChangesZoneAll | CheckSVar$ Z | Execute$ ExileSelf | Static$ True
|
||||||
SVar:ExileSelf:DB$ ChangeZone | Origin$ Command | Destination$ Exile | Defined$ Self
|
SVar:ExileSelf:DB$ ChangeZone | Origin$ Command | Destination$ Exile | Defined$ Self
|
||||||
|
|||||||
@@ -2,9 +2,8 @@ Name:Obsessive Astronomer
|
|||||||
ManaCost:1 R
|
ManaCost:1 R
|
||||||
Types:Creature Human Wizard
|
Types:Creature Human Wizard
|
||||||
PT:2/2
|
PT:2/2
|
||||||
R:Event$ Moved | ValidCard$ Card.Self | Destination$ Battlefield | DayTime$ Neither | ReplaceWith$ DoDay | Description$ If it's neither day nor night, it becomes day as CARDNAME enters the battlefield.
|
R:Event$ Moved | ValidCard$ Card.Self | Destination$ Battlefield | DayTime$ Neither | ReplaceWith$ DoDay | ReplacementResult$ Updated | Description$ If it's neither day nor night, it becomes day as CARDNAME enters the battlefield.
|
||||||
SVar:DoDay:DB$ DayTime | Value$ Day | SubAbility$ ETB
|
SVar:DoDay:DB$ DayTime | Value$ Day
|
||||||
SVar:ETB:DB$ InternalEtbReplacement
|
|
||||||
T:Mode$ DayTimeChanges | Execute$ TrigDiscard | TriggerZones$ Battlefield | TriggerDescription$ Whenever day becomes night or night becomes day, discard up to two cards, then draw that many cards.
|
T:Mode$ DayTimeChanges | Execute$ TrigDiscard | TriggerZones$ Battlefield | TriggerDescription$ Whenever day becomes night or night becomes day, discard up to two cards, then draw that many cards.
|
||||||
SVar:TrigDiscard:DB$ Discard | Defined$ You | NumCards$ 2 | Optional$ True | Mode$ TgtChoose | RememberDiscarded$ True | SubAbility$ DBDraw
|
SVar:TrigDiscard:DB$ Discard | Defined$ You | NumCards$ 2 | Optional$ True | Mode$ TgtChoose | RememberDiscarded$ True | SubAbility$ DBDraw
|
||||||
SVar:DBDraw:DB$ Draw | NumCards$ Y | SubAbility$ DBCleanup
|
SVar:DBDraw:DB$ Draw | NumCards$ Y | SubAbility$ DBCleanup
|
||||||
|
|||||||
@@ -5,12 +5,10 @@ A:SP$ ChangeZone | Cost$ 3 W | ValidTgts$ Creature.YouCtrl,Planeswalker.YouCtrl
|
|||||||
SVar:DelTrig:DB$ DelayedTrigger | Mode$ Phase | Phase$ End of Turn | Execute$ TrigReturn | RememberObjects$ RememberedLKI | TriggerDescription$ Return each of them to the battlefield under its owner's control. Each of them enters the battlefield with an additional +1/+1 counter on it if it's a creature and an additional loyalty counter on it if it's a planeswalker. | SubAbility$ DBCleanup
|
SVar:DelTrig:DB$ DelayedTrigger | Mode$ Phase | Phase$ End of Turn | Execute$ TrigReturn | RememberObjects$ RememberedLKI | TriggerDescription$ Return each of them to the battlefield under its owner's control. Each of them enters the battlefield with an additional +1/+1 counter on it if it's a creature and an additional loyalty counter on it if it's a planeswalker. | SubAbility$ DBCleanup
|
||||||
SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True
|
SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True
|
||||||
SVar:TrigReturn:DB$ ChangeZone | Origin$ Exile | Destination$ Battlefield | Defined$ DelayTriggerRememberedLKI | AnimateSubAbility$ DBConditionEffect
|
SVar:TrigReturn:DB$ ChangeZone | Origin$ Exile | Destination$ Battlefield | Defined$ DelayTriggerRememberedLKI | AnimateSubAbility$ DBConditionEffect
|
||||||
SVar:DBConditionEffect:DB$ Effect | RememberObjects$ Remembered | Name$ Semester's End Effect | ReplacementEffects$ ETBCreat,ETBPlans
|
SVar:DBConditionEffect:DB$ Effect | RememberObjects$ Remembered | Name$ Semester's End Effect | ReplacementEffects$ ETBCreatPlans
|
||||||
SVar:ETBCreat:Event$ Moved | ValidCard$ Creature.IsRemembered | Destination$ Battlefield | ReplaceWith$ DBPutP1P1 | Description$ It enters with an additional +1/+1 counter on it if it's a creature.
|
SVar:ETBCreatPlans:Event$ Moved | ValidCard$ Creature.IsRemembered,Planeswalker.IsRemembered | Destination$ Battlefield | ReplaceWith$ DBPutP1P1 | ReplacementResult$ Updated | Description$ It enters with an additional +1/+1 counter on it if it's a creature, it enters with an additional loyalty counter on it if it's a planeswalker.
|
||||||
SVar:DBPutP1P1:DB$ PutCounter | Defined$ ReplacedCard | CounterType$ P1P1 | ETB$ True | CounterNum$ 1 | SubAbility$ ToBattlefield
|
SVar:DBPutP1P1:DB$ PutCounter | Defined$ ReplacedNewCard.Creature | CounterType$ P1P1 | ETB$ True | CounterNum$ 1 | SubAbility$ DBPutLOYALTY
|
||||||
SVar:ETBPlans:Event$ Moved | ValidCard$ Planeswalker.IsRemembered | Destination$ Battlefield | ReplaceWith$ DBPutLOYALTY | Description$ It enters with an additional loyalty counter on it if it's a planeswalker.
|
SVar:DBPutLOYALTY:DB$ PutCounter | Defined$ ReplacedNewCard.Planeswalker | CounterType$ LOYALTY | ETB$ True | CounterNum$ 1 | SubAbility$ DBExile
|
||||||
SVar:DBPutLOYALTY:DB$ PutCounter | Defined$ ReplacedCard | CounterType$ LOYALTY | ETB$ True | CounterNum$ 1 | SubAbility$ ToBattlefield
|
|
||||||
SVar:ToBattlefield:DB$ InternalEtbReplacement | SubAbility$ DBExile
|
|
||||||
SVar:DBExile:DB$ ChangeZone | Defined$ Self | Origin$ Command | Destination$ Exile
|
SVar:DBExile:DB$ ChangeZone | Defined$ Self | Origin$ Command | Destination$ Exile
|
||||||
SVar:X:Count$Valid Permanent.YouCtrl
|
SVar:X:Count$Valid Permanent.YouCtrl
|
||||||
DeckHas:Ability$Counters
|
DeckHas:Ability$Counters
|
||||||
|
|||||||
@@ -4,12 +4,10 @@ Types:Creature Illusion
|
|||||||
PT:0/0
|
PT:0/0
|
||||||
K:ETBReplacement:Copy:DBCopy:Optional
|
K:ETBReplacement:Copy:DBCopy:Optional
|
||||||
SVar:DBCopy:DB$ Clone | Choices$ Creature.Other+YouCtrl,Planeswalker.Other+YouCtrl | NonLegendary$ True | SubAbility$ DBConditionEffect | SpellDescription$ You may have CARDNAME enter the battlefield as a copy of a creature or planeswalker you control, except it enters with an additional +1/+1 counter on it if it's a creature, it enters with an additional loyalty counter on it if it's a planeswalker, and it isn't legendary if that permanent is legendary.
|
SVar:DBCopy:DB$ Clone | Choices$ Creature.Other+YouCtrl,Planeswalker.Other+YouCtrl | NonLegendary$ True | SubAbility$ DBConditionEffect | SpellDescription$ You may have CARDNAME enter the battlefield as a copy of a creature or planeswalker you control, except it enters with an additional +1/+1 counter on it if it's a creature, it enters with an additional loyalty counter on it if it's a planeswalker, and it isn't legendary if that permanent is legendary.
|
||||||
SVar:DBConditionEffect:DB$ Effect | RememberObjects$ Self | Name$ Spark Double Effect | ReplacementEffects$ ETBCreat,ETBPlans
|
SVar:DBConditionEffect:DB$ Effect | RememberObjects$ Self | Name$ Spark Double Effect | ReplacementEffects$ ETBCreatPlans
|
||||||
SVar:ETBCreat:Event$ Moved | ValidCard$ Creature.IsRemembered | Destination$ Battlefield | ReplaceWith$ DBPutP1P1 | Description$ It enters with an additional +1/+1 counter on it if it's a creature.
|
SVar:ETBCreatPlans:Event$ Moved | ValidCard$ Creature.IsRemembered,Planeswalker.IsRemembered | Destination$ Battlefield | ReplaceWith$ DBPutP1P1 | ReplacementResult$ Updated | Description$ It enters with an additional +1/+1 counter on it if it's a creature, it enters with an additional loyalty counter on it if it's a planeswalker.
|
||||||
SVar:DBPutP1P1:DB$ PutCounter | Defined$ ReplacedCard | CounterType$ P1P1 | ETB$ True | CounterNum$ 1 | SubAbility$ ToBattlefield
|
SVar:DBPutP1P1:DB$ PutCounter | Defined$ ReplacedNewCard.Creature | CounterType$ P1P1 | ETB$ True | CounterNum$ 1 | SubAbility$ DBPutLOYALTY
|
||||||
SVar:ETBPlans:Event$ Moved | ValidCard$ Planeswalker.IsRemembered | Destination$ Battlefield | ReplaceWith$ DBPutLOYALTY | Description$ It enters with an additional loyalty counter on it if it's a planeswalker.
|
SVar:DBPutLOYALTY:DB$ PutCounter | Defined$ ReplacedNewCard.Planeswalker | CounterType$ LOYALTY | ETB$ True | CounterNum$ 1 | SubAbility$ DBExile
|
||||||
SVar:DBPutLOYALTY:DB$ PutCounter | Defined$ ReplacedCard | CounterType$ LOYALTY | ETB$ True | CounterNum$ 1 | SubAbility$ ToBattlefield
|
|
||||||
SVar:ToBattlefield:DB$ InternalEtbReplacement | SubAbility$ DBExile
|
|
||||||
SVar:DBExile:DB$ ChangeZone | Defined$ Self | Origin$ Command | Destination$ Exile
|
SVar:DBExile:DB$ ChangeZone | Defined$ Self | Origin$ Command | Destination$ Exile
|
||||||
DeckHas:Ability$Counters
|
DeckHas:Ability$Counters
|
||||||
SVar:NeedsToPlayVar:Z GE1
|
SVar:NeedsToPlayVar:Z GE1
|
||||||
|
|||||||
@@ -6,8 +6,7 @@ SVar:P1P1:DB$ PutCounter | ValidTgts$ Creature.YouCtrl | TgtPrompt$ Select targe
|
|||||||
SVar:Lore:DB$ PutCounter | ValidTgts$ Saga.YouCtrl | TgtPrompt$ Select target Saga you control | CounterType$ LORE | CounterNum$ 2 | SubAbility$ DBEffect | SpellDescription$ Put two lore counters on target Saga you control. The next time one or more enchantment creatures enter the battlefield under your control this turn, each enters with two additional +1/+1 counters on it.
|
SVar:Lore:DB$ PutCounter | ValidTgts$ Saga.YouCtrl | TgtPrompt$ Select target Saga you control | CounterType$ LORE | CounterNum$ 2 | SubAbility$ DBEffect | SpellDescription$ Put two lore counters on target Saga you control. The next time one or more enchantment creatures enter the battlefield under your control this turn, each enters with two additional +1/+1 counters on it.
|
||||||
SVar:DBEffect:DB$ Effect | ReplacementEffects$ ReplaceETB | Triggers$ TrigRemove
|
SVar:DBEffect:DB$ Effect | ReplacementEffects$ ReplaceETB | Triggers$ TrigRemove
|
||||||
SVar:ReplaceETB:Event$ Moved | Destination$ Battlefield | ValidCard$ Creature.Enchantment | ReplaceWith$ DBPutP1P1
|
SVar:ReplaceETB:Event$ Moved | Destination$ Battlefield | ValidCard$ Creature.Enchantment | ReplaceWith$ DBPutP1P1
|
||||||
SVar:DBPutP1P1:DB$ PutCounter | Defined$ ReplacedCard | CounterType$ P1P1 | ETB$ True | CounterNum$ 2 | SubAbility$ MoveToBattlefield
|
SVar:DBPutP1P1:DB$ PutCounter | Defined$ ReplacedCard | CounterType$ P1P1 | ETB$ True | CounterNum$ 2 | SubAbility$ DBImprint
|
||||||
SVar:MoveToBattlefield:DB$ InternalEtbReplacement | SubAbility$ DBImprint
|
|
||||||
SVar:DBImprint:DB$ Pump | ImprintCards$ ReplacedCard
|
SVar:DBImprint:DB$ Pump | ImprintCards$ ReplacedCard
|
||||||
SVar:TrigRemove:Mode$ ChangesZoneAll | CheckSVar$ Z | Execute$ ExileSelf | Static$ True
|
SVar:TrigRemove:Mode$ ChangesZoneAll | CheckSVar$ Z | Execute$ ExileSelf | Static$ True
|
||||||
SVar:ExileSelf:DB$ ChangeZone | Origin$ Command | Destination$ Exile | Defined$ Self
|
SVar:ExileSelf:DB$ ChangeZone | Origin$ Command | Destination$ Exile | Defined$ Self
|
||||||
|
|||||||
@@ -4,9 +4,8 @@ Types:Creature Human Knight
|
|||||||
PT:3/3
|
PT:3/3
|
||||||
K:Trample
|
K:Trample
|
||||||
K:Haste
|
K:Haste
|
||||||
R:Event$ Moved | ValidCard$ Card.Self | Destination$ Battlefield | DayTime$ Neither | ReplaceWith$ DoDay | Description$ If it's neither day nor night, it becomes day as CARDNAME enters the battlefield.
|
R:Event$ Moved | ValidCard$ Card.Self | Destination$ Battlefield | DayTime$ Neither | ReplaceWith$ DoDay | ReplacementResult$ Updated | Description$ If it's neither day nor night, it becomes day as CARDNAME enters the battlefield.
|
||||||
SVar:DoDay:DB$ DayTime | Value$ Day | SubAbility$ ETB
|
SVar:DoDay:DB$ DayTime | Value$ Day
|
||||||
SVar:ETB:DB$ InternalEtbReplacement
|
|
||||||
T:Mode$ DayTimeChanges | Execute$ TrigPutCounter | TriggerZones$ Battlefield | TriggerDescription$ Whenever day becomes night or night becomes day, put a +1/+1 counter on target creature you control.
|
T:Mode$ DayTimeChanges | Execute$ TrigPutCounter | TriggerZones$ Battlefield | TriggerDescription$ Whenever day becomes night or night becomes day, put a +1/+1 counter on target creature you control.
|
||||||
SVar:TrigPutCounter:DB$ PutCounter | ValidTgts$ Creature | TgtPrompt$ Select target creature | CounterType$ P1P1 | CounterNum$ 1
|
SVar:TrigPutCounter:DB$ PutCounter | ValidTgts$ Creature | TgtPrompt$ Select target creature | CounterType$ P1P1 | CounterNum$ 1
|
||||||
DeckHas:Ability$Counters
|
DeckHas:Ability$Counters
|
||||||
|
|||||||
@@ -3,9 +3,8 @@ ManaCost:2 R R
|
|||||||
Types:Creature Phoenix
|
Types:Creature Phoenix
|
||||||
PT:4/2
|
PT:4/2
|
||||||
K:Flying
|
K:Flying
|
||||||
R:Event$ Moved | ValidCard$ Card.Self | Destination$ Battlefield | DayTime$ Neither | ReplaceWith$ DoDay | Description$ If it's neither day nor night, it becomes day as CARDNAME enters the battlefield.
|
R:Event$ Moved | ValidCard$ Card.Self | Destination$ Battlefield | DayTime$ Neither | ReplaceWith$ DoDay | ReplacementResult$ Updated | Description$ If it's neither day nor night, it becomes day as CARDNAME enters the battlefield.
|
||||||
SVar:DoDay:DB$ DayTime | Value$ Day | SubAbility$ ETB
|
SVar:DoDay:DB$ DayTime | Value$ Day
|
||||||
SVar:ETB:DB$ InternalEtbReplacement
|
|
||||||
T:Mode$ DayTimeChanges | Execute$ TrigReturn | TriggerZones$ Graveyard | TriggerDescription$ Whenever day becomes night or night becomes day, you may pay {1}{R}. If you do, return CARDNAME from your graveyard to the battlefield tapped.
|
T:Mode$ DayTimeChanges | Execute$ TrigReturn | TriggerZones$ Graveyard | TriggerDescription$ Whenever day becomes night or night becomes day, you may pay {1}{R}. If you do, return CARDNAME from your graveyard to the battlefield tapped.
|
||||||
SVar:TrigReturn:AB$ ChangeZone | Cost$ 1 R | Origin$ Graveyard | Destination$ Battlefield | Tapped$ True
|
SVar:TrigReturn:AB$ ChangeZone | Cost$ 1 R | Origin$ Graveyard | Destination$ Battlefield | Tapped$ True
|
||||||
DeckHas:Ability$Graveyard
|
DeckHas:Ability$Graveyard
|
||||||
|
|||||||
@@ -5,9 +5,8 @@ A:SP$ ChangeZone | ValidTgts$ Permanent.YouCtrl | TgtPrompt$ Select target perma
|
|||||||
SVar:DBEffect:DB$ Effect | RememberObjects$ Remembered | Triggers$ ReturnEOT | ReplacementEffects$ EntersAsCreature | SubAbility$ DBCleanup | SpellDescription$ Return that card to the battlefield under its owner's control at the beginning of the next end step. If it enters the battlefield as a creature, it enters with an additional +1/+1 counter on it.
|
SVar:DBEffect:DB$ Effect | RememberObjects$ Remembered | Triggers$ ReturnEOT | ReplacementEffects$ EntersAsCreature | SubAbility$ DBCleanup | SpellDescription$ Return that card to the battlefield under its owner's control at the beginning of the next end step. If it enters the battlefield as a creature, it enters with an additional +1/+1 counter on it.
|
||||||
SVar:ReturnEOT:Mode$ Phase | Phase$ End of Turn | Execute$ TrigReturn | TriggerDescription$ Return that card to the battlefield under its owner's control at the beginning of the next end step. If it enters the battlefield as a creature, it enters with an additional +1/+1 counter on it.
|
SVar:ReturnEOT:Mode$ Phase | Phase$ End of Turn | Execute$ TrigReturn | TriggerDescription$ Return that card to the battlefield under its owner's control at the beginning of the next end step. If it enters the battlefield as a creature, it enters with an additional +1/+1 counter on it.
|
||||||
SVar:TrigReturn:DB$ ChangeZone | Origin$ Exile | Destination$ Battlefield | Defined$ RememberedLKI
|
SVar:TrigReturn:DB$ ChangeZone | Origin$ Exile | Destination$ Battlefield | Defined$ RememberedLKI
|
||||||
SVar:EntersAsCreature:Event$ Moved | ValidCard$ Creature.IsRemembered | Destination$ Battlefield | ReplaceWith$ PutP1P1 | Secondary$ True
|
SVar:EntersAsCreature:Event$ Moved | ValidCard$ Creature.IsRemembered | Destination$ Battlefield | ReplaceWith$ PutP1P1 | Secondary$ True | ReplacementResult$ Updated
|
||||||
SVar:PutP1P1:DB$ PutCounter | Defined$ ReplacedCard | CounterType$ P1P1 | ETB$ True | SubAbility$ ToBattlefield
|
SVar:PutP1P1:DB$ PutCounter | Defined$ ReplacedCard | CounterType$ P1P1 | ETB$ True | SubAbility$ DBExile
|
||||||
SVar:ToBattlefield:DB$ InternalEtbReplacement | SubAbility$ DBExile
|
|
||||||
SVar:DBExile:DB$ ChangeZone | Defined$ Self | Origin$ Command | Destination$ Exile
|
SVar:DBExile:DB$ ChangeZone | Defined$ Self | Origin$ Command | Destination$ Exile
|
||||||
SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True
|
SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True
|
||||||
DeckHas:Ability$Counters
|
DeckHas:Ability$Counters
|
||||||
|
|||||||
@@ -1,9 +1,8 @@
|
|||||||
Name:The Celestus
|
Name:The Celestus
|
||||||
ManaCost:3
|
ManaCost:3
|
||||||
Types:Legendary Artifact
|
Types:Legendary Artifact
|
||||||
R:Event$ Moved | ValidCard$ Card.Self | Destination$ Battlefield | DayTime$ Neither | ReplaceWith$ DoDay | Description$ If it's neither day nor night, it becomes day as CARDNAME enters the battlefield.
|
R:Event$ Moved | ValidCard$ Card.Self | Destination$ Battlefield | DayTime$ Neither | ReplaceWith$ DoDay | ReplacementResult$ Updated | Description$ If it's neither day nor night, it becomes day as CARDNAME enters the battlefield.
|
||||||
SVar:DoDay:DB$ DayTime | Value$ Day | SubAbility$ ETB
|
SVar:DoDay:DB$ DayTime | Value$ Day
|
||||||
SVar:ETB:DB$ InternalEtbReplacement
|
|
||||||
A:AB$ Mana | Cost$ T | Produced$ Any | SpellDescription$ Add one mana of any color.
|
A:AB$ Mana | Cost$ T | Produced$ Any | SpellDescription$ Add one mana of any color.
|
||||||
A:AB$ DayTime | Cost$ 3 T | Value$ Switch | SorcerySpeed$ True | SpellDescription$ If it's night, it becomes day. Otherwise, it becomes night. Activate only as a sorcery.
|
A:AB$ DayTime | Cost$ 3 T | Value$ Switch | SorcerySpeed$ True | SpellDescription$ If it's night, it becomes day. Otherwise, it becomes night. Activate only as a sorcery.
|
||||||
T:Mode$ DayTimeChanges | Execute$ DBGainLife | TriggerZones$ Battlefield | TriggerDescription$ Whenever day becomes night or night becomes day, you gain 1 life. You may draw a card. If you do, discard a card.
|
T:Mode$ DayTimeChanges | Execute$ DBGainLife | TriggerZones$ Battlefield | TriggerDescription$ Whenever day becomes night or night becomes day, you gain 1 life. You may draw a card. If you do, discard a card.
|
||||||
|
|||||||
@@ -2,10 +2,9 @@ Name:Master Chef
|
|||||||
ManaCost:2 G
|
ManaCost:2 G
|
||||||
Types:Legendary Enchantment Background
|
Types:Legendary Enchantment Background
|
||||||
S:Mode$ Continuous | Affected$ Creature.IsCommander+YouOwn | AddReplacementEffects$ This & Other | Description$ Commander creatures you own have "This creature enters the battlefield with an additional +1/+1 counter on it" and "Other creatures you control enter with an additional +1/+1 counter on them."
|
S:Mode$ Continuous | Affected$ Creature.IsCommander+YouOwn | AddReplacementEffects$ This & Other | Description$ Commander creatures you own have "This creature enters the battlefield with an additional +1/+1 counter on it" and "Other creatures you control enter with an additional +1/+1 counter on them."
|
||||||
SVar:This:Event$ Moved | ValidCard$ Card.Self | Destination$ Battlefield | ReplaceWith$ ExtraCounter | Description$ This creature enters the battlefield with an additional +1/+1 counter on it.
|
SVar:This:Event$ Moved | ValidCard$ Card.Self | Destination$ Battlefield | ReplaceWith$ ExtraCounter | ReplacementResult$ Updated | Description$ This creature enters the battlefield with an additional +1/+1 counter on it.
|
||||||
SVar:Other:Event$ Moved | ValidCard$ Creature.Other+YouCtrl | Destination$ Battlefield | ReplaceWith$ ExtraCounter | Description$ Other creatures you control enter with an additional +1/+1 counter on them.
|
SVar:Other:Event$ Moved | ValidCard$ Creature.Other+YouCtrl | Destination$ Battlefield | ReplaceWith$ ExtraCounter | ReplacementResult$ Updated | Description$ Other creatures you control enter with an additional +1/+1 counter on them.
|
||||||
SVar:ExtraCounter:DB$ PutCounter | ETB$ True | Defined$ ReplacedCard | CounterType$ P1P1 | SubAbility$ ETB
|
SVar:ExtraCounter:DB$ PutCounter | ETB$ True | Defined$ ReplacedCard | CounterType$ P1P1
|
||||||
SVar:ETB:DB$ InternalEtbReplacement
|
|
||||||
AI:RemoveDeck:NonCommander
|
AI:RemoveDeck:NonCommander
|
||||||
DeckHas:Ability$Counters
|
DeckHas:Ability$Counters
|
||||||
Oracle:Commander creatures you own have "This creature enters the battlefield with an additional +1/+1 counter on it" and "Other creatures you control enter with an additional +1/+1 counter on them."
|
Oracle:Commander creatures you own have "This creature enters the battlefield with an additional +1/+1 counter on it" and "Other creatures you control enter with an additional +1/+1 counter on them."
|
||||||
|
|||||||
@@ -2,9 +2,8 @@ Name:Vadrik, Astral Archmage
|
|||||||
ManaCost:1 U R
|
ManaCost:1 U R
|
||||||
Types:Legendary Creature Human Wizard
|
Types:Legendary Creature Human Wizard
|
||||||
PT:1/2
|
PT:1/2
|
||||||
R:Event$ Moved | ValidCard$ Card.Self | Destination$ Battlefield | DayTime$ Neither | ReplaceWith$ DoDay | Description$ If it's neither day nor night, it becomes day as CARDNAME enters the battlefield.
|
R:Event$ Moved | ValidCard$ Card.Self | Destination$ Battlefield | DayTime$ Neither | ReplaceWith$ DoDay | ReplacementResult$ Updated | Description$ If it's neither day nor night, it becomes day as CARDNAME enters the battlefield.
|
||||||
SVar:DoDay:DB$ DayTime | Value$ Day | SubAbility$ ETB
|
SVar:DoDay:DB$ DayTime | Value$ Day
|
||||||
SVar:ETB:DB$ InternalEtbReplacement
|
|
||||||
S:Mode$ ReduceCost | ValidCard$ Instant,Sorcery | Type$ Spell | Activator$ You | Amount$ X | Description$ Instant and sorcery spells you cast cost {X} less to cast, where X is NICKNAME's power.
|
S:Mode$ ReduceCost | ValidCard$ Instant,Sorcery | Type$ Spell | Activator$ You | Amount$ X | Description$ Instant and sorcery spells you cast cost {X} less to cast, where X is NICKNAME's power.
|
||||||
SVar:X:Count$CardPower
|
SVar:X:Count$CardPower
|
||||||
T:Mode$ DayTimeChanges | Execute$ TrigPutCounter | TriggerZones$ Battlefield | TriggerDescription$ Whenever day becomes night or night becomes day, put a +1/+1 counter on NICKNAME.
|
T:Mode$ DayTimeChanges | Execute$ TrigPutCounter | TriggerZones$ Battlefield | TriggerDescription$ Whenever day becomes night or night becomes day, put a +1/+1 counter on NICKNAME.
|
||||||
|
|||||||
Reference in New Issue
Block a user