diff --git a/forge-ai/src/main/java/forge/ai/ability/SetStateAi.java b/forge-ai/src/main/java/forge/ai/ability/SetStateAi.java index ea48f35905b..cd37f3ee3df 100644 --- a/forge-ai/src/main/java/forge/ai/ability/SetStateAi.java +++ b/forge-ai/src/main/java/forge/ai/ability/SetStateAi.java @@ -33,7 +33,7 @@ public class SetStateAi extends SpellAbilityAi { // turning face is most likely okay // TODO only do this at beneficial moment (e.g. surprise during combat or morph trigger), might want to reserve mana to protect them from easy removal - if ("TurnFace".equals(mode)) { + if ("TurnFaceUp".equals(mode) || "TurnFaceDown".equals(mode)) { return true; } @@ -103,7 +103,7 @@ public class SetStateAi extends SpellAbilityAi { return sa.isMinTargetChosen(); } - } else if ("TurnFace".equals(mode)) { + } else if ("TurnFaceUp".equals(mode) || "TurnFaceDown".equals(mode)) { if (sa.usesTargeting()) { sa.resetTargets(); @@ -114,7 +114,7 @@ public class SetStateAi extends SpellAbilityAi { } for (final Card c : list) { - if (shouldTurnFace(c, ai, ph) || "Always".equals(logic)) { + if (shouldTurnFace(c, ai, ph, mode) || "Always".equals(logic)) { sa.getTargets().add(c); if (!sa.canAddMoreTarget()) { break; @@ -128,7 +128,7 @@ public class SetStateAi extends SpellAbilityAi { if (list.isEmpty()) { return false; } - return shouldTurnFace(list.get(0), ai, ph) || "Always".equals(logic); + return shouldTurnFace(list.get(0), ai, ph, mode) || "Always".equals(logic); } } return true; @@ -150,8 +150,11 @@ public class SetStateAi extends SpellAbilityAi { return compareCards(card, transformed, ai, ph); } - private boolean shouldTurnFace(Card card, Player ai, PhaseHandler ph) { + private boolean shouldTurnFace(Card card, Player ai, PhaseHandler ph, String mode) { if (card.isFaceDown()) { + if ("TurnFaceDown".equals(mode)) { + return false; + } // hidden agenda if (card.getState(CardStateName.Original).hasIntrinsicKeyword("Hidden agenda") && card.isInZone(ZoneType.Command)) { @@ -169,6 +172,9 @@ public class SetStateAi extends SpellAbilityAi { return false; } } else { + if ("TurnFaceUp".equals(mode)) { + return false; + } // doublefaced or meld cards can't be turned face down if (card.isTransformable() || card.isMeldable()) { return false; diff --git a/forge-game/src/main/java/forge/game/ability/effects/PlayEffect.java b/forge-game/src/main/java/forge/game/ability/effects/PlayEffect.java index 0c1b470822b..793e05cfb6c 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/PlayEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/PlayEffect.java @@ -564,7 +564,7 @@ public class PlayEffect extends SpellAbilityEffect { "Event$ DealtDamage | ValidCard$ Card.IsRemembered+faceDown", "Event$ Tap | ValidCard$ Card.IsRemembered+faceDown" }; - String effect = "DB$ SetState | Defined$ ReplacedCard | Mode$ TurnFace"; + String effect = "DB$ SetState | Defined$ ReplacedCard | Mode$ TurnFaceUp"; for (int i = 0; i < 3; ++i) { ReplacementEffect re = ReplacementHandler.parseReplacement(repeffstrs[i], eff, true); diff --git a/forge-game/src/main/java/forge/game/ability/effects/SetStateEffect.java b/forge-game/src/main/java/forge/game/ability/effects/SetStateEffect.java index a238179ddce..23226c3a551 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/SetStateEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/SetStateEffect.java @@ -91,13 +91,13 @@ public class SetStateEffect extends SpellAbilityEffect { // Cards which are not on the battlefield should not be able to transform. // TurnFace should be allowed in other zones like Exile too // Specialize and Unspecialize are allowed in other zones - if (!"TurnFace".equals(mode) && !"Unspecialize".equals(mode) && !"Specialize".equals(mode) + if (!"TurnFaceUp".equals(mode) && !"TurnFaceDown".equals(mode) && !"Unspecialize".equals(mode) && !"Specialize".equals(mode) && !gameCard.isInPlay() && !sa.hasParam("ETB")) { continue; } // facedown cards that are not Permanent, can't turn faceup there - if ("TurnFace".equals(mode) && gameCard.isFaceDown() && gameCard.isInPlay()) { + if ("TurnFaceUp".equals(mode) && gameCard.isFaceDown() && gameCard.isInPlay()) { if (gameCard.hasMergedCard()) { boolean hasNonPermanent = false; Card nonPermanentCard = null; @@ -124,7 +124,7 @@ public class SetStateEffect extends SpellAbilityEffect { } // Merged faceup permanent that have double faced cards can't turn face down - if ("TurnFace".equals(mode) && !gameCard.isFaceDown() && gameCard.isInPlay() + if ("TurnFaceDown".equals(mode) && !gameCard.isFaceDown() && gameCard.isInPlay() && gameCard.hasMergedCard()) { boolean hasBackSide = false; for (final Card c : gameCard.getMergedCards()) { @@ -170,7 +170,7 @@ public class SetStateEffect extends SpellAbilityEffect { host.setChosenColors(null); } else { hasTransformed = gameCard.changeCardState(mode, sa.getParam("NewState"), sa); - if (gameCard.isFaceDown() && (sa.hasParam("FaceDownPower") || sa.hasParam("FaceDownToughness") + if (hasTransformed && (sa.hasParam("FaceDownPower") || sa.hasParam("FaceDownToughness") || sa.hasParam("FaceDownSetType"))) { CardFactoryUtil.setFaceDownState(gameCard, sa); } 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 577e0bf9412..71a44aaa661 100644 --- a/forge-game/src/main/java/forge/game/card/Card.java +++ b/forge-game/src/main/java/forge/game/card/Card.java @@ -674,12 +674,14 @@ public class Card extends GameEntity implements Comparable, IHasSVars { this.flipped = true; } return retResult; - } else if (mode.equals("TurnFace")) { + } else if (mode.equals("TurnFaceUp")) { + if (isFaceDown()) { + return turnFaceUp(cause); + } + } else if (mode.equals("TurnFaceDown")) { CardStateName oldState = getCurrentStateName(); if (oldState == CardStateName.Original || oldState == CardStateName.Flipped) { return turnFaceDown(); - } else if (isFaceDown()) { - return turnFaceUp(cause); } } else if (mode.equals("Meld") && isMeldable()) { return changeToState(CardStateName.Meld); diff --git a/forge-game/src/main/java/forge/game/card/CardFactoryUtil.java b/forge-game/src/main/java/forge/game/card/CardFactoryUtil.java index 290c6ed7ecd..756106655df 100644 --- a/forge-game/src/main/java/forge/game/card/CardFactoryUtil.java +++ b/forge-game/src/main/java/forge/game/card/CardFactoryUtil.java @@ -167,7 +167,7 @@ public class CardFactoryUtil { sb.append(" | Mega$ True"); } - sb.append(" | Mode$ TurnFace | SpellDescription$ (Turn this face up any time for its morph cost.)"); + sb.append(" | Mode$ TurnFaceUp | SpellDescription$ (Turn this face up any time for its morph cost.)"); final SpellAbility morphUp = AbilityFactory.getAbility(sb.toString(), cardState); @@ -192,7 +192,7 @@ public class CardFactoryUtil { StringBuilder sb = new StringBuilder(); sb.append("ST$ SetState | Cost$ 0 | CostDesc$ Unmanifest ").append(costDesc); sb.append(" | ManifestUp$ True | Secondary$ True | PresentDefined$ Self | IsPresent$ Card.faceDown+manifested"); - sb.append(" | Mode$ TurnFace | SpellDescription$ (Turn this face up any time for its mana cost.)"); + sb.append(" | Mode$ TurnFaceUp | SpellDescription$ (Turn this face up any time for its mana cost.)"); final SpellAbility manifestUp = AbilityFactory.getAbility(sb.toString(), sourceCard); manifestUp.setPayCosts(new Cost(manaCost, true)); @@ -236,7 +236,7 @@ public class CardFactoryUtil { String ab = "ST$ SetState | Cost$ 0" + " | ConditionDefined$ Self | ConditionPresent$ Card.faceDown+inZoneCommand" + " | HiddenAgenda$ True" - + " | Mode$ TurnFace | SpellDescription$ Reveal this Hidden Agenda at any time."; + + " | Mode$ TurnFaceUp | SpellDescription$ Reveal this Hidden Agenda at any time."; return AbilityFactory.getAbility(ab, sourceCard); } diff --git a/forge-gui/res/cardsfolder/b/backslide.txt b/forge-gui/res/cardsfolder/b/backslide.txt index 543ca60ee6d..dde05f2c979 100644 --- a/forge-gui/res/cardsfolder/b/backslide.txt +++ b/forge-gui/res/cardsfolder/b/backslide.txt @@ -1,7 +1,7 @@ Name:Backslide ManaCost:1 U Types:Instant -A:SP$ SetState | Cost$ 1 U | ValidTgts$ Creature.faceUp+withMorph,Creature.faceUp+withMegamorph | TgtPrompt$ Select target creature with morph. | Mode$ TurnFace | SpellDescription$ Turn target creature with a morph ability face down. +A:SP$ SetState | Cost$ 1 U | ValidTgts$ Creature.withMorph,Creature.withMegamorph | TgtPrompt$ Select target creature with morph. | Mode$ TurnFaceDown | SpellDescription$ Turn target creature with a morph ability face down. K:Cycling:U AI:RemoveDeck:All Oracle:Turn target creature with a morph ability face down.\nCycling {U} ({U}, Discard this card: Draw a card.) diff --git a/forge-gui/res/cardsfolder/b/break_open.txt b/forge-gui/res/cardsfolder/b/break_open.txt index 27ff6f5a05b..2a36df95274 100644 --- a/forge-gui/res/cardsfolder/b/break_open.txt +++ b/forge-gui/res/cardsfolder/b/break_open.txt @@ -1,6 +1,6 @@ Name:Break Open ManaCost:1 R Types:Instant -A:SP$ SetState | Cost$ 1 R | ValidTgts$ Creature.faceDown+OppCtrl | TgtPrompt$ Select target facedown creature you don't control. | Mode$ TurnFace | SpellDescription$ Turn target face-down creature an opponent controls face up. +A:SP$ SetState | Cost$ 1 R | ValidTgts$ Creature.faceDown+OppCtrl | TgtPrompt$ Select target facedown creature you don't control. | Mode$ TurnFaceUp | SpellDescription$ Turn target face-down creature an opponent controls face up. AI:RemoveDeck:Random Oracle:Turn target face-down creature an opponent controls face up. diff --git a/forge-gui/res/cardsfolder/c/clone_shell.txt b/forge-gui/res/cardsfolder/c/clone_shell.txt index c361dc491e6..fa315c3a87a 100644 --- a/forge-gui/res/cardsfolder/c/clone_shell.txt +++ b/forge-gui/res/cardsfolder/c/clone_shell.txt @@ -5,7 +5,7 @@ PT:2/2 T:Mode$ ChangesZone | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigDig | TriggerDescription$ Imprint — When Clone Shell enters the battlefield, look at the top four cards of your library, exile one face down, then put the rest on the bottom of your library in any order. SVar:TrigDig:DB$ Dig | Defined$ You | DigNum$ 4 | DestinationZone$ Exile | ExileFaceDown$ True | WithMayLook$ True | Imprint$ True T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Graveyard | ValidCard$ Card.Self | Execute$ TrigFaceUp | TriggerDescription$ When CARDNAME dies, turn the exiled card face up. If it's a creature card, put it onto the battlefield under your control. -SVar:TrigFaceUp:DB$ SetState | Defined$ Imprinted | SubAbility$ DBChangeZone | Mode$ TurnFace +SVar:TrigFaceUp:DB$ SetState | Defined$ Imprinted | SubAbility$ DBChangeZone | Mode$ TurnFaceUp SVar:DBChangeZone:DB$ ChangeZone | Defined$ Imprinted | Origin$ Exile | Destination$ Battlefield | ConditionDefined$ Imprinted | ConditionPresent$ Creature | GainControl$ True | SubAbility$ DBCleanup SVar:DBCleanup:DB$ Cleanup | ClearImprinted$ True SVar:SacMe:5 diff --git a/forge-gui/res/cardsfolder/f/free_for_all.txt b/forge-gui/res/cardsfolder/f/free_for_all.txt index b0b4cafac2f..330265490b7 100644 --- a/forge-gui/res/cardsfolder/f/free_for_all.txt +++ b/forge-gui/res/cardsfolder/f/free_for_all.txt @@ -8,6 +8,6 @@ SVar:TrigReturn:DB$ ChangeZoneAll | Origin$ Exile | Destination$ Graveyard | Cha SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ Player | Execute$ TrigGetCreature | TriggerController$ TriggeredPlayer | TriggerZones$ Battlefield | TriggerDescription$ At the beginning of each player's upkeep, that player chooses a card exiled with Free-for-All at random and puts it onto the battlefield. SVar:TrigGetCreature:DB$ ChooseCard | Amount$ 1 | AtRandom$ True | Choices$ Card.IsRemembered | ChoiceZone$ Exile | SubAbility$ DBFaceUp | SpellDescription$ Choose a card at random that was exiled with CARDNAME. Put that card into its owner's hand. -SVar:DBFaceUp:DB$ SetState | Defined$ ChosenCard | SubAbility$ DBChangeZone | Mode$ TurnFace +SVar:DBFaceUp:DB$ SetState | Defined$ ChosenCard | SubAbility$ DBChangeZone | Mode$ TurnFaceUp SVar:DBChangeZone:DB$ ChangeZone | Defined$ ChosenCard | GainControl$ True | Origin$ Exile | Destination$ Battlefield | ForgetChanged$ True | Hidden$ True Oracle:When Free-for-All enters the battlefield, exile all creatures face down.\nAt the beginning of each player's upkeep, that player chooses a card exiled with Free-for-All at random and puts it onto the battlefield.\nWhen Free-for-All leaves the battlefield, put all cards exiled with it into their owners' graveyards. diff --git a/forge-gui/res/cardsfolder/g/grimoire_thief.txt b/forge-gui/res/cardsfolder/g/grimoire_thief.txt index 9c6bd6263ce..9a6400a24d6 100644 --- a/forge-gui/res/cardsfolder/g/grimoire_thief.txt +++ b/forge-gui/res/cardsfolder/g/grimoire_thief.txt @@ -5,7 +5,7 @@ PT:2/2 T:Mode$ Taps | ValidCard$ Card.Self | Execute$ TrigExile | TriggerDescription$ Whenever CARDNAME becomes tapped, exile the top three cards of target opponent's library face down. SVar:TrigExile:DB$ Dig | ValidTgts$ Opponent | DigNum$ 3 | ChangeNum$ All | DestinationZone$ Exile | ExileFaceDown$ True | RememberChanged$ True S:Mode$ Continuous | Affected$ Card.IsRemembered+ExiledWithSource | AffectedZone$ Exile | MayLookAt$ You | Description$ You may look at cards exiled with CARDNAME. -A:AB$ SetState | Cost$ U Sac<1/CARDNAME> | Defined$ Remembered | Mode$ TurnFace | SubAbility$ DBCounter | SpellDescription$ Turn all cards exiled with CARDNAME face up. Counter all spells with those names. +A:AB$ SetState | Cost$ U Sac<1/CARDNAME> | Defined$ Remembered | Mode$ TurnFaceUp | SubAbility$ DBCounter | SpellDescription$ Turn all cards exiled with CARDNAME face up. Counter all spells with those names. SVar:DBCounter:DB$ Counter | AllValid$ Spell.sharesNameWith Remembered.ExiledWithSource | SubAbility$ DBCleanup T:Mode$ ChangesZone | Origin$ Exile | Destination$ Any | Static$ True | ValidCard$ Card.IsRemembered+ExiledWithSource | Execute$ DBForget SVar:DBForget:DB$ Pump | ForgetObjects$ TriggeredCard diff --git a/forge-gui/res/cardsfolder/h/hostile_negotiations.txt b/forge-gui/res/cardsfolder/h/hostile_negotiations.txt index bed34423880..9deebb42f65 100644 --- a/forge-gui/res/cardsfolder/h/hostile_negotiations.txt +++ b/forge-gui/res/cardsfolder/h/hostile_negotiations.txt @@ -4,7 +4,7 @@ Types:Instant A:SP$ Dig | DigNum$ 3 | ChangeNum$ All | DestinationZone$ Exile | RememberChanged$ True | ExileFaceDown$ True | SubAbility$ DBDig | StackDescription$ SpellDescription | SpellDescription$ Exile the top three cards of your library in a face-down pile, SVar:DBDig:DB$ Dig | DigNum$ 3 | ChangeNum$ All | DestinationZone$ Exile | Imprint$ True | ExileFaceDown$ True | SubAbility$ YouChoose | StackDescription$ SpellDescription | SpellDescription$ then exile the next top three cards of your library in another face-down pile. SVar:YouChoose:DB$ TwoPiles | Zone$ Exile | DefinedPiles$ Remembered,Imprinted | ChosenPile$ TurnFaceUp | SubAbility$ TheyChoose | KeepRemembered$ True | StackDescription$ SpellDescription | SpellDescription$ Look at the cards in each pile, then turn a pile of your choice face up. -SVar:TurnFaceUp:DB$ SetState | Defined$ Remembered | Mode$ TurnFace +SVar:TurnFaceUp:DB$ SetState | Defined$ Remembered | Mode$ TurnFaceUp SVar:TheyChoose:DB$ TwoPiles | Zone$ Exile | DefinedPiles$ Remembered,Imprinted | Chooser$ Opponent | ChosenPile$ ToHand | UnchosenPile$ ToGrave | SubAbility$ DBLoseLife | StackDescription$ SpellDescription | SpellDescription$ An opponent chooses one of those piles. Put all cards in the chosen pile into your hand and the rest into your graveyard. SVar:ToHand:DB$ ChangeZone | Defined$ Remembered | Origin$ Exile | Destination$ Hand SVar:ToGrave:DB$ ChangeZone | Defined$ Remembered | Origin$ Exile | Destination$ Graveyard diff --git a/forge-gui/res/cardsfolder/i/illithid_harvester_plant_tadpoles.txt b/forge-gui/res/cardsfolder/i/illithid_harvester_plant_tadpoles.txt index e350f2df221..80c53e3d71a 100644 --- a/forge-gui/res/cardsfolder/i/illithid_harvester_plant_tadpoles.txt +++ b/forge-gui/res/cardsfolder/i/illithid_harvester_plant_tadpoles.txt @@ -3,7 +3,7 @@ ManaCost:4 U Types:Creature Horror PT:4/4 T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigTurnFaceDown | TriggerDescription$ Ceremorphosis — When CARDNAME enters the battlefield, turn any number of target tapped nontoken creatures face down. They're 2/2 Horror creatures. -SVar:TrigTurnFaceDown:DB$ SetState | ValidTgts$ Creature.tapped+nonToken | TgtPrompt$ Select any number of target tapped nontoken creatures | TargetMin$ 0 | TargetMax$ X | Mode$ TurnFace | FaceDownPower$ 2 | FaceDownToughness$ 2 | FaceDownSetType$ Horror & Creature +SVar:TrigTurnFaceDown:DB$ SetState | ValidTgts$ Creature.tapped+nonToken | TgtPrompt$ Select any number of target tapped nontoken creatures | TargetMin$ 0 | TargetMax$ X | Mode$ TurnFaceDown | FaceDownPower$ 2 | FaceDownToughness$ 2 | FaceDownSetType$ Horror & Creature SVar:X:Count$Valid Creature.tapped+nonToken AlternateMode:Adventure Oracle:Ceremorphosis — When Illithid Harvester enters the battlefield, turn any number of target tapped nontoken creatures face down. They're 2/2 Horror creatures. diff --git a/forge-gui/res/cardsfolder/i/ixidor_reality_sculptor.txt b/forge-gui/res/cardsfolder/i/ixidor_reality_sculptor.txt index aad1fe88d21..7a4d2b14ca0 100644 --- a/forge-gui/res/cardsfolder/i/ixidor_reality_sculptor.txt +++ b/forge-gui/res/cardsfolder/i/ixidor_reality_sculptor.txt @@ -3,5 +3,5 @@ ManaCost:3 U U Types:Legendary Creature Human Wizard PT:3/4 S:Mode$ Continuous | Affected$ Creature.faceDown | AddPower$ 1 | AddToughness$ 1 | Description$ Face-Down creatures get +1/+1. -A:AB$ SetState | Cost$ 2 U | ValidTgts$ Creature.faceDown | TgtPrompt$ Select target face-down creature. | Mode$ TurnFace | SpellDescription$ Turn target face-down creature face up. +A:AB$ SetState | Cost$ 2 U | ValidTgts$ Creature.faceDown | TgtPrompt$ Select target face-down creature. | Mode$ TurnFaceUp | SpellDescription$ Turn target face-down creature face up. Oracle:Face-down creatures get +1/+1.\n{2}{U}: Turn target face-down creature face up. diff --git a/forge-gui/res/cardsfolder/i/ixidron.txt b/forge-gui/res/cardsfolder/i/ixidron.txt index aec6023355a..23ae8fb7b5a 100644 --- a/forge-gui/res/cardsfolder/i/ixidron.txt +++ b/forge-gui/res/cardsfolder/i/ixidron.txt @@ -3,7 +3,7 @@ ManaCost:3 U U Types:Creature Illusion PT:*/* K:ETBReplacement:Other:TrigTurnFaceDown -SVar:TrigTurnFaceDown:DB$ SetState | Defined$ Valid Creature.nonToken+Other+faceUp | Mode$ TurnFace | SpellDescription$ As CARDNAME enters the battlefield, turn all other nontoken creatures face down. (They're 2/2 creatures.) +SVar:TrigTurnFaceDown:DB$ SetState | Defined$ Valid Creature.nonToken+Other+faceUp | Mode$ TurnFaceDown | SpellDescription$ As CARDNAME enters the battlefield, turn all other nontoken creatures face down. (They're 2/2 creatures.) S:Mode$ Continuous | EffectZone$ All | CharacteristicDefining$ True | SetPower$ X | SetToughness$ X | Description$ CARDNAME's power and toughness are each equal to the number of face-down creatures on the battlefield. SVar:X:Count$Valid Creature.faceDown SVar:NeedsToPlay:Creature.OppCtrl+nonToken diff --git a/forge-gui/res/cardsfolder/m/master_of_the_veil.txt b/forge-gui/res/cardsfolder/m/master_of_the_veil.txt index 79d8da92186..2fc18ae6fce 100644 --- a/forge-gui/res/cardsfolder/m/master_of_the_veil.txt +++ b/forge-gui/res/cardsfolder/m/master_of_the_veil.txt @@ -4,6 +4,6 @@ Types:Creature Human Wizard PT:2/3 K:Morph:2 U T:Mode$ TurnFaceUp | ValidCard$ Card.Self | Execute$ TrigSetState | OptionalDecider$ You | TriggerZones$ Battlefield | TriggerDescription$ When CARDNAME is turned face up, you may turn target creature with morph face down. -SVar:TrigSetState:DB$ SetState | ValidTgts$ Creature.faceUp+withMorph,Creature.faceUp+withMegamorph | TgtPrompt$ Select target creature with morph. | Mode$ TurnFace +SVar:TrigSetState:DB$ SetState | ValidTgts$ Creature.withMorph,Creature.withMegamorph | TgtPrompt$ Select target creature with morph. | Mode$ TurnFaceDown AI:RemoveDeck:All Oracle:Morph {2}{U} (You may cast this card face down as a 2/2 creature for {3}. Turn it face up any time for its morph cost.)\nWhen Master of the Veil is turned face up, you may turn target creature with a morph ability face down. diff --git a/forge-gui/res/cardsfolder/m/mischievous_quanar.txt b/forge-gui/res/cardsfolder/m/mischievous_quanar.txt index 4aa64127018..09e9e351edf 100644 --- a/forge-gui/res/cardsfolder/m/mischievous_quanar.txt +++ b/forge-gui/res/cardsfolder/m/mischievous_quanar.txt @@ -3,7 +3,7 @@ ManaCost:4 U Types:Creature Beast PT:3/3 K:Morph:1 U U -A:AB$ SetState | Cost$ 3 U U | Defined$ Self | Mode$ TurnFace | SpellDescription$ Turn CARDNAME face down. +A:AB$ SetState | Cost$ 3 U U | Defined$ Self | Mode$ TurnFaceDown | SpellDescription$ Turn CARDNAME face down. T:Mode$ TurnFaceUp | ValidCard$ Card.Self | Execute$ TrigCopy | TriggerZones$ Battlefield | TriggerDescription$ When CARDNAME is turned face up, copy target instant or sorcery spell. You may choose new targets for that copy. SVar:TrigCopy:DB$ CopySpellAbility | ValidTgts$ Instant,Sorcery | MayChooseTarget$ True AI:RemoveDeck:All diff --git a/forge-gui/res/cardsfolder/o/obscuring_aether.txt b/forge-gui/res/cardsfolder/o/obscuring_aether.txt index 0d31f983f5f..e6d5c1766c9 100644 --- a/forge-gui/res/cardsfolder/o/obscuring_aether.txt +++ b/forge-gui/res/cardsfolder/o/obscuring_aether.txt @@ -2,7 +2,7 @@ Name:Obscuring Aether ManaCost:G Types:Enchantment S:Mode$ ReduceCost | ValidCard$ Creature | Type$ MorphDown | Activator$ You | Amount$ 1 | Description$ Face-down creature spells you cast cost {1} less to cast. -A:AB$ SetState | Cost$ 1 G | Defined$ Self | Mode$ TurnFace | SpellDescription$ Turn CARDNAME face down. (It becomes a 2/2 creature.) +A:AB$ SetState | Cost$ 1 G | Defined$ Self | Mode$ TurnFaceDown | SpellDescription$ Turn CARDNAME face down. (It becomes a 2/2 creature.) AI:RemoveDeck:All DeckHints:Keyword$Morph|Megamorph Oracle:Face-down creature spells you cast cost {1} less to cast.\n{1}{G}: Turn Obscuring Aether face down. (It becomes a 2/2 creature.) diff --git a/forge-gui/res/cardsfolder/p/pyxis_of_pandemonium.txt b/forge-gui/res/cardsfolder/p/pyxis_of_pandemonium.txt index fce6f376da0..0170e7f1eaf 100644 --- a/forge-gui/res/cardsfolder/p/pyxis_of_pandemonium.txt +++ b/forge-gui/res/cardsfolder/p/pyxis_of_pandemonium.txt @@ -2,7 +2,7 @@ Name:Pyxis of Pandemonium ManaCost:1 Types:Artifact A:AB$ Dig | Cost$ T | Defined$ Player | DigNum$ 1 | ChangeNum$ All | DestinationZone$ Exile | ExileFaceDown$ True | SpellDescription$ Each player exiles the top card of their library face down. -A:AB$ SetState | Cost$ 7 T Sac<1/CARDNAME> | Defined$ ValidExile Card.ExiledWithSource | Mode$ TurnFace | SubAbility$ DBChangeZone | SpellDescription$ Each player turns face up all cards they own exiled with CARDNAME, then puts all permanent cards among them onto the battlefield. +A:AB$ SetState | Cost$ 7 T Sac<1/CARDNAME> | Defined$ ValidExile Card.ExiledWithSource | Mode$ TurnFaceUp | SubAbility$ DBChangeZone | SpellDescription$ Each player turns face up all cards they own exiled with CARDNAME, then puts all permanent cards among them onto the battlefield. SVar:DBChangeZone:DB$ ChangeZoneAll | ChangeType$ Permanent.ExiledWithSource | Origin$ Exile | Destination$ Battlefield AI:RemoveDeck:All Oracle:{T}: Each player exiles the top card of their library face down.\n{7}, {T}, Sacrifice Pyxis of Pandemonium: Each player turns face up all cards they own exiled with Pyxis of Pandemonium, then puts all permanent cards among them onto the battlefield. diff --git a/forge-gui/res/cardsfolder/s/skirk_alarmist.txt b/forge-gui/res/cardsfolder/s/skirk_alarmist.txt index c1bd2d5f393..69572d4c449 100644 --- a/forge-gui/res/cardsfolder/s/skirk_alarmist.txt +++ b/forge-gui/res/cardsfolder/s/skirk_alarmist.txt @@ -3,7 +3,7 @@ ManaCost:1 R Types:Creature Human Wizard PT:1/2 K:Haste -A:AB$ SetState | Cost$ T | ValidTgts$ Creature.YouCtrl+faceDown | Mode$ TurnFace | SubAbility$ DBPump | SpellDescription$ Turn target face-down creature you control face up. At the beginning of the next end step, sacrifice it. +A:AB$ SetState | Cost$ T | ValidTgts$ Creature.YouCtrl+faceDown | Mode$ TurnFaceUp | SubAbility$ DBPump | SpellDescription$ Turn target face-down creature you control face up. At the beginning of the next end step, sacrifice it. SVar:DBPump:DB$ Pump | Defined$ Targeted | AtEOT$ Sacrifice AI:RemoveDeck:All Oracle:Haste\n{T}: Turn target face-down creature you control face up. At the beginning of the next end step, sacrifice it. diff --git a/forge-gui/res/cardsfolder/s/summoners_egg.txt b/forge-gui/res/cardsfolder/s/summoners_egg.txt index 77b70a0c693..a1e3bc117bc 100644 --- a/forge-gui/res/cardsfolder/s/summoners_egg.txt +++ b/forge-gui/res/cardsfolder/s/summoners_egg.txt @@ -5,7 +5,7 @@ PT:0/4 T:Mode$ ChangesZone | Destination$ Battlefield | ValidCard$ Card.Self | OptionalDecider$ You | Execute$ TrigExile | TriggerDescription$ Imprint — When CARDNAME enters the battlefield, you may exile a card from your hand face down. SVar:TrigExile:DB$ ChangeZone | Origin$ Hand | Destination$ Exile | ChangeType$ Card | ChangeNum$ 1 | ExileFaceDown$ True | Imprint$ True T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Graveyard | ValidCard$ Card.Self | Execute$ TrigFaceUp | TriggerDescription$ When CARDNAME dies, turn the exiled card face up. If it's a creature card, put it onto the battlefield under your control. -SVar:TrigFaceUp:DB$ SetState | Defined$ Imprinted | SubAbility$ DBChangeZone | Mode$ TurnFace +SVar:TrigFaceUp:DB$ SetState | Defined$ Imprinted | SubAbility$ DBChangeZone | Mode$ TurnFaceUp SVar:DBChangeZone:DB$ ChangeZone | Defined$ Imprinted | Origin$ Exile | Destination$ Battlefield | ConditionDefined$ Imprinted | ConditionPresent$ Creature | GainControl$ True | SubAbility$ DBCleanup SVar:DBCleanup:DB$ Cleanup | ClearImprinted$ True SVar:SacMe:5 diff --git a/forge-gui/res/cardsfolder/u/ugins_mastery.txt b/forge-gui/res/cardsfolder/u/ugins_mastery.txt index 29af19171e8..52563a8ea69 100644 --- a/forge-gui/res/cardsfolder/u/ugins_mastery.txt +++ b/forge-gui/res/cardsfolder/u/ugins_mastery.txt @@ -4,6 +4,6 @@ Types:Enchantment T:Mode$ SpellCast | ValidCard$ Creature.Colorless | ValidActivatingPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigManifest | TriggerDescription$ Whenever you cast a colorless creature spell, manifest the top card of your library. (Put it onto the battlefield face down as a 2/2 creature. Turn it face up any time for its mana cost if it's a creature card.) SVar:TrigManifest:DB$ Manifest T:Mode$ AttackersDeclared | ValidAttackers$ Creature.YouCtrl | Execute$ TrigState | TriggerZones$ Battlefield | CheckSVar$ PackTactics | SVarCompare$ GE6 | NoResolvingCheck$ True | TriggerDescription$Whenever you attack with creatures with total power 6 or greater, you may turn a face-down creature you control face up. -SVar:TrigState:DB$ SetState | Choices$ Creature.faceDown+YouCtrl | ChoiceTitle$ Select a facedown creature you control | Mode$ TurnFace +SVar:TrigState:DB$ SetState | Choices$ Creature.faceDown+YouCtrl | ChoiceTitle$ Select a facedown creature you control | Mode$ TurnFaceUp SVar:PackTactics:Count$SumPower_Creature.attacking Oracle:Whenever you cast a colorless creature spell, manifest the top card of your library. (Put it onto the battlefield face down as a 2/2 creature. Turn it face up any time for its mana cost if it's a creature card.)\nWhenever you attack with creatures with total power 6 or greater, you may turn a face-down creature you control face up. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/upcoming/cyber_conversion.txt b/forge-gui/res/cardsfolder/upcoming/cyber_conversion.txt index 12dd0fbcfa8..412878d5779 100644 --- a/forge-gui/res/cardsfolder/upcoming/cyber_conversion.txt +++ b/forge-gui/res/cardsfolder/upcoming/cyber_conversion.txt @@ -1,6 +1,6 @@ Name:Cyber Conversion ManaCost:U U Types:Instant -A:SP$ SetState | ValidTgts$ Creature | Mode$ TurnFace | FaceDownSetType$ Artifact & Creature & Cyberman | FaceDownPower$ 2 | FaceDownToughness$ 2 | SpellDescription$ Turn target creature face down. It's a 2/2 Cyberman artifact creature. +A:SP$ SetState | ValidTgts$ Creature | Mode$ TurnFaceDown | FaceDownSetType$ Artifact & Creature & Cyberman | FaceDownPower$ 2 | FaceDownToughness$ 2 | SpellDescription$ Turn target creature face down. It's a 2/2 Cyberman artifact creature. DeckHas:Type$Dalek|Artifact Oracle:Turn target creature face down. It's a 2/2 Cyberman artifact creature. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/upcoming/mondassian_colony_ship.txt b/forge-gui/res/cardsfolder/upcoming/mondassian_colony_ship.txt index 4d83c7b7685..141f09ea4c5 100644 --- a/forge-gui/res/cardsfolder/upcoming/mondassian_colony_ship.txt +++ b/forge-gui/res/cardsfolder/upcoming/mondassian_colony_ship.txt @@ -5,6 +5,6 @@ T:Mode$ Attacks | ValidCard$ Creature | TriggerZones$ Command | Execute$ Animosi SVar:AnimosityPump:DB$ Pump | Defined$ TriggeredAttackerLKICopy | NumAtt$ X | NumDef$ X SVar:X:Count$Valid Creature.NotTriggeredAttacker+ControlledBy AttackingPlayer+sharesCreatureTypeWith TriggeredAttacker T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ TrigSetState | TriggerDescription$ Whenever chaos ensues, turn target creature face down. It becomes a 2/2 Cyberman artifact creature. -SVar:TrigSetState:DB$ SetState | ValidTgts$ Creature | Mode$ TurnFace | FaceDownSetType$ Artifact & Creature & Cyberman | FaceDownPower$ 2 | FaceDownToughness$ 2 +SVar:TrigSetState:DB$ SetState | ValidTgts$ Creature | Mode$ TurnFaceDown | FaceDownSetType$ Artifact & Creature & Cyberman | FaceDownPower$ 2 | FaceDownToughness$ 2 DeckHas:Type$Cyberman Oracle:Whenever a creature attacks, it gets +1/+1 until end of turn for each other creature its controller controls that shares a creature type with it.\nWhenever chaos ensues, turn target creature face down. It becomes a 2/2 Cyberman artifact creature. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/v/vesuvan_shapeshifter.txt b/forge-gui/res/cardsfolder/v/vesuvan_shapeshifter.txt index d288d7e7fc0..6aa640a43cb 100644 --- a/forge-gui/res/cardsfolder/v/vesuvan_shapeshifter.txt +++ b/forge-gui/res/cardsfolder/v/vesuvan_shapeshifter.txt @@ -6,6 +6,6 @@ K:Morph:1 U K:ETBReplacement:Copy:DBCopy:Optional SVar:DBCopy:DB$ Clone | Choices$ Creature.Other | AddTriggers$ VesShapeUpkeepTrig | AddSVars$ VesShapeTurn,VesShapeUpkeepTrig | Duration$ UntilFacedown | SpellDescription$ As CARDNAME enters the battlefield or is turned face up, you may choose another creature on the battlefield. If you do, until CARDNAME is turned face down, it becomes a copy of that creature, except it has "At the beginning of your upkeep, you may turn this creature face down." SVar:VesShapeUpkeepTrig:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | TriggerZones$ Battlefield | Execute$ VesShapeTurn | OptionalDecider$ You | TriggerDescription$ At the beginning of your upkeep, you may turn CARDNAME face down. -SVar:VesShapeTurn:DB$ SetState | Defined$ Self | Mode$ TurnFace +SVar:VesShapeTurn:DB$ SetState | Defined$ Self | Mode$ TurnFaceDown R:Event$ TurnFaceUp | ValidCard$ Card.Self | Optional$ True | ReplaceWith$ DBCopy | ActiveZones$ Battlefield | Secondary$ True | Description$ As CARDNAME is turned face up, you may choose another creature on the battlefield. If you do, until CARDNAME is turned face down, it becomes a copy of that creature, except it has "At the beginning of your upkeep, you may turn this creature face down." Oracle:As Vesuvan Shapeshifter enters the battlefield or is turned face up, you may choose another creature on the battlefield. If you do, until Vesuvan Shapeshifter is turned face down, it becomes a copy of that creature, except it has "At the beginning of your upkeep, you may turn this creature face down."\nMorph {1}{U} diff --git a/forge-gui/res/cardsfolder/w/wall_of_deceit.txt b/forge-gui/res/cardsfolder/w/wall_of_deceit.txt index 5769d0f1f7f..4e72d542fa6 100644 --- a/forge-gui/res/cardsfolder/w/wall_of_deceit.txt +++ b/forge-gui/res/cardsfolder/w/wall_of_deceit.txt @@ -3,6 +3,6 @@ ManaCost:1 U Types:Creature Wall PT:0/5 K:Defender -A:AB$ SetState | Cost$ 3 | Defined$ Self | Mode$ TurnFace | AILogic$ Never | SpellDescription$ Turn CARDNAME face down. +A:AB$ SetState | Cost$ 3 | Defined$ Self | Mode$ TurnFaceDown | AILogic$ Never | SpellDescription$ Turn CARDNAME face down. K:Morph:U Oracle:Defender (This creature can't attack.)\n{3}: Turn Wall of Deceit face down.\nMorph {U} (You may cast this card face down as a 2/2 creature for {3}. Turn it face up any time for its morph cost.) diff --git a/forge-gui/res/cardsfolder/w/weaver_of_lies.txt b/forge-gui/res/cardsfolder/w/weaver_of_lies.txt index cc4a32399c5..d0f90fc78fb 100644 --- a/forge-gui/res/cardsfolder/w/weaver_of_lies.txt +++ b/forge-gui/res/cardsfolder/w/weaver_of_lies.txt @@ -4,7 +4,7 @@ Types:Creature Beast PT:4/4 K:Morph:4 U T:Mode$ TurnFaceUp | ValidCard$ Card.Self | Execute$ DBWeaverofLiesSetState | TriggerZones$ Battlefield | TriggerDescription$ When CARDNAME is turned face up, turn any number of target creatures with morph abilities other than CARDNAME face down. -SVar:DBWeaverofLiesSetState:DB$ SetState | ValidTgts$ Creature.withMorph+Other,Creature.withMegamorph+Other | TgtPrompt$ Select target creature | TargetMin$ 0 | TargetMax$ WeaverofLiesX | Mode$ TurnFace | SpellDescription$ Turn CARDNAME face down. +SVar:DBWeaverofLiesSetState:DB$ SetState | ValidTgts$ Creature.withMorph+Other,Creature.withMegamorph+Other | TgtPrompt$ Select target creature | TargetMin$ 0 | TargetMax$ WeaverofLiesX | Mode$ TurnFaceDown | SpellDescription$ Turn CARDNAME face down. SVar:WeaverofLiesX:Count$Valid Creature.withMorph+Other,Creature.withMegamorph+Other AI:RemoveDeck:All Oracle:Morph {4}{U} (You may cast this card face down as a 2/2 creature for {3}. Turn it face up any time for its morph cost.)\nWhen Weaver of Lies is turned face up, turn any number of target creatures with morph abilities other than Weaver of Lies face down.