diff --git a/forge-ai/src/main/java/forge/ai/simulation/GameCopier.java b/forge-ai/src/main/java/forge/ai/simulation/GameCopier.java index 251dc8796f2..5950f124f0f 100644 --- a/forge-ai/src/main/java/forge/ai/simulation/GameCopier.java +++ b/forge-ai/src/main/java/forge/ai/simulation/GameCopier.java @@ -229,12 +229,12 @@ public class GameCopier { private static final boolean USE_FROM_PAPER_CARD = true; private Card createCardCopy(Game newGame, Player newOwner, Card c) { - if (c.isToken() && !c.isEmblem()) { + if (c.isToken() && !c.isImmutable()) { Card result = new TokenInfo(c).makeOneToken(newOwner); CardFactory.copyCopiableCharacteristics(c, result); return result; } - if (USE_FROM_PAPER_CARD && !c.isEmblem() && c.getPaperCard() != null) { + if (USE_FROM_PAPER_CARD && !c.isImmutable() && c.getPaperCard() != null) { Card newCard = Card.fromPaperCard(c.getPaperCard(), newOwner); newCard.setCommander(c.isCommander()); return newCard; diff --git a/forge-core/src/main/java/forge/card/CardType.java b/forge-core/src/main/java/forge/card/CardType.java index 3941b990124..257230a184a 100644 --- a/forge-core/src/main/java/forge/card/CardType.java +++ b/forge-core/src/main/java/forge/card/CardType.java @@ -58,7 +58,6 @@ public final class CardType implements Comparable, CardTypeView { Conspiracy(false, "conspiracies"), Creature(true, "creatures"), Dungeon(false, "dungeons"), - Emblem(false, "emblems"), Enchantment(true, "enchantments"), Instant(false, "instants"), Land(true, "lands"), @@ -437,11 +436,6 @@ public final class CardType implements Comparable, CardTypeView { return coreTypes.contains(CoreType.Phenomenon); } - @Override - public boolean isEmblem() { - return coreTypes.contains(CoreType.Emblem); - } - @Override public boolean isTribal() { return coreTypes.contains(CoreType.Tribal); @@ -547,7 +541,7 @@ public final class CardType implements Comparable, CardTypeView { if (!isInstant() && !isSorcery()) { Iterables.removeIf(subtypes, Predicates.IS_SPELL_TYPE); } - if (!isPlaneswalker() && !isEmblem()) { + if (!isPlaneswalker()) { Iterables.removeIf(subtypes, Predicates.IS_WALKER_TYPE); } } diff --git a/forge-core/src/main/java/forge/card/CardTypeView.java b/forge-core/src/main/java/forge/card/CardTypeView.java index cfecf57a752..f89452baac8 100644 --- a/forge-core/src/main/java/forge/card/CardTypeView.java +++ b/forge-core/src/main/java/forge/card/CardTypeView.java @@ -42,7 +42,6 @@ public interface CardTypeView extends Iterable, Serializable { boolean isBasicLand(); boolean isPlane(); boolean isPhenomenon(); - boolean isEmblem(); boolean isTribal(); boolean isDungeon(); CardTypeView getTypeWithChanges(Iterable changedCardTypes); diff --git a/forge-game/src/main/java/forge/game/GameActionUtil.java b/forge-game/src/main/java/forge/game/GameActionUtil.java index 95f447942bf..c78e34e62c7 100644 --- a/forge-game/src/main/java/forge/game/GameActionUtil.java +++ b/forge-game/src/main/java/forge/game/GameActionUtil.java @@ -153,8 +153,7 @@ public final class GameActionUtil { final StringBuilder sb = new StringBuilder(sa.getDescription()); if (!source.equals(host)) { sb.append(" by "); - if ((host.isEmblem() || host.getType().hasSubtype("Effect")) - && host.getEffectSource() != null) { + if ((host.isImmutable()) && host.getEffectSource() != null) { sb.append(host.getEffectSource()); } else { sb.append(host); @@ -542,7 +541,6 @@ public final class GameActionUtil { final Card eff = new Card(game.nextCardId(), game); eff.setTimestamp(game.getNextTimestamp()); eff.setName(sourceCard.getName() + "'s Effect"); - eff.addType("Effect"); eff.setOwner(controller); eff.setImageKey(sourceCard.getImageKey()); diff --git a/forge-game/src/main/java/forge/game/ability/AbilityUtils.java b/forge-game/src/main/java/forge/game/ability/AbilityUtils.java index 11dd1ada434..89c895d6173 100644 --- a/forge-game/src/main/java/forge/game/ability/AbilityUtils.java +++ b/forge-game/src/main/java/forge/game/ability/AbilityUtils.java @@ -112,9 +112,9 @@ public class AbilityUtils { // Probably will move to One function solution sometime in the future public static CardCollection getDefinedCards(final Card hostCard, final String def, final CardTraitBase sa) { CardCollection cards = new CardCollection(); - String defined = (def == null) ? "Self" : applyAbilityTextChangeEffects(def, sa); // default to Self - final String[] incR = defined.split("\\.", 2); - defined = incR[0]; + String changedDef = (def == null) ? "Self" : applyAbilityTextChangeEffects(def, sa); // default to Self + final String[] incR = changedDef.split("\\.", 2); + String defined = incR[0]; final Game game = hostCard.getGame(); Card c = null; @@ -132,7 +132,7 @@ public class AbilityUtils { } } else if (defined.equals("EffectSource")) { - if (hostCard.isEmblem() || hostCard.getType().hasSubtype("Effect")) { + if (hostCard.isImmutable()) { c = findEffectRoot(hostCard); } } @@ -346,6 +346,23 @@ public class AbilityUtils { cards.add(game.getCardState(cardByID)); } } + } else if (defined.startsWith("Valid")) { + Iterable candidates; + String validDefined; + if (defined.startsWith("Valid ")) { + candidates = game.getCardsIn(ZoneType.Battlefield); + validDefined = changedDef.substring("Valid ".length()); + } else if (defined.startsWith("ValidAll ")) { + candidates = game.getCardsInGame(); + validDefined = changedDef.substring("ValidAll ".length()); + } else { + String[] s = changedDef.split(" ", 2); + String zone = s[0].substring("Valid".length()); + candidates = game.getCardsIn(ZoneType.smartValueOf(zone)); + validDefined = s[1]; + } + cards.addAll(CardLists.getValidCards(candidates, validDefined.split(","), hostCard.getController(), hostCard, sa)); + return cards; } else { CardCollection list = null; if (sa instanceof SpellAbility) { @@ -377,19 +394,6 @@ public class AbilityUtils { } } - if (defined.startsWith("Valid ")) { - String validDefined = defined.substring("Valid ".length()); - list = CardLists.getValidCards(game.getCardsIn(ZoneType.Battlefield), validDefined.split(","), hostCard.getController(), hostCard, sa); - } else if (defined.startsWith("ValidAll ")) { - String validDefined = defined.substring("ValidAll ".length()); - list = CardLists.getValidCards(game.getCardsInGame(), validDefined.split(","), hostCard.getController(), hostCard, sa); - } else if (defined.startsWith("Valid")) { - String[] s = defined.split(" "); - String zone = s[0].substring("Valid".length()); - String validDefined = s[1]; - list = CardLists.getValidCards(game.getCardsIn(ZoneType.smartValueOf(zone)), validDefined.split(","), hostCard.getController(), hostCard, sa); - } - if (list != null) { cards.addAll(list); } @@ -421,7 +425,7 @@ public class AbilityUtils { private static Card findEffectRoot(Card startCard) { Card cc = startCard.getEffectSource(); if (cc != null) { - if (cc.isEmblem() || cc.getType().hasSubtype("Effect")) { + if (cc.isImmutable()) { return findEffectRoot(cc); } return cc; diff --git a/forge-game/src/main/java/forge/game/ability/SpellAbilityEffect.java b/forge-game/src/main/java/forge/game/ability/SpellAbilityEffect.java index 4c29e29dbb9..c84d0c0eb1a 100644 --- a/forge-game/src/main/java/forge/game/ability/SpellAbilityEffect.java +++ b/forge-game/src/main/java/forge/game/ability/SpellAbilityEffect.java @@ -13,7 +13,6 @@ import com.google.common.collect.Maps; import com.google.common.collect.Table; import forge.GameCommand; -import forge.card.CardType; import forge.card.MagicColor; import forge.game.Game; import forge.game.GameEntity; @@ -457,25 +456,19 @@ public abstract class SpellAbilityEffect { final Card eff = new Card(game.nextCardId(), game); eff.setTimestamp(game.getNextTimestamp()); eff.setName(name); + eff.setColor(hostCard.determineColor().getColor()); // if name includes emblem then it should be one - eff.addType(name.startsWith("Emblem") ? "Emblem" : "Effect"); - // add Planeswalker types into Emblem for fun - if (name.startsWith("Emblem") && hostCard.isPlaneswalker()) { - for (final String type : hostCard.getType().getSubtypes()) { - if (CardType.isAPlaneswalkerType(type)) { - eff.addType(type); - } - } + if (name.startsWith("Emblem")) { + eff.setEmblem(true); + // Emblem needs to be colorless + eff.setColor(MagicColor.COLORLESS); } + eff.setOwner(controller); eff.setSVars(sa.getSVars()); eff.setImageKey(image); - if (eff.getType().hasType(CardType.CoreType.Emblem)) { - eff.setColor(MagicColor.COLORLESS); - } else { - eff.setColor(hostCard.determineColor().getColor()); - } + eff.setImmutable(true); eff.setEffectSource(sa); diff --git a/forge-game/src/main/java/forge/game/ability/effects/AnimateEffect.java b/forge-game/src/main/java/forge/game/ability/effects/AnimateEffect.java index 9b09ca23032..63f36f6a89e 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/AnimateEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/AnimateEffect.java @@ -190,11 +190,6 @@ public class AnimateEffect extends AnimateEffectBase { } } - // Restore immutable to effect - if (sa.hasParam("Immutable")) { - c.setImmutable(true); - } - game.fireEvent(new GameEventCardStatsChanged(c)); } diff --git a/forge-game/src/main/java/forge/game/ability/effects/AnimateEffectBase.java b/forge-game/src/main/java/forge/game/ability/effects/AnimateEffectBase.java index bba087ecd8f..42d914afa41 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/AnimateEffectBase.java +++ b/forge-game/src/main/java/forge/game/ability/effects/AnimateEffectBase.java @@ -164,14 +164,6 @@ public abstract class AnimateEffectBase extends SpellAbilityEffect { final Trigger parsedTrigger = TriggerHandler.parseTrigger(AbilityUtils.getSVar(sa, s), c, false, sa); addedTriggers.add(parsedTrigger); } - if (sa.hasParam("GainsTriggeredAbilitiesOf")) { - final List cards = AbilityUtils.getDefinedCards(sa.getHostCard(), sa.getParam("GainsTriggeredAbilitiesOf"), sa); - for (final Card card : cards) { - for (Trigger t : card.getTriggers()) { - addedTriggers.add(t.copy(c, false)); - } - } - } // give replacement effects final List addedReplacements = Lists.newArrayList(); diff --git a/forge-game/src/main/java/forge/game/ability/effects/DetachedCardEffect.java b/forge-game/src/main/java/forge/game/ability/effects/DetachedCardEffect.java index 0d62a05104b..56a1a46081d 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/DetachedCardEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/DetachedCardEffect.java @@ -12,7 +12,6 @@ public class DetachedCardEffect extends Card { card = card0; setName(name0); - addType("Effect"); setOwner(card0.getOwner()); setImmutable(true); diff --git a/forge-game/src/main/java/forge/game/ability/effects/EffectEffect.java b/forge-game/src/main/java/forge/game/ability/effects/EffectEffect.java index 04471bed67a..445d03088ed 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/EffectEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/EffectEffect.java @@ -140,10 +140,6 @@ public class EffectEffect extends SpellAbilityEffect { final Card eff = createEffect(sa, controller, name, image); eff.setSetCode(sa.getHostCard().getSetCode()); eff.setRarity(sa.getHostCard().getRarity()); - // For Raging River effect to add attacker "left" or "right" pile later - if (sa.hasParam("Mutable")) { - eff.setImmutable(false); - } // Abilities and triggers work the same as they do for Token // Grant abilities diff --git a/forge-game/src/main/java/forge/game/ability/effects/RegenerationEffect.java b/forge-game/src/main/java/forge/game/ability/effects/RegenerationEffect.java index 7d42e9c5988..f96ad2a2ead 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/RegenerationEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/RegenerationEffect.java @@ -37,7 +37,7 @@ public class RegenerationEffect extends SpellAbilityEffect { // Play the Regen sound game.fireEvent(new GameEventCardRegenerated()); - if (host.getType().hasStringType("Effect")) { + if (host.isImmutable()) { c.subtractShield(host); host.removeRemembered(c); } diff --git a/forge-game/src/main/java/forge/game/ability/effects/ReplaceDamageEffect.java b/forge-game/src/main/java/forge/game/ability/effects/ReplaceDamageEffect.java index cb59a12eb10..3a19bb05c42 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/ReplaceDamageEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/ReplaceDamageEffect.java @@ -47,7 +47,7 @@ public class ReplaceDamageEffect extends SpellAbilityEffect { prevent -= n; if (!StringUtils.isNumeric(varValue) && card.getSVar(varValue).startsWith("Number$")) { - if (card.getType().hasStringType("Effect") && prevent <= 0) { + if (card.isImmutable() && prevent <= 0) { game.getAction().exile(card, null); } else { card.setSVar(varValue, "Number$" + prevent); diff --git a/forge-game/src/main/java/forge/game/ability/effects/ReplaceSplitDamageEffect.java b/forge-game/src/main/java/forge/game/ability/effects/ReplaceSplitDamageEffect.java index 1f462099afe..65fce9f796d 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/ReplaceSplitDamageEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/ReplaceSplitDamageEffect.java @@ -45,7 +45,7 @@ public class ReplaceSplitDamageEffect extends SpellAbilityEffect { dmg -= n; prevent -= n; - if (card.getType().hasStringType("Effect") && prevent <= 0) { + if (card.isImmutable() && prevent <= 0) { game.getAction().exile(card, null); } else if (!StringUtils.isNumeric(varValue)) { sa.setSVar(varValue, "Number$" + prevent); diff --git a/forge-game/src/main/java/forge/game/ability/effects/TokenEffectBase.java b/forge-game/src/main/java/forge/game/ability/effects/TokenEffectBase.java index 09d9c0f4f68..743b5d89533 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/TokenEffectBase.java +++ b/forge-game/src/main/java/forge/game/ability/effects/TokenEffectBase.java @@ -31,6 +31,7 @@ import forge.game.event.GameEventCardStatsChanged; import forge.game.player.Player; import forge.game.replacement.ReplacementType; import forge.game.spellability.SpellAbility; +import forge.game.trigger.Trigger; import forge.game.zone.ZoneType; public abstract class TokenEffectBase extends SpellAbilityEffect { @@ -118,7 +119,7 @@ public abstract class TokenEffectBase extends SpellAbilityEffect { } tok.setTimestamp(timestamp); tok.setToken(true); - + // do effect stuff with the token if (sa.hasParam("TokenTapped")) { tok.setTapped(true); @@ -138,6 +139,15 @@ public abstract class TokenEffectBase extends SpellAbilityEffect { tok.addEtbCounter(cType, cAmount, creator); } + if (sa.hasParam("AddTriggersFrom")) { + final List cards = AbilityUtils.getDefinedCards(host, sa.getParam("AddTriggersFrom"), sa); + for (final Card card : cards) { + for (final Trigger trig : card.getTriggers()) { + tok.addTrigger(trig.copy(tok, false)); + } + } + } + if (clone) { tok.setCopiedPermanent(prototype); } diff --git a/forge-game/src/main/java/forge/game/card/Card.java b/forge-game/src/main/java/forge/game/card/Card.java index 24e466b381c..9c660f472f5 100644 --- a/forge-game/src/main/java/forge/game/card/Card.java +++ b/forge-game/src/main/java/forge/game/card/Card.java @@ -264,6 +264,7 @@ public class Card extends GameEntity implements Comparable, IHasSVars { // for Vanguard / Manapool / Emblems etc. private boolean isImmutable = false; + private boolean isEmblem = false; private int exertThisTurn = 0; private PlayerCollection exertedByPlayer = new PlayerCollection(); @@ -4598,15 +4599,13 @@ public class Card extends GameEntity implements Comparable, IHasSVars { } public final boolean isPermanent() { - return !isImmutable && (isInZone(ZoneType.Battlefield) || getType().isPermanent()); + return !isImmutable() && (isInZone(ZoneType.Battlefield) || getType().isPermanent()); } public final boolean isSpell() { return (isInstant() || isSorcery() || (isAura() && !isInZone((ZoneType.Battlefield)))); } - public final boolean isEmblem() { return getType().isEmblem(); } - public final boolean isLand() { return getType().isLand(); } public final boolean isBasicLand() { return getType().isBasicLand(); } public final boolean isSnow() { return getType().isSnow(); } @@ -4865,11 +4864,6 @@ public class Card extends GameEntity implements Comparable, IHasSVars { // Takes one argument like Permanent.Blue+withFlying @Override public final boolean isValid(final String restriction, final Player sourceController, final Card source, CardTraitBase spellAbility) { - if (isImmutable() && source != null && !source.isRemembered(this) && - !(restriction.startsWith("Emblem") || restriction.startsWith("Effect"))) { // special case exclusion - return false; - } - // Inclusive restrictions are Card types final String[] incR = restriction.split("\\.", 2); @@ -4879,14 +4873,27 @@ public class Card extends GameEntity implements Comparable, IHasSVars { incR[0] = incR[0].substring(1); // consume negation sign } - if (incR[0].equals("Spell") && !isSpell()) { - return testFailed; - } - if (incR[0].equals("Permanent") && !isPermanent()) { - return testFailed; - } - if (!incR[0].equals("card") && !incR[0].equals("Card") && !incR[0].equals("Spell") - && !incR[0].equals("Permanent") && !getType().hasStringType(incR[0])) { + if (incR[0].equals("Spell")) { + if (!isSpell()) { + return testFailed; + } + } else if (incR[0].equals("Permanent")) { + if (!isPermanent()) { + return testFailed; + } + } else if (incR[0].equals("Effect")) { + if (!isImmutable()) { + return testFailed; + } + } else if (incR[0].equals("Emblem")) { + if (!isEmblem()) { + return testFailed; + } + } else if (incR[0].equals("card") || incR[0].equals("Card")) { + if (isImmutable()) { + return testFailed; + } + } else if (!getType().hasStringType(incR[0])) { return testFailed; // Check for wrong type } @@ -4916,6 +4923,15 @@ public class Card extends GameEntity implements Comparable, IHasSVars { } public final void setImmutable(final boolean isImmutable0) { isImmutable = isImmutable0; + view.updateImmutable(this); + } + + public final boolean isEmblem() { + return isEmblem; + } + public final void setEmblem(final boolean isEmblem0) { + isEmblem = isEmblem0; + view.updateEmblem(this); } /* diff --git a/forge-game/src/main/java/forge/game/card/CardProperty.java b/forge-game/src/main/java/forge/game/card/CardProperty.java index ba99a2182fa..68d6929a1ae 100644 --- a/forge-game/src/main/java/forge/game/card/CardProperty.java +++ b/forge-game/src/main/java/forge/game/card/CardProperty.java @@ -357,7 +357,7 @@ public class CardProperty { return false; } } else if (property.equals("EffectSource")) { - if (!source.isEmblem() && !source.getType().hasSubtype("Effect")) { + if (!source.isImmutable()) { return false; } diff --git a/forge-game/src/main/java/forge/game/card/CardUtil.java b/forge-game/src/main/java/forge/game/card/CardUtil.java index 18984d40709..99106c77f09 100644 --- a/forge-game/src/main/java/forge/game/card/CardUtil.java +++ b/forge-game/src/main/java/forge/game/card/CardUtil.java @@ -242,6 +242,7 @@ public final class CardUtil { newCopy.setToken(in.isToken()); newCopy.setCopiedSpell(in.isCopiedSpell()); newCopy.setImmutable(in.isImmutable()); + newCopy.setEmblem(in.isEmblem()); // lock in the current P/T newCopy.setBasePower(in.getCurrentPower()); diff --git a/forge-game/src/main/java/forge/game/card/CardView.java b/forge-game/src/main/java/forge/game/card/CardView.java index 4edc56438e9..7ad4251c635 100644 --- a/forge-game/src/main/java/forge/game/card/CardView.java +++ b/forge-game/src/main/java/forge/game/card/CardView.java @@ -233,6 +233,20 @@ public class CardView extends GameEntityView { set(TrackableProperty.Token, c.isToken()); } + public boolean isImmutable() { + return get(TrackableProperty.IsImmutable); + } + public void updateImmutable(Card c) { + set(TrackableProperty.IsImmutable, c.isImmutable()); + } + + public boolean isEmblem() { + return get(TrackableProperty.IsEmblem); + } + public void updateEmblem(Card c) { + set(TrackableProperty.IsEmblem, c.isEmblem()); + } + public boolean isTokenCard() { return get(TrackableProperty.TokenCard); } void updateTokenCard(Card c) { set(TrackableProperty.TokenCard, c.isTokenCard()); } diff --git a/forge-game/src/main/java/forge/game/player/Player.java b/forge-game/src/main/java/forge/game/player/Player.java index 3792241e456..0e219e8ee56 100644 --- a/forge-game/src/main/java/forge/game/player/Player.java +++ b/forge-game/src/main/java/forge/game/player/Player.java @@ -3176,6 +3176,7 @@ public class Player extends GameEntity implements Comparable { if (monarchEffect == null) { monarchEffect = new Card(game.nextCardId(), null, game); monarchEffect.setOwner(this); + monarchEffect.setImmutable(true); if (set != null) { monarchEffect.setImageKey("t:monarch_" + set.toLowerCase()); monarchEffect.setSetCode(set); @@ -3183,7 +3184,6 @@ public class Player extends GameEntity implements Comparable { monarchEffect.setImageKey("t:monarch"); } monarchEffect.setName("The Monarch"); - monarchEffect.addType("Effect"); { final String drawTrig = "Mode$ Phase | Phase$ End of Turn | TriggerZones$ Command | " + @@ -3280,8 +3280,7 @@ public class Player extends GameEntity implements Comparable { blessingEffect.setOwner(this); blessingEffect.setImageKey("t:blessing"); blessingEffect.setName("City's Blessing"); - blessingEffect.addType("Effect"); - + blessingEffect.setImmutable(true); blessingEffect.updateStateForView(); @@ -3353,7 +3352,6 @@ public class Player extends GameEntity implements Comparable { keywordEffect.setOwner(this); keywordEffect.setName("Keyword Effects"); keywordEffect.setImageKey(ImageKeys.HIDDEN_CARD); - keywordEffect.addType("Effect"); keywordEffect.updateStateForView(); diff --git a/forge-game/src/main/java/forge/game/replacement/ReplacementEffect.java b/forge-game/src/main/java/forge/game/replacement/ReplacementEffect.java index 115b8b0caa7..69a605e76e4 100644 --- a/forge-game/src/main/java/forge/game/replacement/ReplacementEffect.java +++ b/forge-game/src/main/java/forge/game/replacement/ReplacementEffect.java @@ -220,7 +220,7 @@ public abstract class ReplacementEffect extends TriggerReplacementBase { if (hasParam("Description") && !this.isSuppressed()) { String desc = AbilityUtils.applyDescriptionTextChangeEffects(getParam("Description"), this); String currentName; - if (this.isIntrinsic() && !this.getHostCard().isMutated() && cardState != null) { + if (this.isIntrinsic() && cardState != null && cardState.getCard() == getHostCard()) { currentName = cardState.getName(); } else { diff --git a/forge-game/src/main/java/forge/game/spellability/LandAbility.java b/forge-game/src/main/java/forge/game/spellability/LandAbility.java index 0e2bcdde8f4..5def083a3b1 100644 --- a/forge-game/src/main/java/forge/game/spellability/LandAbility.java +++ b/forge-game/src/main/java/forge/game/spellability/LandAbility.java @@ -95,8 +95,7 @@ public class LandAbility extends Ability { Card source = sta.getHostCard(); if (!source.equals(getHostCard())) { sb.append(" by "); - if ((source.isEmblem() || source.getType().hasSubtype("Effect")) - && source.getEffectSource() != null) { + if (source.isImmutable() && source.getEffectSource() != null) { sb.append(source.getEffectSource()); } else { sb.append(source); diff --git a/forge-game/src/main/java/forge/game/spellability/SpellAbility.java b/forge-game/src/main/java/forge/game/spellability/SpellAbility.java index cb1ed0c530b..6cdbd1b324d 100644 --- a/forge-game/src/main/java/forge/game/spellability/SpellAbility.java +++ b/forge-game/src/main/java/forge/game/spellability/SpellAbility.java @@ -854,7 +854,7 @@ public abstract class SpellAbility extends CardTraitBase implements ISpellAbilit if (node.getHostCard() != null) { String currentName; // if alternate state is viewed while card uses original - if (node.isIntrinsic() && !node.getHostCard().isMutated() && node.cardState != null) { + if (node.isIntrinsic() && node.cardState != null && node.cardState.getCard() == node.getHostCard()) { currentName = node.cardState.getName(); } else { diff --git a/forge-game/src/main/java/forge/game/staticability/StaticAbility.java b/forge-game/src/main/java/forge/game/staticability/StaticAbility.java index 151f21622e9..ba2f804cedd 100644 --- a/forge-game/src/main/java/forge/game/staticability/StaticAbility.java +++ b/forge-game/src/main/java/forge/game/staticability/StaticAbility.java @@ -209,7 +209,7 @@ public class StaticAbility extends CardTraitBase implements IIdentifiable, Clone public final String toString() { if (hasParam("Description") && !this.isSuppressed()) { String currentName; - if (this.isIntrinsic() && !this.getHostCard().isMutated() && cardState != null) { + if (this.isIntrinsic() && cardState != null && cardState.getCard() == getHostCard()) { currentName = cardState.getName(); } else { diff --git a/forge-game/src/main/java/forge/game/trigger/Trigger.java b/forge-game/src/main/java/forge/game/trigger/Trigger.java index 685fc21b54e..c1d71f61551 100644 --- a/forge-game/src/main/java/forge/game/trigger/Trigger.java +++ b/forge-game/src/main/java/forge/game/trigger/Trigger.java @@ -132,7 +132,7 @@ public abstract class Trigger extends TriggerReplacementBase { StringBuilder sb = new StringBuilder(); String currentName; - if (this.isIntrinsic() && !this.getHostCard().isMutated() && cardState != null) { + if (this.isIntrinsic() && cardState != null && cardState.getCard() == getHostCard()) { currentName = cardState.getName(); } else { diff --git a/forge-game/src/main/java/forge/trackable/TrackableProperty.java b/forge-game/src/main/java/forge/trackable/TrackableProperty.java index 93a3e81cd8e..50ace8e3e31 100644 --- a/forge-game/src/main/java/forge/trackable/TrackableProperty.java +++ b/forge-game/src/main/java/forge/trackable/TrackableProperty.java @@ -24,6 +24,9 @@ public enum TrackableProperty { Controller(TrackableTypes.PlayerViewType), Zone(TrackableTypes.EnumType(ZoneType.class)), + IsImmutable(TrackableTypes.BooleanType), + IsEmblem(TrackableTypes.BooleanType), + Flipped(TrackableTypes.BooleanType), Facedown(TrackableTypes.BooleanType), Foretold(TrackableTypes.BooleanType), diff --git a/forge-gui-desktop/src/main/java/forge/view/arcane/CardPanel.java b/forge-gui-desktop/src/main/java/forge/view/arcane/CardPanel.java index e1839f48113..e6b682751c9 100644 --- a/forge-gui-desktop/src/main/java/forge/view/arcane/CardPanel.java +++ b/forge-gui-desktop/src/main/java/forge/view/arcane/CardPanel.java @@ -311,7 +311,7 @@ public class CardPanel extends SkinnedPanel implements CardContainer, IDisposabl final CardStateView state = getCard().getCurrentState(); final CardEdition ed = FModel.getMagicDb().getEditions().get(state.getSetCode()); boolean colorIsSet = false; - if (state.getType().isEmblem() || state.getType().hasStringType("Effect")) { + if (getCard().isImmutable()) { // Effects are drawn with orange border g2d.setColor(Color.ORANGE); colorIsSet = true; diff --git a/forge-gui-mobile/src/forge/card/CardImageRenderer.java b/forge-gui-mobile/src/forge/card/CardImageRenderer.java index 8076308b240..70ca2dbe0d2 100644 --- a/forge-gui-mobile/src/forge/card/CardImageRenderer.java +++ b/forge-gui-mobile/src/forge/card/CardImageRenderer.java @@ -362,8 +362,7 @@ public class CardImageRenderer { drawDetails(g, card, gameView, altState, x, y, w, h); return; } - if(card.isToken() && card.getCurrentState().getType().hasSubtype("Effect") - && FModel.getPreferences().getPrefBoolean(ForgePreferences.FPref.UI_DISABLE_IMAGES_EFFECT_CARDS)){ + if(card.isImmutable() && FModel.getPreferences().getPrefBoolean(ForgePreferences.FPref.UI_DISABLE_IMAGES_EFFECT_CARDS)){ drawDetails(g, card, gameView, altState, x, y, w, h); return; } diff --git a/forge-gui/res/cardsfolder/upcoming/aberrant_mind_sorceror.txt b/forge-gui/res/cardsfolder/a/aberrant_mind_sorceror.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/aberrant_mind_sorceror.txt rename to forge-gui/res/cardsfolder/a/aberrant_mind_sorceror.txt diff --git a/forge-gui/res/cardsfolder/upcoming/acererak_the_archlich.txt b/forge-gui/res/cardsfolder/a/acererak_the_archlich.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/acererak_the_archlich.txt rename to forge-gui/res/cardsfolder/a/acererak_the_archlich.txt diff --git a/forge-gui/res/cardsfolder/upcoming/adult_gold_dragon.txt b/forge-gui/res/cardsfolder/a/adult_gold_dragon.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/adult_gold_dragon.txt rename to forge-gui/res/cardsfolder/a/adult_gold_dragon.txt diff --git a/forge-gui/res/cardsfolder/upcoming/air_cult_elemental.txt b/forge-gui/res/cardsfolder/a/air_cult_elemental.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/air_cult_elemental.txt rename to forge-gui/res/cardsfolder/a/air_cult_elemental.txt diff --git a/forge-gui/res/cardsfolder/upcoming/arborea_pegasus.txt b/forge-gui/res/cardsfolder/a/arborea_pegasus.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/arborea_pegasus.txt rename to forge-gui/res/cardsfolder/a/arborea_pegasus.txt diff --git a/forge-gui/res/cardsfolder/upcoming/arcane_endeavor.txt b/forge-gui/res/cardsfolder/a/arcane_endeavor.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/arcane_endeavor.txt rename to forge-gui/res/cardsfolder/a/arcane_endeavor.txt diff --git a/forge-gui/res/cardsfolder/upcoming/arcane_investigator.txt b/forge-gui/res/cardsfolder/a/arcane_investigator.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/arcane_investigator.txt rename to forge-gui/res/cardsfolder/a/arcane_investigator.txt diff --git a/forge-gui/res/cardsfolder/upcoming/armory_veteran.txt b/forge-gui/res/cardsfolder/a/armory_veteran.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/armory_veteran.txt rename to forge-gui/res/cardsfolder/a/armory_veteran.txt diff --git a/forge-gui/res/cardsfolder/upcoming/asmodeus_the_archfiend.txt b/forge-gui/res/cardsfolder/a/asmodeus_the_archfiend.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/asmodeus_the_archfiend.txt rename to forge-gui/res/cardsfolder/a/asmodeus_the_archfiend.txt diff --git a/forge-gui/res/cardsfolder/upcoming/bag_of_devouring.txt b/forge-gui/res/cardsfolder/b/bag_of_devouring.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/bag_of_devouring.txt rename to forge-gui/res/cardsfolder/b/bag_of_devouring.txt diff --git a/forge-gui/res/cardsfolder/upcoming/bag_of_tricks.txt b/forge-gui/res/cardsfolder/b/bag_of_tricks.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/bag_of_tricks.txt rename to forge-gui/res/cardsfolder/b/bag_of_tricks.txt diff --git a/forge-gui/res/cardsfolder/upcoming/baleful_beholder.txt b/forge-gui/res/cardsfolder/b/baleful_beholder.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/baleful_beholder.txt rename to forge-gui/res/cardsfolder/b/baleful_beholder.txt diff --git a/forge-gui/res/cardsfolder/upcoming/bar_the_gate.txt b/forge-gui/res/cardsfolder/b/bar_the_gate.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/bar_the_gate.txt rename to forge-gui/res/cardsfolder/b/bar_the_gate.txt diff --git a/forge-gui/res/cardsfolder/upcoming/barbarian_class.txt b/forge-gui/res/cardsfolder/b/barbarian_class.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/barbarian_class.txt rename to forge-gui/res/cardsfolder/b/barbarian_class.txt diff --git a/forge-gui/res/cardsfolder/upcoming/bard_class.txt b/forge-gui/res/cardsfolder/b/bard_class.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/bard_class.txt rename to forge-gui/res/cardsfolder/b/bard_class.txt diff --git a/forge-gui/res/cardsfolder/upcoming/barrowin_of_clan_undurr.txt b/forge-gui/res/cardsfolder/b/barrowin_of_clan_undurr.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/barrowin_of_clan_undurr.txt rename to forge-gui/res/cardsfolder/b/barrowin_of_clan_undurr.txt diff --git a/forge-gui/res/cardsfolder/upcoming/battle_cry_goblin.txt b/forge-gui/res/cardsfolder/b/battle_cry_goblin.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/battle_cry_goblin.txt rename to forge-gui/res/cardsfolder/b/battle_cry_goblin.txt diff --git a/forge-gui/res/cardsfolder/upcoming/belt_of_giant_strength.txt b/forge-gui/res/cardsfolder/b/belt_of_giant_strength.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/belt_of_giant_strength.txt rename to forge-gui/res/cardsfolder/b/belt_of_giant_strength.txt diff --git a/forge-gui/res/cardsfolder/upcoming/berserkers_frenzy.txt b/forge-gui/res/cardsfolder/b/berserkers_frenzy.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/berserkers_frenzy.txt rename to forge-gui/res/cardsfolder/b/berserkers_frenzy.txt diff --git a/forge-gui/res/cardsfolder/upcoming/black_dragon.txt b/forge-gui/res/cardsfolder/b/black_dragon.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/black_dragon.txt rename to forge-gui/res/cardsfolder/b/black_dragon.txt diff --git a/forge-gui/res/cardsfolder/upcoming/blink_dog.txt b/forge-gui/res/cardsfolder/b/blink_dog.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/blink_dog.txt rename to forge-gui/res/cardsfolder/b/blink_dog.txt diff --git a/forge-gui/res/cardsfolder/upcoming/blue_dragon.txt b/forge-gui/res/cardsfolder/b/blue_dragon.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/blue_dragon.txt rename to forge-gui/res/cardsfolder/b/blue_dragon.txt diff --git a/forge-gui/res/cardsfolder/upcoming/boots_of_speed.txt b/forge-gui/res/cardsfolder/b/boots_of_speed.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/boots_of_speed.txt rename to forge-gui/res/cardsfolder/b/boots_of_speed.txt diff --git a/forge-gui/res/cardsfolder/upcoming/brazen_dwarf.txt b/forge-gui/res/cardsfolder/b/brazen_dwarf.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/brazen_dwarf.txt rename to forge-gui/res/cardsfolder/b/brazen_dwarf.txt diff --git a/forge-gui/res/cardsfolder/upcoming/bruenor_battlehammer.txt b/forge-gui/res/cardsfolder/b/bruenor_battlehammer.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/bruenor_battlehammer.txt rename to forge-gui/res/cardsfolder/b/bruenor_battlehammer.txt diff --git a/forge-gui/res/cardsfolder/upcoming/bucknards_everfull_purse.txt b/forge-gui/res/cardsfolder/b/bucknards_everfull_purse.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/bucknards_everfull_purse.txt rename to forge-gui/res/cardsfolder/b/bucknards_everfull_purse.txt diff --git a/forge-gui/res/cardsfolder/upcoming/bulette.txt b/forge-gui/res/cardsfolder/b/bulette.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/bulette.txt rename to forge-gui/res/cardsfolder/b/bulette.txt diff --git a/forge-gui/res/cardsfolder/upcoming/bulls_strength.txt b/forge-gui/res/cardsfolder/b/bulls_strength.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/bulls_strength.txt rename to forge-gui/res/cardsfolder/b/bulls_strength.txt diff --git a/forge-gui/res/cardsfolder/upcoming/burning_hands.txt b/forge-gui/res/cardsfolder/b/burning_hands.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/burning_hands.txt rename to forge-gui/res/cardsfolder/b/burning_hands.txt diff --git a/forge-gui/res/cardsfolder/c/catti_brie_of_mithral_hall.txt b/forge-gui/res/cardsfolder/c/catti_brie_of_mithral_hall.txt new file mode 100644 index 00000000000..29e931a36b2 --- /dev/null +++ b/forge-gui/res/cardsfolder/c/catti_brie_of_mithral_hall.txt @@ -0,0 +1,16 @@ +Name:Catti-brie of Mithral Hall +ManaCost:G W +Types:Legendary Creature Human Archer +PT:2/2 +K:First Strike +K:Reach +T:Mode$ Attacks | ValidCard$ Creature.Self | Execute$ TrigPutCounter | TriggerDescription$ Whenever CARDNAME attacks, put a +1/+1 counter on it for each Equipment attached to it. +SVar:TrigPutCounter:DB$ PutCounter | Defined$ Self | CounterType$ P1P1 | CounterNum$ Y +SVar:Y:Count$Valid Equipment.Attached +A:AB$ DealDamage | Cost$ 1 SubCounter | NumDmg$ X | ValidTgts$ Creature.attacking+OppCtrl,Creature.blocking+OppCtrl | TgtPrompt$ Select target attacking or blocking creature an opponent controls | SpellDescription$ It deals X damage to target attacking or blocking creature an opponent controls, where X is the number of counters removed this way. +SVar:X:SVar$CostCountersRemoved +SVar:HasAttackEffect:TRUE +SVar:EquipMe:Multiple +DeckNeeds:Type$Equipment +DeckHas:Ability$Counters +Oracle:First strike, reach\nWhenever Catti-brie of Mithral Hall attacks, put a +1/+1 counter on it for each Equipment attached to it.\n{1}, Remove all +1/+1 counters from Catti-brie: It deals X damage to target attacking or blocking creature an opponent controls, where X is the number of counters removed this way. diff --git a/forge-gui/res/cardsfolder/upcoming/cave_of_the_frost_dragon.txt b/forge-gui/res/cardsfolder/c/cave_of_the_frost_dragon.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/cave_of_the_frost_dragon.txt rename to forge-gui/res/cardsfolder/c/cave_of_the_frost_dragon.txt diff --git a/forge-gui/res/cardsfolder/upcoming/celestial_unicorn.txt b/forge-gui/res/cardsfolder/c/celestial_unicorn.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/celestial_unicorn.txt rename to forge-gui/res/cardsfolder/c/celestial_unicorn.txt diff --git a/forge-gui/res/cardsfolder/upcoming/chaos_channeler.txt b/forge-gui/res/cardsfolder/c/chaos_channeler.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/chaos_channeler.txt rename to forge-gui/res/cardsfolder/c/chaos_channeler.txt diff --git a/forge-gui/res/cardsfolder/upcoming/chaos_dragon.txt b/forge-gui/res/cardsfolder/c/chaos_dragon.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/chaos_dragon.txt rename to forge-gui/res/cardsfolder/c/chaos_dragon.txt diff --git a/forge-gui/res/cardsfolder/upcoming/check_for_traps.txt b/forge-gui/res/cardsfolder/c/check_for_traps.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/check_for_traps.txt rename to forge-gui/res/cardsfolder/c/check_for_traps.txt diff --git a/forge-gui/res/cardsfolder/upcoming/choose_your_weapon.txt b/forge-gui/res/cardsfolder/c/choose_your_weapon.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/choose_your_weapon.txt rename to forge-gui/res/cardsfolder/c/choose_your_weapon.txt diff --git a/forge-gui/res/cardsfolder/upcoming/circle_of_dreams_druid.txt b/forge-gui/res/cardsfolder/c/circle_of_dreams_druid.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/circle_of_dreams_druid.txt rename to forge-gui/res/cardsfolder/c/circle_of_dreams_druid.txt diff --git a/forge-gui/res/cardsfolder/upcoming/circle_of_the_moon_druid.txt b/forge-gui/res/cardsfolder/c/circle_of_the_moon_druid.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/circle_of_the_moon_druid.txt rename to forge-gui/res/cardsfolder/c/circle_of_the_moon_druid.txt diff --git a/forge-gui/res/cardsfolder/upcoming/clattering_skeletons.txt b/forge-gui/res/cardsfolder/c/clattering_skeletons.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/clattering_skeletons.txt rename to forge-gui/res/cardsfolder/c/clattering_skeletons.txt diff --git a/forge-gui/res/cardsfolder/upcoming/clay_golem.txt b/forge-gui/res/cardsfolder/c/clay_golem.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/clay_golem.txt rename to forge-gui/res/cardsfolder/c/clay_golem.txt diff --git a/forge-gui/res/cardsfolder/upcoming/cleric_class.txt b/forge-gui/res/cardsfolder/c/cleric_class.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/cleric_class.txt rename to forge-gui/res/cardsfolder/c/cleric_class.txt diff --git a/forge-gui/res/cardsfolder/upcoming/clever_conjurer.txt b/forge-gui/res/cardsfolder/c/clever_conjurer.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/clever_conjurer.txt rename to forge-gui/res/cardsfolder/c/clever_conjurer.txt diff --git a/forge-gui/res/cardsfolder/upcoming/cloister_gargoyle.txt b/forge-gui/res/cardsfolder/c/cloister_gargoyle.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/cloister_gargoyle.txt rename to forge-gui/res/cardsfolder/c/cloister_gargoyle.txt diff --git a/forge-gui/res/cardsfolder/upcoming/compelled_duel.txt b/forge-gui/res/cardsfolder/c/compelled_duel.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/compelled_duel.txt rename to forge-gui/res/cardsfolder/c/compelled_duel.txt diff --git a/forge-gui/res/cardsfolder/upcoming/component_pouch.txt b/forge-gui/res/cardsfolder/c/component_pouch.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/component_pouch.txt rename to forge-gui/res/cardsfolder/c/component_pouch.txt diff --git a/forge-gui/res/cardsfolder/upcoming/contact_other_plane.txt b/forge-gui/res/cardsfolder/c/contact_other_plane.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/contact_other_plane.txt rename to forge-gui/res/cardsfolder/c/contact_other_plane.txt diff --git a/forge-gui/res/cardsfolder/upcoming/critical_hit.txt b/forge-gui/res/cardsfolder/c/critical_hit.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/critical_hit.txt rename to forge-gui/res/cardsfolder/c/critical_hit.txt diff --git a/forge-gui/res/cardsfolder/upcoming/dancing_sword.txt b/forge-gui/res/cardsfolder/d/dancing_sword.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/dancing_sword.txt rename to forge-gui/res/cardsfolder/d/dancing_sword.txt diff --git a/forge-gui/res/cardsfolder/upcoming/dawnbringer_cleric.txt b/forge-gui/res/cardsfolder/d/dawnbringer_cleric.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/dawnbringer_cleric.txt rename to forge-gui/res/cardsfolder/d/dawnbringer_cleric.txt diff --git a/forge-gui/res/cardsfolder/upcoming/deadly_dispute.txt b/forge-gui/res/cardsfolder/d/deadly_dispute.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/deadly_dispute.txt rename to forge-gui/res/cardsfolder/d/deadly_dispute.txt diff --git a/forge-gui/res/cardsfolder/upcoming/death_priest_of_myrkul.txt b/forge-gui/res/cardsfolder/d/death_priest_of_myrkul.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/death_priest_of_myrkul.txt rename to forge-gui/res/cardsfolder/d/death_priest_of_myrkul.txt diff --git a/forge-gui/res/cardsfolder/upcoming/delina_wild_mage.txt b/forge-gui/res/cardsfolder/d/delina_wild_mage.txt similarity index 60% rename from forge-gui/res/cardsfolder/upcoming/delina_wild_mage.txt rename to forge-gui/res/cardsfolder/d/delina_wild_mage.txt index f4c665d2972..f77f4596778 100644 --- a/forge-gui/res/cardsfolder/upcoming/delina_wild_mage.txt +++ b/forge-gui/res/cardsfolder/d/delina_wild_mage.txt @@ -5,9 +5,11 @@ PT:3/2 T:Mode$ Attacks | ValidCard$ Card.Self | Execute$ DBLoop | TriggerDescription$ Whenever CARDNAME attacks, choose target creature you control, then ABILITY SVar:DBLoop:DB$ Repeat | ValidTgts$ Creature.YouCtrl | RepeatCheckSVar$ RepeatCheck | RepeatSVarCompare$ GT0 | RepeatSubAbility$ DBRollDice | RepeatOptional$ True SVar:DBRollDice:DB$ RollDice | Sides$ 20 | ResultSubAbilities$ 1-14:DBCopy,15-20:DBCopyRepeat | SpellDescription$ roll a d20. -SVar:DBCopy:DB$ CopyPermanent | Defined$ Targeted | TokenTapped$ True | TokenAttacking$ True | NonLegendary$ True | AtEOT$ ExileCombat | SubAbility$ DBNotRepeat | SpellDescription$ 1-14 VERT Create a tapped and attacking token that's a copy of that creature, except it's not legendary and it has "Exile this creature at end of combat. +SVar:DBCopy:DB$ CopyPermanent | Defined$ Targeted | TokenTapped$ True | TokenAttacking$ True | NonLegendary$ True | AddSVars$ DelinaTrigExile | AddTriggers$ TrigPhase | SubAbility$ DBNotRepeat | SpellDescription$ 1-14 VERT Create a tapped and attacking token that's a copy of that creature, except it's not legendary and it has "Exile this creature at end of combat. SVar:DBNotRepeat:DB$ StoreSVar | SVar$ RepeatCheck | Type$ Number | Expression$ 0 -SVar:DBCopyRepeat:DB$ CopyPermanent | Defined$ Targeted | TokenTapped$ True | TokenAttacking$ True | NonLegendary$ True | AtEOT$ ExileCombat | SubAbility$ DBRepeat | SpellDescription$ 15-20 VERT Create one of those tokens. You may roll again. +SVar:DBCopyRepeat:DB$ CopyPermanent | Defined$ Targeted | TokenTapped$ True | TokenAttacking$ True | NonLegendary$ True | AddSVars$ DelinaTrigExile | AddTriggers$ TrigPhase | SubAbility$ DBRepeat | SpellDescription$ 15-20 VERT Create one of those tokens. You may roll again. +SVar:TrigPhase:Mode$ Phase | Phase$ EndCombat | TriggerZones$ Battlefield | Execute$ DelinaTrigExile | TriggerDescription$ Exile this creature at end of combat. +SVar:DelinaTrigExile:DB$ ChangeZone | Defined$ Self | Origin$ Battlefield | Destination$ Exile SVar:DBRepeat:DB$ StoreSVar | SVar$ RepeatCheck | Type$ Number | Expression$ 1 SVar:RepeatCheck:Number$1 SVar:HasAttackEffect:TRUE diff --git a/forge-gui/res/cardsfolder/upcoming/delvers_torch.txt b/forge-gui/res/cardsfolder/d/delvers_torch.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/delvers_torch.txt rename to forge-gui/res/cardsfolder/d/delvers_torch.txt diff --git a/forge-gui/res/cardsfolder/upcoming/demilich.txt b/forge-gui/res/cardsfolder/d/demilich.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/demilich.txt rename to forge-gui/res/cardsfolder/d/demilich.txt diff --git a/forge-gui/res/cardsfolder/upcoming/demogorgons_clutches.txt b/forge-gui/res/cardsfolder/d/demogorgons_clutches.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/demogorgons_clutches.txt rename to forge-gui/res/cardsfolder/d/demogorgons_clutches.txt diff --git a/forge-gui/res/cardsfolder/upcoming/den_of_the_bugbear.txt b/forge-gui/res/cardsfolder/d/den_of_the_bugbear.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/den_of_the_bugbear.txt rename to forge-gui/res/cardsfolder/d/den_of_the_bugbear.txt diff --git a/forge-gui/res/cardsfolder/upcoming/devoted_paladin.txt b/forge-gui/res/cardsfolder/d/devoted_paladin.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/devoted_paladin.txt rename to forge-gui/res/cardsfolder/d/devoted_paladin.txt diff --git a/forge-gui/res/cardsfolder/upcoming/devour_intellect.txt b/forge-gui/res/cardsfolder/d/devour_intellect.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/devour_intellect.txt rename to forge-gui/res/cardsfolder/d/devour_intellect.txt diff --git a/forge-gui/res/cardsfolder/upcoming/dire_wolf_prowler.txt b/forge-gui/res/cardsfolder/d/dire_wolf_prowler.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/dire_wolf_prowler.txt rename to forge-gui/res/cardsfolder/d/dire_wolf_prowler.txt diff --git a/forge-gui/res/cardsfolder/upcoming/displacer_beast.txt b/forge-gui/res/cardsfolder/d/displacer_beast.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/displacer_beast.txt rename to forge-gui/res/cardsfolder/d/displacer_beast.txt diff --git a/forge-gui/res/cardsfolder/upcoming/divine_smite.txt b/forge-gui/res/cardsfolder/d/divine_smite.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/divine_smite.txt rename to forge-gui/res/cardsfolder/d/divine_smite.txt diff --git a/forge-gui/res/cardsfolder/upcoming/diviners_portent.txt b/forge-gui/res/cardsfolder/d/diviners_portent.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/diviners_portent.txt rename to forge-gui/res/cardsfolder/d/diviners_portent.txt diff --git a/forge-gui/res/cardsfolder/upcoming/djinni_windseer.txt b/forge-gui/res/cardsfolder/d/djinni_windseer.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/djinni_windseer.txt rename to forge-gui/res/cardsfolder/d/djinni_windseer.txt diff --git a/forge-gui/res/cardsfolder/upcoming/dragon_turtle.txt b/forge-gui/res/cardsfolder/d/dragon_turtle.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/dragon_turtle.txt rename to forge-gui/res/cardsfolder/d/dragon_turtle.txt diff --git a/forge-gui/res/cardsfolder/upcoming/dragonborn_champion.txt b/forge-gui/res/cardsfolder/d/dragonborn_champion.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/dragonborn_champion.txt rename to forge-gui/res/cardsfolder/d/dragonborn_champion.txt diff --git a/forge-gui/res/cardsfolder/upcoming/dragons_disciple.txt b/forge-gui/res/cardsfolder/d/dragons_disciple.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/dragons_disciple.txt rename to forge-gui/res/cardsfolder/d/dragons_disciple.txt diff --git a/forge-gui/res/cardsfolder/upcoming/dragons_fire.txt b/forge-gui/res/cardsfolder/d/dragons_fire.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/dragons_fire.txt rename to forge-gui/res/cardsfolder/d/dragons_fire.txt diff --git a/forge-gui/res/cardsfolder/d/dread_wight.txt b/forge-gui/res/cardsfolder/d/dread_wight.txt index e2373ef98d3..aef6b05482e 100644 --- a/forge-gui/res/cardsfolder/d/dread_wight.txt +++ b/forge-gui/res/cardsfolder/d/dread_wight.txt @@ -5,7 +5,7 @@ PT:3/4 T:Mode$ Phase | Phase$ EndCombat | Execute$ TrigCounter | TriggerZones$ Battlefield | TriggerDescription$ At end of combat, put a paralyzation counter on each creature blocking or blocked by CARDNAME and tap those creatures. Each of those creatures doesn't untap during its controller's untap step for as long as it has a paralyzation counter on it. Each of those creatures gains "{4}: Remove a paralyzation counter from this creature." SVar:TrigCounter:DB$ PutCounterAll | CounterType$ PARALYZATION | CounterNum$ 1 | ValidCards$ Creature.blockedBySource,Creature.blockingSource | SubAbility$ DBTap SVar:DBTap:DB$ TapAll | ValidCards$ Creature.blockedBySource,Creature.blockingSource | SubAbility$ DBEffect -SVar:DBEffect:DB$ Effect | RememberObjects$ Valid Creature.blockedBySource,Valid Creature.blockingSource | StaticAbilities$ DontUntap | Duration$ Permanent | ConditionPresent$ Creature.blockedBySource,Creature.blockingSource | SubAbility$ DBAnimate | ForgetOnMoved$ Battlefield | ForgetCounter$ PARALYZATION +SVar:DBEffect:DB$ Effect | RememberObjects$ Valid Creature.blockedBySource,Creature.blockingSource | StaticAbilities$ DontUntap | Duration$ Permanent | ConditionPresent$ Creature.blockedBySource,Creature.blockingSource | SubAbility$ DBAnimate | ForgetOnMoved$ Battlefield | ForgetCounter$ PARALYZATION SVar:DBAnimate:DB$ AnimateAll | ValidCards$ Creature.blockedBySource,Creature.blockingSource | Abilities$ ABRemoveCounter | Duration$ Permanent SVar:ABRemoveCounter:AB$ RemoveCounter | Defined$ Self | Cost$ 4 | CounterType$ PARALYZATION | CounterNum$ 1 | SpellDescription$ Remove a paralyzation counter from this creature. SVar:DontUntap:Mode$ Continuous | EffectZone$ Command | AffectedZone$ Battlefield | Affected$ Card.IsRemembered | AddHiddenKeyword$ CARDNAME doesn't untap during your untap step. | Description$ Each of those creatures doesn't untap during its controller's untap step for as long as it has a paralyzation counter on it. diff --git a/forge-gui/res/cardsfolder/upcoming/drider.txt b/forge-gui/res/cardsfolder/d/drider.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/drider.txt rename to forge-gui/res/cardsfolder/d/drider.txt diff --git a/forge-gui/res/cardsfolder/upcoming/druid_class.txt b/forge-gui/res/cardsfolder/d/druid_class.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/druid_class.txt rename to forge-gui/res/cardsfolder/d/druid_class.txt diff --git a/forge-gui/res/cardsfolder/d/druid_of_purification.txt b/forge-gui/res/cardsfolder/d/druid_of_purification.txt new file mode 100644 index 00000000000..2a5a5447bf1 --- /dev/null +++ b/forge-gui/res/cardsfolder/d/druid_of_purification.txt @@ -0,0 +1,11 @@ +Name:Druid of Purification +ManaCost:3 G +Types:Creature Human Druid +PT:2/3 +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigChoice | TriggerDescription$ When CARDNAME enters the battlefield, starting with you, each player may choose an artifact or enchantment you don’t control. Destroy each permanent chosen this way. +SVar:TrigChoice:DB$ RepeatEach | RepeatPlayers$ Player | StartingWithActivator$ True | RepeatSubAbility$ DBChoosePermanent | SubAbility$ DBDestroy +SVar:DBChoosePermanent:DB$ ChooseCard | Defined$ Remembered | Choices$ Artifact.YouDontCtrl,Enchantment.YouDontCtrl | Optional$ True | ChoiceTitle$ Choose an artifact or enchantment | RememberChosen$ True +SVar:DBDestroy:DB$ Destroy | Defined$ Remembered | SubAbility$ DBCleanup +SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True +AI:RemoveDeck:Random +Oracle:When Druid of Purification enters the battlefield, starting with you, each player may choose an artifact or enchantment you don't control. Destroy each permanent chosen this way. diff --git a/forge-gui/res/cardsfolder/upcoming/dueling_rapier.txt b/forge-gui/res/cardsfolder/d/dueling_rapier.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/dueling_rapier.txt rename to forge-gui/res/cardsfolder/d/dueling_rapier.txt diff --git a/forge-gui/res/cardsfolder/upcoming/dungeon_crawler.txt b/forge-gui/res/cardsfolder/d/dungeon_crawler.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/dungeon_crawler.txt rename to forge-gui/res/cardsfolder/d/dungeon_crawler.txt diff --git a/forge-gui/res/cardsfolder/upcoming/dungeon_descent.txt b/forge-gui/res/cardsfolder/d/dungeon_descent.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/dungeon_descent.txt rename to forge-gui/res/cardsfolder/d/dungeon_descent.txt diff --git a/forge-gui/res/cardsfolder/upcoming/dungeon_map.txt b/forge-gui/res/cardsfolder/d/dungeon_map.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/dungeon_map.txt rename to forge-gui/res/cardsfolder/d/dungeon_map.txt diff --git a/forge-gui/res/cardsfolder/upcoming/dungeon_of_the_mad_mage.txt b/forge-gui/res/cardsfolder/d/dungeon_of_the_mad_mage.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/dungeon_of_the_mad_mage.txt rename to forge-gui/res/cardsfolder/d/dungeon_of_the_mad_mage.txt diff --git a/forge-gui/res/cardsfolder/upcoming/dwarfhold_champion.txt b/forge-gui/res/cardsfolder/d/dwarfhold_champion.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/dwarfhold_champion.txt rename to forge-gui/res/cardsfolder/d/dwarfhold_champion.txt diff --git a/forge-gui/res/cardsfolder/upcoming/earth_cult_elemental.txt b/forge-gui/res/cardsfolder/e/earth_cult_elemental.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/earth_cult_elemental.txt rename to forge-gui/res/cardsfolder/e/earth_cult_elemental.txt diff --git a/forge-gui/res/cardsfolder/upcoming/ebondeath_dracolich.txt b/forge-gui/res/cardsfolder/e/ebondeath_dracolich.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/ebondeath_dracolich.txt rename to forge-gui/res/cardsfolder/e/ebondeath_dracolich.txt diff --git a/forge-gui/res/cardsfolder/upcoming/ebony_fly.txt b/forge-gui/res/cardsfolder/e/ebony_fly.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/ebony_fly.txt rename to forge-gui/res/cardsfolder/e/ebony_fly.txt diff --git a/forge-gui/res/cardsfolder/upcoming/eccentric_apprentice.txt b/forge-gui/res/cardsfolder/e/eccentric_apprentice.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/eccentric_apprentice.txt rename to forge-gui/res/cardsfolder/e/eccentric_apprentice.txt diff --git a/forge-gui/res/cardsfolder/upcoming/ellywick_tumblestrum.txt b/forge-gui/res/cardsfolder/e/ellywick_tumblestrum.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/ellywick_tumblestrum.txt rename to forge-gui/res/cardsfolder/e/ellywick_tumblestrum.txt diff --git a/forge-gui/res/cardsfolder/upcoming/elturgard_ranger.txt b/forge-gui/res/cardsfolder/e/elturgard_ranger.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/elturgard_ranger.txt rename to forge-gui/res/cardsfolder/e/elturgard_ranger.txt diff --git a/forge-gui/res/cardsfolder/upcoming/extract_brain.txt b/forge-gui/res/cardsfolder/e/extract_brain.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/extract_brain.txt rename to forge-gui/res/cardsfolder/e/extract_brain.txt diff --git a/forge-gui/res/cardsfolder/upcoming/eye_of_vecna.txt b/forge-gui/res/cardsfolder/e/eye_of_vecna.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/eye_of_vecna.txt rename to forge-gui/res/cardsfolder/e/eye_of_vecna.txt diff --git a/forge-gui/res/cardsfolder/upcoming/eyes_of_the_beholder.txt b/forge-gui/res/cardsfolder/e/eyes_of_the_beholder.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/eyes_of_the_beholder.txt rename to forge-gui/res/cardsfolder/e/eyes_of_the_beholder.txt diff --git a/forge-gui/res/cardsfolder/upcoming/farideh_devils_chosen.txt b/forge-gui/res/cardsfolder/f/farideh_devils_chosen.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/farideh_devils_chosen.txt rename to forge-gui/res/cardsfolder/f/farideh_devils_chosen.txt diff --git a/forge-gui/res/cardsfolder/upcoming/faridehs_fireball.txt b/forge-gui/res/cardsfolder/f/faridehs_fireball.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/faridehs_fireball.txt rename to forge-gui/res/cardsfolder/f/faridehs_fireball.txt diff --git a/forge-gui/res/cardsfolder/upcoming/fates_reversal.txt b/forge-gui/res/cardsfolder/f/fates_reversal.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/fates_reversal.txt rename to forge-gui/res/cardsfolder/f/fates_reversal.txt diff --git a/forge-gui/res/cardsfolder/upcoming/feign_death.txt b/forge-gui/res/cardsfolder/f/feign_death.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/feign_death.txt rename to forge-gui/res/cardsfolder/f/feign_death.txt diff --git a/forge-gui/res/cardsfolder/upcoming/fevered_suspicion.txt b/forge-gui/res/cardsfolder/f/fevered_suspicion.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/fevered_suspicion.txt rename to forge-gui/res/cardsfolder/f/fevered_suspicion.txt diff --git a/forge-gui/res/cardsfolder/upcoming/fey_steed.txt b/forge-gui/res/cardsfolder/f/fey_steed.txt similarity index 73% rename from forge-gui/res/cardsfolder/upcoming/fey_steed.txt rename to forge-gui/res/cardsfolder/f/fey_steed.txt index f4f86ad9c39..b34f6ae2c75 100644 --- a/forge-gui/res/cardsfolder/upcoming/fey_steed.txt +++ b/forge-gui/res/cardsfolder/f/fey_steed.txt @@ -4,7 +4,7 @@ Types:Creature Elk PT:4/4 T:Mode$ Attacks | ValidCard$ Card.Self | TriggerZones$ Battlefield | Execute$ TrigPump | TriggerDescription$ Whenever CARDNAME attacks, another target attacking creature you control gains indestructible until end of turn. SVar:TrigPump:DB$ Pump | ValidTgts$ Creature.YouCtrl+Other+attacking | TgtPrompt$ Select another target attacking creature you control | KW$ Indestructible -T:Mode$ BecomesTarget | ValidSource$ Card.OppCtrl | ValidTarget$ Creature.YouCtrl,Planeswalker.YouCtrl | TriggerZones$ Battlefield | Execute$ TrigDraw | OptionalDecider$ You | TriggerDescription$ Whenever a creature or planeswalker you control becomes the target of a spell or ability an opponent controls, you may draw a card. +T:Mode$ BecomesTarget | ValidSource$ Card.OppCtrl | ValidTarget$ Creature.YouCtrl+inZoneBattlefield,Planeswalker.YouCtrl+inZoneBattlefield | TriggerZones$ Battlefield | Execute$ TrigDraw | OptionalDecider$ You | TriggerDescription$ Whenever a creature or planeswalker you control becomes the target of a spell or ability an opponent controls, you may draw a card. SVar:TrigDraw:DB$ Draw | NumCards$ 1 | Defined$ You SVar:HasAttackEffect:TRUE Oracle:Whenever Fey Steed attacks, another target attacking creature you control gains indestructible until end of turn.\nWhenever a creature or planeswalker you control becomes the target of a spell or ability an opponent controls, you may draw a card. diff --git a/forge-gui/res/cardsfolder/upcoming/feywild_trickster.txt b/forge-gui/res/cardsfolder/f/feywild_trickster.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/feywild_trickster.txt rename to forge-gui/res/cardsfolder/f/feywild_trickster.txt diff --git a/forge-gui/res/cardsfolder/upcoming/fifty_feet_of_rope.txt b/forge-gui/res/cardsfolder/f/fifty_feet_of_rope.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/fifty_feet_of_rope.txt rename to forge-gui/res/cardsfolder/f/fifty_feet_of_rope.txt diff --git a/forge-gui/res/cardsfolder/upcoming/fighter_class.txt b/forge-gui/res/cardsfolder/f/fighter_class.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/fighter_class.txt rename to forge-gui/res/cardsfolder/f/fighter_class.txt diff --git a/forge-gui/res/cardsfolder/upcoming/find_the_path.txt b/forge-gui/res/cardsfolder/f/find_the_path.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/find_the_path.txt rename to forge-gui/res/cardsfolder/f/find_the_path.txt diff --git a/forge-gui/res/cardsfolder/upcoming/flameskull.txt b/forge-gui/res/cardsfolder/f/flameskull.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/flameskull.txt rename to forge-gui/res/cardsfolder/f/flameskull.txt diff --git a/forge-gui/res/cardsfolder/upcoming/flumph.txt b/forge-gui/res/cardsfolder/f/flumph.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/flumph.txt rename to forge-gui/res/cardsfolder/f/flumph.txt diff --git a/forge-gui/res/cardsfolder/upcoming/fly.txt b/forge-gui/res/cardsfolder/f/fly.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/fly.txt rename to forge-gui/res/cardsfolder/f/fly.txt diff --git a/forge-gui/res/cardsfolder/upcoming/forsworn_paladin.txt b/forge-gui/res/cardsfolder/f/forsworn_paladin.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/forsworn_paladin.txt rename to forge-gui/res/cardsfolder/f/forsworn_paladin.txt diff --git a/forge-gui/res/cardsfolder/upcoming/froghemoth.txt b/forge-gui/res/cardsfolder/f/froghemoth.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/froghemoth.txt rename to forge-gui/res/cardsfolder/f/froghemoth.txt diff --git a/forge-gui/res/cardsfolder/upcoming/galea_kindler_of_hope.txt b/forge-gui/res/cardsfolder/g/galea_kindler_of_hope.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/galea_kindler_of_hope.txt rename to forge-gui/res/cardsfolder/g/galea_kindler_of_hope.txt diff --git a/forge-gui/res/cardsfolder/upcoming/gelatinous_cube.txt b/forge-gui/res/cardsfolder/g/gelatinous_cube.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/gelatinous_cube.txt rename to forge-gui/res/cardsfolder/g/gelatinous_cube.txt diff --git a/forge-gui/res/cardsfolder/g/gerrard_weatherlight_hero.txt b/forge-gui/res/cardsfolder/g/gerrard_weatherlight_hero.txt index 9f017a9d46d..c0aa968ae90 100644 --- a/forge-gui/res/cardsfolder/g/gerrard_weatherlight_hero.txt +++ b/forge-gui/res/cardsfolder/g/gerrard_weatherlight_hero.txt @@ -5,5 +5,5 @@ PT:3/3 K:First Strike T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Graveyard | ValidCard$ Card.Self | Execute$ TrigExile | TriggerController$ TriggeredCardController | TriggerDescription$ When CARDNAME dies, exile it and return to the battlefield all artifact and creature cards in your graveyard that were put there from the battlefield this turn. SVar:TrigExile:DB$ ChangeZone | Defined$ TriggeredNewCardLKICopy | Origin$ Graveyard | Destination$ Exile | SubAbility$ DBReturn -SVar:DBReturn:DB$ ChangeZone | Origin$ Graveyard | Destination$ Battlefield | Defined$ ValidGraveyard Artifact,Creature.YouOwn+ThisTurnEnteredFrom_Battlefield +SVar:DBReturn:DB$ ChangeZone | Origin$ Graveyard | Destination$ Battlefield | Defined$ ValidGraveyard Artifact.YouOwn+ThisTurnEnteredFrom_Battlefield,Creature.YouOwn+ThisTurnEnteredFrom_Battlefield Oracle:First strike\nWhen Gerrard, Weatherlight Hero dies, exile it and return to the battlefield all artifact and creature cards in your graveyard that were put there from the battlefield this turn. diff --git a/forge-gui/res/cardsfolder/upcoming/gloom_stalker.txt b/forge-gui/res/cardsfolder/g/gloom_stalker.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/gloom_stalker.txt rename to forge-gui/res/cardsfolder/g/gloom_stalker.txt diff --git a/forge-gui/res/cardsfolder/upcoming/gnoll_hunter.txt b/forge-gui/res/cardsfolder/g/gnoll_hunter.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/gnoll_hunter.txt rename to forge-gui/res/cardsfolder/g/gnoll_hunter.txt diff --git a/forge-gui/res/cardsfolder/upcoming/goblin_javelineer.txt b/forge-gui/res/cardsfolder/g/goblin_javelineer.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/goblin_javelineer.txt rename to forge-gui/res/cardsfolder/g/goblin_javelineer.txt diff --git a/forge-gui/res/cardsfolder/upcoming/goblin_morningstar.txt b/forge-gui/res/cardsfolder/g/goblin_morningstar.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/goblin_morningstar.txt rename to forge-gui/res/cardsfolder/g/goblin_morningstar.txt diff --git a/forge-gui/res/cardsfolder/upcoming/grand_master_of_flowers.txt b/forge-gui/res/cardsfolder/g/grand_master_of_flowers.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/grand_master_of_flowers.txt rename to forge-gui/res/cardsfolder/g/grand_master_of_flowers.txt diff --git a/forge-gui/res/cardsfolder/upcoming/grazilaxx_illithid_scholar.txt b/forge-gui/res/cardsfolder/g/grazilaxx_illithid_scholar.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/grazilaxx_illithid_scholar.txt rename to forge-gui/res/cardsfolder/g/grazilaxx_illithid_scholar.txt diff --git a/forge-gui/res/cardsfolder/upcoming/greataxe.txt b/forge-gui/res/cardsfolder/g/greataxe.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/greataxe.txt rename to forge-gui/res/cardsfolder/g/greataxe.txt diff --git a/forge-gui/res/cardsfolder/upcoming/green_dragon.txt b/forge-gui/res/cardsfolder/g/green_dragon.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/green_dragon.txt rename to forge-gui/res/cardsfolder/g/green_dragon.txt diff --git a/forge-gui/res/cardsfolder/upcoming/gretchen_titchwillow.txt b/forge-gui/res/cardsfolder/g/gretchen_titchwillow.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/gretchen_titchwillow.txt rename to forge-gui/res/cardsfolder/g/gretchen_titchwillow.txt diff --git a/forge-gui/res/cardsfolder/upcoming/grim_bounty.txt b/forge-gui/res/cardsfolder/g/grim_bounty.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/grim_bounty.txt rename to forge-gui/res/cardsfolder/g/grim_bounty.txt diff --git a/forge-gui/res/cardsfolder/upcoming/grim_wanderer.txt b/forge-gui/res/cardsfolder/g/grim_wanderer.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/grim_wanderer.txt rename to forge-gui/res/cardsfolder/g/grim_wanderer.txt diff --git a/forge-gui/res/cardsfolder/upcoming/guardian_of_faith.txt b/forge-gui/res/cardsfolder/g/guardian_of_faith.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/guardian_of_faith.txt rename to forge-gui/res/cardsfolder/g/guardian_of_faith.txt diff --git a/forge-gui/res/cardsfolder/upcoming/guild_thief.txt b/forge-gui/res/cardsfolder/g/guild_thief.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/guild_thief.txt rename to forge-gui/res/cardsfolder/g/guild_thief.txt diff --git a/forge-gui/res/cardsfolder/upcoming/half_elf_monk.txt b/forge-gui/res/cardsfolder/h/half_elf_monk.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/half_elf_monk.txt rename to forge-gui/res/cardsfolder/h/half_elf_monk.txt diff --git a/forge-gui/res/cardsfolder/upcoming/hall_of_storm_giants.txt b/forge-gui/res/cardsfolder/h/hall_of_storm_giants.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/hall_of_storm_giants.txt rename to forge-gui/res/cardsfolder/h/hall_of_storm_giants.txt diff --git a/forge-gui/res/cardsfolder/upcoming/hama_pashar_ruin_seeker.txt b/forge-gui/res/cardsfolder/h/hama_pashar_ruin_seeker.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/hama_pashar_ruin_seeker.txt rename to forge-gui/res/cardsfolder/h/hama_pashar_ruin_seeker.txt diff --git a/forge-gui/res/cardsfolder/upcoming/hand_of_vecna.txt b/forge-gui/res/cardsfolder/h/hand_of_vecna.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/hand_of_vecna.txt rename to forge-gui/res/cardsfolder/h/hand_of_vecna.txt diff --git a/forge-gui/res/cardsfolder/upcoming/herald_of_hadar.txt b/forge-gui/res/cardsfolder/h/herald_of_hadar.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/herald_of_hadar.txt rename to forge-gui/res/cardsfolder/h/herald_of_hadar.txt diff --git a/forge-gui/res/cardsfolder/upcoming/hill_giant_herdgorger.txt b/forge-gui/res/cardsfolder/h/hill_giant_herdgorger.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/hill_giant_herdgorger.txt rename to forge-gui/res/cardsfolder/h/hill_giant_herdgorger.txt diff --git a/forge-gui/res/cardsfolder/upcoming/hired_hexblade.txt b/forge-gui/res/cardsfolder/h/hired_hexblade.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/hired_hexblade.txt rename to forge-gui/res/cardsfolder/h/hired_hexblade.txt diff --git a/forge-gui/res/cardsfolder/upcoming/hive_of_the_eye_tyrant.txt b/forge-gui/res/cardsfolder/h/hive_of_the_eye_tyrant.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/hive_of_the_eye_tyrant.txt rename to forge-gui/res/cardsfolder/h/hive_of_the_eye_tyrant.txt diff --git a/forge-gui/res/cardsfolder/upcoming/hoard_robber.txt b/forge-gui/res/cardsfolder/h/hoard_robber.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/hoard_robber.txt rename to forge-gui/res/cardsfolder/h/hoard_robber.txt diff --git a/forge-gui/res/cardsfolder/upcoming/hoarding_ogre.txt b/forge-gui/res/cardsfolder/h/hoarding_ogre.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/hoarding_ogre.txt rename to forge-gui/res/cardsfolder/h/hoarding_ogre.txt diff --git a/forge-gui/res/cardsfolder/upcoming/hobgoblin_bandit_lord.txt b/forge-gui/res/cardsfolder/h/hobgoblin_bandit_lord.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/hobgoblin_bandit_lord.txt rename to forge-gui/res/cardsfolder/h/hobgoblin_bandit_lord.txt diff --git a/forge-gui/res/cardsfolder/upcoming/hobgoblin_captain.txt b/forge-gui/res/cardsfolder/h/hobgoblin_captain.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/hobgoblin_captain.txt rename to forge-gui/res/cardsfolder/h/hobgoblin_captain.txt diff --git a/forge-gui/res/cardsfolder/h/hofri_ghostforge.txt b/forge-gui/res/cardsfolder/h/hofri_ghostforge.txt index f942c3cde2f..7fa597e592a 100644 --- a/forge-gui/res/cardsfolder/h/hofri_ghostforge.txt +++ b/forge-gui/res/cardsfolder/h/hofri_ghostforge.txt @@ -5,11 +5,10 @@ PT:4/5 S:Mode$ Continuous | Affected$ Spirit.YouCtrl | AddPower$ 1 | AddToughness$ 1 | AddKeyword$ Trample & Haste | Description$ Spirits you control get +1/+1 and have trample and haste. T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Graveyard | ValidCard$ Creature.Other+nonToken+YouCtrl | Execute$ TrigChange | TriggerDescription$ Whenever another nontoken creature you control dies, exile it. If you do, create a token that's a copy of that creature, except it's a Spirit in addition to its other types and it has "When this creature leaves the battlefield, return the exiled card to its owner's graveyard." SVar:TrigChange:DB$ ChangeZone | Origin$ Graveyard | Destination$ Exile | Defined$ TriggeredNewCardLKICopy | RememberChanged$ True | SubAbility$ DBCopy -SVar:DBCopy:DB$ CopyPermanent | Defined$ TriggeredCardLKICopy | AddTypes$ Spirit | ConditionDefined$ TriggeredNewCardLKICopy | ConditionPresent$ Card | ConditionCompare$ EQExiledCount | ImprintTokens$ True | TokenRemembered$ Remembered | SubAbility$ DBAnimate -SVar:DBAnimate:DB$ Animate | Defined$ Imprinted | Duration$ Permanent | Triggers$ TrigLeavesBattlefield | sVars$ TrigReturn | SubAbility$ DBCleanup -SVar:TrigLeavesBattlefield:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Any | ValidCard$ Card.Self | Execute$ TrigReturn | TriggerDescription$ When this creature leaves the battlefield, return the exiled card to your graveyard. -SVar:TrigReturn:DB$ ChangeZone | Origin$ Exile | Destination$ Graveyard | Defined$ Remembered -SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True | ClearImprinted$ True +SVar:DBCopy:DB$ CopyPermanent | Defined$ TriggeredCardLKICopy | AddTypes$ Spirit | AddSVars$ HofriTrigReturn | AddTriggers$ TrigLeavesBattlefield | ConditionDefined$ TriggeredNewCardLKICopy | ConditionPresent$ Card | ConditionCompare$ EQExiledCount | TokenRemembered$ Remembered | SubAbility$ DBCleanup +SVar:TrigLeavesBattlefield:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Any | ValidCard$ Card.Self | Execute$ HofriTrigReturn | TriggerDescription$ When this creature leaves the battlefield, return the exiled card to your graveyard. +SVar:HofriTrigReturn:DB$ ChangeZone | Origin$ Exile | Destination$ Graveyard | Defined$ Remembered +SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True SVar:ExiledCount:Count$RememberedSize DeckHas:Ability$Token DeckHints:Type$Spirit diff --git a/forge-gui/res/cardsfolder/upcoming/holy_avenger.txt b/forge-gui/res/cardsfolder/h/holy_avenger.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/holy_avenger.txt rename to forge-gui/res/cardsfolder/h/holy_avenger.txt diff --git a/forge-gui/res/cardsfolder/upcoming/hulking_bugbear.txt b/forge-gui/res/cardsfolder/h/hulking_bugbear.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/hulking_bugbear.txt rename to forge-gui/res/cardsfolder/h/hulking_bugbear.txt diff --git a/forge-gui/res/cardsfolder/upcoming/hunters_mark.txt b/forge-gui/res/cardsfolder/h/hunters_mark.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/hunters_mark.txt rename to forge-gui/res/cardsfolder/h/hunters_mark.txt diff --git a/forge-gui/res/cardsfolder/h/hurl_through_hell.txt b/forge-gui/res/cardsfolder/h/hurl_through_hell.txt new file mode 100644 index 00000000000..de60ed330bb --- /dev/null +++ b/forge-gui/res/cardsfolder/h/hurl_through_hell.txt @@ -0,0 +1,8 @@ +Name:Hurl Through Hell +ManaCost:2 B R +Types:Instant +A:SP$ ChangeZone | Cost$ 2 B R | ValidTgts$ Creature | TgtPrompt$ Select target creature | Origin$ Battlefield | Destination$ Exile | RememberChanged$ True | SubAbility$ DBEffect | SpellDescription$ Exile target creature. Until the end of your next turn, you may cast that card and you may spend mana as though it were mana of any color to cast that spell. +SVar:DBEffect:DB$ Effect | StaticAbilities$ STPlay | RememberObjects$ Remembered | ForgetOnMoved$ Exile | Duration$ UntilTheEndOfYourNextTurn | SubAbility$ DBCleanup +SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True +SVar:STPlay:Mode$ Continuous | Affected$ Card.nonLand+IsRemembered | AffectedZone$ Exile | EffectZone$ Command | MayPlay$ True | MayPlayIgnoreColor$ True | Description$ You may cast the exiled card and you may spend mana as though it were mana of any color to cast that spell. +Oracle:Exile target creature. Until the end of your next turn, you may cast that card and you may spend mana as though it were mana of any color to cast that spell. diff --git a/forge-gui/res/cardsfolder/upcoming/icingdeath_frost_tyrant.txt b/forge-gui/res/cardsfolder/i/icingdeath_frost_tyrant.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/icingdeath_frost_tyrant.txt rename to forge-gui/res/cardsfolder/i/icingdeath_frost_tyrant.txt diff --git a/forge-gui/res/cardsfolder/upcoming/improvised_weaponry.txt b/forge-gui/res/cardsfolder/i/improvised_weaponry.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/improvised_weaponry.txt rename to forge-gui/res/cardsfolder/i/improvised_weaponry.txt diff --git a/forge-gui/res/cardsfolder/upcoming/inferno_of_the_star_mounts.txt b/forge-gui/res/cardsfolder/i/inferno_of_the_star_mounts.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/inferno_of_the_star_mounts.txt rename to forge-gui/res/cardsfolder/i/inferno_of_the_star_mounts.txt diff --git a/forge-gui/res/cardsfolder/upcoming/ingenious_smith.txt b/forge-gui/res/cardsfolder/i/ingenious_smith.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/ingenious_smith.txt rename to forge-gui/res/cardsfolder/i/ingenious_smith.txt diff --git a/forge-gui/res/cardsfolder/upcoming/inspiring_bard.txt b/forge-gui/res/cardsfolder/i/inspiring_bard.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/inspiring_bard.txt rename to forge-gui/res/cardsfolder/i/inspiring_bard.txt diff --git a/forge-gui/res/cardsfolder/upcoming/instrument_of_the_bards.txt b/forge-gui/res/cardsfolder/i/instrument_of_the_bards.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/instrument_of_the_bards.txt rename to forge-gui/res/cardsfolder/i/instrument_of_the_bards.txt diff --git a/forge-gui/res/cardsfolder/upcoming/intrepid_outlander.txt b/forge-gui/res/cardsfolder/i/intrepid_outlander.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/intrepid_outlander.txt rename to forge-gui/res/cardsfolder/i/intrepid_outlander.txt diff --git a/forge-gui/res/cardsfolder/upcoming/iron_golem.txt b/forge-gui/res/cardsfolder/i/iron_golem.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/iron_golem.txt rename to forge-gui/res/cardsfolder/i/iron_golem.txt diff --git a/forge-gui/res/cardsfolder/upcoming/iymrith_desert_doom.txt b/forge-gui/res/cardsfolder/i/iymrith_desert_doom.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/iymrith_desert_doom.txt rename to forge-gui/res/cardsfolder/i/iymrith_desert_doom.txt diff --git a/forge-gui/res/cardsfolder/upcoming/jaded_sell_sword.txt b/forge-gui/res/cardsfolder/j/jaded_sell_sword.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/jaded_sell_sword.txt rename to forge-gui/res/cardsfolder/j/jaded_sell_sword.txt diff --git a/forge-gui/res/cardsfolder/upcoming/kalain_reclusive_painter.txt b/forge-gui/res/cardsfolder/k/kalain_reclusive_painter.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/kalain_reclusive_painter.txt rename to forge-gui/res/cardsfolder/k/kalain_reclusive_painter.txt diff --git a/forge-gui/res/cardsfolder/upcoming/karazikar_the_eye_tyrant.txt b/forge-gui/res/cardsfolder/k/karazikar_the_eye_tyrant.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/karazikar_the_eye_tyrant.txt rename to forge-gui/res/cardsfolder/k/karazikar_the_eye_tyrant.txt diff --git a/forge-gui/res/cardsfolder/upcoming/keen_eared_sentry.txt b/forge-gui/res/cardsfolder/k/keen_eared_sentry.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/keen_eared_sentry.txt rename to forge-gui/res/cardsfolder/k/keen_eared_sentry.txt diff --git a/forge-gui/res/cardsfolder/upcoming/kick_in_the_door.txt b/forge-gui/res/cardsfolder/k/kick_in_the_door.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/kick_in_the_door.txt rename to forge-gui/res/cardsfolder/k/kick_in_the_door.txt diff --git a/forge-gui/res/cardsfolder/upcoming/klauth_unrivaled_ancient.txt b/forge-gui/res/cardsfolder/k/klauth_unrivaled_ancient.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/klauth_unrivaled_ancient.txt rename to forge-gui/res/cardsfolder/k/klauth_unrivaled_ancient.txt diff --git a/forge-gui/res/cardsfolder/k/klauths_will.txt b/forge-gui/res/cardsfolder/k/klauths_will.txt new file mode 100644 index 00000000000..b7e8bdf1cd4 --- /dev/null +++ b/forge-gui/res/cardsfolder/k/klauths_will.txt @@ -0,0 +1,10 @@ +Name:Klauth's Will +ManaCost:X R R G +Types:Instant +A:SP$ Charm | Cost$ X R R G | MinCharmNum$ 1 | CharmNum$ Y | Choices$ DBDamage,DBDestroy | AdditionalDescription$ If you control a commander as you cast this spell, you may choose both. +SVar:DBDamage:DB$ DamageAll | ValidCards$ Creature.withoutFlying | NumDmg$ X | SpellDescription$ Breathe Flame — CARDNAME deals X damage to each creature without flying. +SVar:DBDestroy:DB$ Destroy | TargetMin$ 0 | TargetMax$ X | ValidTgts$ Artifact,Enchantment | TgtPrompt$ Select up to X target artifacts and/or enchantments | SpellDescription$ Smash Relics — Destroy up to X target artifacts and/or enchantments. +SVar:X:Count$xPaid +SVar:Y:Count$Compare Z GE1.2.1 +SVar:Z:Count$Valid Card.IsCommander+YouCtrl +Oracle:Choose one. If you control a commander as you cast this spell, you may choose both.\n• Breathe Flame — Klauth's Will deals X damage to each creature without flying.\n• Smash Relics — Destroy up to X target artifacts and/or enchantments. diff --git a/forge-gui/res/cardsfolder/upcoming/krydle_of_baldurs_gate.txt b/forge-gui/res/cardsfolder/k/krydle_of_baldurs_gate.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/krydle_of_baldurs_gate.txt rename to forge-gui/res/cardsfolder/k/krydle_of_baldurs_gate.txt diff --git a/forge-gui/res/cardsfolder/upcoming/lair_of_the_hydra.txt b/forge-gui/res/cardsfolder/l/lair_of_the_hydra.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/lair_of_the_hydra.txt rename to forge-gui/res/cardsfolder/l/lair_of_the_hydra.txt diff --git a/forge-gui/res/cardsfolder/upcoming/leather_armor.txt b/forge-gui/res/cardsfolder/l/leather_armor.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/leather_armor.txt rename to forge-gui/res/cardsfolder/l/leather_armor.txt diff --git a/forge-gui/res/cardsfolder/upcoming/lightfoot_rogue.txt b/forge-gui/res/cardsfolder/l/lightfoot_rogue.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/lightfoot_rogue.txt rename to forge-gui/res/cardsfolder/l/lightfoot_rogue.txt diff --git a/forge-gui/res/cardsfolder/upcoming/loathsome_troll.txt b/forge-gui/res/cardsfolder/l/loathsome_troll.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/loathsome_troll.txt rename to forge-gui/res/cardsfolder/l/loathsome_troll.txt diff --git a/forge-gui/res/cardsfolder/upcoming/long_rest.txt b/forge-gui/res/cardsfolder/l/long_rest.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/long_rest.txt rename to forge-gui/res/cardsfolder/l/long_rest.txt diff --git a/forge-gui/res/cardsfolder/upcoming/lost_mine_of_phandelver.txt b/forge-gui/res/cardsfolder/l/lost_mine_of_phandelver.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/lost_mine_of_phandelver.txt rename to forge-gui/res/cardsfolder/l/lost_mine_of_phandelver.txt diff --git a/forge-gui/res/cardsfolder/upcoming/loyal_warhound.txt b/forge-gui/res/cardsfolder/l/loyal_warhound.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/loyal_warhound.txt rename to forge-gui/res/cardsfolder/l/loyal_warhound.txt diff --git a/forge-gui/res/cardsfolder/upcoming/lurking_roper.txt b/forge-gui/res/cardsfolder/l/lurking_roper.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/lurking_roper.txt rename to forge-gui/res/cardsfolder/l/lurking_roper.txt diff --git a/forge-gui/res/cardsfolder/upcoming/maddening_hex.txt b/forge-gui/res/cardsfolder/m/maddening_hex.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/maddening_hex.txt rename to forge-gui/res/cardsfolder/m/maddening_hex.txt diff --git a/forge-gui/res/cardsfolder/upcoming/magic_missile.txt b/forge-gui/res/cardsfolder/m/magic_missile.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/magic_missile.txt rename to forge-gui/res/cardsfolder/m/magic_missile.txt diff --git a/forge-gui/res/cardsfolder/upcoming/manticore.txt b/forge-gui/res/cardsfolder/m/manticore.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/manticore.txt rename to forge-gui/res/cardsfolder/m/manticore.txt diff --git a/forge-gui/res/cardsfolder/upcoming/meteor_swarm.txt b/forge-gui/res/cardsfolder/m/meteor_swarm.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/meteor_swarm.txt rename to forge-gui/res/cardsfolder/m/meteor_swarm.txt diff --git a/forge-gui/res/cardsfolder/upcoming/midnight_pathlighter.txt b/forge-gui/res/cardsfolder/m/midnight_pathlighter.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/midnight_pathlighter.txt rename to forge-gui/res/cardsfolder/m/midnight_pathlighter.txt diff --git a/forge-gui/res/cardsfolder/upcoming/mimic.txt b/forge-gui/res/cardsfolder/m/mimic.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/mimic.txt rename to forge-gui/res/cardsfolder/m/mimic.txt diff --git a/forge-gui/res/cardsfolder/upcoming/mind_flayer.txt b/forge-gui/res/cardsfolder/m/mind_flayer.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/mind_flayer.txt rename to forge-gui/res/cardsfolder/m/mind_flayer.txt diff --git a/forge-gui/res/cardsfolder/upcoming/minimus_containment.txt b/forge-gui/res/cardsfolder/m/minimus_containment.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/minimus_containment.txt rename to forge-gui/res/cardsfolder/m/minimus_containment.txt diff --git a/forge-gui/res/cardsfolder/upcoming/minion_of_the_mighty.txt b/forge-gui/res/cardsfolder/m/minion_of_the_mighty.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/minion_of_the_mighty.txt rename to forge-gui/res/cardsfolder/m/minion_of_the_mighty.txt diff --git a/forge-gui/res/cardsfolder/m/minn_wily_illusionist.txt b/forge-gui/res/cardsfolder/m/minn_wily_illusionist.txt new file mode 100644 index 00000000000..c839a79c65b --- /dev/null +++ b/forge-gui/res/cardsfolder/m/minn_wily_illusionist.txt @@ -0,0 +1,12 @@ +Name:Minn, Wily Illusionist +ManaCost:1 U U +Types:Legendary Creature Gnome Wizard +PT:1/3 +T:Mode$ Drawn | ValidCard$ Card.YouCtrl | Number$ 2 | TriggerZones$ Battlefield | Execute$ TrigToken | TriggerDescription$ Whenever you draw your second card each turn, create a 1/1 blue Illusion creature token with "This creature gets +1/+0 for each other Illusion you control." +SVar:TrigToken:DB$ Token | TokenScript$ u_1_1_illusion_other_illusions +T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Graveyard | ValidCard$ Illusion.YouCtrl | TriggerZones$ Battlefield | Execute$ TrigChangeZone | OptionalDecider$ You | TriggerDescription$ Whenever an Illusion you control dies, you may put a permanent card with mana value less than or equal to that creature's power from your hand onto the battlefield. +SVar:TrigChangeZone:DB$ ChangeZone | Origin$ Hand | Destination$ Battlefield | ChangeType$ Permanent.cmcLEX+YouOwn | ChangeNum$ 1 | StackDescription$ None +SVar:X:TriggeredCard$CardPower +DeckHas:Ability$Token +DeckHints:Type$Illusion +Oracle:Whenever you draw your second card each turn, create a 1/1 blue Illusion creature token with "This creature gets +1/+0 for each other Illusion you control."\nWhenever an Illusion you control dies, you may put a permanent card with mana value less than or equal to that creature's power from your hand onto the battlefield. diff --git a/forge-gui/res/cardsfolder/upcoming/minsc_beloved_ranger.txt b/forge-gui/res/cardsfolder/m/minsc_beloved_ranger.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/minsc_beloved_ranger.txt rename to forge-gui/res/cardsfolder/m/minsc_beloved_ranger.txt diff --git a/forge-gui/res/cardsfolder/upcoming/monk_class.txt b/forge-gui/res/cardsfolder/m/monk_class.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/monk_class.txt rename to forge-gui/res/cardsfolder/m/monk_class.txt diff --git a/forge-gui/res/cardsfolder/upcoming/monk_of_the_open_hand.txt b/forge-gui/res/cardsfolder/m/monk_of_the_open_hand.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/monk_of_the_open_hand.txt rename to forge-gui/res/cardsfolder/m/monk_of_the_open_hand.txt diff --git a/forge-gui/res/cardsfolder/upcoming/moon_blessed_cleric.txt b/forge-gui/res/cardsfolder/m/moon_blessed_cleric.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/moon_blessed_cleric.txt rename to forge-gui/res/cardsfolder/m/moon_blessed_cleric.txt diff --git a/forge-gui/res/cardsfolder/upcoming/mordenkainen.txt b/forge-gui/res/cardsfolder/m/mordenkainen.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/mordenkainen.txt rename to forge-gui/res/cardsfolder/m/mordenkainen.txt diff --git a/forge-gui/res/cardsfolder/upcoming/mordenkainens_polymorph.txt b/forge-gui/res/cardsfolder/m/mordenkainens_polymorph.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/mordenkainens_polymorph.txt rename to forge-gui/res/cardsfolder/m/mordenkainens_polymorph.txt diff --git a/forge-gui/res/cardsfolder/upcoming/nadaar_selfless_paladin.txt b/forge-gui/res/cardsfolder/n/nadaar_selfless_paladin.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/nadaar_selfless_paladin.txt rename to forge-gui/res/cardsfolder/n/nadaar_selfless_paladin.txt diff --git a/forge-gui/res/cardsfolder/upcoming/netherese_puzzle_ward.txt b/forge-gui/res/cardsfolder/n/netherese_puzzle_ward.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/netherese_puzzle_ward.txt rename to forge-gui/res/cardsfolder/n/netherese_puzzle_ward.txt diff --git a/forge-gui/res/cardsfolder/upcoming/neverwinter_dryad.txt b/forge-gui/res/cardsfolder/n/neverwinter_dryad.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/neverwinter_dryad.txt rename to forge-gui/res/cardsfolder/n/neverwinter_dryad.txt diff --git a/forge-gui/res/cardsfolder/n/neverwinter_hydra.txt b/forge-gui/res/cardsfolder/n/neverwinter_hydra.txt new file mode 100644 index 00000000000..713a5e7ee19 --- /dev/null +++ b/forge-gui/res/cardsfolder/n/neverwinter_hydra.txt @@ -0,0 +1,12 @@ +Name:Neverwinter Hydra +ManaCost:X X G G +Types:Creature Hydra +PT:0/0 +K:ETBReplacement:Other:RollCounters +SVar:RollCounters:DB$ RollDice | Amount$ X | ETB$ True | ResultSVar$ Result | SubAbility$ DBCounters | SpellDescription$ As CARDNAME enters the battlefield, roll X d6. It enters the battlefield with a number of +1/+1 counters on it equal to the total of those results. +SVar:DBCounters:DB$ PutCounter | Defined$ Self | CounterType$ P1P1 | CounterNum$ Result | ETB$ True +K:Trample +K:Ward:4 +SVar:X:Count$xPaid +DeckHas:Ability$Counters +Oracle:As Neverwinter Hydra enters the battlefield, roll X d6. It enters with a number of +1/+1 counters on it equal to the total of those results.\nTrample\nWard {4} (Whenever this creature becomes the target of a spell or ability an opponent controls, counter it unless that player pays {4}.) diff --git a/forge-gui/res/cardsfolder/upcoming/ochre_jelly.txt b/forge-gui/res/cardsfolder/o/ochre_jelly.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/ochre_jelly.txt rename to forge-gui/res/cardsfolder/o/ochre_jelly.txt diff --git a/forge-gui/res/cardsfolder/upcoming/old_gnawbone.txt b/forge-gui/res/cardsfolder/o/old_gnawbone.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/old_gnawbone.txt rename to forge-gui/res/cardsfolder/o/old_gnawbone.txt diff --git a/forge-gui/res/cardsfolder/upcoming/orb_of_dragonkind.txt b/forge-gui/res/cardsfolder/o/orb_of_dragonkind.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/orb_of_dragonkind.txt rename to forge-gui/res/cardsfolder/o/orb_of_dragonkind.txt diff --git a/forge-gui/res/cardsfolder/upcoming/orcus_prince_of_undeath.txt b/forge-gui/res/cardsfolder/o/orcus_prince_of_undeath.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/orcus_prince_of_undeath.txt rename to forge-gui/res/cardsfolder/o/orcus_prince_of_undeath.txt diff --git a/forge-gui/res/cardsfolder/upcoming/oswald_fiddlebender.txt b/forge-gui/res/cardsfolder/o/oswald_fiddlebender.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/oswald_fiddlebender.txt rename to forge-gui/res/cardsfolder/o/oswald_fiddlebender.txt diff --git a/forge-gui/res/cardsfolder/upcoming/owlbear.txt b/forge-gui/res/cardsfolder/o/owlbear.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/owlbear.txt rename to forge-gui/res/cardsfolder/o/owlbear.txt diff --git a/forge-gui/res/cardsfolder/upcoming/+2_mace.txt b/forge-gui/res/cardsfolder/p/+2_mace.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/+2_mace.txt rename to forge-gui/res/cardsfolder/p/+2_mace.txt diff --git a/forge-gui/res/cardsfolder/upcoming/paladin_class.txt b/forge-gui/res/cardsfolder/p/paladin_class.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/paladin_class.txt rename to forge-gui/res/cardsfolder/p/paladin_class.txt diff --git a/forge-gui/res/cardsfolder/upcoming/paladins_shield.txt b/forge-gui/res/cardsfolder/p/paladins_shield.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/paladins_shield.txt rename to forge-gui/res/cardsfolder/p/paladins_shield.txt diff --git a/forge-gui/res/cardsfolder/upcoming/pixie_guide.txt b/forge-gui/res/cardsfolder/p/pixie_guide.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/pixie_guide.txt rename to forge-gui/res/cardsfolder/p/pixie_guide.txt diff --git a/forge-gui/res/cardsfolder/p/plague_of_vermin.txt b/forge-gui/res/cardsfolder/p/plague_of_vermin.txt index c124f930313..4e8e3870c91 100644 --- a/forge-gui/res/cardsfolder/p/plague_of_vermin.txt +++ b/forge-gui/res/cardsfolder/p/plague_of_vermin.txt @@ -1,17 +1,16 @@ Name:Plague of Vermin ManaCost:6 B Types:Sorcery -A:SP$ Effect | Cost$ 6 B | Name$ Plague of Vermin Life Paid | EffectOwner$ Player | ImprintOnHost$ True | Mutable$ True | Duration$ Permanent | SubAbility$ DBRepeat | StackDescription$ SpellDescription | SpellDescription$ Starting with you, each player may pay any amount of life. Repeat this process until no one pays life. Each player creates a 1/1 black Rat creature token for each 1 life they paid this way. +A:SP$ Effect | Cost$ 6 B | Name$ Plague of Vermin Life Paid | EffectOwner$ Player | ImprintOnHost$ True | Duration$ Permanent | SubAbility$ DBRepeat | StackDescription$ SpellDescription | SpellDescription$ Starting with you, each player may pay any amount of life. Repeat this process until no one pays life. Each player creates a 1/1 black Rat creature token for each 1 life they paid this way. SVar:DBRepeat:DB$ Repeat | RepeatSubAbility$ DBResetCheck | RepeatCheckSVar$ NumPlayerGiveup | RepeatSVarCompare$ LTTotalPlayer | SubAbility$ DBRepeatToken SVar:DBResetCheck:DB$ StoreSVar | SVar$ NumPlayerGiveup | Type$ Number | Expression$ 0 | SubAbility$ DBRepeatChoice SVar:DBRepeatChoice:DB$ RepeatEach | StartingWithActivator$ True | RepeatSubAbility$ DBChoice | RepeatPlayers$ Player SVar:DBChoice:DB$ ChooseNumber | Defined$ Player.IsRemembered | Max$ LifeTotal | AILogic$ Vermin | ListTitle$ Pay Any Amount of Life | SubAbility$ DBCheckPaid SVar:DBCheckPaid:DB$ StoreSVar | SVar$ NumPlayerGiveup | Type$ CountSVar | Expression$ NumPlayerGiveup/Plus.1 | ConditionCheckSVar$ X | ConditionSVarCompare$ EQ0 | SubAbility$ DBStore -SVar:DBStore:DB$ PutCounter | Defined$ Imprinted.namedPlague of Vermin Life Paid+OwnedBy Player.IsRemembered | CounterNum$ X | Placer$ Player.IsRemembered | CounterType$ PLAGUE | ConditionCheckSVar$ X | ConditionSVarCompare$ GE1 | UnlessCost$ PayLife | UnlessPayer$ Player.IsRemembered | UnlessSwitched$ True | UnlessResolveSubs$ WhenNotPaid | SubAbility$ DBGiveUp | SpellDescription$ You may pay any amount of life. +SVar:DBStore:DB$ PutCounter | Defined$ ValidCommand Effect.namedPlague of Vermin Life Paid+OwnedBy Player.IsRemembered | CounterNum$ X | Placer$ Player.IsRemembered | CounterType$ PLAGUE | ConditionCheckSVar$ X | ConditionSVarCompare$ GE1 | UnlessCost$ PayLife | UnlessPayer$ Player.IsRemembered | UnlessSwitched$ True | UnlessResolveSubs$ WhenNotPaid | SubAbility$ DBGiveUp | SpellDescription$ You may pay any amount of life. SVar:DBGiveUp:DB$ StoreSVar | SVar$ NumPlayerGiveup | Type$ CountSVar | Expression$ NumPlayerGiveup/Plus.1 | ConditionCheckSVar$ X | ConditionSVarCompare$ GE1 SVar:DBRepeatToken:DB$ RepeatEach | StartingWithActivator$ True | RepeatSubAbility$ DBToken | RepeatPlayers$ Player | SubAbility$ DBFinalReset -SVar:DBToken:DB$ Token | TokenAmount$ LifePaidAmount | TokenScript$ b_1_1_rat | TokenOwner$ Player.IsRemembered | StackDescription$ None | SubAbility$ DBRestoreImmutable -SVar:DBRestoreImmutable:DB$ Animate | Defined$ Imprinted.namedPlague of Vermin Life Paid+OwnedBy Player.IsRemembered | Duration$ Permanent | Immutable$ True +SVar:DBToken:DB$ Token | TokenAmount$ LifePaidAmount | TokenScript$ b_1_1_rat | TokenOwner$ Player.IsRemembered | StackDescription$ None SVar:DBFinalReset:DB$ StoreSVar | SVar$ NumPlayerGiveup | Type$ Number | Expression$ 0 | SubAbility$ DBExileEffect SVar:DBExileEffect:DB$ ChangeZone | Defined$ Imprinted | Origin$ Command | Destination$ Exile | SubAbility$ DBCleanup SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True | ClearImprinted$ True diff --git a/forge-gui/res/cardsfolder/upcoming/planar_ally.txt b/forge-gui/res/cardsfolder/p/planar_ally.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/planar_ally.txt rename to forge-gui/res/cardsfolder/p/planar_ally.txt diff --git a/forge-gui/res/cardsfolder/upcoming/plate_armor.txt b/forge-gui/res/cardsfolder/p/plate_armor.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/plate_armor.txt rename to forge-gui/res/cardsfolder/p/plate_armor.txt diff --git a/forge-gui/res/cardsfolder/upcoming/plundering_barbarian.txt b/forge-gui/res/cardsfolder/p/plundering_barbarian.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/plundering_barbarian.txt rename to forge-gui/res/cardsfolder/p/plundering_barbarian.txt diff --git a/forge-gui/res/cardsfolder/upcoming/potion_of_healing.txt b/forge-gui/res/cardsfolder/p/potion_of_healing.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/potion_of_healing.txt rename to forge-gui/res/cardsfolder/p/potion_of_healing.txt diff --git a/forge-gui/res/cardsfolder/upcoming/power_of_persuasion.txt b/forge-gui/res/cardsfolder/p/power_of_persuasion.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/power_of_persuasion.txt rename to forge-gui/res/cardsfolder/p/power_of_persuasion.txt diff --git a/forge-gui/res/cardsfolder/upcoming/precipitous_drop.txt b/forge-gui/res/cardsfolder/p/precipitous_drop.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/precipitous_drop.txt rename to forge-gui/res/cardsfolder/p/precipitous_drop.txt diff --git a/forge-gui/res/cardsfolder/upcoming/price_of_loyalty.txt b/forge-gui/res/cardsfolder/p/price_of_loyalty.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/price_of_loyalty.txt rename to forge-gui/res/cardsfolder/p/price_of_loyalty.txt diff --git a/forge-gui/res/cardsfolder/upcoming/priest_of_ancient_lore.txt b/forge-gui/res/cardsfolder/p/priest_of_ancient_lore.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/priest_of_ancient_lore.txt rename to forge-gui/res/cardsfolder/p/priest_of_ancient_lore.txt diff --git a/forge-gui/res/cardsfolder/upcoming/prosper_tome_bound.txt b/forge-gui/res/cardsfolder/p/prosper_tome_bound.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/prosper_tome_bound.txt rename to forge-gui/res/cardsfolder/p/prosper_tome_bound.txt diff --git a/forge-gui/res/cardsfolder/upcoming/purple_worm.txt b/forge-gui/res/cardsfolder/p/purple_worm.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/purple_worm.txt rename to forge-gui/res/cardsfolder/p/purple_worm.txt diff --git a/forge-gui/res/cardsfolder/upcoming/radiant_solar.txt b/forge-gui/res/cardsfolder/r/radiant_solar.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/radiant_solar.txt rename to forge-gui/res/cardsfolder/r/radiant_solar.txt diff --git a/forge-gui/res/cardsfolder/r/raging_river.txt b/forge-gui/res/cardsfolder/r/raging_river.txt index 4091cb62b91..ad6e1dafcfb 100644 --- a/forge-gui/res/cardsfolder/r/raging_river.txt +++ b/forge-gui/res/cardsfolder/r/raging_river.txt @@ -3,16 +3,16 @@ ManaCost:R R Types:Enchantment T:Mode$ AttackersDeclared | AttackingPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigRepeatDefender | TriggerDescription$ Whenever one or more creatures you control attack, each defending player divides all creatures without flying they control into a "left" pile and a "right" pile. Then, for each attacking creature you control, choose "left" or "right." That creature can't be blocked this combat except by creatures with flying and creatures in a pile with the chosen label. SVar:TrigRepeatDefender:DB$ RepeatEach | RepeatPlayers$ TriggeredAttackedTarget | RepeatSubAbility$ DBDefLeftEffect | SubAbility$ DBAtkLeftRight -SVar:DBDefLeftEffect:DB$ Effect | EffectOwner$ Remembered | Name$ Raging River Left | StaticAbilities$ DBCantBlock | ImprintOnHost$ True | Mutable$ True | Duration$ UntilEndOfCombat | SubAbility$ DBDefRightEffect -SVar:DBDefRightEffect:DB$ Effect | EffectOwner$ Remembered | Name$ Raging River Right | StaticAbilities$ DBCantBlock | ImprintOnHost$ True | Mutable$ True | Duration$ UntilEndOfCombat | SubAbility$ DBDefLeftRight +SVar:DBDefLeftEffect:DB$ Effect | EffectOwner$ Remembered | Name$ Raging River Left | StaticAbilities$ DBCantBlock | ImprintOnHost$ True | Duration$ UntilEndOfCombat | SubAbility$ DBDefRightEffect +SVar:DBDefRightEffect:DB$ Effect | EffectOwner$ Remembered | Name$ Raging River Right | StaticAbilities$ DBCantBlock | ImprintOnHost$ True | Duration$ UntilEndOfCombat | SubAbility$ DBDefLeftRight SVar:DBCantBlock:Mode$ CantBlockBy | ValidAttacker$ Creature.IsRemembered | ValidBlocker$ Creature.withoutFlying+IsNotImprinted+YouCtrl | EffectZone$ Command SVar:DBDefLeftRight:DB$ TwoPiles | Defined$ Remembered | Separator$ Remembered | ValidCards$ Creature.withoutFlying+RememberedPlayerCtrl | Zone$ Battlefield | LeftRightPile$ True | ChosenPile$ DBDefLeftPile | UnchosenPile$ DBDefRightPile | AILogic$ Random | SubAbility$ DBClearImprinted -SVar:DBDefLeftPile:DB$ Animate | Defined$ Imprinted.namedRaging River Left | ImprintCards$ Remembered | Duration$ Permanent | SubAbility$ DBLeftPump -SVar:DBDefRightPile:DB$ Animate | Defined$ Imprinted.namedRaging River Right | ImprintCards$ Remembered | Duration$ Permanent | SubAbility$ DBRightPump +SVar:DBDefLeftPile:DB$ Animate | Defined$ ValidCommand Effect.namedRaging River Left+IsImprinted | ImprintCards$ Remembered | Duration$ Permanent | SubAbility$ DBLeftPump +SVar:DBDefRightPile:DB$ Animate | Defined$ ValidCommand Effect.namedRaging River Right+IsImprinted | ImprintCards$ Remembered | Duration$ Permanent | SubAbility$ DBRightPump SVar:DBClearImprinted:DB$ Cleanup | ClearImprinted$ True SVar:DBAtkLeftRight:DB$ TwoPiles | Defined$ You | Separator$ You | ValidCards$ Creature.attacking+YouCtrl | Zone$ Battlefield | LeftRightPile$ True | ChosenPile$ DBAtkLeftPile | UnchosenPile$ DBAtkRightPile | AILogic$ Random | SubAbility$ DBCleanup -SVar:DBAtkLeftPile:DB$ Animate | Defined$ ValidCommand Effect.namedRaging River Left | RememberObjects$ RememberedCard | Duration$ Permanent | Immutable$ True | SubAbility$ DBLeftPump -SVar:DBAtkRightPile:DB$ Animate | Defined$ ValidCommand Effect.namedRaging River Right | RememberObjects$ RememberedCard | Duration$ Permanent | Immutable$ True | SubAbility$ DBRightPump +SVar:DBAtkLeftPile:DB$ Animate | Defined$ ValidCommand Effect.namedRaging River Left | RememberObjects$ RememberedCard | Duration$ Permanent | SubAbility$ DBLeftPump +SVar:DBAtkRightPile:DB$ Animate | Defined$ ValidCommand Effect.namedRaging River Right | RememberObjects$ RememberedCard | Duration$ Permanent | SubAbility$ DBRightPump SVar:DBLeftPump:DB$ Pump | Defined$ Remembered | KW$ "Left" pile | Duration$ UntilEndOfCombat SVar:DBRightPump:DB$ Pump | Defined$ Remembered | KW$ "Right" pile | Duration$ UntilEndOfCombat SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True diff --git a/forge-gui/res/cardsfolder/upcoming/rally_maneuver.txt b/forge-gui/res/cardsfolder/r/rally_maneuver.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/rally_maneuver.txt rename to forge-gui/res/cardsfolder/r/rally_maneuver.txt diff --git a/forge-gui/res/cardsfolder/upcoming/ranger_class.txt b/forge-gui/res/cardsfolder/r/ranger_class.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/ranger_class.txt rename to forge-gui/res/cardsfolder/r/ranger_class.txt diff --git a/forge-gui/res/cardsfolder/upcoming/rangers_hawk.txt b/forge-gui/res/cardsfolder/r/rangers_hawk.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/rangers_hawk.txt rename to forge-gui/res/cardsfolder/r/rangers_hawk.txt diff --git a/forge-gui/res/cardsfolder/upcoming/rangers_longbow.txt b/forge-gui/res/cardsfolder/r/rangers_longbow.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/rangers_longbow.txt rename to forge-gui/res/cardsfolder/r/rangers_longbow.txt diff --git a/forge-gui/res/cardsfolder/upcoming/ray_of_enfeeblement.txt b/forge-gui/res/cardsfolder/r/ray_of_enfeeblement.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/ray_of_enfeeblement.txt rename to forge-gui/res/cardsfolder/r/ray_of_enfeeblement.txt diff --git a/forge-gui/res/cardsfolder/upcoming/ray_of_frost.txt b/forge-gui/res/cardsfolder/r/ray_of_frost.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/ray_of_frost.txt rename to forge-gui/res/cardsfolder/r/ray_of_frost.txt diff --git a/forge-gui/res/cardsfolder/upcoming/reapers_talisman.txt b/forge-gui/res/cardsfolder/r/reapers_talisman.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/reapers_talisman.txt rename to forge-gui/res/cardsfolder/r/reapers_talisman.txt diff --git a/forge-gui/res/cardsfolder/r/reckless_endeavor.txt b/forge-gui/res/cardsfolder/r/reckless_endeavor.txt new file mode 100644 index 00000000000..9c413b20f96 --- /dev/null +++ b/forge-gui/res/cardsfolder/r/reckless_endeavor.txt @@ -0,0 +1,8 @@ +Name:Reckless Endeavor +ManaCost:5 R R +Types:Sorcery +A:SP$ RollDice | Amount$ 2 | Sides$ 12 | ChosenSVar$ X | OtherSVar$ Y | SubAbility$ DBDamageAll | StackDescription$ SpellDescription | SpellDescription$ Roll two d12 and choose one result. CARDNAME deals damage equal to that result to each creature. Then create a number of Treasure tokens equal to the other result. +SVar:DBDamageAll:DB$ DamageAll | ValidCards$ Creature | NumDmg$ X | SubAbility$ DBToken | StackDescription$ None +SVar:DBToken:DB$ Token | TokenAmount$ Y | TokenScript$ c_a_treasure_sac +DeckHas:Ability$Token & Ability$Sacrifice +Oracle:Roll two d12 and choose one result. Reckless Endeavor deals damage equal to that result to each creature. Then create a number of Treasure tokens equal to the other result. diff --git a/forge-gui/res/cardsfolder/upcoming/red_dragon.txt b/forge-gui/res/cardsfolder/r/red_dragon.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/red_dragon.txt rename to forge-gui/res/cardsfolder/r/red_dragon.txt diff --git a/forge-gui/res/cardsfolder/upcoming/revivify.txt b/forge-gui/res/cardsfolder/r/revivify.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/revivify.txt rename to forge-gui/res/cardsfolder/r/revivify.txt diff --git a/forge-gui/res/cardsfolder/upcoming/ride_the_avalanche.txt b/forge-gui/res/cardsfolder/r/ride_the_avalanche.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/ride_the_avalanche.txt rename to forge-gui/res/cardsfolder/r/ride_the_avalanche.txt diff --git a/forge-gui/res/cardsfolder/upcoming/rimeshield_frost_giant.txt b/forge-gui/res/cardsfolder/r/rimeshield_frost_giant.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/rimeshield_frost_giant.txt rename to forge-gui/res/cardsfolder/r/rimeshield_frost_giant.txt diff --git a/forge-gui/res/cardsfolder/r/robe_of_stars.txt b/forge-gui/res/cardsfolder/r/robe_of_stars.txt new file mode 100644 index 00000000000..e15c4341096 --- /dev/null +++ b/forge-gui/res/cardsfolder/r/robe_of_stars.txt @@ -0,0 +1,7 @@ +Name:Robe of Stars +ManaCost:1 W +Types:Artifact Equipment +K:Equip:1 +S:Mode$ Continuous | Affected$ Creature.EquippedBy | AddToughness$ 3 | Description$ Equipped creature gets +0/+3. +A:AB$ Phases | Cost$ 1 W | Defined$ Equipped | PrecostDesc$ Astral Projection — | SpellDescription$ Equipped creature phases out. +Oracle:Equipped creature gets +0/+3.\nAstral Projection — {1}{W}: Equipped creature phases out. (Treat it and anything attached to it as though they don't exist until its controller's next turn.)\nEquip {1} ({1}: Attach to target creature you control. Equip only as a sorcery.) diff --git a/forge-gui/res/cardsfolder/upcoming/rogue_class.txt b/forge-gui/res/cardsfolder/r/rogue_class.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/rogue_class.txt rename to forge-gui/res/cardsfolder/r/rogue_class.txt diff --git a/forge-gui/res/cardsfolder/upcoming/rust_monster.txt b/forge-gui/res/cardsfolder/r/rust_monster.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/rust_monster.txt rename to forge-gui/res/cardsfolder/r/rust_monster.txt diff --git a/forge-gui/res/cardsfolder/upcoming/scaled_herbalist.txt b/forge-gui/res/cardsfolder/s/scaled_herbalist.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/scaled_herbalist.txt rename to forge-gui/res/cardsfolder/s/scaled_herbalist.txt diff --git a/forge-gui/res/cardsfolder/upcoming/scion_of_stygia.txt b/forge-gui/res/cardsfolder/s/scion_of_stygia.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/scion_of_stygia.txt rename to forge-gui/res/cardsfolder/s/scion_of_stygia.txt diff --git a/forge-gui/res/cardsfolder/s/second_sunrise.txt b/forge-gui/res/cardsfolder/s/second_sunrise.txt index 20a3a92b110..e05814dbb39 100644 --- a/forge-gui/res/cardsfolder/s/second_sunrise.txt +++ b/forge-gui/res/cardsfolder/s/second_sunrise.txt @@ -1,5 +1,5 @@ Name:Second Sunrise ManaCost:1 W W Types:Instant -A:SP$ChangeZone | Cost$ 1 W W | Origin$ Graveyard | Destination$ Battlefield | Defined$ ValidGraveyard Artifact,Creature,Enchantment,Land.ThisTurnEnteredFrom_Battlefield | SpellDescription$ Each player returns to the battlefield all artifact, creature, enchantment, and land cards in their graveyard that were put there from the battlefield this turn. +A:SP$ChangeZone | Cost$ 1 W W | Origin$ Graveyard | Destination$ Battlefield | Defined$ ValidGraveyard Artifact.ThisTurnEnteredFrom_Battlefield,Creature.ThisTurnEnteredFrom_Battlefield,Enchantment.ThisTurnEnteredFrom_Battlefield,Land.ThisTurnEnteredFrom_Battlefield | SpellDescription$ Each player returns to the battlefield all artifact, creature, enchantment, and land cards in their graveyard that were put there from the battlefield this turn. Oracle:Each player returns to the battlefield all artifact, creature, enchantment, and land cards in their graveyard that were put there from the battlefield this turn. diff --git a/forge-gui/res/cardsfolder/upcoming/secret_door.txt b/forge-gui/res/cardsfolder/s/secret_door.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/secret_door.txt rename to forge-gui/res/cardsfolder/s/secret_door.txt diff --git a/forge-gui/res/cardsfolder/upcoming/sefris_of_the_hidden_ways.txt b/forge-gui/res/cardsfolder/s/sefris_of_the_hidden_ways.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/sefris_of_the_hidden_ways.txt rename to forge-gui/res/cardsfolder/s/sefris_of_the_hidden_ways.txt diff --git a/forge-gui/res/cardsfolder/upcoming/sepulcher_ghoul.txt b/forge-gui/res/cardsfolder/s/sepulcher_ghoul.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/sepulcher_ghoul.txt rename to forge-gui/res/cardsfolder/s/sepulcher_ghoul.txt diff --git a/forge-gui/res/cardsfolder/upcoming/shambling_ghast.txt b/forge-gui/res/cardsfolder/s/shambling_ghast.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/shambling_ghast.txt rename to forge-gui/res/cardsfolder/s/shambling_ghast.txt diff --git a/forge-gui/res/cardsfolder/upcoming/shessra_deaths_whisper.txt b/forge-gui/res/cardsfolder/s/shessra_deaths_whisper.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/shessra_deaths_whisper.txt rename to forge-gui/res/cardsfolder/s/shessra_deaths_whisper.txt diff --git a/forge-gui/res/cardsfolder/upcoming/shocking_grasp.txt b/forge-gui/res/cardsfolder/s/shocking_grasp.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/shocking_grasp.txt rename to forge-gui/res/cardsfolder/s/shocking_grasp.txt diff --git a/forge-gui/res/cardsfolder/upcoming/shortcut_seeker.txt b/forge-gui/res/cardsfolder/s/shortcut_seeker.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/shortcut_seeker.txt rename to forge-gui/res/cardsfolder/s/shortcut_seeker.txt diff --git a/forge-gui/res/cardsfolder/upcoming/silver_raven.txt b/forge-gui/res/cardsfolder/s/silver_raven.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/silver_raven.txt rename to forge-gui/res/cardsfolder/s/silver_raven.txt diff --git a/forge-gui/res/cardsfolder/upcoming/skeletal_swarming.txt b/forge-gui/res/cardsfolder/s/skeletal_swarming.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/skeletal_swarming.txt rename to forge-gui/res/cardsfolder/s/skeletal_swarming.txt diff --git a/forge-gui/res/cardsfolder/upcoming/skullport_merchant.txt b/forge-gui/res/cardsfolder/s/skullport_merchant.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/skullport_merchant.txt rename to forge-gui/res/cardsfolder/s/skullport_merchant.txt diff --git a/forge-gui/res/cardsfolder/upcoming/song_of_inspiration.txt b/forge-gui/res/cardsfolder/s/song_of_inspiration.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/song_of_inspiration.txt rename to forge-gui/res/cardsfolder/s/song_of_inspiration.txt diff --git a/forge-gui/res/cardsfolder/upcoming/sorcerer_class.txt b/forge-gui/res/cardsfolder/s/sorcerer_class.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/sorcerer_class.txt rename to forge-gui/res/cardsfolder/s/sorcerer_class.txt diff --git a/forge-gui/res/cardsfolder/upcoming/soulknife_spy.txt b/forge-gui/res/cardsfolder/s/soulknife_spy.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/soulknife_spy.txt rename to forge-gui/res/cardsfolder/s/soulknife_spy.txt diff --git a/forge-gui/res/cardsfolder/upcoming/spare_dagger.txt b/forge-gui/res/cardsfolder/s/spare_dagger.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/spare_dagger.txt rename to forge-gui/res/cardsfolder/s/spare_dagger.txt diff --git a/forge-gui/res/cardsfolder/upcoming/sphere_of_annihilation.txt b/forge-gui/res/cardsfolder/s/sphere_of_annihilation.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/sphere_of_annihilation.txt rename to forge-gui/res/cardsfolder/s/sphere_of_annihilation.txt diff --git a/forge-gui/res/cardsfolder/upcoming/spiked_pit_trap.txt b/forge-gui/res/cardsfolder/s/spiked_pit_trap.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/spiked_pit_trap.txt rename to forge-gui/res/cardsfolder/s/spiked_pit_trap.txt diff --git a/forge-gui/res/cardsfolder/upcoming/split_the_party.txt b/forge-gui/res/cardsfolder/s/split_the_party.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/split_the_party.txt rename to forge-gui/res/cardsfolder/s/split_the_party.txt diff --git a/forge-gui/res/cardsfolder/upcoming/spoils_of_the_hunt.txt b/forge-gui/res/cardsfolder/s/spoils_of_the_hunt.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/spoils_of_the_hunt.txt rename to forge-gui/res/cardsfolder/s/spoils_of_the_hunt.txt diff --git a/forge-gui/res/cardsfolder/upcoming/steadfast_paladin.txt b/forge-gui/res/cardsfolder/s/steadfast_paladin.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/steadfast_paladin.txt rename to forge-gui/res/cardsfolder/s/steadfast_paladin.txt diff --git a/forge-gui/res/cardsfolder/upcoming/storvald_frost_giant_jarl.txt b/forge-gui/res/cardsfolder/s/storvald_frost_giant_jarl.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/storvald_frost_giant_jarl.txt rename to forge-gui/res/cardsfolder/s/storvald_frost_giant_jarl.txt diff --git a/forge-gui/res/cardsfolder/upcoming/sudden_insight.txt b/forge-gui/res/cardsfolder/s/sudden_insight.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/sudden_insight.txt rename to forge-gui/res/cardsfolder/s/sudden_insight.txt diff --git a/forge-gui/res/cardsfolder/upcoming/swarming_goblins.txt b/forge-gui/res/cardsfolder/s/swarming_goblins.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/swarming_goblins.txt rename to forge-gui/res/cardsfolder/s/swarming_goblins.txt diff --git a/forge-gui/res/cardsfolder/upcoming/sword_of_hours.txt b/forge-gui/res/cardsfolder/s/sword_of_hours.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/sword_of_hours.txt rename to forge-gui/res/cardsfolder/s/sword_of_hours.txt diff --git a/forge-gui/res/cardsfolder/upcoming/sylvan_shepherd.txt b/forge-gui/res/cardsfolder/s/sylvan_shepherd.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/sylvan_shepherd.txt rename to forge-gui/res/cardsfolder/s/sylvan_shepherd.txt diff --git a/forge-gui/res/cardsfolder/upcoming/targ_nar_demon_fang_gnoll.txt b/forge-gui/res/cardsfolder/t/targ_nar_demon_fang_gnoll.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/targ_nar_demon_fang_gnoll.txt rename to forge-gui/res/cardsfolder/t/targ_nar_demon_fang_gnoll.txt diff --git a/forge-gui/res/cardsfolder/upcoming/tashas_hideous_laughter.txt b/forge-gui/res/cardsfolder/t/tashas_hideous_laughter.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/tashas_hideous_laughter.txt rename to forge-gui/res/cardsfolder/t/tashas_hideous_laughter.txt diff --git a/forge-gui/res/cardsfolder/upcoming/teleportation_circle.txt b/forge-gui/res/cardsfolder/t/teleportation_circle.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/teleportation_circle.txt rename to forge-gui/res/cardsfolder/t/teleportation_circle.txt diff --git a/forge-gui/res/cardsfolder/upcoming/temple_of_the_dragon_queen.txt b/forge-gui/res/cardsfolder/t/temple_of_the_dragon_queen.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/temple_of_the_dragon_queen.txt rename to forge-gui/res/cardsfolder/t/temple_of_the_dragon_queen.txt diff --git a/forge-gui/res/cardsfolder/upcoming/the_blackstaff_of_waterdeep.txt b/forge-gui/res/cardsfolder/t/the_blackstaff_of_waterdeep.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/the_blackstaff_of_waterdeep.txt rename to forge-gui/res/cardsfolder/t/the_blackstaff_of_waterdeep.txt diff --git a/forge-gui/res/cardsfolder/upcoming/the_book_of_exalted_deeds.txt b/forge-gui/res/cardsfolder/t/the_book_of_exalted_deeds.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/the_book_of_exalted_deeds.txt rename to forge-gui/res/cardsfolder/t/the_book_of_exalted_deeds.txt diff --git a/forge-gui/res/cardsfolder/upcoming/the_book_of_vile_darkness.txt b/forge-gui/res/cardsfolder/t/the_book_of_vile_darkness.txt similarity index 61% rename from forge-gui/res/cardsfolder/upcoming/the_book_of_vile_darkness.txt rename to forge-gui/res/cardsfolder/t/the_book_of_vile_darkness.txt index aa4327b7466..48a546bbca6 100644 --- a/forge-gui/res/cardsfolder/upcoming/the_book_of_vile_darkness.txt +++ b/forge-gui/res/cardsfolder/t/the_book_of_vile_darkness.txt @@ -4,9 +4,8 @@ Types:Legendary Artifact T:Mode$ Phase | Phase$ End of Turn | ValidPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigToken | CheckSVar$ X | SVarCompare$ GE2 | TriggerDescription$ At the beginning of your end step, if you lost 2 or more life this turn, create a 2/2 black Zombie creature token. SVar:TrigToken:DB$ Token | TokenScript$ b_2_2_zombie SVar:X:PlayerCountPropertyYou$LifeLostThisTurn -A:AB$ Token | Cost$ T Exile<1/CARDNAME> Exile<1/Artifact.YouCtrl+namedEye of Vecna> Exile<1/Artifact.YouCtrl+namedHand of Vecna> | RememberCostCards$ True | ImprintTokens$ True | CostDesc$ {T}, Exile CARDNAME and artifacts you control named Eye of Vecna and Hand of Vecna: | TokenScript$ vecna | SubAbility$ DBAnimate | SpellDescription$ Create Vecna, a legendary 8/8 black Zombie God creature token with indestructible. It gains all triggered abilities of the exiled cards. -SVar:DBAnimate:DB$ Animate | Defined$ Imprinted | Duration$ Permanent | GainsTriggeredAbilitiesOf$ Remembered +A:AB$ Token | Cost$ T Exile<1/CARDNAME> Exile<1/Artifact.YouCtrl+namedEye of Vecna> Exile<1/Artifact.YouCtrl+namedHand of Vecna> | CostDesc$ {T}, Exile CARDNAME and artifacts you control named Eye of Vecna and Hand of Vecna: | TokenScript$ vecna | AddTriggersFrom$ ExiledCards | SpellDescription$ Create Vecna, a legendary 8/8 black Zombie God creature token with indestructible and all triggered abilities of the exiled cards. DeckHas:Ability$Token DeckHints:Type$Zombie DeckHints:Name$Eye of Vecna|Hand of Vecna -Oracle:At the beginning of your end step, if you lost 2 or more life this turn, create a 2/2 black Zombie creature token.\n{T}, Exile The Book of Vile Darkness and artifacts you control named Eye of Vecna and Hand of Vecna: Create Vecna, a legendary 8/8 black Zombie God creature token with indestructible. It gains all triggered abilities of the exiled cards. +Oracle:At the beginning of your end step, if you lost 2 or more life this turn, create a 2/2 black Zombie creature token.\n{T}, Exile The Book of Vile Darkness and artifacts you control named Eye of Vecna and Hand of Vecna: Create Vecna, a legendary 8/8 black Zombie God creature token with indestructible and all triggered abilities of the exiled cards. diff --git a/forge-gui/res/cardsfolder/upcoming/the_deck_of_many_things.txt b/forge-gui/res/cardsfolder/t/the_deck_of_many_things.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/the_deck_of_many_things.txt rename to forge-gui/res/cardsfolder/t/the_deck_of_many_things.txt diff --git a/forge-gui/res/cardsfolder/upcoming/the_tarrasque.txt b/forge-gui/res/cardsfolder/t/the_tarrasque.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/the_tarrasque.txt rename to forge-gui/res/cardsfolder/t/the_tarrasque.txt diff --git a/forge-gui/res/cardsfolder/upcoming/thieves_tools.txt b/forge-gui/res/cardsfolder/t/thieves_tools.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/thieves_tools.txt rename to forge-gui/res/cardsfolder/t/thieves_tools.txt diff --git a/forge-gui/res/cardsfolder/upcoming/tiger_tribe_hunter.txt b/forge-gui/res/cardsfolder/t/tiger_tribe_hunter.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/tiger_tribe_hunter.txt rename to forge-gui/res/cardsfolder/t/tiger_tribe_hunter.txt diff --git a/forge-gui/res/cardsfolder/upcoming/tomb_of_annihilation.txt b/forge-gui/res/cardsfolder/t/tomb_of_annihilation.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/tomb_of_annihilation.txt rename to forge-gui/res/cardsfolder/t/tomb_of_annihilation.txt diff --git a/forge-gui/res/cardsfolder/upcoming/treasure_chest.txt b/forge-gui/res/cardsfolder/t/treasure_chest.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/treasure_chest.txt rename to forge-gui/res/cardsfolder/t/treasure_chest.txt diff --git a/forge-gui/res/cardsfolder/upcoming/treasure_vault.txt b/forge-gui/res/cardsfolder/t/treasure_vault.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/treasure_vault.txt rename to forge-gui/res/cardsfolder/t/treasure_vault.txt diff --git a/forge-gui/res/cardsfolder/upcoming/trelasarra_moon_dancer.txt b/forge-gui/res/cardsfolder/t/trelasarra_moon_dancer.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/trelasarra_moon_dancer.txt rename to forge-gui/res/cardsfolder/t/trelasarra_moon_dancer.txt diff --git a/forge-gui/res/cardsfolder/upcoming/tricksters_talisman.txt b/forge-gui/res/cardsfolder/t/tricksters_talisman.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/tricksters_talisman.txt rename to forge-gui/res/cardsfolder/t/tricksters_talisman.txt diff --git a/forge-gui/res/cardsfolder/upcoming/triumphant_adventurer.txt b/forge-gui/res/cardsfolder/t/triumphant_adventurer.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/triumphant_adventurer.txt rename to forge-gui/res/cardsfolder/t/triumphant_adventurer.txt diff --git a/forge-gui/res/cardsfolder/upcoming/true_polymorph.txt b/forge-gui/res/cardsfolder/t/true_polymorph.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/true_polymorph.txt rename to forge-gui/res/cardsfolder/t/true_polymorph.txt diff --git a/forge-gui/res/cardsfolder/upcoming/underdark_basilisk.txt b/forge-gui/res/cardsfolder/u/underdark_basilisk.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/underdark_basilisk.txt rename to forge-gui/res/cardsfolder/u/underdark_basilisk.txt diff --git a/forge-gui/res/cardsfolder/upcoming/underdark_rift.txt b/forge-gui/res/cardsfolder/u/underdark_rift.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/underdark_rift.txt rename to forge-gui/res/cardsfolder/u/underdark_rift.txt diff --git a/forge-gui/res/cardsfolder/upcoming/unexpected_windfall.txt b/forge-gui/res/cardsfolder/u/unexpected_windfall.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/unexpected_windfall.txt rename to forge-gui/res/cardsfolder/u/unexpected_windfall.txt diff --git a/forge-gui/res/cardsfolder/upcoming/valiant_endeavor.txt b/forge-gui/res/cardsfolder/v/valiant_endeavor.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/valiant_endeavor.txt rename to forge-gui/res/cardsfolder/v/valiant_endeavor.txt diff --git a/forge-gui/res/cardsfolder/upcoming/valor_singer.txt b/forge-gui/res/cardsfolder/v/valor_singer.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/valor_singer.txt rename to forge-gui/res/cardsfolder/v/valor_singer.txt diff --git a/forge-gui/res/cardsfolder/upcoming/vampire_spawn.txt b/forge-gui/res/cardsfolder/v/vampire_spawn.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/vampire_spawn.txt rename to forge-gui/res/cardsfolder/v/vampire_spawn.txt diff --git a/forge-gui/res/cardsfolder/upcoming/varis_silverymoon_ranger.txt b/forge-gui/res/cardsfolder/v/varis_silverymoon_ranger.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/varis_silverymoon_ranger.txt rename to forge-gui/res/cardsfolder/v/varis_silverymoon_ranger.txt diff --git a/forge-gui/res/cardsfolder/upcoming/veteran_dungeoneer.txt b/forge-gui/res/cardsfolder/v/veteran_dungeoneer.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/veteran_dungeoneer.txt rename to forge-gui/res/cardsfolder/v/veteran_dungeoneer.txt diff --git a/forge-gui/res/cardsfolder/upcoming/volo_guide_to_monsters.txt b/forge-gui/res/cardsfolder/v/volo_guide_to_monsters.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/volo_guide_to_monsters.txt rename to forge-gui/res/cardsfolder/v/volo_guide_to_monsters.txt diff --git a/forge-gui/res/cardsfolder/upcoming/vrondiss_rage_of_ancients.txt b/forge-gui/res/cardsfolder/v/vrondiss_rage_of_ancients.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/vrondiss_rage_of_ancients.txt rename to forge-gui/res/cardsfolder/v/vrondiss_rage_of_ancients.txt diff --git a/forge-gui/res/cardsfolder/upcoming/wandering_troubadour.txt b/forge-gui/res/cardsfolder/w/wandering_troubadour.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/wandering_troubadour.txt rename to forge-gui/res/cardsfolder/w/wandering_troubadour.txt diff --git a/forge-gui/res/cardsfolder/upcoming/warlock_class.txt b/forge-gui/res/cardsfolder/w/warlock_class.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/warlock_class.txt rename to forge-gui/res/cardsfolder/w/warlock_class.txt diff --git a/forge-gui/res/cardsfolder/upcoming/werewolf_pack_leader.txt b/forge-gui/res/cardsfolder/w/werewolf_pack_leader.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/werewolf_pack_leader.txt rename to forge-gui/res/cardsfolder/w/werewolf_pack_leader.txt diff --git a/forge-gui/res/cardsfolder/upcoming/westgate_regent.txt b/forge-gui/res/cardsfolder/w/westgate_regent.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/westgate_regent.txt rename to forge-gui/res/cardsfolder/w/westgate_regent.txt diff --git a/forge-gui/res/cardsfolder/upcoming/white_dragon.txt b/forge-gui/res/cardsfolder/w/white_dragon.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/white_dragon.txt rename to forge-gui/res/cardsfolder/w/white_dragon.txt diff --git a/forge-gui/res/cardsfolder/upcoming/wight.txt b/forge-gui/res/cardsfolder/w/wight.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/wight.txt rename to forge-gui/res/cardsfolder/w/wight.txt diff --git a/forge-gui/res/cardsfolder/w/wild_endeavor.txt b/forge-gui/res/cardsfolder/w/wild_endeavor.txt new file mode 100644 index 00000000000..c777509bae9 --- /dev/null +++ b/forge-gui/res/cardsfolder/w/wild_endeavor.txt @@ -0,0 +1,8 @@ +Name:Wild Endeavor +ManaCost:4 G G +Types:Sorcery +A:SP$ RollDice | Amount$ 2 | Sides$ 4 | ChosenSVar$ X | OtherSVar$ Y | SubAbility$ DBToken | StackDescription$ SpellDescription | SpellDescription$ Roll two d4 and choose one result. Create a number of 3/3 green Beast creature tokens equal to that result. Then search your library for a number of basic land cards equal to the other result, put them onto the battlefield tapped, then shuffle. +SVar:DBToken:DB$ Token | TokenAmount$ X | TokenScript$ g_3_3_beast | SubAbility$ DBChangeZone +SVar:DBChangeZone:DB$ ChangeZone | Origin$ Library | ChangeNum$ Y | ChangeType$ Land.Basic | Destination$ Battlefield | Tapped$ True | StackDescription$ None +DeckHas:Ability$Token +Oracle:Roll two d4 and choose one result. Create a number of 3/3 green Beast creature tokens equal to that result. Then search your library for a number of basic land cards equal to the other result, put them onto the battlefield tapped, then shuffle. diff --git a/forge-gui/res/cardsfolder/upcoming/wild_magic_sorceror.txt b/forge-gui/res/cardsfolder/w/wild_magic_sorceror.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/wild_magic_sorceror.txt rename to forge-gui/res/cardsfolder/w/wild_magic_sorceror.txt diff --git a/forge-gui/res/cardsfolder/upcoming/wild_shape.txt b/forge-gui/res/cardsfolder/w/wild_shape.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/wild_shape.txt rename to forge-gui/res/cardsfolder/w/wild_shape.txt diff --git a/forge-gui/res/cardsfolder/upcoming/wish.txt b/forge-gui/res/cardsfolder/w/wish.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/wish.txt rename to forge-gui/res/cardsfolder/w/wish.txt diff --git a/forge-gui/res/cardsfolder/upcoming/wizard_class.txt b/forge-gui/res/cardsfolder/w/wizard_class.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/wizard_class.txt rename to forge-gui/res/cardsfolder/w/wizard_class.txt diff --git a/forge-gui/res/cardsfolder/upcoming/wizards_spellbook.txt b/forge-gui/res/cardsfolder/w/wizards_spellbook.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/wizards_spellbook.txt rename to forge-gui/res/cardsfolder/w/wizards_spellbook.txt diff --git a/forge-gui/res/cardsfolder/w/wulfgar_of_icewind_dale.txt b/forge-gui/res/cardsfolder/w/wulfgar_of_icewind_dale.txt new file mode 100644 index 00000000000..217b878bbc4 --- /dev/null +++ b/forge-gui/res/cardsfolder/w/wulfgar_of_icewind_dale.txt @@ -0,0 +1,7 @@ +Name:Wulfgar of Icewind Dale +ManaCost:3 R G +Types:Legendary Creature Human Barbarian +PT:4/4 +K:Melee +S:Mode$ Panharmonicon | ValidMode$ Attacks,AttackersDeclared,AttackersDeclaredOneTarget | ValidCard$ Permanent.YouCtrl | ValidCause$ Creature.YouCtrl | Description$ If a creature you control attacking would cause a triggered ability of a permanent you control to trigger, that ability triggers an additional time. +Oracle:Melee (Whenever this creature attacks, it gets +1/+1 until end of turn for each opponent you attacked this combat.)\nIf a creature you control attacking would cause a triggered ability of a permanent you control to trigger, that ability triggers an additional time. diff --git a/forge-gui/res/cardsfolder/upcoming/xanathar_guild_kingpin.txt b/forge-gui/res/cardsfolder/x/xanathar_guild_kingpin.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/xanathar_guild_kingpin.txt rename to forge-gui/res/cardsfolder/x/xanathar_guild_kingpin.txt diff --git a/forge-gui/res/cardsfolder/upcoming/xorn.txt b/forge-gui/res/cardsfolder/x/xorn.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/xorn.txt rename to forge-gui/res/cardsfolder/x/xorn.txt diff --git a/forge-gui/res/cardsfolder/upcoming/you_come_to_a_gnoll_camp.txt b/forge-gui/res/cardsfolder/y/you_come_to_a_gnoll_camp.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/you_come_to_a_gnoll_camp.txt rename to forge-gui/res/cardsfolder/y/you_come_to_a_gnoll_camp.txt diff --git a/forge-gui/res/cardsfolder/upcoming/you_come_to_a_river.txt b/forge-gui/res/cardsfolder/y/you_come_to_a_river.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/you_come_to_a_river.txt rename to forge-gui/res/cardsfolder/y/you_come_to_a_river.txt diff --git a/forge-gui/res/cardsfolder/upcoming/you_find_a_cursed_idol.txt b/forge-gui/res/cardsfolder/y/you_find_a_cursed_idol.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/you_find_a_cursed_idol.txt rename to forge-gui/res/cardsfolder/y/you_find_a_cursed_idol.txt diff --git a/forge-gui/res/cardsfolder/upcoming/you_find_some_prisoners.txt b/forge-gui/res/cardsfolder/y/you_find_some_prisoners.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/you_find_some_prisoners.txt rename to forge-gui/res/cardsfolder/y/you_find_some_prisoners.txt diff --git a/forge-gui/res/cardsfolder/upcoming/you_find_the_villains_lair.txt b/forge-gui/res/cardsfolder/y/you_find_the_villains_lair.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/you_find_the_villains_lair.txt rename to forge-gui/res/cardsfolder/y/you_find_the_villains_lair.txt diff --git a/forge-gui/res/cardsfolder/upcoming/you_happen_on_a_glade.txt b/forge-gui/res/cardsfolder/y/you_happen_on_a_glade.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/you_happen_on_a_glade.txt rename to forge-gui/res/cardsfolder/y/you_happen_on_a_glade.txt diff --git a/forge-gui/res/cardsfolder/upcoming/you_hear_something_on_watch.txt b/forge-gui/res/cardsfolder/y/you_hear_something_on_watch.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/you_hear_something_on_watch.txt rename to forge-gui/res/cardsfolder/y/you_hear_something_on_watch.txt diff --git a/forge-gui/res/cardsfolder/upcoming/you_meet_in_a_tavern.txt b/forge-gui/res/cardsfolder/y/you_meet_in_a_tavern.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/you_meet_in_a_tavern.txt rename to forge-gui/res/cardsfolder/y/you_meet_in_a_tavern.txt diff --git a/forge-gui/res/cardsfolder/upcoming/you_see_a_guard_approach.txt b/forge-gui/res/cardsfolder/y/you_see_a_guard_approach.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/you_see_a_guard_approach.txt rename to forge-gui/res/cardsfolder/y/you_see_a_guard_approach.txt diff --git a/forge-gui/res/cardsfolder/upcoming/you_see_a_pair_of_goblins.txt b/forge-gui/res/cardsfolder/y/you_see_a_pair_of_goblins.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/you_see_a_pair_of_goblins.txt rename to forge-gui/res/cardsfolder/y/you_see_a_pair_of_goblins.txt diff --git a/forge-gui/res/cardsfolder/upcoming/youre_ambushed_on_the_road.txt b/forge-gui/res/cardsfolder/y/youre_ambushed_on_the_road.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/youre_ambushed_on_the_road.txt rename to forge-gui/res/cardsfolder/y/youre_ambushed_on_the_road.txt diff --git a/forge-gui/res/cardsfolder/upcoming/yuan_ti_fang_blade.txt b/forge-gui/res/cardsfolder/y/yuan_ti_fang_blade.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/yuan_ti_fang_blade.txt rename to forge-gui/res/cardsfolder/y/yuan_ti_fang_blade.txt diff --git a/forge-gui/res/cardsfolder/upcoming/yuan_ti_malison.txt b/forge-gui/res/cardsfolder/y/yuan_ti_malison.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/yuan_ti_malison.txt rename to forge-gui/res/cardsfolder/y/yuan_ti_malison.txt diff --git a/forge-gui/res/cardsfolder/upcoming/zalto_fire_giant_duke.txt b/forge-gui/res/cardsfolder/z/zalto_fire_giant_duke.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/zalto_fire_giant_duke.txt rename to forge-gui/res/cardsfolder/z/zalto_fire_giant_duke.txt diff --git a/forge-gui/res/cardsfolder/upcoming/zariel_archduke_of_avernus.txt b/forge-gui/res/cardsfolder/z/zariel_archduke_of_avernus.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/zariel_archduke_of_avernus.txt rename to forge-gui/res/cardsfolder/z/zariel_archduke_of_avernus.txt diff --git a/forge-gui/res/cardsfolder/upcoming/zombie_ogre.txt b/forge-gui/res/cardsfolder/z/zombie_ogre.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/zombie_ogre.txt rename to forge-gui/res/cardsfolder/z/zombie_ogre.txt diff --git a/forge-gui/res/editions/Dungeons & Dragons Adventures in the Forgotten Realms Commander.txt b/forge-gui/res/editions/Dungeons & Dragons Adventures in the Forgotten Realms Commander.txt index 3c801c122a3..ee92cf8b3c9 100644 --- a/forge-gui/res/editions/Dungeons & Dragons Adventures in the Forgotten Realms Commander.txt +++ b/forge-gui/res/editions/Dungeons & Dragons Adventures in the Forgotten Realms Commander.txt @@ -348,6 +348,6 @@ g_1_1_saproling g_3_3_beast r_5_5_dragon_flying rg_5_4_dragon_spirit_damagesac -u_1_1_illusion +u_1_1_illusion_other_illusions w_2_2 knight_vigilance w_4_4_angel_flying diff --git a/forge-gui/res/tokenscripts/u_1_1_illusion_other_illusions.txt b/forge-gui/res/tokenscripts/u_1_1_illusion_other_illusions.txt new file mode 100644 index 00000000000..058300289ea --- /dev/null +++ b/forge-gui/res/tokenscripts/u_1_1_illusion_other_illusions.txt @@ -0,0 +1,8 @@ +Name:Illusion +ManaCost:no cost +Types:Creature Illusion +Colors:blue +PT:1/1 +S:Mode$ Continuous | Affected$ Card.Self | AddPower$ X | Description$ This creature gets +1/+0 for each other Illusion you control. +SVar:X:Count$Valid Illusion.Other+YouCtrl +Oracle:This creature gets +1/+0 for each other Illusion you control. diff --git a/forge-gui/src/main/java/forge/gamemodes/puzzle/Puzzle.java b/forge-gui/src/main/java/forge/gamemodes/puzzle/Puzzle.java index 82c6ee6dc32..d4b34e04c56 100644 --- a/forge-gui/src/main/java/forge/gamemodes/puzzle/Puzzle.java +++ b/forge-gui/src/main/java/forge/gamemodes/puzzle/Puzzle.java @@ -121,7 +121,7 @@ public class Puzzle extends GameState implements InventoryItem, Comparable